diff --git a/menu/icon.png b/menu/icon.png index e479dfff5..6832f3f07 100644 Binary files a/menu/icon.png and b/menu/icon.png differ diff --git a/minetest.conf b/minetest.conf index 223587f4d..97d1f5cd6 100644 --- a/minetest.conf +++ b/minetest.conf @@ -32,6 +32,10 @@ movement_gravity = 10.4 # humid_rivers would cause the MushroomIsland biome to appear frequently around rivers. mgvalleys_spflags = noaltitude_chill,noaltitude_dry,nohumid_rivers,vary_river_depth +# From how far blocks are generated for clients, stated in mapblocks (16 nodes). +# Probably values >10 won't work because of numerous overridings. Type: int. +max_block_generate_distance = 13 + # MCL2-specific stuff keepInventory = false diff --git a/mods/CORE/mcl_init/init.lua b/mods/CORE/mcl_init/init.lua index 7e0d28e55..a495935f5 100644 --- a/mods/CORE/mcl_init/init.lua +++ b/mods/CORE/mcl_init/init.lua @@ -24,240 +24,9 @@ mcl_vars.inventory_header = "" -- Tool wield size mcl_vars.tool_wield_scale = { x = 1.8, y = 1.8, z = 1 } --- Mapgen variables -local mg_name = minetest.get_mapgen_setting("mg_name") -local minecraft_height_limit = 256 -local superflat = mg_name == "flat" and minetest.get_mapgen_setting("mcl_superflat_classic") == "true" -local singlenode = mg_name == "singlenode" - --- Calculate mapgen_edge_min/mapgen_edge_max -mcl_vars.chunksize = math.max(1, tonumber(minetest.get_mapgen_setting("chunksize")) or 5) -mcl_vars.MAP_BLOCKSIZE = math.max(1, minetest.MAP_BLOCKSIZE or 16) -mcl_vars.mapgen_limit = math.max(1, tonumber(minetest.get_mapgen_setting("mapgen_limit")) or 31000) -mcl_vars.MAX_MAP_GENERATION_LIMIT = math.max(1, minetest.MAX_MAP_GENERATION_LIMIT or 31000) -local central_chunk_offset = -math.floor(mcl_vars.chunksize / 2) -mcl_vars.central_chunk_offset_in_nodes = central_chunk_offset * mcl_vars.MAP_BLOCKSIZE -mcl_vars.chunk_size_in_nodes = mcl_vars.chunksize * mcl_vars.MAP_BLOCKSIZE -local central_chunk_min_pos = central_chunk_offset * mcl_vars.MAP_BLOCKSIZE -local central_chunk_max_pos = central_chunk_min_pos + mcl_vars.chunk_size_in_nodes - 1 -local ccfmin = central_chunk_min_pos - mcl_vars.MAP_BLOCKSIZE -- Fullminp/fullmaxp of central chunk, in nodes -local ccfmax = central_chunk_max_pos + mcl_vars.MAP_BLOCKSIZE -local mapgen_limit_b = math.floor(math.min(mcl_vars.mapgen_limit, mcl_vars.MAX_MAP_GENERATION_LIMIT) / mcl_vars.MAP_BLOCKSIZE) -local mapgen_limit_min = -mapgen_limit_b * mcl_vars.MAP_BLOCKSIZE -local mapgen_limit_max = (mapgen_limit_b + 1) * mcl_vars.MAP_BLOCKSIZE - 1 -local numcmin = math.max(math.floor((ccfmin - mapgen_limit_min) / mcl_vars.chunk_size_in_nodes), 0) -- Number of complete chunks from central chunk -local numcmax = math.max(math.floor((mapgen_limit_max - ccfmax) / mcl_vars.chunk_size_in_nodes), 0) -- fullminp/fullmaxp to effective mapgen limits. -mcl_vars.mapgen_edge_min = central_chunk_min_pos - numcmin * mcl_vars.chunk_size_in_nodes -mcl_vars.mapgen_edge_max = central_chunk_max_pos + numcmax * mcl_vars.chunk_size_in_nodes - -local function coordinate_to_block(x) - return math.floor(x / mcl_vars.MAP_BLOCKSIZE) -end - -local function coordinate_to_chunk(x) - return math.floor((coordinate_to_block(x) - central_chunk_offset) / mcl_vars.chunksize) -end - -function mcl_vars.pos_to_block(pos) - return { - x = coordinate_to_block(pos.x), - y = coordinate_to_block(pos.y), - z = coordinate_to_block(pos.z) - } -end - -function mcl_vars.pos_to_chunk(pos) - return { - x = coordinate_to_chunk(pos.x), - y = coordinate_to_chunk(pos.y), - z = coordinate_to_chunk(pos.z) - } -end - -local k_positive = math.ceil(mcl_vars.MAX_MAP_GENERATION_LIMIT / mcl_vars.chunk_size_in_nodes) -local k_positive_z = k_positive * 2 -local k_positive_y = k_positive_z * k_positive_z - -function mcl_vars.get_chunk_number(pos) -- unsigned int - local c = mcl_vars.pos_to_chunk(pos) - return - (c.y + k_positive) * k_positive_y + - (c.z + k_positive) * k_positive_z + - c.x + k_positive -end - -if not superflat and not singlenode then - -- Normal mode - --[[ Realm stacking (h is for height) - - Overworld (h>=256) - - Void (h>=1000) - - Realm Barrier (h=11), to allow escaping the End - - End (h>=256) - - Void (h>=1000) - - Nether (h=128) - - Void (h>=1000) - ]] - - -- Overworld - mcl_vars.mg_overworld_min = -62 - mcl_vars.mg_overworld_max_official = mcl_vars.mg_overworld_min + minecraft_height_limit - mcl_vars.mg_bedrock_overworld_min = mcl_vars.mg_overworld_min - mcl_vars.mg_bedrock_overworld_max = mcl_vars.mg_bedrock_overworld_min + 4 - mcl_vars.mg_lava_overworld_max = mcl_vars.mg_overworld_min + 10 - mcl_vars.mg_lava = true - mcl_vars.mg_bedrock_is_rough = true - -elseif singlenode then - mcl_vars.mg_overworld_min = -66 - mcl_vars.mg_overworld_max_official = mcl_vars.mg_overworld_min + minecraft_height_limit - mcl_vars.mg_bedrock_overworld_min = mcl_vars.mg_overworld_min - mcl_vars.mg_bedrock_overworld_max = mcl_vars.mg_bedrock_overworld_min - mcl_vars.mg_lava = false - mcl_vars.mg_lava_overworld_max = mcl_vars.mg_overworld_min - mcl_vars.mg_bedrock_is_rough = false -else - -- Classic superflat - local ground = minetest.get_mapgen_setting("mgflat_ground_level") - ground = tonumber(ground) - if not ground then - ground = 8 - end - mcl_vars.mg_overworld_min = ground - 3 - mcl_vars.mg_overworld_max_official = mcl_vars.mg_overworld_min + minecraft_height_limit - mcl_vars.mg_bedrock_overworld_min = mcl_vars.mg_overworld_min - mcl_vars.mg_bedrock_overworld_max = mcl_vars.mg_bedrock_overworld_min - mcl_vars.mg_lava = false - mcl_vars.mg_lava_overworld_max = mcl_vars.mg_overworld_min - mcl_vars.mg_bedrock_is_rough = false -end - -mcl_vars.mg_overworld_max = mcl_vars.mapgen_edge_max - --- The Nether (around Y = -29000) -mcl_vars.mg_nether_min = -29067 -- Carefully chosen to be at a mapchunk border -mcl_vars.mg_nether_max = mcl_vars.mg_nether_min + 128 -mcl_vars.mg_bedrock_nether_bottom_min = mcl_vars.mg_nether_min -mcl_vars.mg_bedrock_nether_top_max = mcl_vars.mg_nether_max -if not superflat then - mcl_vars.mg_bedrock_nether_bottom_max = mcl_vars.mg_bedrock_nether_bottom_min + 4 - mcl_vars.mg_bedrock_nether_top_min = mcl_vars.mg_bedrock_nether_top_max - 4 - mcl_vars.mg_lava_nether_max = mcl_vars.mg_nether_min + 31 -else - -- Thin bedrock in classic superflat mapgen - mcl_vars.mg_bedrock_nether_bottom_max = mcl_vars.mg_bedrock_nether_bottom_min - mcl_vars.mg_bedrock_nether_top_min = mcl_vars.mg_bedrock_nether_top_max - mcl_vars.mg_lava_nether_max = mcl_vars.mg_nether_min + 2 -end -if mg_name == "flat" then - if superflat then - mcl_vars.mg_flat_nether_floor = mcl_vars.mg_bedrock_nether_bottom_max + 4 - mcl_vars.mg_flat_nether_ceiling = mcl_vars.mg_bedrock_nether_bottom_max + 52 - else - mcl_vars.mg_flat_nether_floor = mcl_vars.mg_lava_nether_max + 4 - mcl_vars.mg_flat_nether_ceiling = mcl_vars.mg_lava_nether_max + 52 - end -end - --- The End (surface at ca. Y = -27000) -mcl_vars.mg_end_min = -27073 -- Carefully chosen to be at a mapchunk border -mcl_vars.mg_end_max_official = mcl_vars.mg_end_min + minecraft_height_limit -mcl_vars.mg_end_max = mcl_vars.mg_overworld_min - 2000 -mcl_vars.mg_end_platform_pos = { x = 100, y = mcl_vars.mg_end_min + 74, z = 0 } - --- Realm barrier used to safely separate the End from the void below the Overworld -mcl_vars.mg_realm_barrier_overworld_end_max = mcl_vars.mg_end_max -mcl_vars.mg_realm_barrier_overworld_end_min = mcl_vars.mg_end_max - 11 - --- Use MineClone 5-style dungeons -mcl_vars.mg_dungeons = true - -- Set default stack sizes minetest.nodedef_default.stack_max = 64 minetest.craftitemdef_default.stack_max = 64 -- Set random seed for all other mods (Remember to make sure no other mod calls this function) math.randomseed(os.time()) - -local chunks = {} -- intervals of chunks generated -function mcl_vars.add_chunk(pos) - local n = mcl_vars.get_chunk_number(pos) -- unsigned int - local prev - for i, d in pairs(chunks) do - if n <= d[2] then -- we've found it - if (n == d[2]) or (n >= d[1]) then return end -- already here - if n == d[1]-1 then -- right before: - if prev and (prev[2] == n-1) then - prev[2] = d[2] - table.remove(chunks, i) - return - end - d[1] = n - return - end - if prev and (prev[2] == n-1) then --join to previous - prev[2] = n - return - end - table.insert(chunks, i, {n, n}) -- insert new interval before i - return - end - prev = d - end - chunks[#chunks+1] = {n, n} -end -function mcl_vars.is_generated(pos) - local n = mcl_vars.get_chunk_number(pos) -- unsigned int - for i, d in pairs(chunks) do - if n <= d[2] then - return (n >= d[1]) - end - end - return false -end - --- "Trivial" (actually NOT) function to just read the node and some stuff to not just return "ignore", like mt 5.4 does. --- p: Position, if it's wrong, {name="error"} node will return. --- force: optional (default: false) - Do the maximum to still read the node within us_timeout. --- us_timeout: optional (default: 244 = 0.000244 s = 1/80/80/80), set it at least to 3000000 to let mapgen to finish its job. --- --- returns node definition, eg. {name="air"}. Unfortunately still can return {name="ignore"}. -function mcl_vars.get_node(p, force, us_timeout) - -- check initial circumstances - if not p or not p.x or not p.y or not p.z then return {name="error"} end - - -- try common way - local node = minetest.get_node(p) - if node.name ~= "ignore" then - return node - end - - -- copy table to get sure it won't changed by other threads - local pos = {x=p.x,y=p.y,z=p.z} - - -- try LVM - minetest.get_voxel_manip():read_from_map(pos, pos) - node = minetest.get_node(pos) - if node.name ~= "ignore" or not force then - return node - end - - -- all ways failed - need to emerge (or forceload if generated) - local us_timeout = us_timeout or 244 - if mcl_vars.is_generated(pos) then - minetest.chat_send_all("IMPOSSIBLE! Please report this to MCL2 issue tracker!") - minetest.forceload_block(pos) - else - minetest.emerge_area(pos, pos) - end - - local t = minetest.get_us_time() - - node = minetest.get_node(pos) - - while (not node or node.name == "ignore") and (minetest.get_us_time() - t < us_timeout) do - node = minetest.get_node(pos) - end - - return node - -- it still can return "ignore", LOL, even if force = true, but only after time out -end diff --git a/mods/CORE/mcl_mapgen/API.md b/mods/CORE/mcl_mapgen/API.md new file mode 100644 index 000000000..23365b357 --- /dev/null +++ b/mods/CORE/mcl_mapgen/API.md @@ -0,0 +1,101 @@ +# mcl_mapgen +============ +Helps to avoid problems caused by 'chunk-in-shell' feature of mapgen.cpp. +It also queues your generators to run them in proper order: + +### mcl_mapgen.register_on_generated(lvm_callback_function, order_number) +========================================================================= +Replacement of engine API function `minetest.register_on_generated(function(vm_context))` +It is still unsafe. Cavegen part can and will overwrite outer 1-block layer of the chunk which is expected to be generated. +Nodes marked as `is_ground_content` could be overwritten. Air and water are usually 'ground content' too. +For Minetest 5.4 it doesn't recommended to place blocks within lvm callback function. +See https://git.minetest.land/MineClone2/MineClone2/issues/1395 + `lvm_callback_function`: chunk callback LVM function definition: + `function(vm_context)`: + `vm_context` will pass into next lvm callback function from the queue! + `vm_context`: a table which already contains some LVM data as the fields, and some of them can be added in your lvm callback function: + `vm`: curent voxel manipulator object itself; + `chunkseed`: seed of this mapchunk; + `minp` & `maxp`: minimum and maximum chunk position; + `emin` & `emax`: minimum and maximum chunk position WITH SHELL AROUND IT; + `area`: voxel area, can be helpful to access data; + `data`: LVM buffer data array, data loads into it before the callbacks; + `write`: set it to true in your lvm callback functionm, if you changed `data` and want to write it; + `param2_data`: LVM buffer data array of `param2`, !NO ANY DATA LOADS INTO IT BEFORE THE CALLBACKS! - you load it yourself: + `vm_context.param2_data = vm_context.param2_data or vm_context.vm:get_param2_data(vm_context.lvm_param2_buffer)` + `write_param2`: set it to true in your lvm callback function, if you used `param2_data` and want to write it; + `light`: LVM buffer data array of light, !NO ANY DATA LOADS INTO IT BEFORE THE CALLBACKS! - you load it yourself: + `vm_context.light = vm_context.light or vm_context.vm.get_light_data(vm_context.lvm_light_buffer)` + `write_light`: set it to true in your lvm callback function, if you used `light` and want to write it; + `lvm_param2_buffer`: static `param2` buffer pointer, used to load `param2_data` array; + `shadow`: set it to false to disable shadow propagation; + `heightmap`: mapgen object contanting y coordinates of ground level, + !NO ANY DATA LOADS INTO IT BEFORE THE CALLBACKS! - load it yourself: + `vm_context.heightmap = vm_context.heightmap or minetest.get_mapgen_object('heightmap')` + `biomemap`: mapgen object contanting biome IDs of nodes, + !NO ANY DATA LOADS INTO IT BEFORE THE CALLBACKS! - load it yourself: + `vm_context.biomemap = vm_context.biomemap or minetest.get_mapgen_object('biomemap')` + `heatmap`: mapgen object contanting temperature values of nodes, + !NO ANY DATA LOADS INTO IT BEFORE THE CALLBACKS! - load it yourself: + `vm_context.heatmap = vm_context.heatmap or minetest.get_mapgen_object('heatmap')` + `humiditymap`: mapgen object contanting humidity values of nodes, + !NO ANY DATA LOADS INTO IT BEFORE THE CALLBACKS! - load it yourself: + `vm_context.humiditymap = vm_context.humiditymap or minetest.get_mapgen_object('humiditymap')` + `gennotify`: mapgen object contanting mapping table of structures, see Minetest Lua API for explanation, + !NO ANY DATA LOADS INTO IT BEFORE THE CALLBACKS! - load it yourself: + `vm_context.gennotify = vm_context.gennotify or minetest.get_mapgen_object('gennotify')` + `order_number` (optional): the less, the earlier, + e.g. `mcl_mapgen.order.BUILDINGS` or `mcl_mapgen.order.LARGE_BUILDINGS` + +### mcl_mapgen.register_mapgen_block_lvm(lvm_callback_function, order_number) +============================================================================= +Registers lvm callback function to be called when current block (usually 16x16x16 nodes) generation is REALLY 100% finished. +`vm_context` passes into lvm callback function. + `lvm_callback_function`: the block callback LVM function definition - same as for chunks - see definition example above; + `order_number` (optional): the less, the earlier, + e.g. `mcl_mapgen.order.BUILDINGS` or `mcl_mapgen.order.LARGE_BUILDINGS` + +### mcl_mapgen.register_mapgen_block(node_callback_function, order_number) +========================================================================== +Registers node_callback function to be called when current block (usually 16x16x16 nodes) generation is REALLY 100% finished. + `node_callback_function`: node callback function definition: + `function(minp, maxp, seed)`: + `minp` & `maxp`: minimum and maximum block position; + `seed`: seed of this mapblock; + `order_number` (optional): the less, the earlier, + e.g. `mcl_mapgen.order.BUILDINGS` or `mcl_mapgen.order.LARGE_BUILDINGS` + +### mcl_mapgen.register_mapgen(callback_function, order_number) +==================================================================== +Registers callback function to be called when current chunk generation is REALLY 100% finished. +For LVM it's the most frustrating function from this mod. +It can't provide you access to mapgen objects. They are probably gone long ago. +Don't use it for accessing mapgen objects please. +To use VM you have to run `vm_context.vm = mcl_mapgen.get_voxel_manip(vm_context.emin, vm_context.emax)`. +Set + `callback_function`: callback function definition: + `function(minp, maxp, seed, vm_context)`: + `minp` & `maxp`: minimum and maximum block position; + `seed`: seed of this mapblock; + `vm_context`: a table - see description above. + `order_number` (optional): the less, the earlier. + +### mcl_mapgen.register_mapgen_lvm(lvm_callback_function, order_number) +======================================================================= +Registers lvm callback function to be called when current chunk generation is REALLY 100% finished. +It's the most frustrating function from this mod. It can't provide you access to mapgen objects. They are probably gone long ago. +Don't use it for accessing mapgen objects please. +`vm_context` passes into lvm callback function. + `lvm_callback_function`: the block callback LVM function definition - same as above; + `order_number` (optional): the less, the earlier. + +### mcl_mapgen.get_far_node(pos) +================================ +Returns node if it is generated, otherwise returns `{name = "ignore"}`. + +## Constants: + +* `mcl_mapgen.EDGE_MIN`, `mcl_mapgen.EDGE_MAX` - world edges, min & max. +* `mcl_mapgen.seed`, `mcl_mapgen.name` - mapgen seed & name. +* `mcl_mapgen.v6`, `mcl_mapgen.superflat`, `mcl_mapgen.singlenode` - is mapgen v6, superflat, singlenode. +* `mcl_mapgen.normal` is mapgen normal (not superflat or singlenode). diff --git a/mods/CORE/mcl_mapgen/init.lua b/mods/CORE/mcl_mapgen/init.lua new file mode 100644 index 000000000..aa2630411 --- /dev/null +++ b/mods/CORE/mcl_mapgen/init.lua @@ -0,0 +1,498 @@ +mcl_mapgen = {} + +local order = { -- mcl_mapgen.order... + DEFAULT = 5000, + CHORUS = 100000, + BUILDINGS = 200000, + VILLAGES = 900000, + DUNGEONS = 950000, + STRONGHOLDS = 999999, + OCEAN_MONUMENT = 1000000, + LARGE_BUILDINGS = 2000000, +} + +local math_floor = math.floor +local math_max = math.max +local minetest_get_node = minetest.get_node +local minetest_get_voxel_manip = minetest.get_voxel_manip +local minetest_log = minetest.log +local minetest_pos_to_string = minetest.pos_to_string + +-- Calculate mapgen_edge_min/mapgen_edge_max +mcl_mapgen.CS = math_max(1, tonumber(minetest.get_mapgen_setting("chunksize")) or 5) +mcl_mapgen.BS = math_max(1, core.MAP_BLOCKSIZE or 16) +mcl_mapgen.LIMIT = math_max(1, tonumber(minetest.get_mapgen_setting("mapgen_limit")) or 31000) +mcl_mapgen.MAX_LIMIT = math_max(1, core.MAX_MAP_GENERATION_LIMIT or 31000) -- might be set to 31000 or removed, see https://github.com/minetest/minetest/issues/10428 +mcl_mapgen.OFFSET = - math_floor(mcl_mapgen.CS / 2) +mcl_mapgen.OFFSET_NODES = mcl_mapgen.OFFSET * mcl_mapgen.BS +mcl_mapgen.CS_NODES = mcl_mapgen.CS * mcl_mapgen.BS + +local central_chunk_min_pos = mcl_mapgen.OFFSET * mcl_mapgen.BS +local central_chunk_max_pos = central_chunk_min_pos + mcl_mapgen.CS_NODES - 1 + +local ccfmin = central_chunk_min_pos - mcl_mapgen.BS -- Fullminp/fullmaxp of central chunk, in nodes +local ccfmax = central_chunk_max_pos + mcl_mapgen.BS + +local mapgen_limit_b = math_floor(math.min(mcl_mapgen.LIMIT, mcl_mapgen.MAX_LIMIT) / mcl_mapgen.BS) +local mapgen_limit_min = - mapgen_limit_b * mcl_mapgen.BS +local mapgen_limit_max = (mapgen_limit_b + 1) * mcl_mapgen.BS - 1 + +local numcmin = math_max(math_floor((ccfmin - mapgen_limit_min) / mcl_mapgen.CS_NODES), 0) -- Number of complete chunks from central chunk +local numcmax = math_max(math_floor((mapgen_limit_max - ccfmax) / mcl_mapgen.CS_NODES), 0) -- fullminp/fullmaxp to effective mapgen limits. + +mcl_mapgen.EDGE_MIN = central_chunk_min_pos - numcmin * mcl_mapgen.CS_NODES +mcl_mapgen.EDGE_MAX = central_chunk_max_pos + numcmax * mcl_mapgen.CS_NODES + +minetest_log("action", "[mcl_mapgen] World edges: mcl_mapgen.EDGE_MIN = " .. tostring(mcl_mapgen.EDGE_MIN) .. ", mcl_mapgen.EDGE_MAX = " .. tostring(mcl_mapgen.EDGE_MAX)) +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +-- Mapgen variables +local overworld, end_, nether = {}, {}, {} +local seed = minetest.get_mapgen_setting("seed") +mcl_mapgen.seed = seed +mcl_mapgen.name = minetest.get_mapgen_setting("mg_name") +mcl_mapgen.v6 = mcl_mapgen.name == "v6" +mcl_mapgen.superflat = mcl_mapgen.name == "flat" and minetest.get_mapgen_setting("mcl_superflat_classic") == "true" +mcl_mapgen.singlenode = mcl_mapgen.name == "singlenode" +mcl_mapgen.normal = not mcl_mapgen.superflat and not mcl_mapgen.singlenode +local superflat, singlenode, normal = mcl_mapgen.superflat, mcl_mapgen.singlenode, mcl_mapgen.normal + +minetest_log("action", "[mcl_mapgen] Mapgen mode: " .. (normal and "normal" or (superflat and "superflat" or "singlenode"))) +---------------------------------------------------------------------------------------------------------------------------- + +-- Generator queues +local queue_unsafe_engine = {} +local queue_chunks_nodes = {} +local queue_chunks_lvm = {} +local queue_blocks_nodes = {} +local queue_blocks_lvm = {} + +-- Requirements. 0 means 'none', greater than 0 means 'required' +local block = 0 +local queue_blocks_lvm_counter = 0 +local lvm_chunk = 0 +local param2 = 0 +local nodes_block = 0 +local nodes_chunk = 0 +local safe_functions = 0 + +local BS, CS = mcl_mapgen.BS, mcl_mapgen.CS -- Mapblock size (in nodes), Mapchunk size (in blocks) +local LAST_BLOCK, LAST_NODE = CS - 1, BS - 1 -- First mapblock in chunk (node in mapblock) has number 0, last has THIS number. It's for runtime optimization +local offset = mcl_mapgen.OFFSET -- Central mapchunk offset (in blocks) +local CS_NODES = mcl_mapgen.CS_NODES -- 80 + +local CS_3D = CS * CS * CS + +local DEFAULT_ORDER = order.DEFAULT + +function mcl_mapgen.register_on_generated(callback_function, order) + queue_unsafe_engine[#queue_unsafe_engine+1] = {i = order or DEFAULT_ORDER, f = callback_function} + table.sort(queue_unsafe_engine, function(a, b) return (a.i <= b.i) end) +end +function mcl_mapgen.register_mapgen(callback_function, order) + nodes_chunk = nodes_chunk + 1 + safe_functions = safe_functions + 1 + queue_chunks_nodes[nodes_chunk] = {i = order or DEFAULT_ORDER, f = callback_function} + table.sort(queue_chunks_nodes, function(a, b) return (a.i <= b.i) end) +end +function mcl_mapgen.register_mapgen_lvm(callback_function, order) + lvm_chunk = lvm_chunk + 1 + safe_functions = safe_functions + 1 + queue_chunks_lvm[lvm_chunk] = {i = order or DEFAULT_ORDER, f = callback_function} + table.sort(queue_chunks_lvm, function(a, b) return (a.i <= b.i) end) +end +function mcl_mapgen.register_mapgen_block(callback_function, order) + block = block + 1 + nodes_block = nodes_block + 1 + safe_functions = safe_functions + 1 + queue_blocks_nodes[nodes_block] = {i = order or DEFAULT_ORDER, f = callback_function} + table.sort(queue_blocks_nodes, function(a, b) return (a.i <= b.i) end) +end +function mcl_mapgen.register_mapgen_block_lvm(callback_function, order) + block = block + 1 + queue_blocks_lvm_counter = queue_blocks_lvm_counter + 1 + safe_functions = safe_functions + 1 + queue_blocks_lvm[queue_blocks_lvm_counter] = {order = order or DEFAULT_ORDER, callback_function = callback_function} + table.sort(queue_blocks_lvm, function(a, b) return (a.order <= b.order) end) +end + +local storage = minetest.get_mod_storage() +local blocks = minetest.deserialize(storage:get_string("mapgen_blocks") or "return {}") or {} +local chunks = minetest.deserialize(storage:get_string("mapgen_chunks") or "return {}") or {} +minetest.register_on_shutdown(function() + storage:set_string("mapgen_chunks", minetest.serialize(chunks)) + storage:set_string("mapgen_blocks", minetest.serialize(blocks)) +end) + +local vm_context -- here will be many references and flags, like: param2, light_data, heightmap, biomemap, heatmap, humiditymap, gennotify, write_lvm, write_param2, shadow +local data, param2_data, light, area +local current_blocks = {} +local current_chunks = {} +local lvm_buffer, lvm_param2_buffer, lvm_light_buffer = {}, {}, {} -- Static buffer pointers + +minetest.register_on_generated(function(minp, maxp, chunkseed) + local minp, maxp, chunkseed = minp, maxp, chunkseed + local vm, emin, emax = minetest.get_mapgen_object("voxelmanip") + minetest_log("warning", "[mcl_mapgen] New_chunk=" .. minetest_pos_to_string(minp) .. "..." .. minetest_pos_to_string(maxp) .. ", shell=" .. minetest_pos_to_string(emin) .. "..." .. minetest_pos_to_string(emax) .. ", chunkseed=" .. tostring(chunkseed)) + + data = vm:get_data(lvm_buffer) + area = VoxelArea:new({MinEdge=emin, MaxEdge=emax}) + vm_context = { + data = data, + param2_data = param2_data, + light = light, + area = area, + lvm_buffer = lvm_buffer, + lvm_param2_buffer = lvm_param2_buffer, + lvm_light_buffer = lvm_light_buffer, + vm = vm, + emin = emin, + emax = emax, + minp = minp, + maxp = maxp, + chunkseed = chunkseed, + } + + if safe_functions > 0 then + local x0, y0, z0 = minp.x, minp.y, minp.z + local bx0, by0, bz0 = math_floor(x0/BS), math_floor(y0/BS), math_floor(z0/BS) + local bx1, by1, bz1 = bx0 + LAST_BLOCK, by0 + LAST_BLOCK, bz0 + LAST_BLOCK -- only for entire chunk check + + -- Keep `chunkseed` in `chunks[cx][cy][cz].seed` for further safe usage: + local cx0, cy0, cz0 = math_floor((bx0-offset)/CS), math_floor((by0-offset)/CS), math_floor((bz0-offset)/CS) + if not chunks[cx0] then chunks[cx0] = {} end + if not chunks[cx0][cy0] then chunks[cx0][cy0] = {} end + if not chunks[cx0][cy0][cz0] then + chunks[cx0][cy0][cz0] = {seed = chunkseed, counter = 0} + else + chunks[cx0][cy0][cz0].seed = chunkseed + end + + local x1, y1, z1, x2, y2, z2 = emin.x, emin.y, emin.z, emax.x, emax.y, emax.z + local x, y, z = x1, y1, z1 -- iterate 7x7x7 mapchunk, {x,y,z} - first node pos. of mapblock + local bx, by, bz -- block coords (in blocs) + local box, boy, boz -- block offsets in chunks (in blocks) + while x < x2 do + bx = math_floor(x/BS) + local block_pos_offset_removed = bx - offset + local cx = math_floor(block_pos_offset_removed / CS) + box = block_pos_offset_removed % CS + if not blocks[bx] then blocks[bx]={} end + + -- We don't know how many calls, including this one, will overwrite this block content! + -- Start calculating it with `total_mapgen_block_writes_through_x` variable. + -- It can be `8 or less`, if we (speaking of `x` axis) are on chunk edge now, + -- or it can be `4 or less` - if we are in the middle of the chunk by `x` axis: + + local total_mapgen_block_writes_through_x = (box > 0 and box < LAST_BLOCK) and 4 or 8 + while y < y2 do + by = math_floor(y/BS) + block_pos_offset_removed = by - offset + local cy = math_floor(block_pos_offset_removed / CS) + boy = block_pos_offset_removed % CS + if not blocks[bx][by] then blocks[bx][by]={} end + + -- Here we just divide `total_mapgen_block_writes_through_x` by 2, + -- if we are (speaking of `y` axis now) in the middle of the chunk now. + -- Or we don't divide it, if not. + -- So, basing on `total_mapgen_block_writes_through_x`, + --- we calculate `total_mapgen_block_writes_through_y` this way: + + local total_mapgen_block_writes_through_y = (boy > 0 and boy < LAST_BLOCK) and math_floor(total_mapgen_block_writes_through_x / 2) or total_mapgen_block_writes_through_x + while z < z2 do + bz = math_floor(z/BS) + block_pos_offset_removed = bz - offset + local cz = math_floor(block_pos_offset_removed / CS) + boz = block_pos_offset_removed % CS + + -- Now we do absolutely the same for `z` axis, basing on our previous result + -- from `total_mapgen_block_writes_through_y` variable. + -- And our final result is in `total_mapgen_block_writes`. + -- It can be still 8, derived from `x` calculation, but it can be less! + -- It can be even 1, if we are in safe 3x3x3 area of mapchunk: + + local total_mapgen_block_writes = (boz > 0 and boz < LAST_BLOCK) and math_floor(total_mapgen_block_writes_through_y / 2) or total_mapgen_block_writes_through_y + + -- Get current number of writes from the table, or just set it to 1, if accessing first time: + + local current_mapgen_block_writes = blocks[bx][by][bz] and (blocks[bx][by][bz] + 1) or 1 + + -- And compare: + + if current_mapgen_block_writes == total_mapgen_block_writes then + -- this block shouldn't be overwritten anymore, no need to keep it in memory + blocks[bx][by][bz] = nil + if not chunks[cx] then chunks[cx] = {} end + if not chunks[cx][cy] then chunks[cx][cy] = {} end + if not chunks[cx][cy][cz] then + if not chunks[cx][cy][cz] then chunks[cx][cy][cz] = {counter = 1} end + else + chunks[cx][cy][cz].counter = chunks[cx][cy][cz].counter + 1 + if chunks[cx][cy][cz].counter >= CS_3D then + current_chunks[#current_chunks+1] = { x = cx, y = cy, z = cz, s = chunks[cx][cy][cz].seed } + -- this chunk shouldn't be overwritten anymore, no need to keep it in memory + chunks[cx][cy][cz] = nil + if next(chunks[cx][cy]) == nil then chunks[cx][cy] = nil end + if next(chunks[cx]) == nil then chunks[cx] = nil end + end + end + local blockseed = seed + bx * 7 + by * 243 + bz * 11931 + if queue_blocks_lvm_counter > 0 then + vm_context.blockseed = blockseed + vm_context.minp, vm_context.maxp = {x=x, y=y, z=z}, {x=x+LAST_NODE, y=y+LAST_NODE, z=z+LAST_NODE} + for _, v in pairs(queue_blocks_lvm) do + v.callback_function(vm_context) + end + end + if nodes_block > 0 then + current_blocks[#current_blocks+1] = { minp = {x=x, y=y, z=z}, maxp = {x=x+LAST_NODE, y=y+LAST_NODE, z=z+LAST_NODE}, seed = blockseed } + end + else + blocks[bx][by][bz] = current_mapgen_block_writes + end + z = z + BS + end + if next(blocks[bx][by]) == nil then blocks[bx][by] = nil end + z = z1 + y = y + BS + end + if next(blocks[bx]) == nil then blocks[bx] = nil end + y = y1 + x = x + BS + end + end + + if #queue_unsafe_engine > 0 then + for _, v in pairs(queue_unsafe_engine) do + v.f(vm_context) + end + if vm_context.write then + vm:set_data(data) + end + if vm_context.write_param2 then + vm:set_param2_data(vm_context.param2_data) + end + if vm_context.write_light then + vm:set_light_data(light) + end + if vm_context.write or vm_context.write_param2 or vm_context.write_light then + vm:calc_lighting(minp, maxp, (vm_context.shadow ~= nil) or true) -- TODO: check boundaries + vm:write_to_map() + vm:update_liquids() + elseif vm_context.calc_lighting then + vm:calc_lighting(minp, maxp, (vm_context.shadow ~= nil) or true) + end + end + + for i, b in pairs(current_chunks) do + local cx, cy, cz, seed = b.x, b.y, b.z, b.s + local bx, by, bz = cx * CS + offset, cy * CS + offset, cz * CS + offset + local x, y, z = bx * BS, by * BS, bz * BS + local minp = {x = x, y = y, z = z} + local maxp = {x = x + CS_NODES - 1, y = y + CS_NODES - 1, z = z + CS_NODES - 1} + area = VoxelArea:new({MinEdge=minp, MaxEdge=maxp}) + vm_context = { + data = data, + param2_data = param2_data, + light = light, + area = area, + lvm_buffer = lvm_buffer, + lvm_param2_buffer = lvm_param2_buffer, + lvm_light_buffer = lvm_light_buffer, + emin = minp, + emax = maxp, + minp = minp, + maxp = maxp, + chunkseed = seed, + } + for _, v in pairs(queue_chunks_lvm) do + vm_context = v.f(vm_context) + end + for _, v in pairs(queue_chunks_nodes) do + v.f(minp, maxp, seed, vm_context) + end + if vm_context.write or vm_context.write_param2 or vm_context.write_light then + if vm_context.write then + vm:set_data(data) + end + if vm_context.write_param2 then + vm:set_param2_data(param2_data) + end + if vm_context.write_light then + vm:set_light_data(light) + end + -- caused error from torches (?) + -- vm:calc_lighting(minp, maxp, vm_context.shadow or true) + vm:write_to_map() + vm:update_liquids() + elseif vm_context.calc_lighting then + vm:calc_lighting(minp, maxp, (vm_context.shadow ~= nil) or true) + end + current_chunks[i] = nil + end + + for i, b in pairs(current_blocks) do + for _, v in pairs(queue_blocks_nodes) do + v.f(b.minp, b.maxp, b.seed) + end + current_blocks[i] = nil + end +end) + +minetest.register_on_generated = mcl_mapgen.register_chunk_generator + +function mcl_mapgen.get_far_node(p) + local p = p + local node = minetest_get_node(p) + if node.name ~= "ignore" then return node end + minetest_get_voxel_manip():read_from_map(p, p) + return minetest_get_node(p) +end + +local function coordinate_to_block(x) + return math_floor(x / BS) +end + +local function coordinate_to_chunk(x) + return math_floor((coordinate_to_block(x) - offset) / CS) +end + +function mcl_mapgen.pos_to_block(pos) + return { + x = coordinate_to_block(pos.x), + y = coordinate_to_block(pos.y), + z = coordinate_to_block(pos.z) + } +end + +function mcl_mapgen.pos_to_chunk(pos) + return { + x = coordinate_to_chunk(pos.x), + y = coordinate_to_chunk(pos.y), + z = coordinate_to_chunk(pos.z) + } +end + +local k_positive = math.ceil(mcl_mapgen.MAX_LIMIT / mcl_mapgen.CS_NODES) +local k_positive_z = k_positive * 2 +local k_positive_y = k_positive_z * k_positive_z + +function mcl_mapgen.get_chunk_number(pos) -- unsigned int + local c = mcl_mapgen.pos_to_chunk(pos) + return + (c.y + k_positive) * k_positive_y + + (c.z + k_positive) * k_positive_z + + c.x + k_positive +end + +mcl_mapgen.minecraft_height_limit = 256 + +mcl_mapgen.bedrock_is_rough = normal + +--[[ Realm stacking (h is for height) +- Overworld (h>=256) +- Void (h>=1000) +- Realm Barrier (h=11), to allow escaping the End +- End (h>=256) +- Void (h>=1000) +- Nether (h=128) +- Void (h>=1000) +]] + +-- Overworld +overworld.min = -62 +if superflat then + mcl_mapgen.ground = tonumber(minetest.get_mapgen_setting("mgflat_ground_level")) or 8 + overworld.min = ground - 3 +end +-- if singlenode then mcl_mapgen.overworld.min = -66 end -- DONT KNOW WHY +overworld.max = mcl_mapgen.EDGE_MAX + +overworld.bedrock_min = overworld.min +overworld.bedrock_max = overworld.bedrock_min + (mcl_mapgen.bedrock_is_rough and 4 or 0) + +mcl_mapgen.lava = normal +overworld.lava_max = overworld.min + (normal and 10 or 0) + + +-- The Nether (around Y = -29000) +nether.min = -29067 -- Carefully chosen to be at a mapchunk border +nether.max = nether.min + 128 +nether.bedrock_bottom_min = nether.min +nether.bedrock_top_max = nether.max +if not superflat then + nether.bedrock_bottom_max = nether.bedrock_bottom_min + 4 + nether.bedrock_top_min = nether.bedrock_top_max - 4 + nether.lava_max = nether.min + 31 +else + -- Thin bedrock in classic superflat mapgen + nether.bedrock_bottom_max = nether.bedrock_bottom_min + nether.bedrock_top_min = nether.bedrock_top_max + nether.lava_max = nether.min + 2 +end +if mcl_mapgen.name == "flat" then + if superflat then + nether.flat_floor = nether.bedrock_bottom_max + 4 + nether.flat_ceiling = nether.bedrock_bottom_max + 52 + else + nether.flat_floor = nether.lava_max + 4 + nether.flat_ceiling = nether.lava_max + 52 + end +end + +-- The End (surface at ca. Y = -27000) +end_.min = -27073 -- Carefully chosen to be at a mapchunk border +end_.max = overworld.min - 2000 +end_.platform_pos = { x = 100, y = end_.min + 74, z = 0 } + +-- Realm barrier used to safely separate the End from the void below the Overworld +mcl_mapgen.realm_barrier_overworld_end_max = end_.max +mcl_mapgen.realm_barrier_overworld_end_min = end_.max - 11 + +-- Use MineClone 2-style dungeons for normal mapgen +mcl_mapgen.dungeons = normal + +mcl_mapgen.overworld = overworld +mcl_mapgen.end_ = end_ +mcl_mapgen["end"] = mcl_mapgen.end_ +mcl_mapgen.nether = nether + +mcl_mapgen.order = order + +function mcl_mapgen.get_voxel_manip(vm_context) + if vm_context.vm then + return vm + end + vm_context.vm = minetest.get_voxel_manip(vm_context.emin, vm_context.emax) + vm_context.emin, vm_context.emax = vm_context.vm:read_from_map(vm_context.emin, vm_context.emax) + vm_context.area = VoxelArea:new({MinEdge=vm_context.emin, MaxEdge=vm_context.emax}) + return vm_context.vm +end + +local CS_NODES = mcl_mapgen.CS_NODES +function mcl_mapgen.clamp_to_chunk(x, size) + if not size then + minetest.log("warning", "[mcl_mapgen] Couldn't clamp " .. tostring(x) .. " - missing size") + return x + end + if size > CS_NODES then + minetest.log("warning", "[mcl_mapgen] Couldn't clamp " .. tostring(x) .. " - given size " .. tostring(size) .. " greater than chunk size " .. tostring(mcl_mapgen.CS_NODES)) + return x + end + local offset_in_chunk = (x + central_chunk_min_pos) % CS_NODES + local x2_in_chunk = offset_in_chunk + size + if x2_in_chunk <= CS_NODES then + return x + end + local overflow = x2_in_chunk - CS_NODES + if overflow > size / 2 then + local next_x = x + (size - overflow) + if next_x < mcl_mapgen.EDGE_MAX then + return next_x + end + end + return x - overflow +end +function mcl_mapgen.get_chunk_beginning(x) + return x - ((x + central_chunk_min_pos) % CS_NODES) +end diff --git a/mods/CORE/mcl_mapgen/mod.conf b/mods/CORE/mcl_mapgen/mod.conf new file mode 100644 index 000000000..76b4a5c93 --- /dev/null +++ b/mods/CORE/mcl_mapgen/mod.conf @@ -0,0 +1,4 @@ +name = mcl_mapgen +author = kay27 +description = MineClone 2/5 MapGen Basic Stuff +depends = mcl_init diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index d548f6cac..32c3b0dee 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -22,100 +22,14 @@ function table.update_nil(t, ...) return t end --- Based on minetest.rotate_and_place +-- Creates a function that calls to the minetest +-- function minetest_rotate_and_place. It rotates +-- a block based on where it thinks the player is facing +-- at the moment. This is typically called by pillar-like nodes. ---[[ -Attempt to predict the desired orientation of the pillar-like node -defined by `itemstack`, and place it accordingly in one of 3 possible -orientations (X, Y or Z). - -Stacks are handled normally if the `infinitestacks` -field is false or omitted (else, the itemstack is not changed). -* `invert_wall`: if `true`, place wall-orientation on the ground and ground- - orientation on wall - -This function is a simplified version of minetest.rotate_and_place. -The Minetest function is seen as inappropriate because this includes mirror -images of possible orientations, causing problems with pillar shadings. -]] -function mcl_util.rotate_axis_and_place(itemstack, placer, pointed_thing, infinitestacks, invert_wall) - local unode = minetest.get_node_or_nil(pointed_thing.under) - if not unode then - return - end - local undef = minetest.registered_nodes[unode.name] - if undef and undef.on_rightclick then - undef.on_rightclick(pointed_thing.under, unode, placer, - itemstack, pointed_thing) - return - end - local fdir = minetest.dir_to_facedir(placer:get_look_dir()) - local wield_name = itemstack:get_name() - - local above = pointed_thing.above - local under = pointed_thing.under - local is_x = (above.x ~= under.x) - local is_y = (above.y ~= under.y) - local is_z = (above.z ~= under.z) - - local anode = minetest.get_node_or_nil(above) - if not anode then - return - end - local pos = pointed_thing.above - local node = anode - - if undef and undef.buildable_to then - pos = pointed_thing.under - node = unode - end - - if minetest.is_protected(pos, placer:get_player_name()) then - minetest.record_protection_violation(pos, placer:get_player_name()) - return - end - - local ndef = minetest.registered_nodes[node.name] - if not ndef or not ndef.buildable_to then - return - end - - local p2 - if is_y then - if invert_wall then - if fdir == 3 or fdir == 1 then - p2 = 12 - else - p2 = 6 - end - end - elseif is_x then - if invert_wall then - p2 = 0 - else - p2 = 12 - end - elseif is_z then - if invert_wall then - p2 = 0 - else - p2 = 6 - end - end - minetest.set_node(pos, {name = wield_name, param2 = p2}) - - if not infinitestacks then - itemstack:take_item() - return itemstack - end -end - --- Wrapper of above function for use as `on_place` callback (Recommended). --- Similar to minetest.rotate_node. function mcl_util.rotate_axis(itemstack, placer, pointed_thing) - mcl_util.rotate_axis_and_place(itemstack, placer, pointed_thing, - minetest.is_creative_enabled(placer:get_player_name()), - placer:get_player_control().sneak) + minetest.rotate_and_place(itemstack, placer, pointed_thing, + minetest.is_creative_enabled(placer:get_player_name())) return itemstack end diff --git a/mods/CORE/mcl_worlds/init.lua b/mods/CORE/mcl_worlds/init.lua index 203f69401..eb366013e 100644 --- a/mods/CORE/mcl_worlds/init.lua +++ b/mods/CORE/mcl_worlds/init.lua @@ -5,25 +5,25 @@ local get_connected_players = minetest.get_connected_players -- For a given position, returns a 2-tuple: -- 1st return value: true if pos is in void -- 2nd return value: true if it is in the deadly part of the void +local min1, min2, min3 = mcl_mapgen.overworld.min, mcl_mapgen.end_.min, mcl_mapgen.nether.min +local max1, max2, max3 = mcl_mapgen.overworld.max, mcl_mapgen.end_.max, mcl_mapgen.nether.max+128 function mcl_worlds.is_in_void(pos) - local void = - not ((pos.y < mcl_vars.mg_overworld_max and pos.y > mcl_vars.mg_overworld_min) or - (pos.y < mcl_vars.mg_nether_max+128 and pos.y > mcl_vars.mg_nether_min) or - (pos.y < mcl_vars.mg_end_max and pos.y > mcl_vars.mg_end_min)) + local y = pos.y + local void = not ((y < max1 and y > min1) or (y < max2 and y > min2) or (y < max3 and y > min3)) local void_deadly = false local deadly_tolerance = 64 -- the player must be this many nodes “deep” into the void to be damaged if void then -- Overworld → Void → End → Void → Nether → Void - if pos.y < mcl_vars.mg_overworld_min and pos.y > mcl_vars.mg_end_max then - void_deadly = pos.y < mcl_vars.mg_overworld_min - deadly_tolerance - elseif pos.y < mcl_vars.mg_end_min and pos.y > mcl_vars.mg_nether_max+128 then + if y < min1 and y > max2 then + void_deadly = y < min1 - deadly_tolerance + elseif y < min2 and y > max3 then -- The void between End and Nether. Like usual, but here, the void -- *above* the Nether also has a small tolerance area, so player -- can fly above the Nether without getting hurt instantly. - void_deadly = (pos.y < mcl_vars.mg_end_min - deadly_tolerance) and (pos.y > mcl_vars.mg_nether_max+128 + deadly_tolerance) - elseif pos.y < mcl_vars.mg_nether_min then - void_deadly = pos.y < mcl_vars.mg_nether_min - deadly_tolerance + void_deadly = (y < min2 - deadly_tolerance) and (y > max3 + deadly_tolerance) + elseif y < min3 then + void_deadly = y < min3 - deadly_tolerance end end return void, void_deadly @@ -35,15 +35,15 @@ end -- If the Y coordinate is not located in any dimension, it will return: -- nil, "void" function mcl_worlds.y_to_layer(y) - if y >= mcl_vars.mg_overworld_min then - return y - mcl_vars.mg_overworld_min, "overworld" - elseif y >= mcl_vars.mg_nether_min and y <= mcl_vars.mg_nether_max+128 then - return y - mcl_vars.mg_nether_min, "nether" - elseif y >= mcl_vars.mg_end_min and y <= mcl_vars.mg_end_max then - return y - mcl_vars.mg_end_min, "end" - else - return nil, "void" - end + if y >= min1 then + return y - min1, "overworld" + elseif y >= min3 and y <= max3 then + return y - min3, "nether" + elseif y >= min2 and y <= max2 then + return y - min2, "end" + else + return nil, "void" + end end local y_to_layer = mcl_worlds.y_to_layer @@ -61,38 +61,38 @@ local pos_to_dimension = mcl_worlds.pos_to_dimension -- MineClone 2. -- mc_dimension is one of "overworld", "nether", "end" (default: "overworld"). function mcl_worlds.layer_to_y(layer, mc_dimension) - if mc_dimension == "overworld" or mc_dimension == nil then - return layer + mcl_vars.mg_overworld_min - elseif mc_dimension == "nether" then - return layer + mcl_vars.mg_nether_min - elseif mc_dimension == "end" then - return layer + mcl_vars.mg_end_min - end + if not mc_dimension or mc_dimension == "overworld" then + return layer + min1 + elseif mc_dimension == "nether" then + return layer + min3 + elseif mc_dimension == "end" then + return layer + min2 + end end -- Takes a position and returns true if this position can have weather function mcl_worlds.has_weather(pos) - -- Weather in the Overworld and the high part of the void below - return pos.y <= mcl_vars.mg_overworld_max and pos.y >= mcl_vars.mg_overworld_min - 64 + -- Weather in the Overworld and the high part of the void below + return pos.y <= max1 and pos.y >= min1 - 64 end -- Takes a position and returns true if this position can have Nether dust function mcl_worlds.has_dust(pos) - -- Weather in the Overworld and the high part of the void below - return pos.y <= mcl_vars.mg_nether_max + 138 and pos.y >= mcl_vars.mg_nether_min - 10 + -- Weather in the Overworld and the high part of the void below + return pos.y <= max3 + 138 and pos.y >= min3 - 10 end -- Takes a position (pos) and returns true if compasses are working here function mcl_worlds.compass_works(pos) - -- It doesn't work in Nether and the End, but it works in the Overworld and in the high part of the void below - local _, dim = mcl_worlds.y_to_layer(pos.y) - if dim == "nether" or dim == "end" then - return false - elseif dim == "void" then - return pos.y <= mcl_vars.mg_overworld_max and pos.y >= mcl_vars.mg_overworld_min - 64 - else - return true - end + -- It doesn't work in Nether and the End, but it works in the Overworld and in the high part of the void below + local _, dim = mcl_worlds.y_to_layer(pos.y) + if dim == "nether" or dim == "end" then + return false + elseif dim == "void" then + return pos.y <= max1 and pos.y >= min1 - 64 + else + return true + end end -- Takes a position (pos) and returns true if clocks are working here @@ -152,4 +152,3 @@ minetest.register_globalstep(function(dtime) dimtimer = 0 end end) - diff --git a/mods/CORE/mcl_worlds/mod.conf b/mods/CORE/mcl_worlds/mod.conf index 4b979b4fe..8a44f4e01 100644 --- a/mods/CORE/mcl_worlds/mod.conf +++ b/mods/CORE/mcl_worlds/mod.conf @@ -1,5 +1,4 @@ name = mcl_worlds author = Wuzzy description = Utility functions for worlds and the “dimensions”. -depends = mcl_init - +depends = mcl_mapgen diff --git a/mods/ENTITIES/mcl_mobs/api/api.lua b/mods/ENTITIES/mcl_mobs/api/api.lua index 639eb517d..ea7589f47 100644 --- a/mods/ENTITIES/mcl_mobs/api/api.lua +++ b/mods/ENTITIES/mcl_mobs/api/api.lua @@ -144,6 +144,7 @@ dofile(api_path .. "mob_effects.lua") dofile(api_path .. "projectile_handling.lua") dofile(api_path .. "breeding.lua") dofile(api_path .. "head_logic.lua") +dofile(api_path .. "monster_light.lua") mobs.spawning_mobs = {} @@ -436,55 +437,6 @@ function mobs:register_mob(name, def) end -- END mobs:register_mob function - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- register arrow for shoot attack function mobs:register_arrow(name, def) @@ -586,36 +538,6 @@ function mobs:register_arrow(name, def) self.object:remove(); return end - - --[[ - local entity = player:get_luaentity() - - if entity - and self.hit_mob - and entity._cmi_is_mob == true - and tostring(player) ~= self.owner_id - and entity.name ~= self.object:get_luaentity().name - and (self._shooter and entity.name ~= self._shooter:get_luaentity().name) then - - --self.hit_mob(self, player) - self.object:remove(); - return - end - ]]-- - - --[[ - if entity - and self.hit_object - and (not entity._cmi_is_mob) - and tostring(player) ~= self.owner_id - and entity.name ~= self.object:get_luaentity().name - and (self._shooter and entity.name ~= self._shooter:get_luaentity().name) then - - --self.hit_object(self, player) - self.object:remove(); - return - end - ]]-- end end @@ -630,7 +552,6 @@ end -- * spawn_egg=1: Spawn egg (generic mob, no metadata) -- * spawn_egg=2: Spawn egg (captured/tamed mob, metadata) function mobs:register_egg(mob, desc, background, addegg, no_creative) - local grp = {spawn_egg = 1} -- do NOT add this egg to creative inventory (e.g. dungeon master) @@ -647,7 +568,6 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative) -- register old stackable mob egg minetest.register_craftitem(mob, { - description = desc, inventory_image = invimg, groups = grp, @@ -668,20 +588,50 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative) if pos --and within_limits(pos, 0) + + --testing to see if the block you are trying to mess with is protected and not minetest.is_protected(pos, placer:get_player_name()) then + --getting the name of the player that placed the egg, and their privileges. local name = placer:get_player_name() local privs = minetest.get_player_privs(name) + if mod_mobspawners and under.name == "mcl_mobspawners:spawner" then + --If the thing you are trying to spawn the egg on is protected + --the violation gets reported if minetest.is_protected(pointed_thing.under, name) then minetest.record_protection_violation(pointed_thing.under, name) return itemstack end + if not privs.maphack then minetest.chat_send_player(name, S("You need the “maphack” privilege to change the mob spawner.")) return itemstack end - mcl_mobspawners.setup_spawner(pointed_thing.under, itemstack:get_name()) + + --Changes the mob spawner type with the egg that you used to click on it + --determining monster spawn lvl + + local hold_light = 15 + local mon_name + + --Extracts mob name from item name + for name in string.gmatch(itemstack:get_name(), ":%a.*") do + mon_name = name:gsub(":", "") + end + + --For every monster in the monster_lightlvl table check if + --it matches the spawn egg you're holding + for name, lightlvl in pairs(monster_lightlvl) do + print(mon_name == name) + if name == mon_name then + hold_light = lightlvl + end + end + + --Switch out the mob spawner to spawn mobs from the egg that you're holding + mcl_mobspawners.setup_spawner(pointed_thing.under, itemstack:get_name(), 0, hold_light) + if not mobs.is_creative(name) then itemstack:take_item() end @@ -691,7 +641,8 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative) if not minetest_registered_entities[mob] then return itemstack end - + + --If only peaceful mobs are allowed, player is not allowed to spawn a monster if minetest_settings:get_bool("only_peaceful_mobs", false) and minetest_registered_entities[mob].type == "monster" then minetest.chat_send_player(name, S("Only peaceful mobs allowed!")) @@ -699,18 +650,11 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative) end local mob = minetest_add_entity(pos, mob) + + --Log that a mob was spawned by the player who spawned it and the coordinates minetest.log("action", "Mob spawned: "..name.." at "..minetest.pos_to_string(pos)) local ent = mob:get_luaentity() - -- don't set owner if monster or sneak pressed - --[[ - if ent.type ~= "monster" - and not placer:get_player_control().sneak then - ent.owner = placer:get_player_name() - ent.tamed = true - end - ]]-- - -- set nametag local nametag = itemstack:get_meta():get_string("name") if nametag ~= "" then @@ -721,7 +665,8 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative) --update_tag(ent) end - -- if not in creative then take item + -- if not in creative then remove the item from the stack + -- taking the player's item if not mobs.is_creative(placer:get_player_name()) then itemstack:take_item() end diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua index 6dc0c39d9..c7fb073b0 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua @@ -175,16 +175,16 @@ end -- check if within physical map limits (-30911 to 30927) -- within_limits, wmin, wmax = nil, -30913, 30928 mobs.within_limits = function(pos, radius) - local wmin, wmax - if mcl_vars then - if mcl_vars.mapgen_edge_min and mcl_vars.mapgen_edge_max then - wmin, wmax = mcl_vars.mapgen_edge_min, mcl_vars.mapgen_edge_max + local wmin, wmax + if mcl_mapgen then + if mcl_mapgen.EDGE_MIN and mcl_mapgen.EDGE_MAX then + wmin, wmax = mcl_mapgen.EDGE_MIN, mcl_mapgen.EDGE_MAX + return pos + and (pos.x - radius) > wmin and (pos.x + radius) < wmax + and (pos.y - radius) > wmin and (pos.y + radius) < wmax + and (pos.z - radius) > wmin and (pos.z + radius) < wmax end end - return pos - and (pos.x - radius) > wmin and (pos.x + radius) < wmax - and (pos.y - radius) > wmin and (pos.y + radius) < wmax - and (pos.z - radius) > wmin and (pos.z + radius) < wmax end -- get node but use fallback for nil or unknown diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/monster_light.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/monster_light.lua new file mode 100644 index 000000000..266ade6f8 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/monster_light.lua @@ -0,0 +1,18 @@ +-- This file contains all of the light levels for monsters in the game +-- If the mob is not here they either do not exist or can spawn at any light level +monster_lightlvl = { + zombie = 0, + skeleton = 0, + stray = 0, + blaze = 11, + skeleton_wither = 7, + pigman = 10, + baby_pigman = 10, + slime_big = 7, + creeper = 0, + witch = 0, + spider = 0, + silverfish = 11, + endermen = 7, + bat = 3 +} diff --git a/mods/ENTITIES/mcl_mobs/api/mount.lua b/mods/ENTITIES/mcl_mobs/api/mount.lua index 11b2e5e89..dc56ee353 100644 --- a/mods/ENTITIES/mcl_mobs/api/mount.lua +++ b/mods/ENTITIES/mcl_mobs/api/mount.lua @@ -229,7 +229,8 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime) -- mob rotation local rotate = entity.rotate if rotate then - local yaw = entity.driver:get_look_horizontal() - rotate + local driver_look_horizontal = entity.driver:get_look_horizontal() or 0 + local yaw = driver_look_horizontal - rotate entity.yaw = yaw entity.object:set_yaw(yaw) end diff --git a/mods/ENTITIES/mcl_mobs/mod.conf b/mods/ENTITIES/mcl_mobs/mod.conf index 2a91a7764..6d3a8acc0 100644 --- a/mods/ENTITIES/mcl_mobs/mod.conf +++ b/mods/ENTITIES/mcl_mobs/mod.conf @@ -1,5 +1,5 @@ name = mcl_mobs author = PilzAdam description = Adds a mob API for mods to add animals or monsters, etc. -depends = mcl_particles +depends = mcl_mapgen, mcl_particles optional_depends = mcl_weather, mcl_explosions, mcl_hunger, mcl_worlds, cmi, doc_identifier, mcl_armor, mcl_portals, mcl_experience diff --git a/mods/ENTITIES/mobs_mc_gameconfig/init.lua b/mods/ENTITIES/mobs_mc_gameconfig/init.lua index 27cb4b4bf..7be16e482 100644 --- a/mods/ENTITIES/mobs_mc_gameconfig/init.lua +++ b/mods/ENTITIES/mobs_mc_gameconfig/init.lua @@ -233,15 +233,15 @@ mobs_mc.override.spawn_height = { water = tonumber(minetest.settings:get("water_level")) or 0, -- Water level in the Overworld -- Overworld boundaries (inclusive) - overworld_min = mcl_vars.mg_overworld_min, - overworld_max = mcl_vars.mg_overworld_max, + overworld_min = mcl_mapgen.overworld.min, + overworld_max = mcl_mapgen.overworld.max, -- Nether boundaries (inclusive) - nether_min = mcl_vars.mg_nether_min, - nether_max = mcl_vars.mg_nether_max, + nether_min = mcl_mapgen.nether.min, + nether_max = mcl_mapgen.nether.max, -- End boundaries (inclusive) - end_min = mcl_vars.mg_end_min, - end_max = mcl_vars.mg_end_max, + end_min = mcl_mapgen.end_.min, + end_max = mcl_mapgen.end_.max, } diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index 7107a2373..20978e26f 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -4,7 +4,8 @@ local modpath = minetest.get_modpath(minetest.get_current_modname()) -local mg_name = minetest.get_mapgen_setting("mg_name") +local mg_name = mcl_mapgen.name +local v6 = mcl_mapgen.v6 local math = math local vector = vector @@ -381,7 +382,7 @@ function mcl_core.generate_tree(pos, tree_type, options) local balloon = options and options.balloon if tree_type == nil or tree_type == OAK_TREE_ID then - if mg_name == "v6" then + if v6 then mcl_core.generate_v6_oak_tree(pos) else if balloon then @@ -396,7 +397,7 @@ function mcl_core.generate_tree(pos, tree_type, options) if two_by_two then mcl_core.generate_huge_spruce_tree(pos) else - if mg_name == "v6" then + if v6 then mcl_core.generate_v6_spruce_tree(pos) else mcl_core.generate_spruce_tree(pos) @@ -408,7 +409,7 @@ function mcl_core.generate_tree(pos, tree_type, options) if two_by_two then mcl_core.generate_huge_jungle_tree(pos) else - if mg_name == "v6" then + if v6 then mcl_core.generate_v6_jungle_tree(pos) else mcl_core.generate_jungle_tree(pos) @@ -786,7 +787,7 @@ function mcl_core.generate_huge_jungle_tree(pos) end -local grass_spread_randomizer = PseudoRandom(minetest.get_mapgen_setting("seed")) +local grass_spread_randomizer = PseudoRandom(mcl_mapgen.seed) function mcl_core.get_grass_palette_index(pos) local biome_data = minetest.get_biome_data(pos) diff --git a/mods/ITEMS/mcl_core/mod.conf b/mods/ITEMS/mcl_core/mod.conf index 45018df75..3d7f59245 100644 --- a/mods/ITEMS/mcl_core/mod.conf +++ b/mods/ITEMS/mcl_core/mod.conf @@ -1,4 +1,4 @@ name = mcl_core description = Core items of MineClone 2: Basic biome blocks (dirt, sand, stones, etc.), derived items, glass, sugar cane, cactus, barrier, mining tools, hand, craftitems, and misc. items which don't really fit anywhere else. -depends = mcl_autogroup, mcl_init, mcl_sounds, mcl_particles, mcl_util, mcl_worlds, doc_items, mcl_enchanting, mcl_colors +depends = mcl_autogroup, mcl_init, mcl_sounds, mcl_particles, mcl_util, mcl_worlds, doc_items, mcl_enchanting, mcl_colors, mcl_mapgen optional_depends = doc diff --git a/mods/ITEMS/mcl_stairs/textures/mcl_stairs_stone_slab_top.png b/mods/ITEMS/mcl_core/textures/mcl_stairs_stone_slab_top.png similarity index 100% rename from mods/ITEMS/mcl_stairs/textures/mcl_stairs_stone_slab_top.png rename to mods/ITEMS/mcl_core/textures/mcl_stairs_stone_slab_top.png diff --git a/mods/ITEMS/mcl_deepslate/init.lua b/mods/ITEMS/mcl_deepslate/init.lua index 55b8a5a79..7984ba89a 100644 --- a/mods/ITEMS/mcl_deepslate/init.lua +++ b/mods/ITEMS/mcl_deepslate/init.lua @@ -249,30 +249,30 @@ if minetest.settings:get_bool("mcl_generate_ores", true) then clust_size = size, y_min = y_min, y_max = y_max, - biomes = biomes, + biomes = biomes, }) end local ore_mapgen = { - { "coal", 1575, 5, 3, layer_min, layer_max }, - { "coal", 1530, 8, 3, layer_min, layer_max }, - { "coal", 1500, 12, 3, layer_min, layer_max }, - { "iron", 830, 5, 3, layer_min, layer_max }, - { "gold", 4775, 5, 3, layer_min, layer_max }, - { "gold", 6560, 7, 3, layer_min, layer_max }, - { "diamond", 10000, 4, 3, layer_min, mcl_worlds.layer_to_y(12) }, - { "diamond", 5000, 2, 3, layer_min, mcl_worlds.layer_to_y(12) }, - { "diamond", 10000, 8, 3, layer_min, mcl_worlds.layer_to_y(12) }, - { "diamond", 20000, 1, 1, mcl_worlds.layer_to_y(13), mcl_worlds.layer_to_y(15) }, - { "diamond", 20000, 2, 2, mcl_worlds.layer_to_y(13), mcl_worlds.layer_to_y(15) }, - { "redstone", 500, 4, 3, layer_min, mcl_worlds.layer_to_y(13) }, - { "redstone", 800, 7, 4, layer_min, mcl_worlds.layer_to_y(13) }, - { "redstone", 1000, 4, 3, mcl_worlds.layer_to_y(13), mcl_worlds.layer_to_y(15) }, - { "redstone", 1600, 7, 4, mcl_worlds.layer_to_y(13), mcl_worlds.layer_to_y(15) }, - { "lapis", 10000, 7, 4, mcl_worlds.layer_to_y(14), layer_max }, - { "lapis", 12000, 6, 3, mcl_worlds.layer_to_y(10), mcl_worlds.layer_to_y(13) }, - { "lapis", 14000, 5, 3, mcl_worlds.layer_to_y(6), mcl_worlds.layer_to_y(9) }, - { "lapis", 16000, 4, 3, mcl_worlds.layer_to_y(2), mcl_worlds.layer_to_y(5) }, - { "lapis", 18000, 3, 2, mcl_worlds.layer_to_y(0), mcl_worlds.layer_to_y(2) }, + { "coal" , 1575, 5, 3, layer_min , layer_max }, + { "coal" , 1530, 8, 3, layer_min , layer_max }, + { "coal" , 1500, 12, 3, layer_min , layer_max }, + { "iron" , 830, 5, 3, layer_min , layer_max }, + { "gold" , 4775, 5, 3, layer_min , layer_max }, + { "gold" , 6560, 7, 3, layer_min , layer_max }, + { "diamond" , 10000, 4, 3, layer_min , mcl_worlds.layer_to_y(12) }, + { "diamond" , 5000, 2, 3, layer_min , mcl_worlds.layer_to_y(12) }, + { "diamond" , 10000, 8, 3, layer_min , mcl_worlds.layer_to_y(12) }, + { "diamond" , 20000, 1, 1, mcl_worlds.layer_to_y(13), mcl_worlds.layer_to_y(15) }, + { "diamond" , 20000, 2, 2, mcl_worlds.layer_to_y(13), mcl_worlds.layer_to_y(15) }, + { "redstone", 500, 4, 3, layer_min , mcl_worlds.layer_to_y(13) }, + { "redstone", 800, 7, 4, layer_min , mcl_worlds.layer_to_y(13) }, + { "redstone", 1000, 4, 3, mcl_worlds.layer_to_y(13), mcl_worlds.layer_to_y(15) }, + { "redstone", 1600, 7, 4, mcl_worlds.layer_to_y(13), mcl_worlds.layer_to_y(15) }, + { "lapis" , 10000, 7, 4, mcl_worlds.layer_to_y(14), layer_max }, + { "lapis" , 12000, 6, 3, mcl_worlds.layer_to_y(10), mcl_worlds.layer_to_y(13) }, + { "lapis" , 14000, 5, 3, mcl_worlds.layer_to_y(6) , mcl_worlds.layer_to_y(9) }, + { "lapis" , 16000, 4, 3, mcl_worlds.layer_to_y(2) , mcl_worlds.layer_to_y(5) }, + { "lapis" , 18000, 3, 2, mcl_worlds.layer_to_y(0) , mcl_worlds.layer_to_y(2) }, } for _, o in pairs(ore_mapgen) do register_ore_mg("mcl_deepslate:deepslate_with_"..o[1], o[2], o[3], o[4], o[5], o[6]) diff --git a/mods/ITEMS/mcl_end/eye_of_ender.lua b/mods/ITEMS/mcl_end/eye_of_ender.lua index ea3d70aba..5974e59dd 100644 --- a/mods/ITEMS/mcl_end/eye_of_ender.lua +++ b/mods/ITEMS/mcl_end/eye_of_ender.lua @@ -87,7 +87,7 @@ minetest.register_craftitem("mcl_end:ender_eye", { end local origin = user:get_pos() origin.y = origin.y + 1.5 - local strongholds = mcl_structures.get_registered_structures("stronghold") + local strongholds = mcl_structures.strongholds local dim = mcl_worlds.pos_to_dimension(origin) local is_creative = minetest.is_creative_enabled(user:get_player_name()) diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index 1d9ca012c..0eb71ac91 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -129,7 +129,7 @@ if minetest.get_modpath("mcl_armor") then pumpkin_blur = player:hud_add({ hud_elem_type = "image", position = {x = 0.5, y = 0.5}, - scale = {x = -100, y = -100}, + scale = {x = -101, y = -101}, text = "mcl_farming_pumpkin_hud.png", z_index = -200 }), diff --git a/mods/ITEMS/mcl_mobspawners/init.lua b/mods/ITEMS/mcl_mobspawners/init.lua index 0795fb611..37720e1e8 100644 --- a/mods/ITEMS/mcl_mobspawners/init.lua +++ b/mods/ITEMS/mcl_mobspawners/init.lua @@ -317,7 +317,12 @@ minetest.register_node("mcl_mobspawners:spawner", { if obj then obj:remove() end - mcl_experience.throw_xp(pos, math.random(15, 43)) + + --Make sure the player is not in creative mode before + --giving them xp + if not minetest.is_creative_enabled(name) then + mcl_experience.throw_xp(pos, math.random(15, 43)) + end end, on_punch = function(pos) diff --git a/mods/ITEMS/mcl_portals/mod.conf b/mods/ITEMS/mcl_portals/mod.conf index 610b590c6..d4b82cc58 100644 --- a/mods/ITEMS/mcl_portals/mod.conf +++ b/mods/ITEMS/mcl_portals/mod.conf @@ -1,4 +1,4 @@ name = mcl_portals description = Adds buildable portals to the Nether and End dimensions. -depends = mcl_nether, mcl_end, mcl_particles, mcl_spawn, mcl_credits +depends = mcl_mapgen, mcl_nether, mcl_end, mcl_particles, mcl_spawn, mcl_credits, mcl_structures optional_depends = awards, doc diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index e4982c39b..9e1a67a75 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -6,12 +6,6 @@ local math = math local has_doc = minetest.get_modpath("doc") --- Parameters ---local SPAWN_MIN = mcl_vars.mg_end_min+70 ---local SPAWN_MAX = mcl_vars.mg_end_min+98 - ---local mg_name = minetest.get_mapgen_setting("mg_name") - local function destroy_portal(pos) local neighbors = { { x=1, y=0, z=0 }, @@ -184,7 +178,7 @@ function mcl_portals.end_teleport(obj, pos) -- Teleport to the End at a fixed position and generate a -- 5×5 obsidian platform below. - local platform_pos = mcl_vars.mg_end_platform_pos + local platform_pos = mcl_mapgen.end_.platform_pos -- force emerge of target1 area minetest.get_voxel_manip():read_from_map(platform_pos, platform_pos) if not minetest.get_node_or_nil(platform_pos) then diff --git a/mods/ITEMS/mcl_portals/portal_gateway.lua b/mods/ITEMS/mcl_portals/portal_gateway.lua index ca15a61d5..505935105 100644 --- a/mods/ITEMS/mcl_portals/portal_gateway.lua +++ b/mods/ITEMS/mcl_portals/portal_gateway.lua @@ -29,9 +29,15 @@ local gateway_positions = { local path_gateway_portal = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_end_gateway_portal.mts" local function spawn_gateway_portal(pos, dest_str) - return mcl_structures.place_schematic(vector.add(pos, vector.new(-1, -2, -1)), path_gateway_portal, "0", nil, true, nil, dest_str and function() - minetest.get_meta(pos):set_string("mcl_portals:gateway_destination", dest_str) - end) + return mcl_structures.place_schematic({ + pos = vector.add(pos, vector.new(-1, -2, -1)), + schematic = path_gateway_portal, + rotation = "0", + force_placement = true, + on_placed = dest_str and function() + minetest.get_meta(pos):set_string("mcl_portals:gateway_destination", dest_str) + end, + }) end function mcl_portals.spawn_gateway_portal() diff --git a/mods/ITEMS/mcl_portals/portal_nether.lua b/mods/ITEMS/mcl_portals/portal_nether.lua index 838c1be95..e6dd255f0 100644 --- a/mods/ITEMS/mcl_portals/portal_nether.lua +++ b/mods/ITEMS/mcl_portals/portal_nether.lua @@ -19,7 +19,7 @@ local W_MIN, W_MAX = 4, 23 local H_MIN, H_MAX = 5, 23 local N_MIN, N_MAX = 6, (W_MAX-2) * (H_MAX-2) local TRAVEL_X, TRAVEL_Y, TRAVEL_Z = 8, 1, 8 -local LIM_MIN, LIM_MAX = mcl_vars.mapgen_edge_min, mcl_vars.mapgen_edge_max +local LIM_MIN, LIM_MAX = mcl_mapgen.EDGE_MIN, mcl_mapgen.EDGE_MAX local PLAYER_COOLOFF, MOB_COOLOFF = 3, 14 -- for this many seconds they won't teleported again local TOUCH_CHATTER_TIME = 1 -- prevent multiple teleportation attempts caused by multiple portal touches, for this number of seconds local CHATTER_US = TOUCH_CHATTER_TIME * 1000000 @@ -27,8 +27,8 @@ local DELAY = 3 -- seconds before teleporting in Nether portal in Survival mo local DISTANCE_MAX = 128 local PORTAL = "mcl_portals:portal" local OBSIDIAN = "mcl_core:obsidian" -local O_Y_MIN, O_Y_MAX = max(mcl_vars.mg_overworld_min, -31), min(mcl_vars.mg_overworld_max, 2048) -local N_Y_MIN, N_Y_MAX = mcl_vars.mg_bedrock_nether_bottom_min, mcl_vars.mg_bedrock_nether_top_min - H_MIN +local O_Y_MIN, O_Y_MAX = max(mcl_mapgen.overworld.min, -31), min(mcl_mapgen.overworld.max, 2048) +local N_Y_MIN, N_Y_MAX = mcl_mapgen.nether.bedrock_bottom_min, mcl_mapgen.nether.bedrock_top_min - H_MIN -- Alpha and particles local node_particles_allowed = minetest.settings:get("mcl_node_particles") or "none" @@ -66,7 +66,7 @@ minetest.register_on_shutdown(function() storage:set_string("nether_exits_keys", minetest.serialize(keys)) end) -local get_node = mcl_vars.get_node +local get_node = mcl_mapgen.get_far_node local set_node = minetest.set_node local registered_nodes = minetest.registered_nodes local is_protected = minetest.is_protected @@ -355,7 +355,7 @@ function build_nether_portal(pos, width, height, orientation, name, clear_before return pos end -function mcl_portals.spawn_nether_portal(pos, rot, pr, name) +function mcl_portals.spawn_nether_portal(pos, rot, pr, placer) if not pos then return end local o = 0 if rot then @@ -365,6 +365,10 @@ function mcl_portals.spawn_nether_portal(pos, rot, pr, name) o = random(0,1) end end + local name + if placer and placer:is_player() then + name = placer:get_player_name() + end build_nether_portal(pos, nil, nil, o, name, true) end @@ -437,7 +441,7 @@ local function create_portal_2(pos1, name, obj) end local exit = build_nether_portal(pos1, W_MIN-2, H_MIN-2, orientation, name) finalize_teleport(obj, exit) - local cn = mcl_vars.get_chunk_number(pos1) + local cn = mcl_mapgen.get_chunk_number(pos1) chunks[cn] = nil if queue[cn] then for next_obj, _ in pairs(queue[cn]) do @@ -451,9 +455,9 @@ end local function get_lava_level(pos, pos1, pos2) if pos.y > -1000 then - return max(min(mcl_vars.mg_lava_overworld_max, pos2.y-1), pos1.y+1) + return max(min(mcl_mapgen.overworld.lava_max, pos2.y-1), pos1.y+1) end - return max(min(mcl_vars.mg_lava_nether_max, pos2.y-1), pos1.y+1) + return max(min(mcl_mapgen.nether.lava_max, pos2.y-1), pos1.y+1) end local function ecb_scan_area_2(blockpos, action, calls_remaining, param) @@ -532,7 +536,7 @@ local function ecb_scan_area_2(blockpos, action, calls_remaining, param) end local function create_portal(pos, limit1, limit2, name, obj) - local cn = mcl_vars.get_chunk_number(pos) + local cn = mcl_mapgen.get_chunk_number(pos) if chunks[cn] then local q = queue[cn] or {} q[obj] = true @@ -545,8 +549,8 @@ local function create_portal(pos, limit1, limit2, name, obj) -- so we'll emerge single chunk only: 5x5x5 blocks, 80x80x80 nodes maximum -- and maybe one more chunk from below if (SCAN_2_MAP_CHUNKS = true) - local pos1 = add(mul(mcl_vars.pos_to_chunk(pos), mcl_vars.chunk_size_in_nodes), mcl_vars.central_chunk_offset_in_nodes) - local pos2 = add(pos1, mcl_vars.chunk_size_in_nodes - 1) + local pos1 = add(mul(mcl_mapgen.pos_to_chunk(pos), mcl_mapgen.CS_NODES), mcl_mapgen.OFFSET_NODES) + local pos2 = add(pos1, mcl_mapgen.CS_NODES - 1) if not SCAN_2_MAP_CHUNKS then if limit1 and limit1.x and limit1.y and limit1.z then @@ -560,8 +564,8 @@ local function create_portal(pos, limit1, limit2, name, obj) end -- Basically the copy of code above, with minor additions to continue the search in single additional chunk below: - local next_chunk_1 = {x = pos1.x, y = pos1.y - mcl_vars.chunk_size_in_nodes, z = pos1.z} - local next_chunk_2 = add(next_chunk_1, mcl_vars.chunk_size_in_nodes - 1) + local next_chunk_1 = {x = pos1.x, y = pos1.y - mcl_mapgen.CS_NODES, z = pos1.z} + local next_chunk_2 = add(next_chunk_1, mcl_mapgen.CS_NODES - 1) local next_pos = {x = pos.x, y=max(next_chunk_2.y, limit1.y), z = pos.z} if limit1 and limit1.x and limit1.y and limit1.z then pos1 = {x = max(min(limit1.x, pos.x), pos1.x), y = max(min(limit1.y, pos.y), pos1.y), z = max(min(limit1.z, pos.z), pos1.z)} @@ -692,6 +696,7 @@ local function teleport_no_delay(obj, pos) finalize_teleport(obj, exit) else dim = dimension_to_teleport[dim] + if not dim then return end -- need to create arrival portal create_portal(target, limits[dim].pmin, limits[dim].pmax, name, obj) end @@ -753,6 +758,8 @@ local function teleport(obj, portal_pos) minetest.after(DELAY, teleport_no_delay, obj, portal_pos) end +mcl_structures.register_structure({name = "nether_portal", place_function = mcl_portals.spawn_nether_portal}) + minetest.register_abm({ label = "Nether portal teleportation and particles", nodenames = {PORTAL}, diff --git a/mods/ITEMS/mcl_tools/init.lua b/mods/ITEMS/mcl_tools/init.lua index 3e6695c7e..565ca9c12 100644 --- a/mods/ITEMS/mcl_tools/init.lua +++ b/mods/ITEMS/mcl_tools/init.lua @@ -25,11 +25,11 @@ local groupcaps, hand_range, hand_groups if minetest.is_creative_enabled("") then -- Instant breaking in creative mode groupcaps = { creative_breakable = { times = {0}, uses = 0 } } - hand_range = 10 + hand_range = 5 hand_groups = { dig_speed_class = 7 } else groupcaps = {} - hand_range = 4 + hand_range = 4.5 hand_groups = { dig_speed_class = 1 } end minetest.register_tool(":", { diff --git a/mods/ITEMS/mcl_tridents/README.md b/mods/ITEMS/mcl_tridents/README.md index 4aea50d58..480f77198 100644 --- a/mods/ITEMS/mcl_tridents/README.md +++ b/mods/ITEMS/mcl_tridents/README.md @@ -1,3 +1,3 @@ -# mcl_tridents by j45 +# mcl_tridents by j45, model by epCode -Adds tridents to MineClone2. \ No newline at end of file +Adds tridents to MineClone 2/5 diff --git a/mods/ITEMS/mcl_tridents/mod.conf b/mods/ITEMS/mcl_tridents/mod.conf new file mode 100644 index 000000000..829c43be7 --- /dev/null +++ b/mods/ITEMS/mcl_tridents/mod.conf @@ -0,0 +1,2 @@ +name = mcl_tridents +author = j45, epCode diff --git a/mods/ITEMS/mcl_tridents/models/mcl_trident.obj b/mods/ITEMS/mcl_tridents/models/mcl_trident.obj index 32af51ed6..69822d67f 100644 --- a/mods/ITEMS/mcl_tridents/models/mcl_trident.obj +++ b/mods/ITEMS/mcl_tridents/models/mcl_trident.obj @@ -1,10854 +1,782 @@ -# Blender v2.82 (sub 7) OBJ File: 'trident.blend' +# Blender v3.0.0 OBJ File: '' # www.blender.org -mtllib trident.mtl -o Cylinder -v -7.194370 -0.000000 0.363753 -v -7.194370 -0.036636 0.367362 -v -7.194370 -0.071864 0.378048 -v -7.194370 -0.104331 0.395402 -v -7.194370 -0.132788 0.418756 -v -7.194370 -0.156142 0.447213 -v -7.194370 -0.173496 0.479680 -v -7.194370 -0.184182 0.514908 -v -7.194370 -0.187791 0.551544 -v -7.194370 -0.184183 0.588180 -v -7.194370 -0.173496 0.623409 -v -7.194370 -0.156142 0.655875 -v -7.194370 -0.132788 0.684332 -v -7.194370 -0.104331 0.707687 -v -7.194370 -0.071864 0.725040 -v -7.194370 -0.036636 0.735727 -v -7.194370 0.000000 0.739335 -v -7.194370 0.036636 0.735727 -v -7.194370 0.071864 0.725040 -v -7.194370 0.104331 0.707687 -v -7.194370 0.132788 0.684332 -v -7.194370 0.156142 0.655875 -v -7.194370 0.173496 0.623408 -v -7.194370 0.184182 0.588180 -v -7.194370 0.187791 0.551544 -v -7.194370 0.184182 0.514908 -v -7.194370 0.173496 0.479680 -v -7.194370 0.156142 0.447213 -v -7.194370 0.132788 0.418756 -v -7.194370 0.104331 0.395402 -v -7.194370 0.071864 0.378048 -v -7.194370 0.036636 0.367362 -v 1.937123 0.000002 0.363752 -v 1.937123 -0.036634 0.367361 -v 1.937123 -0.071862 0.378047 -v 1.937123 -0.104329 0.395401 -v 1.937123 -0.132786 0.418755 -v 1.937123 -0.156140 0.447212 -v 1.937123 -0.173494 0.479679 -v 1.937123 -0.184180 0.514907 -v 1.937123 -0.187789 0.551543 -v 1.937123 -0.184180 0.588179 -v 1.937123 -0.173494 0.623407 -v 1.937123 -0.156140 0.655874 -v 1.937123 -0.132786 0.684331 -v 1.937123 -0.104329 0.707685 -v 1.937123 -0.071862 0.725039 -v 1.937123 -0.036634 0.735725 -v 1.937123 0.000002 0.739334 -v 1.937123 0.036639 0.735725 -v 1.937123 0.071867 0.725039 -v 1.937123 0.104333 0.707685 -v 1.937123 0.132791 0.684331 -v 1.937123 0.156145 0.655874 -v 1.937123 0.173498 0.623407 -v 1.937123 0.184185 0.588179 -v 1.937123 0.187793 0.551543 -v 1.937123 0.184185 0.514907 -v 1.937123 0.173498 0.479678 -v 1.937123 0.156144 0.447212 -v 1.937123 0.132790 0.418755 -v 1.937123 0.104333 0.395400 -v 1.937123 0.071866 0.378047 -v 1.937123 0.036638 0.367360 -v -10.250076 -0.036639 0.367363 -v -10.250076 -0.000002 0.363755 -v -10.250076 -0.071867 0.378049 -v -10.250076 -0.104333 0.395403 -v -10.250076 -0.132791 0.418757 -v -10.250076 -0.156145 0.447214 -v -10.250076 -0.173498 0.479681 -v -10.250076 -0.184185 0.514909 -v -10.250076 -0.187793 0.551545 -v -10.250076 -0.184185 0.588182 -v -10.250076 -0.173498 0.623410 -v -10.250076 -0.156145 0.655876 -v -10.250076 -0.132791 0.684334 -v -10.250076 -0.104333 0.707688 -v -10.250076 -0.071867 0.725042 -v -10.250076 -0.036638 0.735728 -v -10.250076 -0.000002 0.739336 -v -10.250076 0.036634 0.735728 -v -10.250076 0.071862 0.725041 -v -10.250076 0.104329 0.707688 -v -10.250076 0.132786 0.684333 -v -10.250076 0.156140 0.655876 -v -10.250076 0.173494 0.623410 -v -10.250076 0.184180 0.588181 -v -10.250076 0.187788 0.551545 -v -10.250076 0.184180 0.514909 -v -10.250076 0.173494 0.479681 -v -10.250076 0.156140 0.447214 -v -10.250076 0.132786 0.418757 -v -10.250076 0.104328 0.395403 -v -10.250076 0.071862 0.378049 -v -10.250076 0.036634 0.367363 -v -10.614231 -0.046042 0.320092 -v -10.614231 -0.000003 0.315557 -v -10.614231 -0.090311 0.333521 -v -10.614231 -0.131111 0.355328 -v -10.614231 -0.166872 0.384677 -v -10.614231 -0.196220 0.420437 -v -10.614231 -0.218027 0.461237 -v -10.614231 -0.231456 0.505506 -v -10.614231 -0.235991 0.551545 -v -10.614231 -0.231456 0.597584 -v -10.614231 -0.218027 0.641854 -v -10.614231 -0.196220 0.682654 -v -10.614231 -0.166872 0.718414 -v -10.614231 -0.131111 0.747763 -v -10.614231 -0.090311 0.769570 -v -10.614231 -0.046042 0.782999 -v -10.614231 -0.000003 0.787534 -v -10.614231 0.046036 0.782999 -v -10.614231 0.090306 0.769570 -v -10.614231 0.131106 0.747762 -v -10.614231 0.166866 0.718414 -v -10.614231 0.196215 0.682653 -v -10.614231 0.218022 0.641854 -v -10.614231 0.231451 0.597584 -v -10.614231 0.235986 0.551545 -v -10.614231 0.231451 0.505506 -v -10.614231 0.218022 0.461236 -v -10.614231 0.196214 0.420437 -v -10.614231 0.166866 0.384676 -v -10.614231 0.131105 0.355328 -v -10.614231 0.090306 0.333521 -v -10.614231 0.046036 0.320092 -v -11.151556 -0.025116 0.425290 -v -11.151556 -0.000003 0.422816 -v -11.151556 -0.049265 0.432615 -v -11.151556 -0.071521 0.444511 -v -11.151556 -0.091028 0.460520 -v -11.151556 -0.107037 0.480027 -v -11.151556 -0.118933 0.502283 -v -11.151556 -0.126259 0.526432 -v -11.151556 -0.128732 0.551546 -v -11.151556 -0.126259 0.576659 -v -11.151556 -0.118933 0.600808 -v -11.151556 -0.107037 0.623064 -v -11.151556 -0.091028 0.642571 -v -11.151556 -0.071521 0.658580 -v -11.151556 -0.049265 0.670476 -v -11.151556 -0.025116 0.677802 -v -11.151556 -0.000003 0.680275 -v -11.151556 0.025111 0.677801 -v -11.151556 0.049260 0.670476 -v -11.151556 0.071516 0.658580 -v -11.151556 0.091023 0.642571 -v -11.151556 0.107032 0.623064 -v -11.151556 0.118928 0.600808 -v -11.151556 0.126253 0.576659 -v -11.151556 0.128727 0.551545 -v -11.151556 0.126253 0.526432 -v -11.151556 0.118928 0.502283 -v -11.151556 0.107032 0.480027 -v -11.151556 0.091023 0.460520 -v -11.151556 0.071516 0.444511 -v -11.151556 0.049260 0.432615 -v -11.151556 0.025111 0.425290 -v -11.239233 -0.000002 0.551546 -v -7.530121 0.071863 0.725041 -v -7.530121 0.104330 0.707687 -v -7.530121 0.132787 0.684333 -v -7.530121 0.156141 0.655876 -v -7.530121 0.173495 0.623409 -v -7.530121 0.184181 0.588181 -v -7.530121 0.187790 0.551545 -v -7.530121 0.184181 0.514908 -v -7.530121 0.173495 0.479680 -v -7.530121 0.156141 0.447214 -v -7.530121 -0.000001 0.363754 -v -7.530121 -0.036637 0.367362 -v -7.530121 0.132787 0.418756 -v -7.530121 -0.071866 0.378049 -v -7.530121 0.104330 0.395402 -v -7.530121 -0.104332 0.395402 -v -7.530121 0.071863 0.378049 -v -7.530121 -0.132789 0.418757 -v -7.530121 0.036635 0.367362 -v -7.530121 -0.156144 0.447214 -v -7.530121 -0.173497 0.479680 -v -7.530121 -0.184184 0.514909 -v -7.530121 -0.187792 0.551545 -v -7.530121 -0.184184 0.588181 -v -7.530121 -0.173497 0.623409 -v -7.530121 -0.156144 0.655876 -v -7.530121 -0.132789 0.684333 -v -7.530121 -0.104332 0.707687 -v -7.530121 -0.071866 0.725041 -v -7.530121 -0.036637 0.735727 -v -7.530121 -0.000001 0.739336 -v -7.530121 0.036635 0.735727 -v -8.553731 0.071863 0.725041 -v -8.553731 -0.000001 0.363754 -v -8.553731 0.104330 0.707687 -v -8.553731 0.132787 0.684333 -v -8.553731 0.156141 0.655876 -v -8.553731 0.173495 0.623409 -v -8.553731 0.184181 0.588181 -v -8.553731 0.187789 0.551545 -v -8.553731 0.184181 0.514909 -v -8.553731 0.173495 0.479680 -v -8.553731 0.156141 0.447214 -v -8.553731 -0.036638 0.367362 -v -8.553731 0.132787 0.418757 -v -8.553731 -0.071866 0.378049 -v -8.553731 0.104329 0.395402 -v -8.553731 -0.104332 0.395403 -v -8.553731 0.071863 0.378049 -v -8.553731 -0.132790 0.418757 -v -8.553731 0.036634 0.367362 -v -8.553731 -0.156144 0.447214 -v -8.553731 -0.173498 0.479680 -v -8.553731 -0.184184 0.514909 -v -8.553731 -0.187792 0.551545 -v -8.553731 -0.184184 0.588181 -v -8.553731 -0.173498 0.623409 -v -8.553731 -0.156144 0.655876 -v -8.553731 -0.132790 0.684333 -v -8.553731 -0.104332 0.707687 -v -8.553731 -0.071866 0.725041 -v -8.553731 -0.036638 0.735727 -v -8.553731 -0.000001 0.739336 -v -8.553731 0.036635 0.735727 -v -8.474993 0.123192 0.735917 -v -8.391620 0.097399 0.697315 -v -8.322146 0.097399 0.697315 -v -8.234142 0.097399 0.697315 -v -8.164668 0.097399 0.697315 -v -8.076663 0.097399 0.697315 -v -8.007189 0.097399 0.697315 -v -7.919184 0.097399 0.697315 -v -7.849711 0.097399 0.697315 -v -7.761706 0.097399 0.697315 -v -7.692232 0.097399 0.697315 -v -7.608860 0.123192 0.735917 -v -8.474993 0.156794 0.708340 -v -8.391620 0.123966 0.675512 -v -8.322146 0.123966 0.675512 -v -8.234142 0.123966 0.675512 -v -8.164668 0.123966 0.675512 -v -8.076663 0.123966 0.675512 -v -8.007189 0.123966 0.675512 -v -7.919184 0.123966 0.675512 -v -7.849711 0.123966 0.675512 -v -7.761706 0.123966 0.675512 -v -7.692232 0.123966 0.675512 -v -7.608860 0.156795 0.708340 -v -8.474993 0.184371 0.674738 -v -8.391620 0.145769 0.648945 -v -8.322146 0.145769 0.648945 -v -8.234142 0.145769 0.648945 -v -8.164668 0.145769 0.648945 -v -8.076663 0.145769 0.648945 -v -8.007189 0.145769 0.648945 -v -7.919184 0.145769 0.648945 -v -7.849711 0.145769 0.648945 -v -7.761706 0.145769 0.648945 -v -7.692232 0.145769 0.648945 -v -7.608860 0.184371 0.674738 -v -8.474993 0.204862 0.636402 -v -8.391620 0.161970 0.618635 -v -8.322146 0.161970 0.618635 -v -8.234142 0.161970 0.618635 -v -8.164668 0.161970 0.618635 -v -8.076663 0.161970 0.618635 -v -8.007189 0.161970 0.618635 -v -7.919184 0.161970 0.618635 -v -7.849711 0.161970 0.618635 -v -7.761706 0.161970 0.618635 -v -7.692232 0.161970 0.618635 -v -7.608860 0.204862 0.636402 -v -8.474993 0.217480 0.594805 -v -8.391620 0.171946 0.585747 -v -8.322146 0.171946 0.585747 -v -8.234142 0.171946 0.585747 -v -8.164668 0.171946 0.585747 -v -8.076663 0.171946 0.585747 -v -8.007189 0.171946 0.585747 -v -7.919184 0.171946 0.585747 -v -7.849711 0.171946 0.585747 -v -7.761706 0.171946 0.585747 -v -7.692232 0.171946 0.585747 -v -7.608860 0.217481 0.594804 -v -8.474993 0.221741 0.551545 -v -8.391620 0.175315 0.551545 -v -8.322146 0.175315 0.551545 -v -8.234142 0.175315 0.551545 -v -8.164668 0.175315 0.551545 -v -8.076663 0.175315 0.551545 -v -8.007189 0.175315 0.551545 -v -7.919184 0.175315 0.551545 -v -7.849711 0.175315 0.551545 -v -7.761706 0.175315 0.551545 -v -7.692232 0.175315 0.551545 -v -7.608860 0.221741 0.551545 -v -8.474993 0.217480 0.508285 -v -8.391620 0.171946 0.517342 -v -8.322146 0.171946 0.517342 -v -8.234142 0.171946 0.517342 -v -8.164668 0.171946 0.517342 -v -8.076663 0.171946 0.517342 -v -8.007189 0.171946 0.517342 -v -7.919184 0.171946 0.517342 -v -7.849711 0.171946 0.517342 -v -7.761706 0.171946 0.517342 -v -7.692232 0.171946 0.517342 -v -7.608860 0.217481 0.508285 -v -8.474993 0.204862 0.466688 -v -8.391620 0.161969 0.484454 -v -8.322146 0.161969 0.484454 -v -8.234142 0.161969 0.484454 -v -8.164668 0.161969 0.484454 -v -8.076663 0.161969 0.484454 -v -8.007189 0.161970 0.484454 -v -7.919184 0.161970 0.484454 -v -7.849711 0.161970 0.484454 -v -7.761706 0.161970 0.484454 -v -7.692232 0.161970 0.484454 -v -7.608860 0.204862 0.466687 -v -8.474993 0.184371 0.428351 -v -8.391620 0.145768 0.454144 -v -8.322146 0.145768 0.454144 -v -8.234142 0.145768 0.454144 -v -8.164668 0.145768 0.454144 -v -8.076663 0.145769 0.454144 -v -8.007189 0.145769 0.454144 -v -7.919184 0.145769 0.454144 -v -7.849711 0.145769 0.454144 -v -7.761706 0.145769 0.454144 -v -7.692232 0.145769 0.454144 -v -7.608860 0.184371 0.428351 -v -8.474993 -0.043261 0.334063 -v -8.391620 -0.034204 0.379597 -v -8.322146 -0.034204 0.379597 -v -8.234142 -0.034204 0.379597 -v -8.164668 -0.034204 0.379597 -v -8.076663 -0.034204 0.379597 -v -8.007189 -0.034204 0.379597 -v -7.919184 -0.034204 0.379597 -v -7.849711 -0.034204 0.379597 -v -7.761706 -0.034204 0.379597 -v -7.692232 -0.034204 0.379597 -v -7.608860 -0.043261 0.334063 -v -8.474993 0.156794 0.394749 -v -8.391620 0.123966 0.427578 -v -8.322146 0.123966 0.427578 -v -8.234142 0.123966 0.427578 -v -8.164668 0.123966 0.427578 -v -8.076663 0.123966 0.427578 -v -8.007189 0.123966 0.427578 -v -7.919184 0.123966 0.427578 -v -7.849711 0.123966 0.427577 -v -7.761706 0.123966 0.427577 -v -7.692232 0.123966 0.427577 -v -7.608860 0.156794 0.394749 -v -8.474993 -0.084859 0.346682 -v -8.391620 -0.067092 0.389574 -v -8.322146 -0.067092 0.389574 -v -8.234142 -0.067092 0.389574 -v -8.164668 -0.067092 0.389574 -v -8.076663 -0.067092 0.389574 -v -8.007189 -0.067092 0.389574 -v -7.919184 -0.067092 0.389574 -v -7.849711 -0.067092 0.389574 -v -7.761706 -0.067092 0.389574 -v -7.692232 -0.067092 0.389574 -v -7.608860 -0.084858 0.346681 -v -8.474993 0.123192 0.367173 -v -8.391620 0.097399 0.405775 -v -8.322146 0.097399 0.405775 -v -8.234142 0.097399 0.405775 -v -8.164668 0.097399 0.405775 -v -8.076663 0.097399 0.405775 -v -8.007189 0.097399 0.405775 -v -7.919184 0.097399 0.405775 -v -7.849711 0.097399 0.405775 -v -7.761706 0.097399 0.405775 -v -7.692232 0.097399 0.405775 -v -7.608860 0.123192 0.367173 -v -8.474993 -0.123195 0.367173 -v -8.391620 -0.097402 0.405775 -v -8.322146 -0.097402 0.405775 -v -8.234142 -0.097402 0.405775 -v -8.164668 -0.097402 0.405775 -v -8.076663 -0.097402 0.405775 -v -8.007189 -0.097402 0.405775 -v -7.919184 -0.097402 0.405775 -v -7.849711 -0.097402 0.405775 -v -7.761706 -0.097402 0.405775 -v -7.692232 -0.097402 0.405775 -v -7.608860 -0.123195 0.367173 -v -8.474993 0.084855 0.346681 -v -8.391620 0.067089 0.389574 -v -8.322146 0.067089 0.389574 -v -8.234142 0.067089 0.389574 -v -8.164668 0.067089 0.389574 -v -8.076663 0.067089 0.389574 -v -8.007189 0.067089 0.389574 -v -7.919184 0.067089 0.389574 -v -7.849711 0.067089 0.389574 -v -7.761706 0.067089 0.389574 -v -7.692232 0.067089 0.389574 -v -7.608860 0.084856 0.346681 -v -8.474993 -0.156797 0.394749 -v -8.391620 -0.123969 0.427578 -v -8.322146 -0.123969 0.427578 -v -8.234142 -0.123968 0.427578 -v -8.164668 -0.123968 0.427578 -v -8.076663 -0.123968 0.427578 -v -8.007189 -0.123968 0.427578 -v -7.919184 -0.123968 0.427578 -v -7.849711 -0.123968 0.427578 -v -7.761706 -0.123968 0.427578 -v -7.692232 -0.123968 0.427578 -v -7.608860 -0.156797 0.394749 -v -8.474993 0.043258 0.334063 -v -8.391620 0.034201 0.379597 -v -8.322146 0.034201 0.379597 -v -8.234142 0.034201 0.379597 -v -8.164668 0.034201 0.379597 -v -8.076663 0.034201 0.379597 -v -8.007189 0.034201 0.379597 -v -7.919184 0.034201 0.379597 -v -7.849711 0.034201 0.379597 -v -7.761706 0.034201 0.379597 -v -7.692232 0.034201 0.379597 -v -7.608860 0.043258 0.334063 -v -8.474993 -0.184374 0.428351 -v -8.391620 -0.145771 0.454145 -v -8.322146 -0.145771 0.454145 -v -8.234142 -0.145771 0.454145 -v -8.164668 -0.145771 0.454145 -v -8.076663 -0.145771 0.454144 -v -8.007189 -0.145771 0.454144 -v -7.919184 -0.145771 0.454144 -v -7.849711 -0.145771 0.454144 -v -7.761706 -0.145771 0.454144 -v -7.692232 -0.145771 0.454144 -v -7.608860 -0.184373 0.428351 -v -8.474993 -0.204865 0.466688 -v -8.391620 -0.161972 0.484454 -v -8.322146 -0.161972 0.484454 -v -8.234142 -0.161972 0.484454 -v -8.164668 -0.161972 0.484454 -v -8.076663 -0.161972 0.484454 -v -8.007189 -0.161972 0.484454 -v -7.919184 -0.161972 0.484454 -v -7.849711 -0.161972 0.484454 -v -7.761706 -0.161972 0.484454 -v -7.692232 -0.161972 0.484454 -v -7.608860 -0.204864 0.466688 -v -8.474993 -0.217483 0.508285 -v -8.391620 -0.171949 0.517342 -v -8.322146 -0.171949 0.517342 -v -8.234142 -0.171949 0.517342 -v -8.164668 -0.171949 0.517342 -v -8.076663 -0.171949 0.517342 -v -8.007189 -0.171949 0.517342 -v -7.919184 -0.171949 0.517342 -v -7.849711 -0.171949 0.517342 -v -7.761706 -0.171949 0.517342 -v -7.692232 -0.171949 0.517342 -v -7.608860 -0.217483 0.508285 -v -8.474993 -0.221744 0.551545 -v -8.391620 -0.175317 0.551545 -v -8.322146 -0.175317 0.551545 -v -8.234142 -0.175317 0.551545 -v -8.164668 -0.175317 0.551545 -v -8.076663 -0.175317 0.551545 -v -8.007189 -0.175317 0.551545 -v -7.919184 -0.175317 0.551545 -v -7.849711 -0.175317 0.551545 -v -7.761706 -0.175317 0.551545 -v -7.692232 -0.175317 0.551545 -v -7.608860 -0.221744 0.551545 -v -8.474993 -0.217483 0.594805 -v -8.391620 -0.171949 0.585747 -v -8.322146 -0.171949 0.585747 -v -8.234142 -0.171949 0.585747 -v -8.164668 -0.171949 0.585747 -v -8.076663 -0.171949 0.585747 -v -8.007189 -0.171949 0.585747 -v -7.919184 -0.171949 0.585747 -v -7.849711 -0.171949 0.585747 -v -7.761706 -0.171949 0.585747 -v -7.692232 -0.171949 0.585747 -v -7.608860 -0.217483 0.594805 -v -8.474993 -0.204865 0.636402 -v -8.391620 -0.161972 0.618635 -v -8.322146 -0.161972 0.618635 -v -8.234142 -0.161972 0.618635 -v -8.164668 -0.161972 0.618635 -v -8.076663 -0.161972 0.618635 -v -8.007189 -0.161972 0.618635 -v -7.919184 -0.161972 0.618635 -v -7.849711 -0.161972 0.618635 -v -7.761706 -0.161972 0.618635 -v -7.692232 -0.161972 0.618635 -v -7.608860 -0.204864 0.636402 -v -8.474993 -0.184374 0.674738 -v -8.391620 -0.145771 0.648945 -v -8.322146 -0.145771 0.648945 -v -8.234142 -0.145771 0.648945 -v -8.164668 -0.145771 0.648945 -v -8.076663 -0.145771 0.648945 -v -8.007189 -0.145771 0.648945 -v -7.919184 -0.145771 0.648945 -v -7.849711 -0.145771 0.648945 -v -7.761706 -0.145771 0.648945 -v -7.692232 -0.145771 0.648945 -v -7.608860 -0.184373 0.674738 -v -8.474993 -0.156797 0.708341 -v -8.391620 -0.123969 0.675512 -v -8.322146 -0.123969 0.675512 -v -8.234142 -0.123968 0.675512 -v -8.164668 -0.123968 0.675512 -v -8.076663 -0.123968 0.675512 -v -8.007189 -0.123968 0.675512 -v -7.919184 -0.123968 0.675512 -v -7.849711 -0.123968 0.675512 -v -7.761706 -0.123968 0.675512 -v -7.692232 -0.123968 0.675512 -v -7.608860 -0.156797 0.708340 -v -8.474993 -0.123195 0.735917 -v -8.391620 -0.097402 0.697315 -v -8.322146 -0.097402 0.697315 -v -8.234142 -0.097402 0.697315 -v -8.164668 -0.097402 0.697315 -v -8.076663 -0.097402 0.697315 -v -8.007189 -0.097402 0.697315 -v -7.919184 -0.097402 0.697315 -v -7.849711 -0.097402 0.697315 -v -7.761706 -0.097402 0.697315 -v -7.692232 -0.097402 0.697315 -v -7.608860 -0.123195 0.735917 -v -8.474993 -0.084859 0.756408 -v -8.391620 -0.067092 0.713516 -v -8.322146 -0.067092 0.713516 -v -8.234142 -0.067092 0.713516 -v -8.164668 -0.067092 0.713516 -v -8.076663 -0.067092 0.713516 -v -8.007189 -0.067092 0.713516 -v -7.919184 -0.067092 0.713516 -v -7.849711 -0.067092 0.713516 -v -7.761706 -0.067092 0.713516 -v -7.692232 -0.067092 0.713516 -v -7.608860 -0.084858 0.756408 -v -8.474993 -0.043261 0.769027 -v -8.391620 -0.034204 0.723492 -v -8.322146 -0.034204 0.723492 -v -8.234142 -0.034204 0.723492 -v -8.164668 -0.034204 0.723492 -v -8.076663 -0.034204 0.723492 -v -8.007189 -0.034204 0.723492 -v -7.919184 -0.034204 0.723492 -v -7.849711 -0.034204 0.723492 -v -7.761706 -0.034204 0.723492 -v -7.692232 -0.034204 0.723492 -v -7.608860 -0.043261 0.769027 -v -8.474993 -0.000001 0.773287 -v -8.391620 -0.000001 0.726861 -v -8.322146 -0.000001 0.726861 -v -8.234142 -0.000001 0.726861 -v -8.164668 -0.000001 0.726861 -v -8.076663 -0.000001 0.726861 -v -8.007189 -0.000001 0.726861 -v -7.919184 -0.000001 0.726861 -v -7.849711 -0.000001 0.726861 -v -7.761706 -0.000001 0.726861 -v -7.692232 -0.000001 0.726861 -v -7.608860 -0.000001 0.773287 -v -8.474993 0.043258 0.769027 -v -8.391620 0.034201 0.723492 -v -8.322146 0.034201 0.723492 -v -8.234142 0.034201 0.723492 -v -8.164668 0.034201 0.723492 -v -8.076663 0.034201 0.723492 -v -8.007189 0.034201 0.723492 -v -7.919184 0.034201 0.723492 -v -7.849711 0.034201 0.723492 -v -7.761706 0.034201 0.723492 -v -7.692232 0.034201 0.723492 -v -7.608860 0.043259 0.769027 -v -7.608860 0.084856 0.756408 -v -7.692232 0.067089 0.713516 -v -7.761706 0.067089 0.713516 -v -7.849711 0.067089 0.713516 -v -7.919185 0.067089 0.713516 -v -8.007190 0.067089 0.713516 -v -8.076663 0.067089 0.713516 -v -8.164668 0.067089 0.713516 -v -8.234142 0.067089 0.713516 -v -8.322147 0.067089 0.713516 -v -8.391620 0.067089 0.713516 -v -8.474993 0.084856 0.756408 -v -7.608860 -0.000001 0.329802 -v -7.692232 -0.000001 0.376229 -v -7.761706 -0.000001 0.376229 -v -7.849711 -0.000001 0.376229 -v -7.919185 -0.000001 0.376229 -v -8.007190 -0.000001 0.376229 -v -8.076663 -0.000001 0.376229 -v -8.164668 -0.000001 0.376229 -v -8.234142 -0.000001 0.376229 -v -8.322147 -0.000001 0.376229 -v -8.391620 -0.000001 0.376229 -v -8.474993 -0.000001 0.329802 -v -8.199405 0.111421 0.718300 -v -8.199405 0.141812 0.693358 -v -8.199405 0.166754 0.662967 -v -8.199405 0.185287 0.628294 -v -8.199405 0.196699 0.590671 -v -8.199405 0.200553 0.551545 -v -8.199405 0.196699 0.512418 -v -8.199405 0.185287 0.474796 -v -8.199405 0.166753 0.440123 -v -8.199405 -0.039128 0.354844 -v -8.199405 0.141812 0.409731 -v -8.199405 -0.076750 0.366257 -v -8.199405 0.111420 0.384790 -v -8.199405 -0.111423 0.384790 -v -8.199405 0.076747 0.366257 -v -8.199405 -0.141815 0.409732 -v -8.199405 0.039125 0.354844 -v -8.199405 -0.166756 0.440123 -v -8.199405 -0.185289 0.474796 -v -8.199405 -0.196702 0.512419 -v -8.199405 -0.200556 0.551545 -v -8.199405 -0.196702 0.590671 -v -8.199405 -0.185289 0.628294 -v -8.199405 -0.166756 0.662967 -v -8.199405 -0.141815 0.693358 -v -8.199405 -0.111423 0.718300 -v -8.199405 -0.076750 0.736833 -v -8.199405 -0.039127 0.748246 -v -8.199405 -0.000001 0.752099 -v -8.199405 0.039125 0.748246 -v -8.199405 0.076748 0.736833 -v -8.199405 -0.000001 0.350991 -v -8.041925 0.111421 0.718300 -v -8.041925 0.141812 0.693358 -v -8.041925 0.166754 0.662967 -v -8.041925 0.185287 0.628294 -v -8.041925 0.196699 0.590671 -v -8.041925 0.200553 0.551545 -v -8.041925 0.196699 0.512418 -v -8.041925 0.185287 0.474796 -v -8.041925 0.166753 0.440123 -v -8.041925 -0.039127 0.354844 -v -8.041925 0.141812 0.409731 -v -8.041925 -0.076750 0.366257 -v -8.041925 0.111420 0.384790 -v -8.041925 -0.111423 0.384790 -v -8.041925 0.076747 0.366257 -v -8.041925 -0.141815 0.409732 -v -8.041925 0.039125 0.354844 -v -8.041925 -0.166756 0.440123 -v -8.041925 -0.185289 0.474796 -v -8.041925 -0.196702 0.512419 -v -8.041925 -0.200556 0.551545 -v -8.041925 -0.196702 0.590671 -v -8.041925 -0.185289 0.628294 -v -8.041925 -0.166756 0.662967 -v -8.041925 -0.141815 0.693358 -v -8.041925 -0.111423 0.718300 -v -8.041925 -0.076750 0.736833 -v -8.041925 -0.039127 0.748245 -v -8.041925 -0.000001 0.752099 -v -8.041925 0.039125 0.748245 -v -8.041927 0.076748 0.736833 -v -8.041927 -0.000001 0.350991 -v -7.884447 0.111421 0.718300 -v -7.884447 0.141812 0.693358 -v -7.884447 0.166754 0.662967 -v -7.884447 0.185287 0.628294 -v -7.884447 0.196700 0.590671 -v -7.884447 0.200553 0.551545 -v -7.884447 0.196699 0.512418 -v -7.884447 0.185287 0.474796 -v -7.884447 0.166753 0.440123 -v -7.884447 -0.039127 0.354844 -v -7.884447 0.141812 0.409731 -v -7.884447 -0.076750 0.366257 -v -7.884447 0.111421 0.384790 -v -7.884447 -0.111423 0.384790 -v -7.884447 0.076747 0.366257 -v -7.884447 -0.141815 0.409732 -v -7.884447 0.039125 0.354844 -v -7.884447 -0.166756 0.440123 -v -7.884447 -0.185289 0.474796 -v -7.884447 -0.196702 0.512419 -v -7.884447 -0.200556 0.551545 -v -7.884447 -0.196702 0.590671 -v -7.884447 -0.185289 0.628294 -v -7.884447 -0.166756 0.662967 -v -7.884447 -0.141815 0.693358 -v -7.884447 -0.111423 0.718300 -v -7.884447 -0.076750 0.736833 -v -7.884447 -0.039127 0.748245 -v -7.884447 -0.000001 0.752099 -v -7.884447 0.039125 0.748245 -v -7.884448 0.076748 0.736833 -v -7.884448 -0.000001 0.350991 -v -1.638910 0.184184 0.514907 -v -1.638910 0.187792 0.551543 -v -1.638910 0.173497 0.479679 -v -1.638910 0.156144 0.447212 -v -1.638910 -0.036635 0.367361 -v -1.638910 0.000001 0.363753 -v -1.638910 0.132789 0.418755 -v -1.638910 -0.071863 0.378047 -v -1.638910 0.104332 0.395401 -v -1.638910 -0.104330 0.395401 -v -1.638910 0.071866 0.378047 -v -1.638910 -0.132787 0.418755 -v -1.638910 0.036637 0.367361 -v -1.638910 -0.156141 0.447212 -v -1.638910 -0.173495 0.479679 -v -1.638910 -0.184181 0.514907 -v -1.638910 -0.187789 0.551543 -v -1.638910 -0.184181 0.588180 -v -1.638910 -0.173495 0.623408 -v -1.638910 -0.156141 0.655874 -v -1.638910 -0.132787 0.684332 -v -1.638910 -0.104330 0.707686 -v -1.638910 -0.071863 0.725040 -v -1.638910 -0.036635 0.735726 -v -1.638910 0.000001 0.739334 -v -1.638910 0.036638 0.735726 -v -1.638910 0.071866 0.725040 -v -1.638910 0.104332 0.707686 -v -1.638910 0.132790 0.684332 -v -1.638910 0.156144 0.655874 -v -1.638910 0.173498 0.623408 -v -1.638910 0.184184 0.588179 -v -0.727585 0.184184 0.514907 -v -0.727585 0.173498 0.479679 -v -0.727585 0.156144 0.447212 -v -0.727585 -0.036635 0.367361 -v -0.727585 0.132790 0.418755 -v -0.727585 -0.071863 0.378047 -v -0.727585 0.104332 0.395401 -v -0.727585 -0.104329 0.395401 -v -0.727585 0.071866 0.378047 -v -0.727585 -0.132787 0.418755 -v -0.727585 0.036637 0.367361 -v -0.727585 -0.156141 0.447212 -v -0.727585 -0.173494 0.479679 -v -0.727585 -0.184181 0.514907 -v -0.727585 -0.187789 0.551543 -v -0.727585 -0.184181 0.588179 -v -0.727585 -0.173495 0.623408 -v -0.727585 -0.156141 0.655874 -v -0.727585 -0.132787 0.684331 -v -0.727585 -0.104329 0.707686 -v -0.727585 -0.071863 0.725039 -v -0.727585 -0.036635 0.735726 -v -0.727585 0.000002 0.739334 -v -0.727585 0.036638 0.735726 -v -0.727585 0.071866 0.725039 -v -0.727585 0.104333 0.707686 -v -0.727585 0.132790 0.684331 -v -0.727585 0.156144 0.655874 -v -0.727585 0.173498 0.623408 -v -0.727585 0.184184 0.588179 -v -0.727585 0.187792 0.551543 -v -0.727585 0.000002 0.363753 -v -0.766329 0.220916 0.551543 -v -0.885448 0.188261 0.551543 -v -1.004568 0.188261 0.551543 -v -1.123686 0.188261 0.551543 -v -1.242805 0.188261 0.551543 -v -1.361924 0.188261 0.551543 -v -1.481043 0.188261 0.551543 -v -1.600163 0.220916 0.551543 -v -0.766329 0.000002 0.330629 -v -0.885448 0.000002 0.363284 -v -1.004568 0.000002 0.363284 -v -1.123686 0.000001 0.363284 -v -1.242805 0.000001 0.363284 -v -1.361924 0.000001 0.363284 -v -1.481043 0.000001 0.363284 -v -1.600163 0.000001 0.330629 -v -1.600163 0.216671 0.508445 -v -1.481043 0.184644 0.514816 -v -1.361925 0.184644 0.514816 -v -1.242805 0.184644 0.514816 -v -1.123686 0.184644 0.514816 -v -1.004568 0.184644 0.514816 -v -0.885449 0.184644 0.514816 -v -0.766329 0.216671 0.508445 -v -1.600163 0.204100 0.467003 -v -1.481043 0.173931 0.479499 -v -1.361925 0.173931 0.479499 -v -1.242805 0.173931 0.479499 -v -1.123686 0.173931 0.479499 -v -1.004568 0.173931 0.479499 -v -0.885449 0.173931 0.479499 -v -0.766329 0.204100 0.467003 -v -1.600163 0.183685 0.428810 -v -1.481043 0.156534 0.446952 -v -1.361925 0.156534 0.446952 -v -1.242805 0.156534 0.446952 -v -1.123686 0.156534 0.446952 -v -1.004568 0.156534 0.446952 -v -0.885449 0.156534 0.446952 -v -0.766329 0.183685 0.428810 -v -1.600163 -0.043097 0.334874 -v -1.481043 -0.036726 0.366901 -v -1.361925 -0.036726 0.366901 -v -1.242805 -0.036726 0.366901 -v -1.123686 -0.036726 0.366901 -v -1.004568 -0.036726 0.366901 -v -0.885449 -0.036726 0.366901 -v -0.766329 -0.043097 0.334874 -v -1.600163 0.156211 0.395333 -v -1.481043 0.133121 0.418424 -v -1.361925 0.133121 0.418424 -v -1.242805 0.133121 0.418423 -v -1.123686 0.133121 0.418423 -v -1.004568 0.133121 0.418423 -v -0.885449 0.133121 0.418423 -v -0.766329 0.156212 0.395333 -v -1.600163 -0.084539 0.347445 -v -1.481043 -0.072043 0.377614 -v -1.361925 -0.072042 0.377614 -v -1.242805 -0.072042 0.377614 -v -1.123686 -0.072042 0.377614 -v -1.004568 -0.072042 0.377614 -v -0.885449 -0.072042 0.377614 -v -0.766329 -0.084539 0.347445 -v -1.600163 0.122735 0.367860 -v -1.481043 0.104593 0.395011 -v -1.361925 0.104593 0.395011 -v -1.242805 0.104593 0.395011 -v -1.123686 0.104593 0.395011 -v -1.004568 0.104593 0.395011 -v -0.885449 0.104593 0.395011 -v -0.766329 0.122735 0.367860 -v -1.600163 -0.122732 0.367860 -v -1.481043 -0.104590 0.395011 -v -1.361925 -0.104590 0.395011 -v -1.242805 -0.104590 0.395011 -v -1.123686 -0.104590 0.395011 -v -1.004568 -0.104590 0.395011 -v -0.885449 -0.104590 0.395011 -v -0.766329 -0.122732 0.367860 -v -1.600163 0.084541 0.347445 -v -1.481043 0.072045 0.377614 -v -1.361925 0.072045 0.377614 -v -1.242805 0.072045 0.377614 -v -1.123686 0.072045 0.377614 -v -1.004568 0.072045 0.377614 -v -0.885449 0.072045 0.377614 -v -0.766329 0.084542 0.347445 -v -1.600163 -0.156209 0.395333 -v -1.481043 -0.133118 0.418424 -v -1.361925 -0.133118 0.418424 -v -1.242805 -0.133118 0.418424 -v -1.123686 -0.133118 0.418424 -v -1.004568 -0.133118 0.418424 -v -0.885449 -0.133118 0.418424 -v -0.766329 -0.156209 0.395333 -v -1.600163 0.043099 0.334874 -v -1.481043 0.036729 0.366901 -v -1.361925 0.036729 0.366901 -v -1.242805 0.036729 0.366901 -v -1.123686 0.036729 0.366901 -v -1.004568 0.036729 0.366901 -v -0.885449 0.036729 0.366901 -v -0.766329 0.043100 0.334874 -v -1.600163 -0.183682 0.428810 -v -1.481043 -0.156531 0.446952 -v -1.361925 -0.156531 0.446952 -v -1.242805 -0.156531 0.446952 -v -1.123686 -0.156531 0.446952 -v -1.004568 -0.156531 0.446952 -v -0.885449 -0.156531 0.446952 -v -0.766329 -0.183682 0.428810 -v -1.600163 -0.204097 0.467003 -v -1.481043 -0.173928 0.479500 -v -1.361925 -0.173928 0.479500 -v -1.242805 -0.173928 0.479500 -v -1.123686 -0.173928 0.479500 -v -1.004568 -0.173928 0.479499 -v -0.885449 -0.173928 0.479499 -v -0.766329 -0.204097 0.467003 -v -1.600163 -0.216668 0.508445 -v -1.481043 -0.184641 0.514816 -v -1.361925 -0.184641 0.514816 -v -1.242805 -0.184641 0.514816 -v -1.123686 -0.184641 0.514816 -v -1.004568 -0.184641 0.514816 -v -0.885449 -0.184641 0.514816 -v -0.766329 -0.216668 0.508445 -v -1.600163 -0.220913 0.551543 -v -1.481043 -0.188258 0.551543 -v -1.361925 -0.188258 0.551543 -v -1.242805 -0.188258 0.551543 -v -1.123686 -0.188258 0.551543 -v -1.004568 -0.188258 0.551543 -v -0.885449 -0.188258 0.551543 -v -0.766329 -0.220913 0.551543 -v -1.600163 -0.216668 0.594642 -v -1.481043 -0.184641 0.588271 -v -1.361925 -0.184641 0.588271 -v -1.242805 -0.184641 0.588271 -v -1.123686 -0.184641 0.588271 -v -1.004568 -0.184641 0.588271 -v -0.885449 -0.184641 0.588271 -v -0.766329 -0.216668 0.594642 -v -1.600163 -0.204097 0.636084 -v -1.481043 -0.173928 0.623587 -v -1.361925 -0.173928 0.623587 -v -1.242805 -0.173928 0.623587 -v -1.123686 -0.173928 0.623587 -v -1.004568 -0.173928 0.623587 -v -0.885449 -0.173928 0.623587 -v -0.766329 -0.204097 0.636084 -v -1.600163 -0.183682 0.674277 -v -1.481043 -0.156531 0.656135 -v -1.361925 -0.156531 0.656135 -v -1.242805 -0.156531 0.656135 -v -1.123686 -0.156531 0.656135 -v -1.004568 -0.156531 0.656135 -v -0.885449 -0.156531 0.656135 -v -0.766329 -0.183682 0.674277 -v -1.600163 -0.156209 0.707754 -v -1.481043 -0.133118 0.684663 -v -1.361925 -0.133118 0.684663 -v -1.242805 -0.133118 0.684663 -v -1.123686 -0.133118 0.684663 -v -1.004568 -0.133118 0.684663 -v -0.885449 -0.133118 0.684663 -v -0.766329 -0.156209 0.707753 -v -1.600163 -0.122732 0.735227 -v -1.481043 -0.104590 0.708076 -v -1.361925 -0.104590 0.708076 -v -1.242805 -0.104590 0.708076 -v -1.123686 -0.104590 0.708076 -v -1.004568 -0.104590 0.708076 -v -0.885449 -0.104590 0.708076 -v -0.766329 -0.122732 0.735227 -v -1.600163 -0.084539 0.755642 -v -1.481043 -0.072042 0.725473 -v -1.361925 -0.072042 0.725473 -v -1.242805 -0.072042 0.725473 -v -1.123686 -0.072042 0.725473 -v -1.004568 -0.072042 0.725473 -v -0.885449 -0.072042 0.725473 -v -0.766329 -0.084539 0.755642 -v -1.600163 -0.043097 0.768213 -v -1.481043 -0.036726 0.736186 -v -1.361925 -0.036726 0.736186 -v -1.242805 -0.036726 0.736186 -v -1.123686 -0.036726 0.736186 -v -1.004568 -0.036726 0.736186 -v -0.885449 -0.036726 0.736186 -v -0.766329 -0.043097 0.768213 -v -1.600163 0.000001 0.772458 -v -1.481043 0.000001 0.739803 -v -1.361925 0.000001 0.739803 -v -1.242805 0.000002 0.739803 -v -1.123686 0.000002 0.739803 -v -1.004568 0.000002 0.739803 -v -0.885449 0.000002 0.739803 -v -0.766329 0.000002 0.772458 -v -1.600163 0.043100 0.768213 -v -1.481043 0.036729 0.736186 -v -1.361925 0.036729 0.736186 -v -1.242805 0.036729 0.736186 -v -1.123686 0.036729 0.736186 -v -1.004568 0.036729 0.736186 -v -0.885449 0.036729 0.736186 -v -0.766329 0.043100 0.768213 -v -1.600163 0.084542 0.755642 -v -1.481043 0.072045 0.725473 -v -1.361925 0.072045 0.725473 -v -1.242805 0.072045 0.725473 -v -1.123686 0.072045 0.725473 -v -1.004568 0.072045 0.725473 -v -0.885449 0.072046 0.725473 -v -0.766329 0.084542 0.755642 -v -1.600163 0.122735 0.735227 -v -1.481043 0.104593 0.708076 -v -1.361925 0.104593 0.708076 -v -1.242805 0.104593 0.708076 -v -1.123686 0.104593 0.708076 -v -1.004568 0.104593 0.708076 -v -0.885449 0.104593 0.708076 -v -0.766329 0.122735 0.735227 -v -1.600163 0.156212 0.707753 -v -1.481043 0.133121 0.684663 -v -1.361925 0.133121 0.684663 -v -1.242805 0.133121 0.684663 -v -1.123686 0.133121 0.684663 -v -1.004568 0.133121 0.684663 -v -0.885449 0.133121 0.684663 -v -0.766329 0.156212 0.707753 -v -1.600163 0.183685 0.674277 -v -1.481043 0.156534 0.656135 -v -1.361925 0.156534 0.656135 -v -1.242805 0.156534 0.656135 -v -1.123686 0.156534 0.656135 -v -1.004568 0.156534 0.656135 -v -0.885449 0.156534 0.656135 -v -0.766329 0.183685 0.674277 -v -1.600163 0.204100 0.636084 -v -1.481043 0.173931 0.623587 -v -1.361925 0.173931 0.623587 -v -1.242805 0.173931 0.623587 -v -1.123686 0.173931 0.623587 -v -1.004568 0.173931 0.623587 -v -0.885449 0.173931 0.623587 -v -0.766329 0.204100 0.636083 -v -1.600163 0.216671 0.594642 -v -1.481043 0.184644 0.588271 -v -1.361925 0.184644 0.588271 -v -1.242805 0.184644 0.588271 -v -1.123686 0.184644 0.588271 -v -1.004568 0.184644 0.588271 -v -0.885449 0.184644 0.588271 -v -0.766329 0.216671 0.594641 -v -1.064126 0.231022 0.551543 -v -1.064126 0.000002 0.320523 -v -1.064127 0.226583 0.506473 -v -1.064127 0.213436 0.463136 -v -1.064127 0.192088 0.423195 -v -1.064127 -0.045068 0.324962 -v -1.064127 0.163357 0.388187 -v -1.064127 -0.088406 0.338108 -v -1.064127 0.128349 0.359457 -v -1.064127 -0.128347 0.359457 -v -1.064127 0.088409 0.338108 -v -1.064127 -0.163355 0.388187 -v -1.064127 0.045071 0.324962 -v -1.064127 -0.192085 0.423195 -v -1.064127 -0.213433 0.463136 -v -1.064127 -0.226580 0.506474 -v -1.064127 -0.231019 0.551543 -v -1.064127 -0.226580 0.596613 -v -1.064127 -0.213433 0.639951 -v -1.064127 -0.192085 0.679891 -v -1.064127 -0.163355 0.714899 -v -1.064127 -0.128347 0.743630 -v -1.064127 -0.088406 0.764978 -v -1.064127 -0.045068 0.778125 -v -1.064127 0.000002 0.782564 -v -1.064127 0.045071 0.778125 -v -1.064127 0.088409 0.764978 -v -1.064127 0.128350 0.743630 -v -1.064127 0.163358 0.714899 -v -1.064127 0.192088 0.679891 -v -1.064127 0.213437 0.639951 -v -1.064127 0.226583 0.596613 -v -1.302365 0.231022 0.551543 -v -1.302365 0.000001 0.320523 -v -1.302365 0.226583 0.506473 -v -1.302365 0.213436 0.463136 -v -1.302365 0.192088 0.423195 -v -1.302365 -0.045068 0.324962 -v -1.302365 0.163357 0.388187 -v -1.302365 -0.088406 0.338108 -v -1.302365 0.128349 0.359457 -v -1.302365 -0.128347 0.359457 -v -1.302365 0.088409 0.338108 -v -1.302365 -0.163355 0.388187 -v -1.302365 0.045071 0.324962 -v -1.302365 -0.192085 0.423195 -v -1.302365 -0.213434 0.463136 -v -1.302365 -0.226580 0.506474 -v -1.302365 -0.231019 0.551543 -v -1.302365 -0.226580 0.596613 -v -1.302365 -0.213434 0.639951 -v -1.302365 -0.192085 0.679891 -v -1.302365 -0.163355 0.714899 -v -1.302365 -0.128347 0.743630 -v -1.302365 -0.088406 0.764978 -v -1.302365 -0.045068 0.778125 -v -1.302365 0.000002 0.782564 -v -1.302365 0.045071 0.778125 -v -1.302365 0.088409 0.764978 -v -1.302365 0.128350 0.743630 -v -1.302365 0.163358 0.714899 -v -1.302365 0.192088 0.679891 -v -1.302365 0.213437 0.639951 -v -1.302365 0.226583 0.596613 -v 3.396374 0.000002 0.431068 -v 3.396374 -0.023501 0.433383 -v 3.396374 -0.046101 0.440238 -v 3.396374 -0.066930 0.451371 -v 3.396374 -0.085186 0.466354 -v 3.396374 -0.100169 0.484610 -v 3.396374 -0.111302 0.505439 -v 3.396374 -0.118158 0.528039 -v 3.396374 -0.120473 0.551543 -v 3.396374 -0.118158 0.575046 -v 3.396374 -0.111302 0.597647 -v 3.396374 -0.100169 0.618475 -v 3.396374 -0.085186 0.636732 -v 3.396374 -0.066930 0.651714 -v 3.396374 -0.046101 0.662847 -v 3.396374 -0.023501 0.669703 -v 3.396374 0.000003 0.672018 -v 3.396374 0.023506 0.669703 -v 3.396374 0.046106 0.662847 -v 3.396374 0.066935 0.651714 -v 3.396374 0.085191 0.636731 -v 3.396374 0.100174 0.618475 -v 3.396374 0.111307 0.597646 -v 3.396374 0.118163 0.575046 -v 3.396374 0.120478 0.551543 -v 3.396374 0.118163 0.528039 -v 3.396374 0.111307 0.505439 -v 3.396374 0.100174 0.484610 -v 3.396374 0.085191 0.466354 -v 3.396374 0.066935 0.451371 -v 3.396374 0.046106 0.440238 -v 3.396374 0.023506 0.433383 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.670595 0.000001 0.551542 -v 5.072026 0.050647 0.530565 -v 5.072026 0.053766 0.540848 -v 5.072026 -0.030453 0.597121 -v 5.072026 -0.038760 0.590304 -v 5.072026 0.045581 0.521087 -v 5.072026 -0.020976 0.602187 -v 5.072026 -0.010692 0.497778 -v 5.072026 0.000002 0.496725 -v 5.072026 0.038764 0.512781 -v 5.072026 -0.010692 0.605307 -v 5.072026 -0.020976 0.500898 -v 5.072026 0.030457 0.505963 -v 5.072026 0.000002 0.606360 -v 5.072026 -0.030453 0.505963 -v 5.072026 0.020980 0.500898 -v 5.072026 0.010696 0.605307 -v 5.072026 -0.038760 0.512781 -v 5.072026 0.010696 0.497778 -v 5.072026 0.020980 0.602187 -v 5.072026 -0.045577 0.521088 -v 5.072026 0.030457 0.597121 -v 5.072026 -0.050643 0.530565 -v 5.072026 0.038764 0.590304 -v 5.072026 -0.053762 0.540848 -v 5.072026 0.045581 0.581997 -v 5.072026 -0.054815 0.551542 -v 5.072026 0.050647 0.572520 -v 5.072026 -0.053762 0.562237 -v 5.072026 0.053766 0.562237 -v 5.072026 -0.050643 0.572520 -v 5.072026 0.054819 0.551542 -v 5.072026 -0.045577 0.581997 -v 5.201908 0.076179 0.519988 -v 5.201908 -0.045808 0.620101 -v 5.201908 0.068560 0.505733 -v 5.201908 -0.031552 0.627720 -v 5.201908 -0.016084 0.470672 -v 5.201908 0.058305 0.493238 -v 5.201908 -0.016084 0.632412 -v 5.201908 -0.031552 0.475365 -v 5.201908 0.045811 0.482984 -v 5.201908 0.000002 0.633997 -v 5.201908 -0.045808 0.482984 -v 5.201908 0.031555 0.475365 -v 5.201908 0.016088 0.632412 -v 5.201908 -0.058302 0.493238 -v 5.201908 0.016087 0.470672 -v 5.201908 0.031555 0.627720 -v 5.201908 -0.068557 0.505733 -v 5.201908 0.045811 0.620101 -v 5.201908 -0.076176 0.519989 -v 5.201908 0.058306 0.609846 -v 5.201908 -0.080868 0.535456 -v 5.201908 0.068560 0.597351 -v 5.201908 -0.082453 0.551542 -v 5.201908 0.076179 0.583096 -v 5.201908 -0.080868 0.567628 -v 5.201908 0.080872 0.567628 -v 5.201908 -0.076176 0.583096 -v 5.201908 0.082456 0.551542 -v 5.201908 -0.068557 0.597352 -v 5.201908 0.080871 0.535456 -v 5.201908 -0.058302 0.609846 -v 5.201908 0.000002 0.469088 -v 3.268884 0.184185 0.514906 -v 3.268884 0.187794 0.551543 -v 3.268884 -0.132785 0.684331 -v 3.268884 -0.156140 0.655874 -v 3.268884 0.173499 0.479678 -v 3.268884 -0.104328 0.707685 -v 3.268884 0.156145 0.447212 -v 3.268884 -0.071862 0.725039 -v 3.268884 -0.036633 0.367360 -v 3.268884 0.000003 0.363752 -v 3.268884 0.132791 0.418754 -v 3.268884 -0.036633 0.735725 -v 3.268884 -0.071862 0.378047 -v 3.268884 0.104334 0.395400 -v 3.268884 0.000003 0.739334 -v 3.268884 -0.104328 0.395400 -v 3.268884 0.071867 0.378047 -v 3.268884 0.036639 0.735725 -v 3.268884 -0.132785 0.418755 -v 3.268884 0.036639 0.367360 -v 3.268884 0.071867 0.725039 -v 3.268884 -0.156140 0.447212 -v 3.268884 0.104334 0.707685 -v 3.268884 -0.173493 0.479678 -v 3.268884 0.132791 0.684331 -v 3.268884 -0.184180 0.514907 -v 3.268884 0.156145 0.655874 -v 3.268884 -0.187788 0.551543 -v 3.268884 0.173499 0.623407 -v 3.268884 -0.184180 0.588179 -v 3.268884 0.184185 0.588179 -v 3.268884 -0.173493 0.623407 -v 3.992743 0.083075 0.535018 -v 3.992743 -0.059890 0.611435 -v 3.992743 0.000002 0.466843 -v 3.992743 0.078255 0.519129 -v 3.992743 -0.047055 0.621968 -v 3.992743 0.070428 0.504486 -v 3.992743 -0.032411 0.629795 -v 3.992743 -0.016522 0.468470 -v 3.992743 0.059894 0.491651 -v 3.992743 -0.016522 0.634615 -v 3.992743 -0.032411 0.473290 -v 3.992743 0.047059 0.481117 -v 3.992743 0.000002 0.636243 -v 3.992743 -0.047055 0.481117 -v 3.992743 0.032415 0.473290 -v 3.992743 0.016526 0.634615 -v 3.992743 -0.059890 0.491651 -v 3.992743 0.016526 0.468470 -v 3.992743 0.032416 0.629795 -v 3.992743 -0.070423 0.504486 -v 3.992743 0.047059 0.621968 -v 3.992743 -0.078250 0.519129 -v 3.992743 0.059894 0.611435 -v 3.992743 -0.083070 0.535018 -v 3.992743 0.070428 0.598599 -v 3.992743 -0.084698 0.551543 -v 3.992743 0.078255 0.583956 -v 3.992743 -0.083070 0.568067 -v 3.992743 0.083075 0.568067 -v 3.992743 -0.078250 0.583956 -v 3.992743 0.084702 0.551543 -v 3.992743 -0.070423 0.598599 -v 4.797544 0.053151 0.529527 -v 4.797544 -0.031959 0.599375 -v 4.797544 0.047835 0.519582 -v 4.797544 -0.022013 0.604691 -v 4.797544 -0.011221 0.495120 -v 4.797544 0.040680 0.510864 -v 4.797544 -0.011221 0.607965 -v 4.797544 -0.022013 0.498394 -v 4.797544 0.031963 0.503710 -v 4.797544 0.000002 0.609070 -v 4.797544 -0.031959 0.503710 -v 4.797544 0.022017 0.498394 -v 4.797544 0.011225 0.607965 -v 4.797544 -0.040676 0.510864 -v 4.797544 0.011225 0.495120 -v 4.797544 0.022017 0.604691 -v 4.797544 -0.047831 0.519582 -v 4.797544 0.031963 0.599375 -v 4.797544 -0.053147 0.529528 -v 4.797544 0.040680 0.592221 -v 4.797544 -0.056421 0.540319 -v 4.797544 0.047835 0.583503 -v 4.797544 -0.057526 0.551543 -v 4.797544 0.053151 0.573557 -v 4.797544 -0.056421 0.562766 -v 4.797544 0.056425 0.562766 -v 4.797544 -0.053147 0.573557 -v 4.797544 0.057530 0.551542 -v 4.797544 -0.047831 0.583503 -v 4.797544 0.056425 0.540319 -v 4.797544 -0.040676 0.592221 -v 4.797544 0.000002 0.494015 -v 4.684866 0.100623 0.531528 -v 4.640315 0.125171 0.526645 -v 4.595768 0.100623 0.531528 -v 4.551219 0.125171 0.526645 -v 4.506669 0.100623 0.531528 -v 4.461956 0.124635 0.527181 -v 4.417573 0.100623 0.531528 -v 4.373023 0.125171 0.526645 -v 4.328474 0.100623 0.531528 -v 4.283925 0.125171 0.526645 -v 4.239376 0.100623 0.531528 -v 4.194828 0.079277 0.535774 -v 4.684866 -0.072542 0.624086 -v 4.640315 -0.090240 0.641784 -v 4.595768 -0.072542 0.624086 -v 4.551219 -0.090240 0.641784 -v 4.506669 -0.072542 0.624086 -v 4.461956 -0.090776 0.642321 -v 4.417573 -0.072542 0.624086 -v 4.373023 -0.090240 0.641784 -v 4.328474 -0.072542 0.624086 -v 4.283925 -0.090240 0.641784 -v 4.239376 -0.072541 0.624086 -v 4.194828 -0.057152 0.608697 -v 4.684866 0.000002 0.448950 -v 4.640315 0.000002 0.423921 -v 4.595768 0.000002 0.448950 -v 4.551219 0.000002 0.423921 -v 4.506669 0.000002 0.448950 -v 4.461956 -0.000534 0.424458 -v 4.417573 0.000002 0.448950 -v 4.373023 0.000002 0.423921 -v 4.328474 0.000002 0.448950 -v 4.283925 0.000002 0.423921 -v 4.239376 0.000002 0.448950 -v 4.194828 0.000002 0.470714 -v 4.194828 0.074678 0.520611 -v 4.239376 0.094785 0.512282 -v 4.283925 0.117909 0.502704 -v 4.328474 0.094785 0.512282 -v 4.373023 0.117909 0.502704 -v 4.417573 0.094785 0.512282 -v 4.461957 0.117372 0.503240 -v 4.506669 0.094785 0.512282 -v 4.551219 0.117909 0.502704 -v 4.595768 0.094785 0.512282 -v 4.640318 0.117909 0.502704 -v 4.684866 0.094785 0.512282 -v 4.194828 -0.044904 0.618749 -v 4.239376 -0.056995 0.636845 -v 4.283925 -0.070900 0.657656 -v 4.328474 -0.056995 0.636845 -v 4.373023 -0.070900 0.657656 -v 4.417573 -0.056995 0.636845 -v 4.461957 -0.071437 0.658192 -v 4.506669 -0.056995 0.636845 -v 4.551219 -0.070900 0.657656 -v 4.595768 -0.056995 0.636845 -v 4.640318 -0.070900 0.657656 -v 4.684866 -0.056995 0.636845 -v 4.194828 0.067208 0.506637 -v 4.239376 0.085304 0.494545 -v 4.283925 0.106115 0.480640 -v 4.328474 0.085304 0.494545 -v 4.373023 0.106115 0.480640 -v 4.417573 0.085304 0.494545 -v 4.461957 0.105579 0.481176 -v 4.506669 0.085304 0.494545 -v 4.551219 0.106115 0.480640 -v 4.595768 0.085304 0.494545 -v 4.640318 0.106115 0.480640 -v 4.684866 0.085304 0.494545 -v 4.194828 -0.030929 0.626218 -v 4.239376 -0.039258 0.646325 -v 4.283925 -0.048836 0.669449 -v 4.328474 -0.039258 0.646325 -v 4.373023 -0.048836 0.669449 -v 4.417573 -0.039258 0.646325 -v 4.461957 -0.049373 0.669985 -v 4.506669 -0.039258 0.646325 -v 4.551219 -0.048836 0.669449 -v 4.595768 -0.039258 0.646325 -v 4.640318 -0.048836 0.669449 -v 4.684866 -0.039258 0.646325 -v 4.194828 -0.015767 0.472267 -v 4.239376 -0.020013 0.450922 -v 4.283925 -0.024895 0.426374 -v 4.328474 -0.020013 0.450922 -v 4.373023 -0.024896 0.426374 -v 4.417573 -0.020013 0.450922 -v 4.461957 -0.025432 0.426910 -v 4.506669 -0.020013 0.450922 -v 4.551219 -0.024896 0.426374 -v 4.595768 -0.020013 0.450922 -v 4.640318 -0.024896 0.426374 -v 4.684866 -0.020013 0.450922 -v 4.194828 0.057156 0.494388 -v 4.239376 0.072546 0.478999 -v 4.283925 0.090244 0.461301 -v 4.328474 0.072546 0.478999 -v 4.373023 0.090244 0.461301 -v 4.417573 0.072546 0.478999 -v 4.461957 0.089707 0.461837 -v 4.507077 0.073144 0.479622 -v 4.551219 0.090244 0.461301 -v 4.595768 0.072546 0.478999 -v 4.640318 0.090244 0.461301 -v 4.684866 0.072546 0.478999 -v 4.194828 -0.015767 0.630818 -v 4.239376 -0.020013 0.652164 -v 4.283925 -0.024895 0.676711 -v 4.328474 -0.020013 0.652164 -v 4.373023 -0.024895 0.676711 -v 4.417573 -0.020013 0.652164 -v 4.461957 -0.025432 0.677248 -v 4.506669 -0.020013 0.652164 -v 4.551219 -0.024896 0.676711 -v 4.595768 -0.020013 0.652164 -v 4.640318 -0.024896 0.676711 -v 4.684866 -0.020013 0.652164 -v 4.194828 -0.030930 0.476867 -v 4.239376 -0.039258 0.456760 -v 4.283925 -0.048836 0.433636 -v 4.328474 -0.039258 0.456760 -v 4.373023 -0.048836 0.433636 -v 4.417573 -0.039258 0.456760 -v 4.461957 -0.049373 0.434172 -v 4.506669 -0.039258 0.456760 -v 4.551219 -0.048836 0.433636 -v 4.595768 -0.039258 0.456760 -v 4.640318 -0.048836 0.433636 -v 4.684866 -0.039258 0.456760 -v 4.194828 0.044908 0.484336 -v 4.239376 0.056999 0.466240 -v 4.283925 0.070905 0.445429 -v 4.328474 0.056999 0.466240 -v 4.373023 0.070904 0.445429 -v 4.417573 0.056999 0.466240 -v 4.461957 0.070368 0.445966 -v 4.506669 0.056999 0.466240 -v 4.551219 0.070904 0.445429 -v 4.595768 0.056999 0.466240 -v 4.640318 0.070904 0.445429 -v 4.684866 0.056999 0.466240 -v 4.194828 0.000002 0.632371 -v 4.239376 0.000002 0.654135 -v 4.283925 0.000002 0.679164 -v 4.328474 0.000002 0.654135 -v 4.373023 0.000002 0.679164 -v 4.417573 0.000002 0.654135 -v 4.461957 -0.000534 0.679700 -v 4.506669 0.000002 0.654135 -v 4.551219 0.000002 0.679164 -v 4.595768 0.000002 0.654135 -v 4.640318 0.000002 0.679164 -v 4.684866 0.000002 0.654135 -v 4.194828 -0.044904 0.484336 -v 4.239376 -0.056995 0.466240 -v 4.283925 -0.070900 0.445430 -v 4.328474 -0.056995 0.466240 -v 4.373023 -0.070900 0.445430 -v 4.417573 -0.056995 0.466240 -v 4.461957 -0.071437 0.445966 -v 4.506669 -0.056995 0.466240 -v 4.551219 -0.070900 0.445430 -v 4.595768 -0.056995 0.466240 -v 4.640318 -0.070900 0.445429 -v 4.684866 -0.056995 0.466240 -v 4.194828 0.030934 0.476867 -v 4.239376 0.039262 0.456760 -v 4.283925 0.048840 0.433636 -v 4.328474 0.039262 0.456760 -v 4.373023 0.048840 0.433636 -v 4.417573 0.039262 0.456760 -v 4.461957 0.048304 0.434172 -v 4.506669 0.039262 0.456760 -v 4.551219 0.048840 0.433636 -v 4.595768 0.039262 0.456760 -v 4.640318 0.048840 0.433636 -v 4.684866 0.039262 0.456760 -v 4.194828 0.015771 0.630818 -v 4.239376 0.020017 0.652164 -v 4.283925 0.024900 0.676711 -v 4.328474 0.020017 0.652164 -v 4.373023 0.024900 0.676711 -v 4.417573 0.020017 0.652164 -v 4.461957 0.024364 0.677248 -v 4.506669 0.020017 0.652164 -v 4.551219 0.024900 0.676711 -v 4.595768 0.020017 0.652164 -v 4.640318 0.024900 0.676711 -v 4.684866 0.020017 0.652164 -v 4.194828 -0.057152 0.494388 -v 4.239376 -0.072541 0.478999 -v 4.283925 -0.090240 0.461301 -v 4.328474 -0.072542 0.478999 -v 4.373023 -0.090240 0.461301 -v 4.417573 -0.072542 0.478999 -v 4.461957 -0.090776 0.461837 -v 4.506669 -0.072542 0.478999 -v 4.551219 -0.090240 0.461301 -v 4.595768 -0.072542 0.478999 -v 4.640318 -0.090240 0.461301 -v 4.684866 -0.072542 0.478999 -v 4.194828 0.015771 0.472267 -v 4.239376 0.020017 0.450922 -v 4.283925 0.024900 0.426374 -v 4.328474 0.020017 0.450922 -v 4.373023 0.024900 0.426374 -v 4.417573 0.020017 0.450922 -v 4.461957 0.024363 0.426910 -v 4.506669 0.020017 0.450922 -v 4.551219 0.024900 0.426374 -v 4.595768 0.020017 0.450922 -v 4.640318 0.024900 0.426374 -v 4.684866 0.020017 0.450922 -v 4.194828 0.030934 0.626218 -v 4.239376 0.039263 0.646325 -v 4.283925 0.048841 0.669449 -v 4.328474 0.039263 0.646325 -v 4.373023 0.048841 0.669449 -v 4.417573 0.039263 0.646325 -v 4.461957 0.048304 0.669985 -v 4.506669 0.039263 0.646325 -v 4.551219 0.048841 0.669449 -v 4.595768 0.039262 0.646325 -v 4.640318 0.048841 0.669449 -v 4.684866 0.039262 0.646325 -v 4.194828 -0.067204 0.506637 -v 4.239376 -0.085300 0.494545 -v 4.283925 -0.106111 0.480640 -v 4.328474 -0.085300 0.494545 -v 4.373023 -0.106111 0.480640 -v 4.417573 -0.085300 0.494545 -v 4.461957 -0.106647 0.481176 -v 4.506669 -0.085300 0.494545 -v 4.551219 -0.106111 0.480640 -v 4.595768 -0.085300 0.494545 -v 4.640318 -0.106111 0.480640 -v 4.684866 -0.085300 0.494545 -v 4.194828 0.044908 0.618749 -v 4.239376 0.056999 0.636845 -v 4.283925 0.070905 0.657656 -v 4.328474 0.056999 0.636845 -v 4.373023 0.070905 0.657656 -v 4.417573 0.056999 0.636845 -v 4.461957 0.070368 0.658192 -v 4.506669 0.056999 0.636845 -v 4.551219 0.070905 0.657656 -v 4.595768 0.056999 0.636845 -v 4.640318 0.070905 0.657656 -v 4.684866 0.056999 0.636845 -v 4.194828 -0.074674 0.520611 -v 4.239376 -0.094781 0.512282 -v 4.283925 -0.117904 0.502704 -v 4.328474 -0.094781 0.512282 -v 4.373023 -0.117904 0.502704 -v 4.417573 -0.094781 0.512282 -v 4.461957 -0.118441 0.503240 -v 4.506669 -0.094781 0.512282 -v 4.551219 -0.117904 0.502704 -v 4.595768 -0.094781 0.512282 -v 4.640318 -0.117904 0.502704 -v 4.684866 -0.094781 0.512282 -v 4.194828 0.057157 0.608697 -v 4.239376 0.072546 0.624086 -v 4.283925 0.090244 0.641784 -v 4.328474 0.072546 0.624086 -v 4.373023 0.090244 0.641784 -v 4.417573 0.072546 0.624086 -v 4.461957 0.089708 0.642321 -v 4.506669 0.072546 0.624086 -v 4.551219 0.090244 0.641784 -v 4.595768 0.072546 0.624086 -v 4.640318 0.090244 0.641784 -v 4.684866 0.072546 0.624086 -v 4.194828 -0.079273 0.535774 -v 4.239376 -0.100619 0.531528 -v 4.283925 -0.125167 0.526645 -v 4.328474 -0.100619 0.531528 -v 4.373023 -0.125167 0.526645 -v 4.417573 -0.100619 0.531528 -v 4.461957 -0.125703 0.527181 -v 4.506669 -0.100619 0.531528 -v 4.551219 -0.125167 0.526645 -v 4.595768 -0.100619 0.531528 -v 4.640318 -0.125167 0.526645 -v 4.684866 -0.100619 0.531528 -v 4.194828 0.067209 0.596448 -v 4.239376 0.085305 0.608540 -v 4.283925 0.106115 0.622445 -v 4.328474 0.085305 0.608540 -v 4.373023 0.106115 0.622445 -v 4.417573 0.085304 0.608540 -v 4.461957 0.105579 0.622981 -v 4.506669 0.085304 0.608540 -v 4.551219 0.106115 0.622445 -v 4.595768 0.085304 0.608540 -v 4.640318 0.106115 0.622445 -v 4.684866 0.085304 0.608540 -v 4.194828 -0.080826 0.551543 -v 4.239376 -0.102590 0.551543 -v 4.283925 -0.127619 0.551543 -v 4.328474 -0.102590 0.551543 -v 4.373023 -0.127619 0.551543 -v 4.417573 -0.102590 0.551543 -v 4.461957 -0.128155 0.552079 -v 4.506669 -0.102590 0.551543 -v 4.551219 -0.127619 0.551543 -v 4.595768 -0.102590 0.551543 -v 4.640318 -0.127619 0.551543 -v 4.684866 -0.102590 0.551543 -v 4.194828 0.074678 0.582474 -v 4.239376 0.094785 0.590803 -v 4.283925 0.117909 0.600381 -v 4.328474 0.094785 0.590803 -v 4.373023 0.117909 0.600381 -v 4.417573 0.094785 0.590803 -v 4.461957 0.117372 0.600917 -v 4.506669 0.094785 0.590803 -v 4.551219 0.117909 0.600381 -v 4.595768 0.094785 0.590803 -v 4.640318 0.117909 0.600381 -v 4.684866 0.094785 0.590803 -v 4.194828 -0.079273 0.567311 -v 4.239376 -0.100619 0.571557 -v 4.283925 -0.125167 0.576440 -v 4.328474 -0.100619 0.571557 -v 4.373023 -0.125167 0.576440 -v 4.417573 -0.100619 0.571557 -v 4.461957 -0.125703 0.576977 -v 4.506669 -0.100619 0.571557 -v 4.551219 -0.125167 0.576440 -v 4.595768 -0.100619 0.571557 -v 4.640318 -0.125167 0.576440 -v 4.684866 -0.100619 0.571557 -v 4.194828 0.079278 0.567311 -v 4.239376 0.100623 0.571557 -v 4.283925 0.125171 0.576440 -v 4.328474 0.100623 0.571557 -v 4.373023 0.125171 0.576440 -v 4.417573 0.100623 0.571557 -v 4.461957 0.124635 0.576976 -v 4.506669 0.100623 0.571557 -v 4.551219 0.125171 0.576440 -v 4.595768 0.100623 0.571557 -v 4.640318 0.125171 0.576440 -v 4.684866 0.100623 0.571557 -v 4.194828 -0.074674 0.582474 -v 4.239376 -0.094781 0.590803 -v 4.283925 -0.117904 0.600381 -v 4.328474 -0.094781 0.590803 -v 4.373023 -0.117904 0.600381 -v 4.417573 -0.094781 0.590803 -v 4.461957 -0.118441 0.600917 -v 4.506669 -0.094781 0.590803 -v 4.551219 -0.117904 0.600381 -v 4.595768 -0.094781 0.590803 -v 4.640318 -0.117904 0.600381 -v 4.684866 -0.094781 0.590803 -v 4.194828 0.080831 0.551543 -v 4.239376 0.102594 0.551543 -v 4.283925 0.127623 0.551542 -v 4.328474 0.102594 0.551542 -v 4.373023 0.127623 0.551542 -v 4.417573 0.102594 0.551542 -v 4.461957 0.127087 0.552079 -v 4.506669 0.102594 0.551542 -v 4.551219 0.127623 0.551542 -v 4.595768 0.102594 0.551542 -v 4.640318 0.127623 0.551542 -v 4.684866 0.102594 0.551542 -v 4.194828 -0.067204 0.596448 -v 4.239376 -0.085300 0.608540 -v 4.283925 -0.106111 0.622445 -v 4.328474 -0.085300 0.608540 -v 4.373023 -0.106111 0.622445 -v 4.417573 -0.085300 0.608540 -v 4.461957 -0.106647 0.622981 -v 4.506669 -0.085300 0.608540 -v 4.551219 -0.106111 0.622445 -v 4.595768 -0.085300 0.608540 -v 4.640318 -0.106111 0.622445 -v 4.684866 -0.085300 0.608540 -v 3.587242 -0.000000 -0.145895 -v 3.989225 0.000000 -0.186209 -v 3.587242 -0.021885 -0.143739 -v 3.989225 -0.014454 -0.184785 -v 3.587242 -0.042928 -0.137356 -v 3.989225 -0.028353 -0.180569 -v 3.587242 -0.062322 -0.126990 -v 3.989225 -0.041162 -0.173722 -v 3.587242 -0.079321 -0.113039 -v 3.989225 -0.052389 -0.164508 -v 3.587242 -0.093272 -0.096040 -v 3.989225 -0.061603 -0.153281 -v 3.587242 -0.103638 -0.076646 -v 3.989225 -0.068449 -0.140472 -v 3.587242 -0.110022 -0.055603 -v 3.989225 -0.072665 -0.126574 -v 3.587242 -0.112177 -0.033718 -v 3.989225 -0.074089 -0.112120 -v 3.587242 -0.110022 -0.011833 -v 3.989225 -0.072665 -0.097666 -v 3.587242 -0.103638 0.009210 -v 3.989225 -0.068449 -0.083767 -v 3.587242 -0.093272 0.028604 -v 3.989225 -0.061603 -0.070958 -v 3.587242 -0.079321 0.045603 -v 3.989225 -0.052389 -0.059731 -v 3.587242 -0.062322 0.059554 -v 3.989225 -0.041162 -0.050517 -v 3.587242 -0.042928 0.069920 -v 3.989225 -0.028353 -0.043670 -v 3.587242 -0.021885 0.076304 -v 3.989225 -0.014454 -0.039454 -v 3.587242 0.000000 0.078459 -v 3.989225 0.000000 -0.038031 -v 3.587242 0.021885 0.076304 -v 3.989225 0.014454 -0.039454 -v 3.587242 0.042928 0.069920 -v 3.989225 0.028353 -0.043670 -v 3.587242 0.062322 0.059554 -v 3.989225 0.041162 -0.050517 -v 3.587242 0.079321 0.045603 -v 3.989225 0.052389 -0.059731 -v 3.587242 0.093272 0.028604 -v 3.989225 0.061603 -0.070958 -v 3.587242 0.103638 0.009210 -v 3.989225 0.068449 -0.083767 -v 3.587242 0.110022 -0.011833 -v 3.989225 0.072665 -0.097666 -v 3.587242 0.112177 -0.033718 -v 3.989225 0.074089 -0.112120 -v 3.587242 0.110022 -0.055603 -v 3.989225 0.072665 -0.126574 -v 3.587242 0.103638 -0.076646 -v 3.989225 0.068449 -0.140472 -v 3.587242 0.093272 -0.096040 -v 3.989225 0.061603 -0.153281 -v 3.587242 0.079321 -0.113039 -v 3.989225 0.052389 -0.164508 -v 3.587242 0.062322 -0.126990 -v 3.989225 0.041162 -0.173722 -v 3.587242 0.042928 -0.137356 -v 3.989225 0.028353 -0.180569 -v 3.587242 0.021884 -0.143740 -v 3.989225 0.014454 -0.184785 -v 4.637677 -0.014454 -0.106383 -v 4.637677 0.000000 -0.107807 -v 4.637677 -0.028353 -0.102167 -v 4.637677 -0.041162 -0.095321 -v 4.637677 -0.052389 -0.086107 -v 4.637677 -0.061603 -0.074880 -v 4.637677 -0.068449 -0.062070 -v 4.637677 -0.072665 -0.048172 -v 4.637677 -0.074089 -0.033718 -v 4.637677 -0.072665 -0.019264 -v 4.637677 -0.068449 -0.005365 -v 4.637677 -0.061603 0.007444 -v 4.637677 -0.052389 0.018671 -v 4.637677 -0.041162 0.027885 -v 4.637677 -0.028353 0.034731 -v 4.637677 -0.014454 0.038948 -v 4.637677 0.000000 0.040371 -v 4.637677 0.014454 0.038948 -v 4.637677 0.028353 0.034731 -v 4.637677 0.041162 0.027885 -v 4.637677 0.052389 0.018671 -v 4.637677 0.061603 0.007444 -v 4.637677 0.068449 -0.005365 -v 4.637677 0.072665 -0.019264 -v 4.637677 0.074089 -0.033718 -v 4.637677 0.072665 -0.048172 -v 4.637677 0.068449 -0.062071 -v 4.637677 0.061603 -0.074880 -v 4.637677 0.052389 -0.086107 -v 4.637677 0.041162 -0.095321 -v 4.637677 0.028353 -0.102167 -v 4.637677 0.014454 -0.106383 -v 5.273666 0.000001 -0.033718 -v 3.179720 -0.053726 0.036675 -v 3.188101 -0.077999 0.043213 -v 3.199381 -0.099273 0.052010 -v 3.213126 -0.116733 0.062730 -v 3.228806 -0.129707 0.074960 -v 3.245822 -0.137696 0.088231 -v 3.263516 -0.140394 0.102031 -v 3.281211 -0.137696 0.115832 -v 3.298226 -0.129707 0.129103 -v 3.313907 -0.116733 0.141333 -v 3.327652 -0.099273 0.152053 -v 3.338932 -0.077998 0.160850 -v 3.347313 -0.053726 0.167388 -v 3.352474 -0.027389 0.171413 -v 3.354218 0.000000 0.172772 -v 3.352474 0.027389 0.171413 -v 3.347313 0.053726 0.167388 -v 3.338932 0.077999 0.160850 -v 3.327652 0.099273 0.152053 -v 3.313908 0.116733 0.141333 -v 3.298226 0.129707 0.129103 -v 3.281211 0.137696 0.115832 -v 3.263516 0.140394 0.102031 -v 3.245822 0.137696 0.088231 -v 3.228806 0.129707 0.074960 -v 3.213126 0.116733 0.062730 -v 3.199381 0.099273 0.052010 -v 3.188101 0.077998 0.043212 -v 3.179720 0.053726 0.036675 -v 3.174559 0.027389 0.032650 -v 3.172815 0.000000 0.031291 -v 3.587242 -0.000000 -0.145895 -v 3.587242 -0.021885 -0.143739 -v 3.587242 -0.042928 -0.137356 -v 3.587242 -0.062322 -0.126990 -v 3.587242 -0.079321 -0.113039 -v 3.587242 -0.093272 -0.096040 -v 3.587242 -0.103638 -0.076646 -v 3.587242 -0.110022 -0.055603 -v 3.587242 -0.112177 -0.033718 -v 3.587242 -0.110022 -0.011833 -v 3.587242 -0.103638 0.009210 -v 3.587242 -0.093272 0.028604 -v 3.587242 -0.079321 0.045603 -v 3.587242 -0.062322 0.059554 -v 3.587242 -0.042928 0.069920 -v 3.587242 -0.021885 0.076304 -v 3.587242 0.000000 0.078459 -v 3.587242 0.021885 0.076304 -v 3.587242 0.042928 0.069920 -v 3.587242 0.062322 0.059554 -v 3.587242 0.079321 0.045603 -v 3.587242 0.093272 0.028604 -v 3.587242 0.103638 0.009210 -v 3.587242 0.110022 -0.011833 -v 3.587242 0.112177 -0.033718 -v 3.587242 0.110022 -0.055603 -v 3.587242 0.103638 -0.076646 -v 3.587242 0.093272 -0.096040 -v 3.587242 0.079321 -0.113039 -v 3.587242 0.062322 -0.126990 -v 3.587242 0.042928 -0.137356 -v 3.587242 0.021884 -0.143740 -v 2.943389 0.000000 0.479873 -v 2.946735 -0.033974 0.479873 -v 2.956646 -0.066643 0.479873 -v 2.972738 -0.096750 0.479873 -v 2.994395 -0.123139 0.479873 -v 3.020784 -0.144796 0.479873 -v 3.050892 -0.160889 0.479873 -v 3.083561 -0.170799 0.479873 -v 3.117535 -0.174145 0.479873 -v 3.151508 -0.170799 0.479873 -v 3.184176 -0.160889 0.479873 -v 3.214284 -0.144796 0.479873 -v 3.240674 -0.123139 0.479873 -v 3.262331 -0.096750 0.479873 -v 3.278424 -0.066642 0.479873 -v 3.288334 -0.033974 0.479873 -v 3.291680 0.000000 0.479873 -v 3.288334 0.033974 0.479873 -v 3.278424 0.066643 0.479873 -v 3.262331 0.096750 0.479873 -v 3.240674 0.123139 0.479873 -v 3.214284 0.144797 0.479873 -v 3.184176 0.160889 0.479873 -v 3.151508 0.170799 0.479873 -v 3.117535 0.174145 0.479873 -v 3.083561 0.170799 0.479873 -v 3.050892 0.160889 0.479873 -v 3.020784 0.144796 0.479873 -v 2.994395 0.123139 0.479873 -v 2.972738 0.096750 0.479873 -v 2.956646 0.066642 0.479873 -v 2.946735 0.033974 0.479873 -v 3.368539 -0.000000 -0.102855 -v 3.048191 0.000000 0.184855 -v 3.050586 0.034861 0.185759 -v 3.369501 0.021297 -0.100929 -v 3.057676 0.068383 0.188436 -v 3.372353 0.041775 -0.095226 -v 3.069191 0.099276 0.192783 -v 3.376984 0.060648 -0.085964 -v 3.084687 0.126355 0.198633 -v 3.383216 0.077190 -0.073499 -v 3.103569 0.148578 0.205762 -v 3.390810 0.090766 -0.058311 -v 3.125113 0.165091 0.213894 -v 3.399475 0.100854 -0.040983 -v 3.148487 0.175260 0.222719 -v 3.408875 0.107066 -0.022181 -v 3.172796 0.178693 0.231897 -v 3.418653 0.109163 -0.002627 -v 3.197106 0.175260 0.241074 -v 3.428429 0.107066 0.016926 -v 3.220482 0.165091 0.249899 -v 3.437830 0.100854 0.035728 -v 3.242024 0.148578 0.258032 -v 3.446494 0.090766 0.053056 -v 3.260906 0.126355 0.265160 -v 3.454088 0.077190 0.068244 -v 3.276403 0.099277 0.271011 -v 3.460320 0.060648 0.080709 -v 3.287918 0.068383 0.275358 -v 3.464952 0.041775 0.089971 -v 3.295009 0.034861 0.278035 -v 3.467803 0.021297 0.095675 -v 3.297402 0.000000 0.278939 -v 3.468766 0.000000 0.097600 -v 3.295009 -0.034861 0.278035 -v 3.467803 -0.021297 0.095675 -v 3.287918 -0.068383 0.275358 -v 3.464952 -0.041775 0.089971 -v 3.276403 -0.099277 0.271011 -v 3.460320 -0.060648 0.080709 -v 3.260906 -0.126355 0.265160 -v 3.454088 -0.077190 0.068244 -v 3.242024 -0.148578 0.258032 -v 3.446494 -0.090766 0.053056 -v 3.220482 -0.165091 0.249899 -v 3.437830 -0.100854 0.035728 -v 3.197106 -0.175260 0.241074 -v 3.428429 -0.107066 0.016926 -v 3.172796 -0.178693 0.231897 -v 3.418653 -0.109163 -0.002627 -v 3.148487 -0.175260 0.222719 -v 3.408875 -0.107066 -0.022181 -v 3.125113 -0.165091 0.213895 -v 3.399475 -0.100854 -0.040983 -v 3.103569 -0.148578 0.205762 -v 3.390810 -0.090766 -0.058311 -v 3.084687 -0.126355 0.198633 -v 3.383216 -0.077190 -0.073499 -v 3.069191 -0.099277 0.192783 -v 3.376984 -0.060648 -0.085964 -v 3.057676 -0.068383 0.188436 -v 3.372353 -0.041775 -0.095226 -v 3.050586 -0.034861 0.185759 -v 3.369501 -0.021297 -0.100929 -v 3.174559 -0.027389 0.032650 -v 3.023735 0.000000 0.331704 -v 3.026553 0.034417 0.332276 -v 3.034897 0.067512 0.333971 -v 3.048448 0.098013 0.336723 -v 3.066685 0.124747 0.340427 -v 3.088904 0.146687 0.344940 -v 3.114257 0.162990 0.350089 -v 3.141765 0.173029 0.355676 -v 3.170372 0.176419 0.361486 -v 3.198979 0.173029 0.367297 -v 3.226487 0.162990 0.372884 -v 3.251839 0.146687 0.378033 -v 3.274060 0.124747 0.382546 -v 3.292296 0.098013 0.386249 -v 3.305847 0.067513 0.389002 -v 3.314192 0.034418 0.390696 -v 3.317009 0.000000 0.391269 -v 3.314192 -0.034418 0.390696 -v 3.305847 -0.067513 0.389002 -v 3.292296 -0.098013 0.386249 -v 3.274060 -0.124747 0.382546 -v 3.251839 -0.146687 0.378033 -v 3.226487 -0.162990 0.372884 -v 3.198979 -0.173029 0.367297 -v 3.170372 -0.176419 0.361486 -v 3.141765 -0.173029 0.355676 -v 3.114257 -0.162990 0.350089 -v 3.088905 -0.146687 0.344940 -v 3.066685 -0.124747 0.340427 -v 3.048448 -0.098013 0.336723 -v 3.034897 -0.067513 0.333971 -v 3.026553 -0.034418 0.332276 -v 3.587242 -0.000000 1.248980 -v 3.989225 0.000000 1.289294 -v 3.587242 -0.021885 1.246825 -v 3.989225 -0.014454 1.287870 -v 3.587242 -0.042928 1.240441 -v 3.989225 -0.028353 1.283654 -v 3.587242 -0.062322 1.230075 -v 3.989225 -0.041162 1.276808 -v 3.587242 -0.079321 1.216125 -v 3.989225 -0.052389 1.267594 -v 3.587242 -0.093272 1.199126 -v 3.989225 -0.061603 1.256366 -v 3.587242 -0.103638 1.179732 -v 3.989225 -0.068449 1.243557 -v 3.587242 -0.110022 1.158688 -v 3.989225 -0.072665 1.229659 -v 3.587242 -0.112177 1.136803 -v 3.989225 -0.074089 1.215205 -v 3.587242 -0.110022 1.114919 -v 3.989225 -0.072665 1.200751 -v 3.587242 -0.103638 1.093875 -v 3.989225 -0.068449 1.186852 -v 3.587242 -0.093272 1.074481 -v 3.989225 -0.061603 1.174043 -v 3.587242 -0.079321 1.057482 -v 3.989225 -0.052389 1.162816 -v 3.587242 -0.062322 1.043532 -v 3.989225 -0.041162 1.153602 -v 3.587242 -0.042928 1.033165 -v 3.989225 -0.028353 1.146756 -v 3.587242 -0.021885 1.026782 -v 3.989225 -0.014454 1.142540 -v 3.587242 0.000000 1.024626 -v 3.989225 0.000000 1.141116 -v 3.587242 0.021885 1.026782 -v 3.989225 0.014454 1.142540 -v 3.587242 0.042928 1.033165 -v 3.989225 0.028353 1.146756 -v 3.587242 0.062322 1.043532 -v 3.989225 0.041162 1.153602 -v 3.587242 0.079321 1.057482 -v 3.989225 0.052389 1.162816 -v 3.587242 0.093272 1.074481 -v 3.989225 0.061603 1.174043 -v 3.587242 0.103638 1.093875 -v 3.989225 0.068449 1.186852 -v 3.587242 0.110022 1.114919 -v 3.989225 0.072665 1.200751 -v 3.587242 0.112177 1.136803 -v 3.989225 0.074089 1.215205 -v 3.587242 0.110022 1.158688 -v 3.989225 0.072665 1.229659 -v 3.587242 0.103638 1.179732 -v 3.989225 0.068449 1.243558 -v 3.587242 0.093272 1.199126 -v 3.989225 0.061603 1.256367 -v 3.587242 0.079321 1.216125 -v 3.989225 0.052389 1.267594 -v 3.587242 0.062322 1.230075 -v 3.989225 0.041162 1.276808 -v 3.587242 0.042928 1.240442 -v 3.989225 0.028353 1.283654 -v 3.587242 0.021884 1.246825 -v 3.989225 0.014454 1.287870 -v 4.637677 -0.014454 1.209468 -v 4.637677 0.000000 1.210892 -v 4.637677 -0.028353 1.205252 -v 4.637677 -0.041162 1.198406 -v 4.637677 -0.052389 1.189192 -v 4.637677 -0.061603 1.177965 -v 4.637677 -0.068449 1.165156 -v 4.637677 -0.072665 1.151257 -v 4.637677 -0.074089 1.136803 -v 4.637677 -0.072665 1.122349 -v 4.637677 -0.068449 1.108450 -v 4.637677 -0.061603 1.095641 -v 4.637677 -0.052389 1.084414 -v 4.637677 -0.041162 1.075200 -v 4.637677 -0.028353 1.068354 -v 4.637677 -0.014454 1.064138 -v 4.637677 0.000000 1.062714 -v 4.637677 0.014454 1.064138 -v 4.637677 0.028353 1.068354 -v 4.637677 0.041162 1.075200 -v 4.637677 0.052389 1.084414 -v 4.637677 0.061603 1.095641 -v 4.637677 0.068449 1.108451 -v 4.637677 0.072665 1.122349 -v 4.637677 0.074089 1.136803 -v 4.637677 0.072665 1.151257 -v 4.637677 0.068449 1.165156 -v 4.637677 0.061603 1.177965 -v 4.637677 0.052389 1.189192 -v 4.637677 0.041162 1.198406 -v 4.637677 0.028353 1.205252 -v 4.637677 0.014454 1.209468 -v 5.273666 0.000001 1.136803 -v 3.179720 -0.053726 1.066410 -v 3.188101 -0.077998 1.059873 -v 3.199381 -0.099273 1.051075 -v 3.213126 -0.116733 1.040356 -v 3.228806 -0.129707 1.028126 -v 3.245822 -0.137696 1.014855 -v 3.263516 -0.140394 1.001054 -v 3.281211 -0.137696 0.987253 -v 3.298226 -0.129707 0.973983 -v 3.313907 -0.116733 0.961753 -v 3.327652 -0.099273 0.951033 -v 3.338932 -0.077998 0.942235 -v 3.347313 -0.053726 0.935698 -v 3.352474 -0.027389 0.931672 -v 3.354218 0.000000 0.930313 -v 3.352474 0.027389 0.931672 -v 3.347313 0.053726 0.935698 -v 3.338932 0.077999 0.942235 -v 3.327652 0.099273 0.951033 -v 3.313907 0.116733 0.961753 -v 3.298226 0.129707 0.973983 -v 3.281211 0.137696 0.987253 -v 3.263516 0.140394 1.001054 -v 3.245822 0.137696 1.014855 -v 3.228806 0.129707 1.028126 -v 3.213125 0.116733 1.040356 -v 3.199381 0.099273 1.051076 -v 3.188101 0.077998 1.059873 -v 3.179720 0.053726 1.066410 -v 3.174559 0.027389 1.070436 -v 3.172815 0.000000 1.071795 -v 3.587242 -0.000000 1.248980 -v 3.587242 -0.021885 1.246825 -v 3.587242 -0.042928 1.240441 -v 3.587242 -0.062322 1.230075 -v 3.587242 -0.079321 1.216125 -v 3.587242 -0.093272 1.199126 -v 3.587242 -0.103638 1.179732 -v 3.587242 -0.110022 1.158688 -v 3.587242 -0.112177 1.136803 -v 3.587242 -0.110022 1.114919 -v 3.587242 -0.103638 1.093875 -v 3.587242 -0.093272 1.074481 -v 3.587242 -0.079321 1.057482 -v 3.587242 -0.062322 1.043532 -v 3.587242 -0.042928 1.033165 -v 3.587242 -0.021885 1.026782 -v 3.587242 0.000000 1.024626 -v 3.587242 0.021885 1.026782 -v 3.587242 0.042928 1.033165 -v 3.587242 0.062322 1.043532 -v 3.587242 0.079321 1.057482 -v 3.587242 0.093272 1.074481 -v 3.587242 0.103638 1.093875 -v 3.587242 0.110022 1.114919 -v 3.587242 0.112177 1.136803 -v 3.587242 0.110022 1.158688 -v 3.587242 0.103638 1.179732 -v 3.587242 0.093272 1.199126 -v 3.587242 0.079321 1.216125 -v 3.587242 0.062322 1.230075 -v 3.587242 0.042928 1.240442 -v 3.587242 0.021884 1.246825 -v 2.943389 0.000000 0.623212 -v 2.946735 -0.033974 0.623212 -v 2.956646 -0.066642 0.623212 -v 2.972738 -0.096750 0.623212 -v 2.994395 -0.123139 0.623212 -v 3.020784 -0.144796 0.623212 -v 3.050892 -0.160889 0.623212 -v 3.083561 -0.170799 0.623212 -v 3.117535 -0.174145 0.623212 -v 3.151508 -0.170799 0.623212 -v 3.184176 -0.160889 0.623212 -v 3.214284 -0.144796 0.623212 -v 3.240674 -0.123139 0.623212 -v 3.262331 -0.096750 0.623212 -v 3.278424 -0.066642 0.623212 -v 3.288334 -0.033974 0.623212 -v 3.291679 0.000000 0.623212 -v 3.288334 0.033974 0.623212 -v 3.278424 0.066643 0.623212 -v 3.262331 0.096750 0.623212 -v 3.240674 0.123139 0.623212 -v 3.214284 0.144797 0.623212 -v 3.184176 0.160889 0.623212 -v 3.151508 0.170799 0.623212 -v 3.117535 0.174145 0.623212 -v 3.083561 0.170799 0.623212 -v 3.050892 0.160889 0.623212 -v 3.020784 0.144796 0.623212 -v 2.994395 0.123139 0.623212 -v 2.972738 0.096750 0.623212 -v 2.956645 0.066642 0.623212 -v 2.946735 0.033974 0.623212 -v 3.368539 -0.000000 1.205941 -v 3.048191 0.000000 0.918231 -v 3.050585 0.034861 0.917327 -v 3.369501 0.021297 1.204015 -v 3.057676 0.068383 0.914650 -v 3.372353 0.041775 1.198312 -v 3.069191 0.099276 0.910303 -v 3.376984 0.060648 1.189049 -v 3.084687 0.126355 0.904453 -v 3.383216 0.077190 1.176585 -v 3.103569 0.148578 0.897324 -v 3.390810 0.090766 1.161397 -v 3.125113 0.165091 0.889191 -v 3.399474 0.100854 1.144069 -v 3.148487 0.175260 0.880366 -v 3.408875 0.107066 1.125267 -v 3.172796 0.178693 0.871189 -v 3.418653 0.109163 1.105713 -v 3.197106 0.175260 0.862012 -v 3.428429 0.107066 1.086160 -v 3.220482 0.165091 0.853187 -v 3.437830 0.100854 1.067357 -v 3.242024 0.148578 0.845054 -v 3.446494 0.090766 1.050030 -v 3.260906 0.126355 0.837925 -v 3.454088 0.077190 1.034841 -v 3.276403 0.099277 0.832075 -v 3.460320 0.060648 1.022377 -v 3.287918 0.068383 0.827728 -v 3.464952 0.041775 1.013114 -v 3.295009 0.034861 0.825051 -v 3.467803 0.021297 1.007411 -v 3.297402 0.000000 0.824147 -v 3.468766 0.000000 1.005485 -v 3.295009 -0.034861 0.825051 -v 3.467803 -0.021297 1.007411 -v 3.287918 -0.068383 0.827728 -v 3.464952 -0.041775 1.013114 -v 3.276403 -0.099277 0.832075 -v 3.460320 -0.060648 1.022377 -v 3.260906 -0.126355 0.837925 -v 3.454088 -0.077190 1.034841 -v 3.242024 -0.148578 0.845054 -v 3.446494 -0.090766 1.050029 -v 3.220482 -0.165091 0.853187 -v 3.437830 -0.100854 1.067357 -v 3.197106 -0.175260 0.862012 -v 3.428429 -0.107066 1.086159 -v 3.172796 -0.178693 0.871189 -v 3.418652 -0.109163 1.105713 -v 3.148487 -0.175260 0.880366 -v 3.408875 -0.107066 1.125267 -v 3.125113 -0.165091 0.889191 -v 3.399475 -0.100854 1.144068 -v 3.103569 -0.148578 0.897324 -v 3.390810 -0.090766 1.161397 -v 3.084687 -0.126355 0.904453 -v 3.383216 -0.077190 1.176585 -v 3.069191 -0.099277 0.910303 -v 3.376984 -0.060648 1.189049 -v 3.057676 -0.068383 0.914650 -v 3.372353 -0.041775 1.198311 -v 3.050586 -0.034861 0.917327 -v 3.369501 -0.021297 1.204015 -v 3.174559 -0.027389 1.070436 -v 3.023735 0.000000 0.771381 -v 3.026553 0.034417 0.770809 -v 3.034897 0.067512 0.769114 -v 3.048448 0.098013 0.766362 -v 3.066685 0.124747 0.762658 -v 3.088904 0.146687 0.758145 -v 3.114257 0.162990 0.752996 -v 3.141765 0.173029 0.747409 -v 3.170372 0.176419 0.741599 -v 3.198979 0.173029 0.735789 -v 3.226487 0.162990 0.730202 -v 3.251839 0.146687 0.725053 -v 3.274060 0.124747 0.720540 -v 3.292296 0.098013 0.716836 -v 3.305847 0.067513 0.714084 -v 3.314192 0.034418 0.712389 -v 3.317009 0.000000 0.711817 -v 3.314192 -0.034418 0.712389 -v 3.305847 -0.067513 0.714084 -v 3.292296 -0.098013 0.716836 -v 3.274060 -0.124747 0.720540 -v 3.251839 -0.146687 0.725053 -v 3.226487 -0.162990 0.730202 -v 3.198979 -0.173029 0.735789 -v 3.170372 -0.176419 0.741599 -v 3.141765 -0.173029 0.747409 -v 3.114257 -0.162990 0.752996 -v 3.088905 -0.146687 0.758145 -v 3.066685 -0.124747 0.762658 -v 3.048448 -0.098013 0.766362 -v 3.034897 -0.067513 0.769114 -v 3.026553 -0.034418 0.770809 -v 3.194983 -0.000000 -0.630004 -v 3.596968 0.000000 -0.670318 -v 3.194983 -0.021885 -0.627848 -v 3.596968 -0.014454 -0.668894 -v 3.194983 -0.042928 -0.621465 -v 3.596968 -0.028353 -0.664678 -v 3.194983 -0.062322 -0.611099 -v 3.596968 -0.041162 -0.657831 -v 3.194983 -0.079321 -0.597148 -v 3.596968 -0.052389 -0.648617 -v 3.194983 -0.093272 -0.580149 -v 3.596968 -0.061603 -0.637390 -v 3.194983 -0.103638 -0.560755 -v 3.596968 -0.068449 -0.624581 -v 3.194983 -0.110022 -0.539711 -v 3.596968 -0.072665 -0.610682 -v 3.194983 -0.112177 -0.517827 -v 3.596968 -0.074089 -0.596228 -v 3.194983 -0.110022 -0.495942 -v 3.596968 -0.072665 -0.581774 -v 3.194983 -0.103638 -0.474898 -v 3.596968 -0.068449 -0.567876 -v 3.194983 -0.093272 -0.455504 -v 3.596968 -0.061603 -0.555067 -v 3.194983 -0.079321 -0.438506 -v 3.596968 -0.052389 -0.543840 -v 3.194983 -0.062322 -0.424555 -v 3.596968 -0.041162 -0.534626 -v 3.194983 -0.042928 -0.414189 -v 3.596968 -0.028353 -0.527779 -v 3.194983 -0.021885 -0.407805 -v 3.596968 -0.014454 -0.523563 -v 3.194983 0.000000 -0.405650 -v 3.596968 0.000000 -0.522139 -v 3.194983 0.021885 -0.407805 -v 3.596968 0.014454 -0.523563 -v 3.194983 0.042928 -0.414189 -v 3.596968 0.028353 -0.527779 -v 3.194983 0.062322 -0.424555 -v 3.596968 0.041162 -0.534626 -v 3.194983 0.079321 -0.438506 -v 3.596968 0.052389 -0.543840 -v 3.194983 0.093272 -0.455505 -v 3.596968 0.061603 -0.555067 -v 3.194983 0.103638 -0.474899 -v 3.596968 0.068449 -0.567876 -v 3.194983 0.110022 -0.495942 -v 3.596968 0.072665 -0.581774 -v 3.194983 0.112177 -0.517827 -v 3.596968 0.074089 -0.596228 -v 3.194983 0.110022 -0.539711 -v 3.596968 0.072665 -0.610683 -v 3.194983 0.103638 -0.560755 -v 3.596968 0.068449 -0.624581 -v 3.194983 0.093272 -0.580149 -v 3.596968 0.061603 -0.637390 -v 3.194983 0.079321 -0.597148 -v 3.596968 0.052389 -0.648617 -v 3.194983 0.062322 -0.611099 -v 3.596968 0.041162 -0.657831 -v 3.194983 0.042928 -0.621465 -v 3.596968 0.028353 -0.664678 -v 3.194983 0.021884 -0.627848 -v 3.596968 0.014454 -0.668894 -v 4.245420 -0.014454 -0.590492 -v 4.245420 0.000000 -0.591916 -v 4.245420 -0.028353 -0.586276 -v 4.245420 -0.041162 -0.579430 -v 4.245420 -0.052389 -0.570216 -v 4.245420 -0.061603 -0.558988 -v 4.245420 -0.068449 -0.546179 -v 4.245420 -0.072665 -0.532281 -v 4.245420 -0.074089 -0.517827 -v 4.245420 -0.072665 -0.503373 -v 4.245420 -0.068449 -0.489474 -v 4.245420 -0.061603 -0.476665 -v 4.245420 -0.052389 -0.465438 -v 4.245420 -0.041162 -0.456224 -v 4.245420 -0.028353 -0.449378 -v 4.245420 -0.014454 -0.445161 -v 4.245420 0.000000 -0.443738 -v 4.245420 0.014454 -0.445161 -v 4.245420 0.028353 -0.449378 -v 4.245420 0.041162 -0.456224 -v 4.245420 0.052389 -0.465438 -v 4.245420 0.061603 -0.476665 -v 4.245420 0.068449 -0.489474 -v 4.245420 0.072665 -0.503373 -v 4.245420 0.074089 -0.517827 -v 4.245420 0.072665 -0.532281 -v 4.245420 0.068449 -0.546180 -v 4.245420 0.061603 -0.558989 -v 4.245420 0.052389 -0.570216 -v 4.245420 0.041162 -0.579430 -v 4.245420 0.028353 -0.586276 -v 4.245420 0.014454 -0.590492 -v 4.881409 0.000001 -0.517827 -v 2.779208 -0.059018 -0.453871 -v 2.788416 -0.085681 -0.446689 -v 2.800806 -0.109051 -0.437025 -v 2.815905 -0.128230 -0.425250 -v 2.833130 -0.142482 -0.411815 -v 2.851821 -0.151258 -0.397238 -v 2.871259 -0.154221 -0.382077 -v 2.890697 -0.151258 -0.366917 -v 2.909387 -0.142482 -0.352340 -v 2.926613 -0.128230 -0.338905 -v 2.941710 -0.109051 -0.327129 -v 2.954102 -0.085681 -0.317465 -v 2.963308 -0.059018 -0.310284 -v 2.968979 -0.030087 -0.305862 -v 2.970894 0.000000 -0.304369 -v 2.968979 0.030087 -0.305862 -v 2.963308 0.059018 -0.310284 -v 2.954102 0.085681 -0.317465 -v 2.941710 0.109051 -0.327129 -v 2.926613 0.128230 -0.338905 -v 2.909387 0.142482 -0.352340 -v 2.890697 0.151258 -0.366917 -v 2.871259 0.154221 -0.382077 -v 2.851821 0.151258 -0.397238 -v 2.833130 0.142482 -0.411815 -v 2.815905 0.128230 -0.425250 -v 2.800806 0.109051 -0.437026 -v 2.788415 0.085681 -0.446690 -v 2.779208 0.059018 -0.453871 -v 2.773539 0.030087 -0.458293 -v 2.771625 0.000000 -0.459786 -v 3.194983 -0.000000 -0.630004 -v 3.194983 -0.021885 -0.627848 -v 3.194983 -0.042928 -0.621465 -v 3.194983 -0.062322 -0.611099 -v 3.194983 -0.079321 -0.597148 -v 3.194983 -0.093272 -0.580149 -v 3.194983 -0.103638 -0.560755 -v 3.194983 -0.110022 -0.539711 -v 3.194983 -0.112177 -0.517827 -v 3.194983 -0.110022 -0.495942 -v 3.194983 -0.103638 -0.474898 -v 3.194983 -0.093272 -0.455504 -v 3.194983 -0.079321 -0.438506 -v 3.194983 -0.062322 -0.424555 -v 3.194983 -0.042928 -0.414189 -v 3.194983 -0.021885 -0.407805 -v 3.194983 0.000000 -0.405650 -v 3.194983 0.021885 -0.407805 -v 3.194983 0.042928 -0.414189 -v 3.194983 0.062322 -0.424555 -v 3.194983 0.079321 -0.438506 -v 3.194983 0.093272 -0.455505 -v 3.194983 0.103638 -0.474899 -v 3.194983 0.110022 -0.495942 -v 3.194983 0.112177 -0.517827 -v 3.194983 0.110022 -0.539711 -v 3.194983 0.103638 -0.560755 -v 3.194983 0.093272 -0.580149 -v 3.194983 0.079321 -0.597148 -v 3.194983 0.062322 -0.611099 -v 3.194983 0.042928 -0.621465 -v 3.194983 0.021884 -0.627848 -v 2.551131 0.000000 -0.004236 -v 2.554478 -0.033974 -0.004236 -v 2.564387 -0.066643 -0.004236 -v 2.580481 -0.096750 -0.004236 -v 2.602138 -0.123139 -0.004236 -v 2.628527 -0.144796 -0.004236 -v 2.658634 -0.160889 -0.004236 -v 2.691302 -0.170799 -0.004236 -v 2.725277 -0.174145 -0.004236 -v 2.759251 -0.170799 -0.004236 -v 2.791919 -0.160889 -0.004236 -v 2.822027 -0.144796 -0.004235 -v 2.848416 -0.123139 -0.004235 -v 2.870073 -0.096750 -0.004235 -v 2.886166 -0.066642 -0.004235 -v 2.896076 -0.033974 -0.004235 -v 2.899422 0.000000 -0.004235 -v 2.896076 0.033974 -0.004235 -v 2.886166 0.066643 -0.004235 -v 2.870073 0.096750 -0.004235 -v 2.848415 0.123139 -0.004235 -v 2.822027 0.144797 -0.004235 -v 2.791919 0.160889 -0.004236 -v 2.759251 0.170799 -0.004236 -v 2.725277 0.174145 -0.004236 -v 2.691302 0.170799 -0.004236 -v 2.658634 0.160889 -0.004236 -v 2.628527 0.144796 -0.004236 -v 2.602138 0.123139 -0.004236 -v 2.580481 0.096750 -0.004236 -v 2.564387 0.066642 -0.004236 -v 2.554478 0.033974 -0.004236 -v 2.966830 0.000000 -0.605865 -v 2.655932 0.000000 -0.299254 -v 2.658328 0.034861 -0.298350 -v 2.967975 0.025313 -0.603576 -v 2.665419 0.068383 -0.295673 -v 2.971364 0.049653 -0.596797 -v 2.676933 0.099276 -0.291326 -v 2.976868 0.072085 -0.585788 -v 2.692430 0.126355 -0.285476 -v 2.984276 0.091746 -0.570973 -v 2.711311 0.148578 -0.278347 -v 2.993302 0.107882 -0.552921 -v 2.732855 0.165091 -0.270214 -v 3.003600 0.119873 -0.532325 -v 2.756229 0.175260 -0.261390 -v 3.014773 0.127256 -0.509977 -v 2.780539 0.178693 -0.252212 -v 3.026395 0.129749 -0.486736 -v 2.804849 0.175260 -0.243035 -v 3.038014 0.127256 -0.463495 -v 2.828223 0.165091 -0.234210 -v 3.049189 0.119873 -0.441148 -v 2.849766 0.148578 -0.226077 -v 3.059486 0.107883 -0.420552 -v 2.868649 0.126355 -0.218949 -v 3.068513 0.091747 -0.402500 -v 2.884145 0.099277 -0.213098 -v 3.075920 0.072085 -0.387684 -v 2.895660 0.068383 -0.208751 -v 3.081425 0.049653 -0.376676 -v 2.902751 0.034861 -0.206074 -v 3.084814 0.025313 -0.369897 -v 2.905145 0.000000 -0.205170 -v 3.085958 0.000000 -0.367608 -v 2.902751 -0.034861 -0.206074 -v 3.084814 -0.025313 -0.369897 -v 2.895660 -0.068383 -0.208751 -v 3.081425 -0.049653 -0.376676 -v 2.884145 -0.099277 -0.213098 -v 3.075920 -0.072085 -0.387684 -v 2.868649 -0.126355 -0.218949 -v 3.068513 -0.091747 -0.402500 -v 2.849766 -0.148578 -0.226077 -v 3.059486 -0.107883 -0.420552 -v 2.828223 -0.165091 -0.234210 -v 3.049189 -0.119873 -0.441148 -v 2.804849 -0.175260 -0.243035 -v 3.038014 -0.127256 -0.463495 -v 2.780539 -0.178693 -0.252212 -v 3.026395 -0.129749 -0.486736 -v 2.756229 -0.175260 -0.261390 -v 3.014773 -0.127256 -0.509977 -v 2.732855 -0.165091 -0.270214 -v 3.003600 -0.119873 -0.532325 -v 2.711311 -0.148578 -0.278347 -v 2.993302 -0.107883 -0.552921 -v 2.692430 -0.126355 -0.285476 -v 2.984276 -0.091747 -0.570973 -v 2.676933 -0.099277 -0.291326 -v 2.976868 -0.072085 -0.585788 -v 2.665419 -0.068383 -0.295673 -v 2.971364 -0.049653 -0.596797 -v 2.658328 -0.034861 -0.298350 -v 2.967975 -0.025313 -0.603576 -v 2.773539 -0.030087 -0.458293 -v 2.597857 0.000000 -0.152405 -v 2.600674 0.034417 -0.151832 -v 2.609018 0.067512 -0.150138 -v 2.622569 0.098013 -0.147386 -v 2.640805 0.124747 -0.143682 -v 2.663026 0.146687 -0.139169 -v 2.688377 0.162990 -0.134020 -v 2.715886 0.173029 -0.128433 -v 2.744493 0.176419 -0.122623 -v 2.773101 0.173029 -0.116812 -v 2.800609 0.162990 -0.111225 -v 2.825960 0.146687 -0.106076 -v 2.848182 0.124747 -0.101563 -v 2.866417 0.098013 -0.097859 -v 2.879968 0.067513 -0.095107 -v 2.888312 0.034418 -0.093412 -v 2.891130 0.000000 -0.092840 -v 2.888312 -0.034418 -0.093412 -v 2.879968 -0.067513 -0.095107 -v 2.866417 -0.098013 -0.097859 -v 2.848182 -0.124747 -0.101563 -v 2.825960 -0.146687 -0.106076 -v 2.800610 -0.162990 -0.111225 -v 2.773101 -0.173029 -0.116812 -v 2.744493 -0.176419 -0.122622 -v 2.715886 -0.173029 -0.128433 -v 2.688377 -0.162990 -0.134020 -v 2.663026 -0.146687 -0.139169 -v 2.640805 -0.124747 -0.143682 -v 2.622569 -0.098013 -0.147385 -v 2.609018 -0.067513 -0.150138 -v 2.600674 -0.034418 -0.151832 -v 2.267573 0.000000 0.523667 -v 2.274200 -0.030150 0.523667 -v 2.293830 -0.059141 0.523667 -v 2.325705 -0.085859 0.523667 -v 2.368602 -0.109278 0.523667 -v 2.420872 -0.128498 0.523667 -v 2.480506 -0.142779 0.523667 -v 2.545213 -0.151573 0.523667 -v 2.612506 -0.154543 0.523667 -v 2.679799 -0.151573 0.523667 -v 2.744506 -0.142779 0.523667 -v 2.804141 -0.128498 0.523667 -v 2.856410 -0.109278 0.523667 -v 2.899308 -0.085859 0.523667 -v 2.931183 -0.059141 0.523667 -v 2.950811 -0.030150 0.523667 -v 2.957439 0.000000 0.523667 -v 2.950811 0.030150 0.523667 -v 2.931183 0.059141 0.523667 -v 2.899307 0.085859 0.523667 -v 2.856410 0.109278 0.523667 -v 2.804141 0.128498 0.523667 -v 2.744506 0.142779 0.523667 -v 2.679799 0.151573 0.523667 -v 2.612506 0.154543 0.523667 -v 2.545213 0.151573 0.523667 -v 2.480506 0.142779 0.523667 -v 2.420871 0.128497 0.523667 -v 2.368602 0.109278 0.523667 -v 2.325705 0.085859 0.523667 -v 2.293830 0.059141 0.523667 -v 2.274200 0.030150 0.523667 -v 3.194983 -0.000000 1.733089 -v 3.596968 0.000000 1.773403 -v 3.194983 -0.021885 1.730934 -v 3.596968 -0.014454 1.771979 -v 3.194983 -0.042928 1.724550 -v 3.596968 -0.028353 1.767763 -v 3.194983 -0.062322 1.714184 -v 3.596968 -0.041162 1.760917 -v 3.194983 -0.079321 1.700234 -v 3.596968 -0.052389 1.751703 -v 3.194983 -0.093272 1.683235 -v 3.596968 -0.061603 1.740475 -v 3.194983 -0.103638 1.663841 -v 3.596968 -0.068449 1.727666 -v 3.194983 -0.110022 1.642797 -v 3.596968 -0.072665 1.713768 -v 3.194983 -0.112177 1.620912 -v 3.596968 -0.074089 1.699314 -v 3.194983 -0.110022 1.599028 -v 3.596968 -0.072665 1.684860 -v 3.194983 -0.103638 1.577984 -v 3.596968 -0.068449 1.670961 -v 3.194983 -0.093272 1.558590 -v 3.596968 -0.061603 1.658152 -v 3.194983 -0.079321 1.541591 -v 3.596968 -0.052389 1.646925 -v 3.194983 -0.062322 1.527641 -v 3.596968 -0.041162 1.637711 -v 3.194983 -0.042928 1.517274 -v 3.596968 -0.028353 1.630865 -v 3.194983 -0.021885 1.510891 -v 3.596968 -0.014454 1.626648 -v 3.194983 0.000000 1.508735 -v 3.596968 0.000000 1.625225 -v 3.194983 0.021885 1.510891 -v 3.596968 0.014454 1.626648 -v 3.194983 0.042928 1.517274 -v 3.596968 0.028353 1.630865 -v 3.194983 0.062322 1.527641 -v 3.596968 0.041162 1.637711 -v 3.194983 0.079321 1.541591 -v 3.596968 0.052389 1.646925 -v 3.194983 0.093272 1.558590 -v 3.596968 0.061603 1.658152 -v 3.194983 0.103638 1.577984 -v 3.596968 0.068449 1.670961 -v 3.194983 0.110022 1.599028 -v 3.596968 0.072665 1.684860 -v 3.194983 0.112177 1.620913 -v 3.596968 0.074089 1.699314 -v 3.194983 0.110022 1.642797 -v 3.596968 0.072665 1.713768 -v 3.194983 0.103638 1.663841 -v 3.596968 0.068449 1.727666 -v 3.194983 0.093272 1.683235 -v 3.596968 0.061603 1.740476 -v 3.194983 0.079321 1.700234 -v 3.596968 0.052389 1.751703 -v 3.194983 0.062322 1.714184 -v 3.596968 0.041162 1.760917 -v 3.194983 0.042928 1.724550 -v 3.596968 0.028353 1.767763 -v 3.194983 0.021884 1.730934 -v 3.596968 0.014454 1.771979 -v 4.245420 -0.014454 1.693577 -v 4.245420 0.000000 1.695001 -v 4.245420 -0.028353 1.689361 -v 4.245420 -0.041162 1.682515 -v 4.245420 -0.052389 1.673301 -v 4.245420 -0.061603 1.662074 -v 4.245420 -0.068449 1.649265 -v 4.245420 -0.072665 1.635366 -v 4.245420 -0.074089 1.620912 -v 4.245420 -0.072665 1.606458 -v 4.245420 -0.068449 1.592560 -v 4.245420 -0.061603 1.579751 -v 4.245420 -0.052389 1.568523 -v 4.245420 -0.041162 1.559309 -v 4.245420 -0.028353 1.552463 -v 4.245420 -0.014454 1.548247 -v 4.245420 0.000000 1.546823 -v 4.245420 0.014454 1.548247 -v 4.245420 0.028353 1.552463 -v 4.245420 0.041162 1.559309 -v 4.245420 0.052389 1.568523 -v 4.245420 0.061603 1.579751 -v 4.245420 0.068449 1.592560 -v 4.245420 0.072665 1.606458 -v 4.245420 0.074089 1.620912 -v 4.245420 0.072665 1.635366 -v 4.245420 0.068449 1.649265 -v 4.245420 0.061603 1.662074 -v 4.245420 0.052389 1.673301 -v 4.245420 0.041162 1.682515 -v 4.245420 0.028353 1.689361 -v 4.245420 0.014454 1.693577 -v 4.881409 0.000001 1.620912 -v 2.779208 -0.059018 1.556956 -v 2.788415 -0.085681 1.549775 -v 2.800806 -0.109051 1.540111 -v 2.815905 -0.128230 1.528336 -v 2.833130 -0.142482 1.514901 -v 2.851821 -0.151258 1.500323 -v 2.871259 -0.154221 1.485163 -v 2.890697 -0.151258 1.470003 -v 2.909387 -0.142482 1.455426 -v 2.926612 -0.128230 1.441991 -v 2.941710 -0.109051 1.430215 -v 2.954102 -0.085681 1.420551 -v 2.963308 -0.059018 1.413370 -v 2.968979 -0.030087 1.408948 -v 2.970893 0.000000 1.407455 -v 2.968979 0.030087 1.408948 -v 2.963308 0.059018 1.413370 -v 2.954102 0.085681 1.420551 -v 2.941710 0.109051 1.430215 -v 2.926612 0.128230 1.441991 -v 2.909387 0.142482 1.455426 -v 2.890697 0.151258 1.470003 -v 2.871259 0.154221 1.485163 -v 2.851821 0.151258 1.500324 -v 2.833130 0.142482 1.514901 -v 2.815905 0.128230 1.528336 -v 2.800806 0.109051 1.540111 -v 2.788415 0.085681 1.549775 -v 2.779208 0.059018 1.556956 -v 2.773539 0.030087 1.561378 -v 2.771625 0.000000 1.562871 -v 3.194983 -0.000000 1.733089 -v 3.194983 -0.021885 1.730934 -v 3.194983 -0.042928 1.724550 -v 3.194983 -0.062322 1.714184 -v 3.194983 -0.079321 1.700234 -v 3.194983 -0.093272 1.683235 -v 3.194983 -0.103638 1.663841 -v 3.194983 -0.110022 1.642797 -v 3.194983 -0.112177 1.620912 -v 3.194983 -0.110022 1.599028 -v 3.194983 -0.103638 1.577984 -v 3.194983 -0.093272 1.558590 -v 3.194983 -0.079321 1.541591 -v 3.194983 -0.062322 1.527641 -v 3.194983 -0.042928 1.517274 -v 3.194983 -0.021885 1.510891 -v 3.194983 0.000000 1.508735 -v 3.194983 0.021885 1.510891 -v 3.194983 0.042928 1.517274 -v 3.194983 0.062322 1.527641 -v 3.194983 0.079321 1.541591 -v 3.194983 0.093272 1.558590 -v 3.194983 0.103638 1.577984 -v 3.194983 0.110022 1.599028 -v 3.194983 0.112177 1.620913 -v 3.194983 0.110022 1.642797 -v 3.194983 0.103638 1.663841 -v 3.194983 0.093272 1.683235 -v 3.194983 0.079321 1.700234 -v 3.194983 0.062322 1.714184 -v 3.194983 0.042928 1.724550 -v 3.194983 0.021884 1.730934 -v 2.551131 0.000000 1.107321 -v 2.554478 -0.033974 1.107321 -v 2.564387 -0.066642 1.107321 -v 2.580481 -0.096750 1.107321 -v 2.602138 -0.123139 1.107321 -v 2.628527 -0.144796 1.107321 -v 2.658634 -0.160889 1.107321 -v 2.691302 -0.170799 1.107321 -v 2.725277 -0.174145 1.107321 -v 2.759251 -0.170799 1.107321 -v 2.791919 -0.160889 1.107321 -v 2.822026 -0.144796 1.107321 -v 2.848415 -0.123139 1.107321 -v 2.870073 -0.096750 1.107321 -v 2.886166 -0.066642 1.107321 -v 2.896075 -0.033974 1.107321 -v 2.899422 0.000000 1.107321 -v 2.896075 0.033974 1.107321 -v 2.886166 0.066643 1.107321 -v 2.870073 0.096750 1.107321 -v 2.848415 0.123139 1.107321 -v 2.822026 0.144797 1.107321 -v 2.791919 0.160889 1.107321 -v 2.759251 0.170799 1.107321 -v 2.725277 0.174145 1.107321 -v 2.691302 0.170799 1.107321 -v 2.658634 0.160889 1.107321 -v 2.628527 0.144796 1.107321 -v 2.602138 0.123139 1.107321 -v 2.580481 0.096750 1.107321 -v 2.564387 0.066642 1.107321 -v 2.554478 0.033974 1.107321 -v 2.966829 0.000000 1.708951 -v 2.655932 0.000000 1.402340 -v 2.658327 0.034861 1.401436 -v 2.967975 0.025313 1.706662 -v 2.665419 0.068383 1.398759 -v 2.971364 0.049653 1.699883 -v 2.676933 0.099276 1.394412 -v 2.976868 0.072085 1.688874 -v 2.692430 0.126355 1.388562 -v 2.984276 0.091746 1.674059 -v 2.711311 0.148578 1.381433 -v 2.993302 0.107882 1.656006 -v 2.732854 0.165091 1.373300 -v 3.003600 0.119873 1.635411 -v 2.756229 0.175260 1.364475 -v 3.014773 0.127256 1.613063 -v 2.780539 0.178693 1.355298 -v 3.026394 0.129749 1.589822 -v 2.804849 0.175260 1.346121 -v 3.038014 0.127256 1.566581 -v 2.828223 0.165091 1.337296 -v 3.049189 0.119873 1.544233 -v 2.849766 0.148578 1.329163 -v 3.059486 0.107883 1.523638 -v 2.868649 0.126355 1.322034 -v 3.068513 0.091747 1.505585 -v 2.884145 0.099277 1.316184 -v 3.075920 0.072085 1.490770 -v 2.895660 0.068383 1.311837 -v 3.081425 0.049653 1.479761 -v 2.902751 0.034861 1.309160 -v 3.084814 0.025313 1.472982 -v 2.905145 0.000000 1.308256 -v 3.085958 0.000000 1.470693 -v 2.902751 -0.034861 1.309160 -v 3.084814 -0.025313 1.472982 -v 2.895660 -0.068383 1.311837 -v 3.081425 -0.049653 1.479761 -v 2.884145 -0.099277 1.316184 -v 3.075920 -0.072085 1.490770 -v 2.868649 -0.126355 1.322034 -v 3.068513 -0.091747 1.505585 -v 2.849766 -0.148578 1.329163 -v 3.059486 -0.107883 1.523638 -v 2.828223 -0.165091 1.337296 -v 3.049189 -0.119873 1.544233 -v 2.804849 -0.175260 1.346121 -v 3.038014 -0.127256 1.566581 -v 2.780539 -0.178693 1.355298 -v 3.026394 -0.129749 1.589822 -v 2.756229 -0.175260 1.364475 -v 3.014773 -0.127256 1.613063 -v 2.732855 -0.165091 1.373300 -v 3.003600 -0.119873 1.635411 -v 2.711311 -0.148578 1.381433 -v 2.993302 -0.107883 1.656006 -v 2.692430 -0.126355 1.388562 -v 2.984276 -0.091747 1.674059 -v 2.676933 -0.099277 1.394412 -v 2.976868 -0.072085 1.688874 -v 2.665419 -0.068383 1.398759 -v 2.971364 -0.049653 1.699882 -v 2.658328 -0.034861 1.401436 -v 2.967975 -0.025313 1.706662 -v 2.773539 -0.030087 1.561378 -v 2.597857 0.000000 1.255490 -v 2.600674 0.034417 1.254918 -v 2.609018 0.067512 1.253223 -v 2.622569 0.098013 1.250471 -v 2.640805 0.124747 1.246768 -v 2.663026 0.146687 1.242254 -v 2.688377 0.162990 1.237106 -v 2.715885 0.173029 1.231518 -v 2.744493 0.176419 1.225708 -v 2.773101 0.173029 1.219898 -v 2.800609 0.162990 1.214311 -v 2.825960 0.146687 1.209162 -v 2.848182 0.124747 1.204649 -v 2.866417 0.098013 1.200945 -v 2.879968 0.067513 1.198193 -v 2.888312 0.034418 1.196498 -v 2.891130 0.000000 1.195926 -v 2.888312 -0.034418 1.196498 -v 2.879968 -0.067513 1.198193 -v 2.866417 -0.098013 1.200945 -v 2.848182 -0.124747 1.204649 -v 2.825960 -0.146687 1.209162 -v 2.800609 -0.162990 1.214311 -v 2.773101 -0.173029 1.219898 -v 2.744493 -0.176419 1.225708 -v 2.715886 -0.173029 1.231518 -v 2.688377 -0.162990 1.237106 -v 2.663026 -0.146687 1.242254 -v 2.640805 -0.124747 1.246768 -v 2.622569 -0.098013 1.250471 -v 2.609018 -0.067513 1.253223 -v 2.600674 -0.034418 1.254918 -v 2.267572 0.000000 0.579419 -v 2.274200 -0.030150 0.579419 -v 2.293830 -0.059141 0.579419 -v 2.325705 -0.085859 0.579419 -v 2.368602 -0.109278 0.579419 -v 2.420872 -0.128498 0.579419 -v 2.480506 -0.142779 0.579419 -v 2.545213 -0.151573 0.579419 -v 2.612506 -0.154543 0.579419 -v 2.679799 -0.151573 0.579419 -v 2.744506 -0.142779 0.579419 -v 2.804141 -0.128498 0.579419 -v 2.856410 -0.109278 0.579419 -v 2.899307 -0.085859 0.579419 -v 2.931183 -0.059141 0.579419 -v 2.950811 -0.030150 0.579419 -v 2.957439 0.000000 0.579419 -v 2.950811 0.030150 0.579419 -v 2.931183 0.059141 0.579419 -v 2.899307 0.085859 0.579419 -v 2.856410 0.109278 0.579419 -v 2.804140 0.128498 0.579419 -v 2.744506 0.142779 0.579419 -v 2.679799 0.151573 0.579419 -v 2.612506 0.154543 0.579419 -v 2.545213 0.151573 0.579419 -v 2.480506 0.142779 0.579419 -v 2.420871 0.128497 0.579419 -v 2.368602 0.109278 0.579419 -v 2.325705 0.085859 0.579419 -v 2.293830 0.059141 0.579419 -v 2.274200 0.030150 0.579419 -vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.406250 1.000000 -vt 0.437500 1.000000 -vt 0.437500 1.000000 -vt 0.406250 1.000000 -vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.375000 1.000000 -vt 0.406250 1.000000 -vt 0.375000 1.000000 -vt 0.375000 1.000000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.343750 1.000000 -vt 0.343750 1.000000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 1.000000 0.500000 -vt 0.968750 0.500000 -vt 0.968750 0.500000 -vt 1.000000 0.500000 -vt 0.312500 1.000000 -vt 0.312500 1.000000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.281250 1.000000 -vt 0.281250 1.000000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.250000 1.000000 -vt 0.250000 1.000000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.218750 1.000000 -vt 0.218750 1.000000 -vt 0.031250 0.500000 -vt 0.031250 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.187500 1.000000 -vt 0.187500 1.000000 -vt 0.000000 0.500000 -vt 0.000000 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.156250 1.000000 -vt 0.156250 1.000000 -vt 0.968750 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.968750 1.000000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.125000 1.000000 -vt 0.125000 1.000000 -vt 0.937500 1.000000 -vt 0.937500 1.000000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 +mtllib mcl_trident.mtl +o Cube_Cube.001 +v 8.000000 -0.400000 -0.400001 +v 8.000000 0.400000 -0.400001 +v 8.000000 -0.400000 0.400000 +v 8.000000 0.400000 0.400000 +v 8.799999 0.400000 0.400000 +v 8.799999 -0.400000 0.400000 +v 8.799999 -0.400000 -0.400001 +v 8.799999 0.400000 -0.400001 +v 9.599998 0.400000 0.400000 +v 9.599998 -0.400000 0.400000 +v 9.599998 0.400000 -0.400001 +v 9.599998 -0.400000 -0.400001 +v 8.000000 0.400000 -1.200001 +v 8.000000 -0.400000 -1.200001 +v 8.000000 0.400000 1.199999 +v 8.000000 -0.400000 1.199999 +v 8.799999 0.400000 -1.200001 +v 8.799999 0.400000 1.199999 +v 8.799999 -0.400000 1.199999 +v 8.799999 -0.400000 -1.200001 +v 9.599998 0.400000 1.199999 +v 9.599998 -0.400000 1.199999 +v 9.599998 0.400000 -1.200001 +v 9.599998 -0.400000 -1.200001 +v 8.799999 0.400000 1.999999 +v 8.799999 -0.400000 1.999999 +v 8.799999 0.400000 -2.000001 +v 8.799999 -0.400000 -2.000001 +v 9.599998 0.400000 1.999999 +v 9.599998 -0.400000 1.999999 +v 9.599998 0.400000 -2.000001 +v 9.599998 -0.400000 -2.000001 +v 13.599998 0.400000 0.399999 +v 13.599998 -0.400000 0.399999 +v 13.599998 0.400000 -0.400001 +v 13.599998 -0.400000 -0.400001 +v 12.799997 0.400000 1.199999 +v 12.799997 -0.400000 1.199999 +v 12.799997 0.400000 1.999999 +v 12.799997 -0.400000 1.999999 +v 12.799999 0.400000 -1.200001 +v 12.799999 -0.400000 -1.200001 +v 12.799999 0.400000 -2.000001 +v 12.799999 -0.400000 -2.000001 +v 7.200000 -0.400000 -0.400001 +v 6.400000 -0.400000 -0.400001 +v 5.599999 -0.400000 -0.400001 +v 4.799999 -0.400000 -0.400001 +v 3.999999 -0.400000 -0.400000 +v 3.199999 -0.400000 -0.400000 +v 2.399999 -0.400000 -0.400000 +v 1.599998 -0.400000 -0.400000 +v 0.799998 -0.400000 -0.400000 +v -0.000001 -0.400000 -0.400000 +v -0.800001 -0.400000 -0.400000 +v -1.600001 -0.400000 -0.400000 +v -2.400001 -0.400000 -0.400000 +v -3.200001 -0.400000 -0.400000 +v -4.000001 -0.400000 -0.400000 +v -4.800001 -0.400000 -0.400000 +v -5.600000 -0.400000 -0.400000 +v -6.400001 -0.400000 -0.400000 +v -7.200000 -0.400000 -0.400000 +v -8.000000 -0.400000 -0.400000 +v -8.800000 -0.400000 -0.400000 +v -9.600000 -0.400000 -0.400000 +v -10.400000 -0.400000 -0.400000 +v -11.200000 -0.400000 -0.399999 +v -12.000000 -0.400000 -0.399999 +v -11.999999 0.400000 -0.399999 +v -11.199999 0.400000 -0.400000 +v -10.400000 0.400000 -0.400000 +v -9.599999 0.400000 -0.400000 +v -8.799999 0.400000 -0.400000 +v -8.000000 0.400000 -0.399999 +v -7.199999 0.400000 -0.400000 +v -6.400000 0.400000 -0.400000 +v -5.599999 0.400000 -0.400000 +v -4.799999 0.400000 -0.400000 +v -4.000000 0.400000 -0.400000 +v -3.199999 0.400000 -0.400000 +v -2.400000 0.400000 -0.400000 +v -1.599999 0.400000 -0.400000 +v -0.799999 0.400000 -0.400000 +v 0.000001 0.400000 -0.400000 +v 0.800001 0.400000 -0.400000 +v 1.600001 0.400000 -0.400000 +v 2.400002 0.400000 -0.400000 +v 3.200002 0.400000 -0.400000 +v 4.000002 0.400000 -0.400000 +v 4.800001 0.400000 -0.400001 +v 5.600000 0.400000 -0.400001 +v 6.400001 0.400000 -0.400001 +v 7.200001 0.400000 -0.400001 +v -11.999999 -0.400000 0.400001 +v -11.199999 -0.400000 0.400001 +v -10.400000 -0.400000 0.400001 +v -9.599999 -0.400000 0.400001 +v -8.799999 -0.400000 0.400001 +v -8.000000 -0.400000 0.400001 +v -7.199999 -0.400000 0.400001 +v -6.400000 -0.400000 0.400001 +v -5.599999 -0.400000 0.400001 +v -4.799999 -0.400000 0.400001 +v -4.000000 -0.400000 0.400000 +v -3.199999 -0.400000 0.400000 +v -2.400000 -0.400000 0.400000 +v -1.599999 -0.400000 0.400000 +v -0.799999 -0.400000 0.400000 +v 0.000001 -0.400000 0.400000 +v 0.800001 -0.400000 0.400000 +v 1.600001 -0.400000 0.400000 +v 2.400002 -0.400000 0.400000 +v 3.200002 -0.400000 0.400000 +v 4.000002 -0.400000 0.400000 +v 4.800001 -0.400000 0.400000 +v 5.600000 -0.400000 0.400000 +v 6.400001 -0.400000 0.400000 +v 7.200001 -0.400000 0.400000 +v 7.200000 0.400000 0.400000 +v 6.400000 0.400000 0.400000 +v 5.599999 0.400000 0.400000 +v 4.799999 0.400000 0.400000 +v 3.999999 0.400000 0.400000 +v 3.199999 0.400000 0.400000 +v 2.399999 0.400000 0.400000 +v 1.599998 0.400000 0.400000 +v 0.799998 0.400000 0.400000 +v -0.000001 0.400000 0.400000 +v -0.800001 0.400000 0.400000 +v -1.600001 0.400000 0.400000 +v -2.400001 0.400000 0.400000 +v -3.200001 0.400000 0.400000 +v -4.000001 0.400000 0.400000 +v -4.800001 0.400000 0.400000 +v -5.600000 0.400000 0.400001 +v -6.400001 0.400000 0.400001 +v -7.200000 0.400000 0.400001 +v -8.000000 0.400000 0.400001 +v -8.800000 0.400000 0.400001 +v -9.600000 0.400000 0.400001 +v -10.400000 0.400000 0.400001 +v -11.200000 0.400000 0.400001 +v -12.000000 0.400000 0.400001 +v 10.399998 -0.400000 1.199999 +v 11.199997 -0.400000 1.199999 +v 11.999996 -0.400000 1.199999 +v 11.999998 -0.400000 1.999999 +v 11.199999 -0.400000 1.999999 +v 10.399998 -0.400000 1.999999 +v 10.399998 0.400000 1.199999 +v 11.199997 0.400000 1.199999 +v 11.999996 0.400000 1.199999 +v 11.999998 0.400000 1.999999 +v 11.199999 0.400000 1.999999 +v 10.399998 0.400000 1.999999 +v 10.399998 -0.400000 -2.000001 +v 11.199999 -0.400000 -2.000001 +v 12.000000 -0.400000 -2.000001 +v 12.000000 -0.400000 -1.200001 +v 11.199999 -0.400000 -1.200001 +v 10.399998 -0.400000 -1.200001 +v 12.000000 0.400000 -1.200001 +v 11.199999 0.400000 -1.200001 +v 10.399998 0.400000 -1.200001 +v 10.399998 0.400000 -2.000001 +v 11.199999 0.400000 -2.000001 +v 12.000000 0.400000 -2.000001 +v 10.399998 -0.400000 0.400000 +v 11.199997 -0.400000 0.400000 +v 11.999998 -0.400000 0.399999 +v 12.799999 -0.400000 0.399999 +v 12.799999 0.400000 0.399999 +v 12.000000 0.400000 0.399999 +v 11.199999 0.400000 0.400000 +v 10.399998 0.400000 0.400000 +v 10.399998 0.400000 -0.400001 +v 11.199997 0.400000 -0.400001 +v 11.999998 0.400000 -0.400001 +v 12.799999 0.400000 -0.400001 +v 12.799999 -0.400000 -0.400001 +v 12.000000 -0.400000 -0.400001 +v 11.199999 -0.400000 -0.400001 +v 10.399998 -0.400000 -0.400001 +vt 0.312500 0.750000 +vt 0.343750 0.750000 +vt 0.343750 0.781250 +vt 0.312500 0.781250 +vt 0.062500 0.781250 +vt 0.093750 0.781250 +vt 0.093750 0.812500 +vt 0.062500 0.812500 +vt 0.437500 0.031250 +vt 0.437500 0.000000 +vt 0.468750 0.000000 +vt 0.468750 0.031250 +vt 0.218750 0.812500 +vt 0.250000 0.812500 +vt 0.250000 0.843750 +vt 0.218750 0.843750 +vt 0.093750 0.843750 +vt 0.125000 0.812500 +vt 0.125000 0.843750 +vt 0.218750 0.781250 +vt 0.250000 0.781250 +vt 0.375000 0.125000 +vt 0.406250 0.125000 +vt 0.406250 0.156250 +vt 0.375000 0.156250 +vt 0.187500 0.812500 +vt 0.187500 0.781250 +vt 0.031250 0.812500 +vt 0.031250 0.781250 +vt 0.062500 0.843750 +vt 0.468750 0.312500 +vt 0.468750 0.343750 +vt 0.437500 0.343750 +vt 0.437500 0.312500 +vt 0.437500 0.375000 +vt 0.437500 0.343750 +vt 0.468750 0.343750 +vt 0.468750 0.375000 +vt 0.281250 0.843750 +vt 0.281250 0.812500 +vt 0.312500 0.812500 +vt 0.312500 0.843750 +vt 0.156250 0.812500 +vt 0.156250 0.843750 +vt 0.437500 0.062500 +vt 0.437500 0.031250 +vt 0.468750 0.031250 +vt 0.468750 0.062500 +vt 0.125000 0.781250 +vt 0.468750 0.062500 +vt 0.468750 0.093750 +vt 0.437500 0.093750 +vt 0.437500 0.062500 +vt 0.468750 0.093750 +vt 0.468750 0.125000 +vt 0.437500 0.125000 +vt 0.437500 0.093750 +vt 0.031250 0.843750 +vt 0.281250 0.781250 +vt 0.187500 0.843750 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.187500 +vt 0.406250 0.187500 +vt 0.406250 0.312500 +vt 0.375000 0.312500 +vt 0.375000 0.281250 +vt 0.406250 0.281250 +vt 0.156250 0.937500 +vt 0.187500 0.937500 +vt 0.187500 0.968750 +vt 0.156250 0.968750 +vt 0.437500 0.125000 +vt 0.468750 0.125000 +vt 0.468750 0.156250 +vt 0.437500 0.156250 +vt 0.000000 0.843750 +vt 0.000000 0.812500 +vt 0.156250 0.843750 +vt 0.156250 0.812500 +vt 0.281250 0.937500 +vt 0.312500 0.937500 +vt 0.312500 0.968750 +vt 0.281250 0.968750 +vt 0.468750 0.187500 +vt 0.437500 0.187500 +vt 0.437500 0.156250 +vt 0.468750 0.156250 +vt 0.468750 0.187500 +vt 0.468750 0.218750 +vt 0.437500 0.218750 +vt 0.437500 0.187500 +vt 0.437500 0.031250 +vt 0.406250 0.031250 +vt 0.406250 0.000000 +vt 0.437500 0.000000 +vt 0.062500 0.968750 +vt 0.093750 0.968750 vt 0.093750 1.000000 -vt 0.093750 1.000000 -vt 0.906250 1.000000 -vt 0.906250 1.000000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 vt 0.062500 1.000000 -vt 0.062500 1.000000 -vt 0.875000 1.000000 -vt 0.875000 1.000000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.031250 1.000000 -vt 0.031250 1.000000 -vt 0.843750 1.000000 -vt 0.843750 1.000000 -vt 0.656250 0.500000 -vt 0.656250 0.500000 -vt 0.000000 1.000000 -vt 0.000000 1.000000 -vt 0.812500 1.000000 -vt 0.812500 1.000000 -vt 0.625000 0.500000 -vt 0.625000 0.500000 -vt 0.781250 1.000000 -vt 0.781250 1.000000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.750000 1.000000 -vt 0.750000 1.000000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.718750 1.000000 -vt 0.718750 1.000000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.687500 1.000000 -vt 0.687500 1.000000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.656250 1.000000 -vt 0.656250 1.000000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.625000 1.000000 -vt 0.625000 1.000000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.593750 1.000000 -vt 0.593750 1.000000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.562500 1.000000 -vt 0.562500 1.000000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.531250 1.000000 -vt 0.531250 1.000000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.500000 1.000000 -vt 0.500000 1.000000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.468750 1.000000 -vt 0.468750 1.000000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.031250 1.000000 -vt 0.062500 1.000000 -vt 0.062500 1.000000 -vt 0.031250 1.000000 -vt 0.812500 1.000000 -vt 0.781250 1.000000 -vt 0.343750 1.000000 -vt 0.750000 1.000000 -vt 0.312500 1.000000 -vt 0.718750 1.000000 -vt 0.281250 1.000000 -vt 0.687500 1.000000 -vt 0.250000 1.000000 -vt 0.656250 1.000000 -vt 0.218750 1.000000 -vt 0.625000 1.000000 -vt 0.187500 1.000000 -vt 0.593750 1.000000 -vt 0.156250 1.000000 -vt 0.562500 1.000000 -vt 1.000000 1.000000 -vt 0.968750 1.000000 -vt 0.125000 1.000000 -vt 0.531250 1.000000 -vt 0.937500 1.000000 -vt 0.093750 1.000000 -vt 0.500000 1.000000 -vt 0.906250 1.000000 -vt 0.468750 1.000000 -vt 0.875000 1.000000 -vt 0.437500 1.000000 -vt 0.843750 1.000000 -vt 0.000000 1.000000 -vt 0.343750 1.000000 -vt 0.375000 1.000000 -vt 0.343750 1.000000 -vt 0.468750 1.000000 -vt 0.437500 1.000000 -vt 0.875000 1.000000 -vt 0.843750 1.000000 -vt 0.000000 1.000000 -vt 0.406250 1.000000 -vt 0.812500 1.000000 -vt 0.781250 1.000000 -vt 0.750000 1.000000 -vt 0.312500 1.000000 -vt 0.718750 1.000000 -vt 0.281250 1.000000 -vt 0.687500 1.000000 -vt 0.250000 1.000000 -vt 0.656250 1.000000 -vt 0.218750 1.000000 -vt 0.625000 1.000000 -vt 0.187500 1.000000 -vt 0.593750 1.000000 -vt 0.156250 1.000000 -vt 0.562500 1.000000 -vt 1.000000 1.000000 -vt 0.968750 1.000000 -vt 0.125000 1.000000 -vt 0.531250 1.000000 -vt 0.937500 1.000000 -vt 0.093750 1.000000 -vt 0.500000 1.000000 -vt 0.906250 1.000000 -vt 0.750000 1.000000 -vt 0.312500 1.000000 -vt 0.718750 1.000000 -vt 0.281250 1.000000 -vt 0.687500 1.000000 -vt 0.250000 1.000000 -vt 0.656250 1.000000 -vt 0.218750 1.000000 -vt 0.625000 1.000000 -vt 0.187500 1.000000 -vt 0.593750 1.000000 -vt 0.156250 1.000000 -vt 0.562500 1.000000 -vt 0.968750 1.000000 -vt 0.125000 1.000000 -vt 0.531250 1.000000 -vt 0.937500 1.000000 -vt 0.093750 1.000000 -vt 0.500000 1.000000 -vt 0.906250 1.000000 -vt 0.062500 1.000000 -vt 0.468750 1.000000 -vt 0.875000 1.000000 -vt 0.031250 1.000000 -vt 0.437500 1.000000 -vt 0.843750 1.000000 -vt 0.000000 1.000000 -vt 0.406250 1.000000 -vt 0.812500 1.000000 -vt 0.375000 1.000000 -vt 0.781250 1.000000 -vt 0.437500 1.000000 -vt 0.468750 1.000000 -vt 0.500000 1.000000 -vt 0.531250 1.000000 -vt 0.562500 1.000000 -vt 0.593750 1.000000 -vt 0.625000 1.000000 -vt 0.656250 1.000000 -vt 0.687500 1.000000 -vt 0.718750 1.000000 -vt 0.750000 1.000000 -vt 0.781250 1.000000 -vt 0.812500 1.000000 -vt 0.843750 1.000000 -vt 0.000000 1.000000 -vt 0.031250 1.000000 -vt 0.875000 1.000000 -vt 0.062500 1.000000 -vt 0.906250 1.000000 -vt 0.093750 1.000000 -vt 0.937500 1.000000 -vt 0.125000 1.000000 -vt 0.968750 1.000000 -vt 0.156250 1.000000 -vt 1.000000 1.000000 -vt 0.187500 1.000000 -vt 0.218750 1.000000 -vt 0.250000 1.000000 -vt 0.281250 1.000000 -vt 0.312500 1.000000 -vt 0.343750 1.000000 -vt 0.375000 1.000000 -vt 0.406250 1.000000 -vt 0.406250 1.000000 -vt 0.437500 1.000000 -vt 0.437500 1.000000 -vt 0.406250 1.000000 -vt 0.437500 1.000000 -vt 0.406250 1.000000 -vt 0.437500 1.000000 -vt 0.406250 1.000000 -vt 0.437500 1.000000 -vt 0.406250 1.000000 -vt 0.406250 1.000000 -vt 0.437500 1.000000 -vt 0.437500 1.000000 -vt 0.406250 1.000000 -vt 0.437500 1.000000 -vt 0.406250 1.000000 -vt 0.406250 1.000000 -vt 0.437500 1.000000 -vt 0.437500 1.000000 -vt 0.406250 1.000000 -vt 0.437500 1.000000 -vt 0.406250 1.000000 -vt 0.406250 1.000000 -vt 0.437500 1.000000 -vt 0.437500 1.000000 -vt 0.406250 1.000000 -vt 0.437500 1.000000 -vt 0.406250 1.000000 -vt 0.437500 1.000000 -vt 0.406250 1.000000 -vt 0.375000 1.000000 -vt 0.375000 1.000000 -vt 0.375000 1.000000 -vt 0.375000 1.000000 -vt 0.375000 1.000000 -vt 0.375000 1.000000 -vt 0.375000 1.000000 -vt 0.375000 1.000000 -vt 0.375000 1.000000 -vt 0.375000 1.000000 -vt 0.375000 1.000000 -vt 0.375000 1.000000 -vt 0.375000 1.000000 -vt 0.375000 1.000000 -vt 0.375000 1.000000 -vt 0.343750 1.000000 -vt 0.343750 1.000000 -vt 0.343750 1.000000 -vt 0.343750 1.000000 -vt 0.343750 1.000000 -vt 0.343750 1.000000 -vt 0.343750 1.000000 -vt 0.343750 1.000000 -vt 0.343750 1.000000 -vt 0.343750 1.000000 -vt 0.343750 1.000000 -vt 0.343750 1.000000 -vt 0.343750 1.000000 -vt 0.343750 1.000000 -vt 0.343750 1.000000 -vt 0.312500 1.000000 -vt 0.312500 1.000000 -vt 0.312500 1.000000 -vt 0.312500 1.000000 -vt 0.312500 1.000000 -vt 0.312500 1.000000 -vt 0.312500 1.000000 -vt 0.312500 1.000000 -vt 0.312500 1.000000 -vt 0.312500 1.000000 -vt 0.312500 1.000000 -vt 0.312500 1.000000 -vt 0.312500 1.000000 -vt 0.312500 1.000000 -vt 0.312500 1.000000 -vt 0.281250 1.000000 -vt 0.281250 1.000000 -vt 0.281250 1.000000 -vt 0.281250 1.000000 -vt 0.281250 1.000000 -vt 0.281250 1.000000 -vt 0.281250 1.000000 -vt 0.281250 1.000000 -vt 0.281250 1.000000 -vt 0.281250 1.000000 -vt 0.281250 1.000000 -vt 0.281250 1.000000 -vt 0.281250 1.000000 -vt 0.281250 1.000000 -vt 0.281250 1.000000 -vt 0.250000 1.000000 -vt 0.250000 1.000000 -vt 0.250000 1.000000 -vt 0.250000 1.000000 -vt 0.250000 1.000000 -vt 0.250000 1.000000 -vt 0.250000 1.000000 -vt 0.250000 1.000000 -vt 0.250000 1.000000 -vt 0.250000 1.000000 -vt 0.250000 1.000000 -vt 0.250000 1.000000 -vt 0.250000 1.000000 -vt 0.250000 1.000000 +vt 0.218750 0.968750 +vt 0.250000 0.968750 vt 0.250000 1.000000 vt 0.218750 1.000000 -vt 0.218750 1.000000 -vt 0.218750 1.000000 -vt 0.218750 1.000000 -vt 0.218750 1.000000 -vt 0.218750 1.000000 -vt 0.218750 1.000000 -vt 0.218750 1.000000 -vt 0.218750 1.000000 -vt 0.218750 1.000000 -vt 0.218750 1.000000 -vt 0.218750 1.000000 -vt 0.218750 1.000000 -vt 0.218750 1.000000 -vt 0.218750 1.000000 -vt 0.187500 1.000000 -vt 0.187500 1.000000 -vt 0.187500 1.000000 -vt 0.187500 1.000000 -vt 0.187500 1.000000 -vt 0.187500 1.000000 -vt 0.187500 1.000000 -vt 0.187500 1.000000 -vt 0.187500 1.000000 -vt 0.187500 1.000000 -vt 0.187500 1.000000 -vt 0.187500 1.000000 -vt 0.187500 1.000000 -vt 0.187500 1.000000 -vt 0.187500 1.000000 -vt 0.156250 1.000000 -vt 0.156250 1.000000 -vt 0.156250 1.000000 -vt 0.156250 1.000000 -vt 0.156250 1.000000 -vt 0.156250 1.000000 -vt 0.156250 1.000000 -vt 0.156250 1.000000 -vt 0.156250 1.000000 -vt 0.156250 1.000000 -vt 0.156250 1.000000 -vt 0.156250 1.000000 -vt 0.156250 1.000000 -vt 0.156250 1.000000 -vt 0.156250 1.000000 -vt 0.968750 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.968750 1.000000 -vt 1.000000 1.000000 -vt 0.968750 1.000000 -vt 1.000000 1.000000 -vt 0.968750 1.000000 -vt 1.000000 1.000000 -vt 0.968750 1.000000 -vt 0.968750 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.968750 1.000000 -vt 1.000000 1.000000 -vt 0.968750 1.000000 -vt 0.968750 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.968750 1.000000 -vt 1.000000 1.000000 -vt 0.968750 1.000000 -vt 0.968750 1.000000 -vt 1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.968750 1.000000 -vt 1.000000 1.000000 -vt 0.968750 1.000000 -vt 1.000000 1.000000 -vt 0.968750 1.000000 -vt 0.125000 1.000000 -vt 0.125000 1.000000 -vt 0.125000 1.000000 -vt 0.125000 1.000000 -vt 0.125000 1.000000 -vt 0.125000 1.000000 -vt 0.125000 1.000000 -vt 0.125000 1.000000 -vt 0.125000 1.000000 -vt 0.125000 1.000000 -vt 0.125000 1.000000 -vt 0.125000 1.000000 -vt 0.125000 1.000000 -vt 0.125000 1.000000 -vt 0.125000 1.000000 -vt 0.937500 1.000000 -vt 0.937500 1.000000 -vt 0.937500 1.000000 -vt 0.937500 1.000000 -vt 0.937500 1.000000 -vt 0.937500 1.000000 -vt 0.937500 1.000000 -vt 0.937500 1.000000 -vt 0.937500 1.000000 -vt 0.937500 1.000000 -vt 0.937500 1.000000 -vt 0.937500 1.000000 -vt 0.937500 1.000000 -vt 0.937500 1.000000 -vt 0.937500 1.000000 -vt 0.093750 1.000000 -vt 0.093750 1.000000 -vt 0.093750 1.000000 -vt 0.093750 1.000000 -vt 0.093750 1.000000 -vt 0.093750 1.000000 -vt 0.093750 1.000000 -vt 0.093750 1.000000 -vt 0.093750 1.000000 -vt 0.093750 1.000000 -vt 0.093750 1.000000 -vt 0.093750 1.000000 -vt 0.093750 1.000000 -vt 0.093750 1.000000 -vt 0.093750 1.000000 -vt 0.906250 1.000000 -vt 0.906250 1.000000 -vt 0.906250 1.000000 -vt 0.906250 1.000000 -vt 0.906250 1.000000 -vt 0.906250 1.000000 -vt 0.906250 1.000000 -vt 0.906250 1.000000 -vt 0.906250 1.000000 -vt 0.906250 1.000000 -vt 0.906250 1.000000 -vt 0.906250 1.000000 -vt 0.906250 1.000000 -vt 0.906250 1.000000 -vt 0.906250 1.000000 -vt 0.062500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 1.000000 -vt 0.875000 1.000000 -vt 0.875000 1.000000 -vt 0.875000 1.000000 -vt 0.875000 1.000000 -vt 0.875000 1.000000 -vt 0.875000 1.000000 -vt 0.875000 1.000000 -vt 0.875000 1.000000 -vt 0.875000 1.000000 -vt 0.875000 1.000000 -vt 0.875000 1.000000 -vt 0.875000 1.000000 -vt 0.875000 1.000000 -vt 0.875000 1.000000 -vt 0.875000 1.000000 -vt 0.031250 1.000000 -vt 0.031250 1.000000 -vt 0.031250 1.000000 -vt 0.031250 1.000000 -vt 0.031250 1.000000 -vt 0.031250 1.000000 -vt 0.031250 1.000000 -vt 0.031250 1.000000 -vt 0.031250 1.000000 -vt 0.031250 1.000000 -vt 0.031250 1.000000 -vt 0.031250 1.000000 -vt 0.031250 1.000000 -vt 0.031250 1.000000 -vt 0.031250 1.000000 -vt 0.843750 1.000000 -vt 0.843750 1.000000 -vt 0.843750 1.000000 -vt 0.843750 1.000000 -vt 0.843750 1.000000 -vt 0.843750 1.000000 -vt 0.843750 1.000000 -vt 0.843750 1.000000 -vt 0.843750 1.000000 -vt 0.843750 1.000000 -vt 0.843750 1.000000 -vt 0.843750 1.000000 -vt 0.843750 1.000000 -vt 0.843750 1.000000 -vt 0.843750 1.000000 -vt 0.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 1.000000 -vt 0.812500 1.000000 -vt 0.812500 1.000000 -vt 0.812500 1.000000 -vt 0.812500 1.000000 -vt 0.812500 1.000000 -vt 0.812500 1.000000 -vt 0.812500 1.000000 -vt 0.812500 1.000000 -vt 0.812500 1.000000 -vt 0.812500 1.000000 -vt 0.812500 1.000000 -vt 0.812500 1.000000 -vt 0.812500 1.000000 -vt 0.812500 1.000000 -vt 0.812500 1.000000 -vt 0.781250 1.000000 -vt 0.781250 1.000000 -vt 0.781250 1.000000 -vt 0.781250 1.000000 -vt 0.781250 1.000000 -vt 0.781250 1.000000 -vt 0.781250 1.000000 -vt 0.781250 1.000000 -vt 0.781250 1.000000 -vt 0.781250 1.000000 -vt 0.781250 1.000000 -vt 0.781250 1.000000 -vt 0.781250 1.000000 -vt 0.781250 1.000000 -vt 0.781250 1.000000 -vt 0.750000 1.000000 -vt 0.750000 1.000000 -vt 0.750000 1.000000 -vt 0.750000 1.000000 -vt 0.750000 1.000000 -vt 0.750000 1.000000 -vt 0.750000 1.000000 -vt 0.750000 1.000000 -vt 0.750000 1.000000 -vt 0.750000 1.000000 -vt 0.750000 1.000000 -vt 0.750000 1.000000 -vt 0.750000 1.000000 -vt 0.750000 1.000000 -vt 0.750000 1.000000 -vt 0.718750 1.000000 -vt 0.718750 1.000000 -vt 0.718750 1.000000 -vt 0.718750 1.000000 -vt 0.718750 1.000000 -vt 0.718750 1.000000 -vt 0.718750 1.000000 -vt 0.718750 1.000000 -vt 0.718750 1.000000 -vt 0.718750 1.000000 -vt 0.718750 1.000000 -vt 0.718750 1.000000 -vt 0.718750 1.000000 -vt 0.718750 1.000000 -vt 0.718750 1.000000 -vt 0.687500 1.000000 -vt 0.687500 1.000000 -vt 0.687500 1.000000 -vt 0.687500 1.000000 -vt 0.687500 1.000000 -vt 0.687500 1.000000 -vt 0.687500 1.000000 -vt 0.687500 1.000000 -vt 0.687500 1.000000 -vt 0.687500 1.000000 -vt 0.687500 1.000000 -vt 0.687500 1.000000 -vt 0.687500 1.000000 -vt 0.687500 1.000000 -vt 0.687500 1.000000 -vt 0.656250 1.000000 -vt 0.656250 1.000000 -vt 0.656250 1.000000 -vt 0.656250 1.000000 -vt 0.656250 1.000000 -vt 0.656250 1.000000 -vt 0.656250 1.000000 -vt 0.656250 1.000000 -vt 0.656250 1.000000 -vt 0.656250 1.000000 -vt 0.656250 1.000000 -vt 0.656250 1.000000 -vt 0.656250 1.000000 -vt 0.656250 1.000000 -vt 0.656250 1.000000 -vt 0.625000 1.000000 -vt 0.625000 1.000000 -vt 0.625000 1.000000 -vt 0.625000 1.000000 -vt 0.625000 1.000000 -vt 0.625000 1.000000 -vt 0.625000 1.000000 -vt 0.625000 1.000000 -vt 0.625000 1.000000 -vt 0.625000 1.000000 -vt 0.625000 1.000000 -vt 0.625000 1.000000 -vt 0.625000 1.000000 -vt 0.625000 1.000000 -vt 0.625000 1.000000 -vt 0.593750 1.000000 -vt 0.593750 1.000000 -vt 0.593750 1.000000 -vt 0.593750 1.000000 -vt 0.593750 1.000000 -vt 0.593750 1.000000 -vt 0.593750 1.000000 -vt 0.593750 1.000000 -vt 0.593750 1.000000 -vt 0.593750 1.000000 -vt 0.593750 1.000000 -vt 0.593750 1.000000 -vt 0.593750 1.000000 -vt 0.593750 1.000000 -vt 0.593750 1.000000 -vt 0.562500 1.000000 -vt 0.562500 1.000000 -vt 0.562500 1.000000 -vt 0.562500 1.000000 -vt 0.562500 1.000000 -vt 0.562500 1.000000 -vt 0.562500 1.000000 -vt 0.562500 1.000000 -vt 0.562500 1.000000 -vt 0.562500 1.000000 -vt 0.562500 1.000000 -vt 0.562500 1.000000 -vt 0.562500 1.000000 -vt 0.562500 1.000000 -vt 0.562500 1.000000 -vt 0.531250 1.000000 -vt 0.531250 1.000000 -vt 0.531250 1.000000 -vt 0.531250 1.000000 -vt 0.531250 1.000000 -vt 0.531250 1.000000 -vt 0.531250 1.000000 -vt 0.531250 1.000000 -vt 0.531250 1.000000 -vt 0.531250 1.000000 -vt 0.531250 1.000000 -vt 0.531250 1.000000 -vt 0.531250 1.000000 -vt 0.531250 1.000000 -vt 0.531250 1.000000 -vt 0.500000 1.000000 -vt 0.500000 1.000000 -vt 0.500000 1.000000 -vt 0.500000 1.000000 -vt 0.500000 1.000000 -vt 0.500000 1.000000 -vt 0.500000 1.000000 -vt 0.500000 1.000000 -vt 0.500000 1.000000 -vt 0.500000 1.000000 -vt 0.500000 1.000000 -vt 0.500000 1.000000 -vt 0.500000 1.000000 -vt 0.500000 1.000000 -vt 0.500000 1.000000 -vt 0.468750 1.000000 -vt 0.468750 1.000000 -vt 0.468750 1.000000 -vt 0.468750 1.000000 -vt 0.468750 1.000000 -vt 0.468750 1.000000 -vt 0.468750 1.000000 -vt 0.468750 1.000000 -vt 0.468750 1.000000 -vt 0.468750 1.000000 -vt 0.468750 1.000000 -vt 0.468750 1.000000 -vt 0.468750 1.000000 -vt 0.468750 1.000000 -vt 0.468750 1.000000 -vt 0.281250 0.500000 -vt 0.250000 0.500000 -vt 0.250000 0.500000 -vt 0.281250 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.625000 0.500000 -vt 0.625000 0.500000 -vt 0.656250 0.500000 -vt 0.656250 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.031250 0.500000 -vt 0.000000 0.500000 -vt 0.000000 0.500000 -vt 0.031250 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 +vt 0.468750 0.250000 +vt 0.437500 0.250000 +vt 0.437500 0.218750 +vt 0.468750 0.218750 +vt 0.437500 0.343750 +vt 0.406250 0.343750 +vt 0.406250 0.312500 +vt 0.437500 0.312500 +vt 0.406250 0.281250 +vt 0.437500 0.281250 +vt 0.437500 0.312500 +vt 0.406250 0.312500 +vt 0.125000 0.937500 +vt 0.156250 0.937500 +vt 0.156250 0.968750 +vt 0.125000 0.968750 +vt 0.437500 0.250000 +vt 0.468750 0.250000 +vt 0.468750 0.281250 +vt 0.437500 0.281250 +vt 0.375000 0.406250 +vt 0.406250 0.406250 +vt 0.406250 0.437500 +vt 0.375000 0.437500 +vt 0.406250 0.187500 +vt 0.375000 0.187500 +vt 0.375000 0.156250 +vt 0.406250 0.156250 +vt 0.000000 0.937500 +vt 0.031250 0.937500 +vt 0.031250 0.968750 +vt 0.000000 0.968750 +vt 0.062500 0.750000 +vt 0.093750 0.750000 +vt 0.062500 0.718750 +vt 0.093750 0.718750 +vt 0.062500 0.687500 +vt 0.093750 0.687500 +vt 0.062500 0.656250 +vt 0.093750 0.656250 +vt 0.062500 0.625000 +vt 0.093750 0.625000 +vt 0.062500 0.593750 +vt 0.093750 0.593750 +vt 0.062500 0.562500 +vt 0.093750 0.562500 +vt 0.062500 0.531250 +vt 0.093750 0.531250 vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.968750 0.500000 -vt 0.968750 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.218750 0.500000 -vt 0.218750 0.500000 -vt 0.281250 0.500000 -vt 0.250000 0.500000 -vt 0.312500 0.500000 -vt 0.343750 0.500000 -vt 0.375000 0.500000 -vt 0.406250 0.500000 -vt 0.437500 0.500000 -vt 0.468750 0.500000 -vt 0.500000 0.500000 -vt 0.531250 0.500000 -vt 0.562500 0.500000 -vt 0.593750 0.500000 -vt 0.625000 0.500000 -vt 0.656250 0.500000 -vt 0.687500 0.500000 -vt 0.718750 0.500000 -vt 0.750000 0.500000 -vt 0.781250 0.500000 -vt 0.812500 0.500000 -vt 0.843750 0.500000 -vt 0.031250 0.500000 -vt 0.000000 0.500000 -vt 0.875000 0.500000 -vt 0.062500 0.500000 -vt 0.906250 0.500000 -vt 0.093750 0.500000 -vt 0.937500 0.500000 -vt 0.125000 0.500000 -vt 0.968750 0.500000 -vt 0.156250 0.500000 -vt 1.000000 0.500000 -vt 0.187500 0.500000 -vt 0.218750 0.500000 +vt 0.062500 0.468750 +vt 0.093750 0.468750 +vt 0.062500 0.437500 +vt 0.093750 0.437500 +vt 0.062500 0.406250 +vt 0.093750 0.406250 +vt 0.062500 0.375000 +vt 0.093750 0.375000 +vt 0.062500 0.343750 +vt 0.093750 0.343750 +vt 0.062500 0.312500 +vt 0.093750 0.312500 +vt 0.062500 0.281250 +vt 0.093750 0.281250 +vt 0.062500 0.250000 +vt 0.093750 0.250000 +vt 0.062500 0.218750 +vt 0.093750 0.218750 +vt 0.062500 0.187500 +vt 0.093750 0.187500 +vt 0.062500 0.156250 +vt 0.093750 0.156250 +vt 0.062500 0.125000 +vt 0.093750 0.125000 +vt 0.062500 0.093750 +vt 0.093750 0.093750 +vt 0.062500 0.062500 +vt 0.093750 0.062500 +vt 0.062500 0.031250 +vt 0.093750 0.031250 +vt 0.062500 0.000000 +vt 0.093750 0.000000 +vt 0.218750 0.750000 +vt 0.250000 0.750000 +vt 0.218750 0.718750 +vt 0.250000 0.718750 +vt 0.218750 0.687500 +vt 0.250000 0.687500 +vt 0.218750 0.656250 +vt 0.250000 0.656250 +vt 0.218750 0.625000 +vt 0.250000 0.625000 +vt 0.218750 0.593750 +vt 0.250000 0.593750 +vt 0.218750 0.562500 +vt 0.250000 0.562500 +vt 0.218750 0.531250 +vt 0.250000 0.531250 vt 0.218750 0.500000 vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.968750 0.500000 -vt 1.000000 0.500000 -vt 0.968750 0.500000 -vt 1.000000 0.500000 -vt 0.968750 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.500000 -vt 0.968750 0.500000 -vt 0.968750 0.500000 -vt 1.000000 0.500000 -vt 0.968750 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.500000 -vt 0.968750 0.500000 -vt 0.968750 0.500000 -vt 1.000000 0.500000 -vt 0.968750 0.500000 -vt 1.000000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.031250 0.500000 -vt 0.031250 0.500000 -vt 0.031250 0.500000 -vt 0.031250 0.500000 -vt 0.031250 0.500000 -vt 0.031250 0.500000 -vt 0.031250 0.500000 -vt 0.031250 0.500000 -vt 0.031250 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.000000 0.500000 -vt 0.000000 0.500000 -vt 0.000000 0.500000 -vt 0.000000 0.500000 -vt 0.000000 0.500000 -vt 0.000000 0.500000 -vt 0.000000 0.500000 -vt 0.000000 0.500000 -vt 0.000000 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.656250 0.500000 -vt 0.656250 0.500000 -vt 0.656250 0.500000 -vt 0.656250 0.500000 -vt 0.656250 0.500000 -vt 0.656250 0.500000 -vt 0.656250 0.500000 -vt 0.656250 0.500000 -vt 0.656250 0.500000 -vt 0.625000 0.500000 -vt 0.625000 0.500000 -vt 0.625000 0.500000 -vt 0.625000 0.500000 -vt 0.625000 0.500000 -vt 0.625000 0.500000 -vt 0.625000 0.500000 -vt 0.625000 0.500000 -vt 0.625000 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 +vt 0.218750 0.468750 +vt 0.250000 0.468750 +vt 0.218750 0.437500 +vt 0.250000 0.437500 +vt 0.218750 0.406250 +vt 0.250000 0.406250 +vt 0.218750 0.375000 +vt 0.250000 0.375000 +vt 0.218750 0.343750 +vt 0.250000 0.343750 +vt 0.218750 0.312500 +vt 0.250000 0.312500 +vt 0.218750 0.281250 +vt 0.250000 0.281250 +vt 0.218750 0.250000 +vt 0.250000 0.250000 +vt 0.218750 0.218750 +vt 0.250000 0.218750 +vt 0.218750 0.187500 +vt 0.250000 0.187500 +vt 0.218750 0.156250 +vt 0.250000 0.156250 +vt 0.218750 0.125000 +vt 0.250000 0.125000 +vt 0.218750 0.093750 +vt 0.250000 0.093750 +vt 0.218750 0.062500 +vt 0.250000 0.062500 +vt 0.218750 0.031250 +vt 0.250000 0.031250 +vt 0.218750 0.000000 +vt 0.250000 0.000000 +vt 0.375000 0.781250 +vt 0.343750 0.781250 +vt 0.343750 0.750000 +vt 0.375000 0.750000 +vt 0.343750 0.718750 +vt 0.375000 0.718750 +vt 0.343750 0.687500 +vt 0.375000 0.687500 +vt 0.343750 0.656250 +vt 0.375000 0.656250 +vt 0.343750 0.625000 +vt 0.375000 0.625000 +vt 0.343750 0.593750 +vt 0.375000 0.593750 +vt 0.343750 0.562500 +vt 0.375000 0.562500 +vt 0.343750 0.531250 +vt 0.375000 0.531250 vt 0.343750 0.500000 +vt 0.375000 0.500000 +vt 0.343750 0.468750 +vt 0.375000 0.468750 +vt 0.343750 0.437500 +vt 0.375000 0.437500 +vt 0.343750 0.406250 +vt 0.375000 0.406250 +vt 0.343750 0.375000 +vt 0.375000 0.375000 +vt 0.343750 0.343750 +vt 0.375000 0.343750 +vt 0.343750 0.312500 +vt 0.375000 0.312500 +vt 0.343750 0.281250 +vt 0.375000 0.281250 +vt 0.343750 0.250000 +vt 0.375000 0.250000 +vt 0.343750 0.218750 +vt 0.375000 0.218750 +vt 0.343750 0.187500 +vt 0.375000 0.187500 +vt 0.343750 0.156250 +vt 0.375000 0.156250 +vt 0.343750 0.125000 +vt 0.375000 0.125000 +vt 0.343750 0.093750 +vt 0.375000 0.093750 +vt 0.343750 0.062500 +vt 0.375000 0.062500 +vt 0.343750 0.031250 +vt 0.375000 0.031250 +vt 0.343750 0.000000 +vt 0.375000 0.000000 +vt 0.437500 0.312500 +vt 0.437500 0.281250 +vt 0.468750 0.281250 +vt 0.468750 0.312500 +vt 0.312500 0.000000 +vt 0.343750 0.000000 +vt 0.343750 0.031250 +vt 0.312500 0.031250 +vt 0.343750 0.062500 +vt 0.312500 0.062500 +vt 0.343750 0.093750 +vt 0.312500 0.093750 +vt 0.343750 0.125000 +vt 0.312500 0.125000 +vt 0.343750 0.156250 +vt 0.312500 0.156250 +vt 0.343750 0.187500 +vt 0.312500 0.187500 +vt 0.343750 0.218750 +vt 0.312500 0.218750 +vt 0.343750 0.250000 +vt 0.312500 0.250000 +vt 0.343750 0.281250 +vt 0.312500 0.281250 +vt 0.343750 0.312500 +vt 0.312500 0.312500 +vt 0.343750 0.343750 +vt 0.312500 0.343750 +vt 0.343750 0.375000 +vt 0.312500 0.375000 +vt 0.343750 0.406250 +vt 0.312500 0.406250 +vt 0.343750 0.437500 +vt 0.312500 0.437500 +vt 0.343750 0.468750 +vt 0.312500 0.468750 vt 0.343750 0.500000 vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.218750 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.218750 0.500000 -vt 0.656250 0.500000 -vt 0.625000 0.500000 -vt 0.625000 0.500000 -vt 0.656250 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 1.000000 0.500000 -vt 0.968750 0.500000 -vt 0.968750 0.500000 -vt 1.000000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.031250 0.500000 -vt 0.031250 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.000000 0.500000 -vt 0.000000 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.750000 0.490000 -vt 0.796822 0.485388 -vt 0.841844 0.471731 -vt 0.883337 0.449553 -vt 0.919706 0.419706 -vt 0.949553 0.383337 -vt 0.971731 0.341844 -vt 0.985388 0.296822 -vt 0.990000 0.250000 -vt 0.985388 0.203178 -vt 0.971731 0.158156 -vt 0.949553 0.116663 -vt 0.919706 0.080294 -vt 0.883337 0.050447 -vt 0.841844 0.028269 -vt 0.796822 0.014612 -vt 0.750000 0.010000 -vt 0.703178 0.014612 -vt 0.658156 0.028269 -vt 0.616663 0.050447 -vt 0.580294 0.080294 -vt 0.550447 0.116663 -vt 0.528269 0.158156 -vt 0.514611 0.203179 -vt 0.510000 0.250000 -vt 0.514612 0.296822 -vt 0.528269 0.341844 -vt 0.550447 0.383337 -vt 0.580295 0.419706 -vt 0.616663 0.449553 -vt 0.658156 0.471731 -vt 0.703179 0.485389 -vt 0.625000 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.625000 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 1.000000 0.500000 -vt 0.968750 0.500000 -vt 0.968750 0.500000 -vt 1.000000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.031250 0.500000 -vt 0.031250 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.000000 0.500000 -vt 0.000000 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.250000 0.500000 -vt 0.250000 0.500000 -vt 0.656250 0.500000 -vt 0.656250 0.500000 -vt 0.656250 0.500000 -vt 0.625000 0.500000 -vt 0.625000 0.500000 -vt 0.656250 0.500000 -vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.031250 0.500000 -vt 0.000000 0.500000 -vt 0.000000 0.500000 -vt 0.031250 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.968750 0.500000 -vt 0.968750 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.218750 0.500000 -vt 0.593750 0.500000 -vt 0.625000 0.500000 -vt 0.156250 0.500000 -vt 0.562500 0.500000 -vt 0.968750 0.500000 -vt 1.000000 0.500000 -vt 0.125000 0.500000 -vt 0.531250 0.500000 -vt 0.937500 0.500000 -vt 0.093750 0.500000 -vt 0.500000 0.500000 -vt 0.906250 0.500000 -vt 0.062500 0.500000 -vt 0.468750 0.500000 -vt 0.875000 0.500000 -vt 0.031250 0.500000 -vt 0.437500 0.500000 -vt 0.843750 0.500000 -vt 0.000000 0.500000 -vt 0.406250 0.500000 -vt 0.812500 0.500000 -vt 0.375000 0.500000 -vt 0.781250 0.500000 -vt 0.343750 0.500000 -vt 0.750000 0.500000 -vt 0.312500 0.500000 -vt 0.718750 0.500000 -vt 0.281250 0.500000 -vt 0.687500 0.500000 -vt 0.250000 0.500000 -vt 0.656250 0.500000 -vt 0.218750 0.500000 -vt 0.187500 0.500000 -vt 0.625000 0.500000 -vt 0.593750 0.500000 -vt 0.156250 0.500000 -vt 0.562500 0.500000 -vt 1.000000 0.500000 -vt 0.968750 0.500000 -vt 0.125000 0.500000 -vt 0.531250 0.500000 -vt 0.937500 0.500000 -vt 0.093750 0.500000 -vt 0.500000 0.500000 -vt 0.906250 0.500000 -vt 0.062500 0.500000 -vt 0.468750 0.500000 -vt 0.875000 0.500000 -vt 0.031250 0.500000 -vt 0.437500 0.500000 -vt 0.843750 0.500000 -vt 0.000000 0.500000 -vt 0.406250 0.500000 -vt 0.812500 0.500000 -vt 0.375000 0.500000 -vt 0.781250 0.500000 -vt 0.343750 0.500000 -vt 0.750000 0.500000 -vt 0.312500 0.500000 -vt 0.718750 0.500000 -vt 0.281250 0.500000 -vt 0.687500 0.500000 -vt 0.250000 0.500000 -vt 0.656250 0.500000 -vt 0.625000 0.500000 -vt 0.656250 0.500000 -vt 0.625000 0.500000 -vt 0.656250 0.500000 -vt 0.625000 0.500000 -vt 0.656250 0.500000 -vt 0.625000 0.500000 -vt 0.656250 0.500000 -vt 0.625000 0.500000 -vt 0.656250 0.500000 -vt 0.625000 0.500000 -vt 0.656250 0.500000 -vt 0.625000 0.500000 -vt 0.656250 0.500000 -vt 0.625000 0.500000 -vt 0.656250 0.500000 -vt 0.625000 0.500000 -vt 0.656250 0.500000 -vt 0.625000 0.500000 -vt 0.656250 0.500000 -vt 0.625000 0.500000 -vt 0.656250 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.218750 0.500000 -vt 0.250000 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.687500 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.281250 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.718750 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.312500 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.750000 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.343750 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.781250 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.812500 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.406250 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.843750 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.500000 -vt 0.000000 0.500000 -vt 0.031250 0.500000 -vt 0.000000 0.500000 -vt 0.031250 0.500000 -vt 0.000000 0.500000 -vt 0.031250 0.500000 -vt 0.000000 0.500000 -vt 0.031250 0.500000 -vt 0.000000 0.500000 -vt 0.031250 0.500000 -vt 0.000000 0.500000 -vt 0.031250 0.500000 -vt 0.000000 0.500000 -vt 0.031250 0.500000 -vt 0.000000 0.500000 -vt 0.031250 0.500000 -vt 0.000000 0.500000 -vt 0.031250 0.500000 -vt 0.000000 0.500000 -vt 0.031250 0.500000 -vt 0.000000 0.500000 -vt 0.031250 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.468750 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.062500 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.906250 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.093750 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.937500 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.531250 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.125000 0.500000 -vt 0.968750 0.500000 -vt 0.968750 0.500000 -vt 0.968750 0.500000 -vt 0.968750 0.500000 -vt 0.968750 0.500000 -vt 0.968750 0.500000 -vt 0.968750 0.500000 -vt 0.968750 0.500000 -vt 0.968750 0.500000 -vt 0.968750 0.500000 -vt 0.968750 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.562500 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 0.156250 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.593750 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.500000 -vt 1.000000 0.500000 -vt 1.000000 1.000000 -vt 0.968750 1.000000 -vt 0.968750 0.500000 -vt 0.937500 1.000000 -vt 0.937500 0.500000 -vt 0.906250 1.000000 -vt 0.906250 0.500000 -vt 0.875000 1.000000 -vt 0.875000 0.500000 -vt 0.843750 1.000000 -vt 0.843750 0.500000 -vt 0.812500 1.000000 -vt 0.812500 0.500000 -vt 0.781250 1.000000 -vt 0.781250 0.500000 -vt 0.750000 1.000000 -vt 0.750000 0.500000 -vt 0.718750 1.000000 -vt 0.718750 0.500000 -vt 0.687500 1.000000 -vt 0.687500 0.500000 -vt 0.656250 1.000000 -vt 0.656250 0.500000 -vt 0.625000 1.000000 -vt 0.625000 0.500000 -vt 0.593750 1.000000 -vt 0.593750 0.500000 -vt 0.562500 1.000000 -vt 0.562500 0.500000 -vt 0.531250 1.000000 -vt 0.531250 0.500000 -vt 0.500000 1.000000 -vt 0.500000 0.500000 -vt 0.468750 1.000000 -vt 0.468750 0.500000 -vt 0.437500 1.000000 -vt 0.437500 0.500000 -vt 0.406250 1.000000 -vt 0.406250 0.500000 -vt 0.375000 1.000000 -vt 0.375000 0.500000 -vt 0.343750 1.000000 -vt 0.343750 0.500000 -vt 0.312500 1.000000 -vt 0.312500 0.500000 -vt 0.281250 1.000000 -vt 0.281250 0.500000 -vt 0.250000 1.000000 -vt 0.250000 0.500000 -vt 0.218750 1.000000 -vt 0.218750 0.500000 -vt 0.187500 1.000000 -vt 0.187500 0.500000 -vt 0.156250 1.000000 -vt 0.156250 0.500000 -vt 0.125000 1.000000 -vt 0.125000 0.500000 -vt 0.093750 1.000000 -vt 0.093750 0.500000 -vt 0.062500 1.000000 -vt 0.062500 0.500000 -vt 0.718750 1.000000 -vt 0.687500 1.000000 -vt 0.031250 1.000000 -vt 0.031250 0.500000 -vt 0.000000 1.000000 -vt 0.000000 0.500000 -vt 0.812500 0.500000 -vt 0.843750 0.500000 -vt 0.562500 1.000000 -vt 0.593750 1.000000 -vt 0.562500 1.000000 -vt 0.437500 1.000000 -vt 0.406250 1.000000 -vt 0.156250 1.000000 -vt 0.125000 1.000000 -vt 0.843750 1.000000 -vt 0.812500 1.000000 -vt 0.531250 1.000000 -vt 0.281250 1.000000 -vt 0.250000 1.000000 -vt 0.968750 1.000000 -vt 0.937500 1.000000 -vt 0.656250 1.000000 -vt 0.375000 1.000000 -vt 0.093750 1.000000 -vt 0.781250 1.000000 -vt 0.500000 1.000000 -vt 0.218750 1.000000 -vt 0.906250 1.000000 -vt 0.625000 1.000000 -vt 0.343750 1.000000 -vt 0.062500 1.000000 -vt 0.750000 1.000000 -vt 0.468750 1.000000 -vt 0.187500 1.000000 -vt 0.875000 1.000000 -vt 0.312500 1.000000 -vt 0.031250 1.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vt 0.890975 0.466368 -vt 0.873729 0.481154 -vt 0.889672 0.485865 -vt 0.894793 0.474776 -vt 0.968750 1.000000 -vt 0.125000 1.000000 -vt 0.531250 1.000000 -vt 0.937500 1.000000 -vt 0.093750 1.000000 -vt 0.500000 1.000000 -vt 0.906250 1.000000 -vt 0.062500 1.000000 -vt 0.468750 1.000000 -vt 0.875000 1.000000 -vt 0.031250 1.000000 -vt 0.437500 1.000000 -vt 0.843750 1.000000 -vt 0.000000 1.000000 -vt 0.406250 1.000000 -vt 0.812500 1.000000 -vt 0.375000 1.000000 -vt 0.781250 1.000000 -vt 0.343750 1.000000 -vt 0.750000 1.000000 -vt 0.312500 1.000000 -vt 0.718750 1.000000 -vt 0.281250 1.000000 -vt 0.687500 1.000000 -vt 0.250000 1.000000 -vt 0.656250 1.000000 -vt 0.218750 1.000000 -vt 0.625000 1.000000 -vt 0.187500 1.000000 -vt 0.593750 1.000000 -vt 0.156250 1.000000 -vt 0.250000 0.496667 -vt 0.255226 0.495129 -vt 0.031250 0.500000 -vt 0.000000 0.500000 -vt 0.531250 0.500000 -vt 0.562500 0.500000 -vt 0.250000 0.500000 -vt 0.281250 0.500000 -vt 0.937500 0.500000 -vt 0.968750 0.500000 -vt 0.656250 0.500000 -vt 0.687500 0.500000 -vt 0.375000 0.500000 -vt 0.406250 0.500000 -vt 0.093750 0.500000 -vt 0.125000 0.500000 -vt 0.781250 0.500000 -vt 0.500000 0.500000 -vt 0.218750 0.500000 -vt 0.906250 0.500000 -vt 0.625000 0.500000 -vt 0.343750 0.500000 -vt 0.062500 0.500000 -vt 0.750000 0.500000 -vt 0.468750 0.500000 -vt 0.187500 0.500000 -vt 0.875000 0.500000 -vt 0.593750 0.500000 -vt 0.312500 0.500000 -vt 0.718750 0.500000 -vt 0.437500 0.500000 -vt 0.156250 0.500000 -vt 1.000000 0.500000 -vt 0.750000 0.490000 -vt 0.796822 0.485388 -vt 0.841844 0.471731 -vt 0.883337 0.449553 -vt 0.919706 0.419706 -vt 0.949553 0.383337 -vt 0.971731 0.341844 -vt 0.985388 0.296822 -vt 0.990000 0.250000 -vt 0.985388 0.203178 -vt 0.971731 0.158156 -vt 0.949553 0.116663 -vt 0.919706 0.080294 -vt 0.883337 0.050447 -vt 0.841844 0.028269 -vt 0.796822 0.014612 -vt 0.750000 0.010000 -vt 0.703178 0.014612 -vt 0.658156 0.028269 -vt 0.616663 0.050447 -vt 0.580294 0.080294 -vt 0.550447 0.116663 -vt 0.528269 0.158156 -vt 0.514611 0.203179 -vt 0.510000 0.250000 -vt 0.514612 0.296822 -vt 0.528269 0.341844 -vt 0.550447 0.383337 -vt 0.580295 0.419706 -vt 0.616663 0.449553 -vt 0.658156 0.471731 -vt 0.703179 0.485389 -vt 0.261052 0.490577 -vt 0.268054 0.483184 -vt 0.276765 0.473235 -vt 0.287649 0.461112 -vt 0.301090 0.447281 -vt 0.317371 0.432274 -vt 0.336667 0.416667 -vt 0.359037 0.401060 -vt 0.384423 0.386052 -vt 0.412649 0.372221 -vt 0.443431 0.360098 -vt 0.476388 0.350149 -vt 0.511052 0.342756 -vt 0.546893 0.338204 -vt 0.583333 0.336667 -vt 0.619774 0.338204 -vt 0.655615 0.342756 -vt 0.690279 0.350149 -vt 0.723235 0.360098 -vt 0.754018 0.372221 -vt 0.782244 0.386052 -vt 0.807629 0.401059 -vt 0.830000 0.416667 -vt 0.849296 0.432274 -vt 0.865577 0.447281 -vt 0.879017 0.461112 -vt 0.889902 0.473235 -vt 0.898612 0.483184 -vt 0.905614 0.490577 -vt 0.911441 0.495129 -vt 0.916667 0.496667 -vt 0.825476 0.487824 -vt 0.791667 0.491667 -vt 0.833333 0.493333 -vt 0.854131 0.490259 -vt 0.882786 0.492694 -vt 0.875000 0.495000 -vt 0.857787 0.476443 -vt 0.887156 0.457961 -vt 0.912255 0.433088 -vt 0.904804 0.446470 -vt 0.897353 0.459853 -vt 0.931919 0.402781 -vt 0.914285 0.422224 -vt 0.896651 0.441668 -vt 0.945192 0.368203 -vt 0.918654 0.394563 -vt 0.892115 0.420922 -vt 0.951365 0.330685 -vt 0.917342 0.364548 -vt 0.883319 0.398411 -vt 0.950000 0.291667 -vt 0.910000 0.333333 -vt 0.870000 0.375000 -vt 0.940949 0.252649 -vt 0.896509 0.302119 -vt 0.852069 0.351589 -vt 0.924359 0.215130 -vt 0.876987 0.272104 -vt 0.829616 0.329078 -vt 0.900669 0.180553 -vt 0.851785 0.244442 -vt 0.802901 0.308332 -vt 0.870588 0.150245 -vt 0.821470 0.220196 -vt 0.772353 0.290147 -vt 0.835072 0.125373 -vt 0.786808 0.200298 -vt 0.738543 0.275224 -vt 0.795287 0.106891 -vt 0.748729 0.185513 -vt 0.702172 0.264134 -vt 0.752560 0.095510 -vt 0.708298 0.176408 -vt 0.664036 0.257306 -vt 0.708333 0.091667 -vt 0.666667 0.173333 -vt 0.625000 0.255000 -vt 0.664107 0.095510 -vt 0.625035 0.176408 -vt 0.585964 0.257306 -vt 0.621380 0.106891 -vt 0.584604 0.185513 -vt 0.547828 0.264134 -vt 0.581594 0.125373 -vt 0.546525 0.200298 -vt 0.511457 0.275224 -vt 0.546079 0.150245 -vt 0.511863 0.220196 -vt 0.477647 0.290147 -vt 0.515998 0.180553 -vt 0.481548 0.244442 -vt 0.447099 0.308332 -vt 0.492307 0.215130 -vt 0.456346 0.272104 -vt 0.420384 0.329078 -vt 0.475718 0.252649 -vt 0.436824 0.302119 -vt 0.397931 0.351589 -vt 0.466667 0.291667 -vt 0.423333 0.333333 -vt 0.380000 0.375000 -vt 0.465301 0.330685 -vt 0.415991 0.364548 -vt 0.366681 0.398411 -vt 0.471474 0.368204 -vt 0.414679 0.394563 -vt 0.357885 0.420922 -vt 0.484748 0.402781 -vt 0.419048 0.422225 -vt 0.353349 0.441669 -vt 0.504412 0.433088 -vt 0.428530 0.446470 -vt 0.352647 0.459853 -vt 0.529511 0.457961 -vt 0.442359 0.466368 -vt 0.355207 0.474776 -vt 0.558880 0.476443 -vt 0.459604 0.481154 -vt 0.360328 0.485866 -vt 0.591191 0.487824 -vt 0.479202 0.490259 -vt 0.367214 0.492694 -vt 0.625000 0.491667 -vt 0.500000 0.493333 -vt 0.375000 0.495000 -vt 1.000000 0.500000 -vt 0.968750 0.500000 -vt 0.968750 1.000000 -vt 1.000000 1.000000 -vt 0.937500 0.500000 -vt 0.937500 1.000000 -vt 0.906250 0.500000 -vt 0.906250 1.000000 -vt 0.875000 0.500000 -vt 0.875000 1.000000 -vt 0.843750 0.500000 -vt 0.843750 1.000000 -vt 0.812500 0.500000 -vt 0.812500 1.000000 -vt 0.781250 0.500000 -vt 0.781250 1.000000 -vt 0.750000 0.500000 -vt 0.750000 1.000000 -vt 0.718750 0.500000 -vt 0.718750 1.000000 -vt 0.687500 0.500000 -vt 0.687500 1.000000 -vt 0.656250 0.500000 -vt 0.656250 1.000000 -vt 0.625000 0.500000 -vt 0.625000 1.000000 -vt 0.593750 0.500000 -vt 0.593750 1.000000 -vt 0.562500 0.500000 -vt 0.562500 1.000000 -vt 0.531250 0.500000 -vt 0.531250 1.000000 -vt 0.500000 0.500000 -vt 0.500000 1.000000 -vt 0.468750 0.500000 -vt 0.468750 1.000000 -vt 0.437500 0.500000 -vt 0.437500 1.000000 -vt 0.406250 0.500000 -vt 0.406250 1.000000 -vt 0.375000 0.500000 -vt 0.375000 1.000000 -vt 0.343750 0.500000 -vt 0.343750 1.000000 -vt 0.312500 0.500000 -vt 0.312500 1.000000 -vt 0.281250 0.500000 -vt 0.281250 1.000000 -vt 0.250000 0.500000 -vt 0.250000 1.000000 -vt 0.218750 0.500000 -vt 0.218750 1.000000 -vt 0.187500 0.500000 -vt 0.187500 1.000000 -vt 0.156250 0.500000 -vt 0.156250 1.000000 -vt 0.125000 0.500000 -vt 0.125000 1.000000 -vt 0.093750 0.500000 -vt 0.093750 1.000000 -vt 0.062500 0.500000 -vt 0.062500 1.000000 -vt 0.687500 1.000000 -vt 0.718750 1.000000 -vt 0.031250 0.500000 -vt 0.031250 1.000000 -vt 0.000000 0.500000 -vt 0.000000 1.000000 -vt 0.843750 0.500000 -vt 0.812500 0.500000 -vt 0.562500 1.000000 -vt 0.562500 1.000000 -vt 0.593750 1.000000 -vt 0.406250 1.000000 -vt 0.437500 1.000000 -vt 0.125000 1.000000 -vt 0.156250 1.000000 -vt 0.812500 1.000000 -vt 0.843750 1.000000 -vt 0.531250 1.000000 -vt 0.250000 1.000000 -vt 0.281250 1.000000 -vt 0.937500 1.000000 -vt 0.968750 1.000000 -vt 0.656250 1.000000 -vt 0.375000 1.000000 -vt 0.093750 1.000000 -vt 0.781250 1.000000 -vt 0.500000 1.000000 -vt 0.218750 1.000000 -vt 0.906250 1.000000 -vt 0.625000 1.000000 -vt 0.343750 1.000000 -vt 0.062500 1.000000 -vt 0.750000 1.000000 -vt 0.468750 1.000000 -vt 0.187500 1.000000 -vt 0.875000 1.000000 -vt 0.312500 1.000000 -vt 0.031250 1.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vt 0.890975 0.466368 -vt 0.894793 0.474776 -vt 0.889672 0.485865 -vt 0.873729 0.481154 -vt 0.968750 1.000000 -vt 0.125000 1.000000 -vt 0.531250 1.000000 -vt 0.937500 1.000000 -vt 0.093750 1.000000 -vt 0.500000 1.000000 -vt 0.906250 1.000000 -vt 0.062500 1.000000 -vt 0.468750 1.000000 -vt 0.875000 1.000000 -vt 0.031250 1.000000 -vt 0.437500 1.000000 -vt 0.843750 1.000000 -vt 0.000000 1.000000 -vt 0.406250 1.000000 -vt 0.812500 1.000000 -vt 0.375000 1.000000 -vt 0.781250 1.000000 -vt 0.343750 1.000000 -vt 0.750000 1.000000 -vt 0.312500 1.000000 -vt 0.718750 1.000000 -vt 0.281250 1.000000 -vt 0.687500 1.000000 -vt 0.250000 1.000000 -vt 0.656250 1.000000 -vt 0.218750 1.000000 -vt 0.625000 1.000000 -vt 0.187500 1.000000 -vt 0.593750 1.000000 -vt 0.156250 1.000000 -vt 0.250000 0.496667 -vt 0.000000 0.500000 -vt 0.031250 0.500000 -vt 0.255226 0.495129 -vt 0.562500 0.500000 -vt 0.531250 0.500000 -vt 0.281250 0.500000 -vt 0.250000 0.500000 -vt 0.968750 0.500000 -vt 0.937500 0.500000 -vt 0.687500 0.500000 -vt 0.656250 0.500000 -vt 0.406250 0.500000 -vt 0.375000 0.500000 -vt 0.125000 0.500000 -vt 0.093750 0.500000 -vt 0.781250 0.500000 -vt 0.500000 0.500000 -vt 0.218750 0.500000 -vt 0.906250 0.500000 -vt 0.625000 0.500000 -vt 0.343750 0.500000 -vt 0.062500 0.500000 -vt 0.750000 0.500000 -vt 0.468750 0.500000 -vt 0.187500 0.500000 -vt 0.875000 0.500000 -vt 0.593750 0.500000 -vt 0.312500 0.500000 -vt 0.718750 0.500000 -vt 0.437500 0.500000 -vt 0.156250 0.500000 -vt 1.000000 0.500000 -vt 0.750000 0.490000 -vt 0.703179 0.485389 -vt 0.658156 0.471731 -vt 0.616663 0.449553 -vt 0.580295 0.419706 -vt 0.550447 0.383337 -vt 0.528269 0.341844 -vt 0.514612 0.296822 -vt 0.510000 0.250000 -vt 0.514611 0.203179 -vt 0.528269 0.158156 -vt 0.550447 0.116663 -vt 0.580294 0.080294 -vt 0.616663 0.050447 -vt 0.658156 0.028269 -vt 0.703178 0.014612 -vt 0.750000 0.010000 -vt 0.796822 0.014612 -vt 0.841844 0.028269 -vt 0.883337 0.050447 -vt 0.919706 0.080294 -vt 0.949553 0.116663 -vt 0.971731 0.158156 -vt 0.985388 0.203178 -vt 0.990000 0.250000 -vt 0.985388 0.296822 -vt 0.971731 0.341844 -vt 0.949553 0.383337 -vt 0.919706 0.419706 -vt 0.883337 0.449553 -vt 0.841844 0.471731 -vt 0.796822 0.485388 -vt 0.261052 0.490577 -vt 0.268054 0.483184 -vt 0.276765 0.473235 -vt 0.287649 0.461112 -vt 0.301090 0.447281 -vt 0.317371 0.432274 -vt 0.336667 0.416667 -vt 0.359037 0.401060 -vt 0.384423 0.386052 -vt 0.412649 0.372221 -vt 0.443431 0.360098 -vt 0.476388 0.350149 -vt 0.511052 0.342756 -vt 0.546893 0.338204 -vt 0.583333 0.336667 -vt 0.619774 0.338204 -vt 0.655615 0.342756 -vt 0.690279 0.350149 -vt 0.723235 0.360098 -vt 0.754018 0.372221 -vt 0.782244 0.386052 -vt 0.807629 0.401059 -vt 0.830000 0.416667 -vt 0.849296 0.432274 -vt 0.865577 0.447281 -vt 0.879017 0.461112 -vt 0.889902 0.473235 -vt 0.898612 0.483184 -vt 0.905614 0.490577 -vt 0.911441 0.495129 -vt 0.916667 0.496667 -vt 0.825476 0.487824 -vt 0.854131 0.490259 -vt 0.833333 0.493333 -vt 0.791667 0.491667 -vt 0.882786 0.492694 -vt 0.875000 0.495000 -vt 0.857787 0.476443 -vt 0.887156 0.457961 -vt 0.912255 0.433088 -vt 0.904804 0.446470 -vt 0.897353 0.459853 -vt 0.931919 0.402781 -vt 0.914285 0.422224 -vt 0.896651 0.441668 -vt 0.945192 0.368203 -vt 0.918654 0.394563 -vt 0.892115 0.420922 -vt 0.951365 0.330685 -vt 0.917342 0.364548 -vt 0.883319 0.398411 -vt 0.950000 0.291667 -vt 0.910000 0.333333 -vt 0.870000 0.375000 -vt 0.940949 0.252649 -vt 0.896509 0.302119 -vt 0.852069 0.351589 -vt 0.924359 0.215130 -vt 0.876987 0.272104 -vt 0.829616 0.329078 -vt 0.900669 0.180553 -vt 0.851785 0.244442 -vt 0.802901 0.308332 -vt 0.870588 0.150245 -vt 0.821470 0.220196 -vt 0.772353 0.290147 -vt 0.835072 0.125373 -vt 0.786808 0.200298 -vt 0.738543 0.275224 -vt 0.795287 0.106891 -vt 0.748729 0.185513 -vt 0.702172 0.264134 -vt 0.752560 0.095510 -vt 0.708298 0.176408 -vt 0.664036 0.257306 -vt 0.708333 0.091667 -vt 0.666667 0.173333 -vt 0.625000 0.255000 -vt 0.664107 0.095510 -vt 0.625035 0.176408 -vt 0.585964 0.257306 -vt 0.621380 0.106891 -vt 0.584604 0.185513 -vt 0.547828 0.264134 -vt 0.581594 0.125373 -vt 0.546525 0.200298 -vt 0.511457 0.275224 -vt 0.546079 0.150245 -vt 0.511863 0.220196 -vt 0.477647 0.290147 -vt 0.515998 0.180553 -vt 0.481548 0.244442 -vt 0.447099 0.308332 -vt 0.492307 0.215130 -vt 0.456346 0.272104 -vt 0.420384 0.329078 -vt 0.475718 0.252649 -vt 0.436824 0.302119 -vt 0.397931 0.351589 -vt 0.466667 0.291667 -vt 0.423333 0.333333 -vt 0.380000 0.375000 -vt 0.465301 0.330685 -vt 0.415991 0.364548 -vt 0.366681 0.398411 -vt 0.471474 0.368204 -vt 0.414679 0.394563 -vt 0.357885 0.420922 -vt 0.484748 0.402781 -vt 0.419048 0.422225 -vt 0.353349 0.441669 -vt 0.504412 0.433088 -vt 0.428530 0.446470 -vt 0.352647 0.459853 -vt 0.529511 0.457961 -vt 0.442359 0.466368 -vt 0.355207 0.474776 -vt 0.558880 0.476443 -vt 0.459604 0.481154 -vt 0.360328 0.485866 -vt 0.591191 0.487824 -vt 0.479202 0.490259 -vt 0.367214 0.492694 -vt 0.625000 0.491667 -vt 0.500000 0.493333 -vt 0.375000 0.495000 -vt 1.000000 0.500000 -vt 1.000000 1.000000 -vt 0.968750 1.000000 -vt 0.968750 0.500000 -vt 0.937500 1.000000 -vt 0.937500 0.500000 -vt 0.906250 1.000000 -vt 0.906250 0.500000 -vt 0.875000 1.000000 -vt 0.875000 0.500000 -vt 0.843750 1.000000 -vt 0.843750 0.500000 -vt 0.812500 1.000000 -vt 0.812500 0.500000 -vt 0.781250 1.000000 -vt 0.781250 0.500000 -vt 0.750000 1.000000 -vt 0.750000 0.500000 -vt 0.718750 1.000000 -vt 0.718750 0.500000 -vt 0.687500 1.000000 -vt 0.687500 0.500000 -vt 0.656250 1.000000 -vt 0.656250 0.500000 -vt 0.625000 1.000000 -vt 0.625000 0.500000 -vt 0.593750 1.000000 -vt 0.593750 0.500000 -vt 0.562500 1.000000 -vt 0.562500 0.500000 -vt 0.531250 1.000000 -vt 0.531250 0.500000 -vt 0.500000 1.000000 -vt 0.500000 0.500000 -vt 0.468750 1.000000 -vt 0.468750 0.500000 -vt 0.437500 1.000000 -vt 0.437500 0.500000 -vt 0.406250 1.000000 -vt 0.406250 0.500000 -vt 0.375000 1.000000 -vt 0.375000 0.500000 -vt 0.343750 1.000000 -vt 0.343750 0.500000 -vt 0.312500 1.000000 -vt 0.312500 0.500000 -vt 0.281250 1.000000 -vt 0.281250 0.500000 -vt 0.250000 1.000000 -vt 0.250000 0.500000 -vt 0.218750 1.000000 -vt 0.218750 0.500000 -vt 0.187500 1.000000 -vt 0.187500 0.500000 -vt 0.156250 1.000000 -vt 0.156250 0.500000 -vt 0.125000 1.000000 -vt 0.125000 0.500000 -vt 0.093750 1.000000 -vt 0.093750 0.500000 -vt 0.062500 1.000000 -vt 0.062500 0.500000 -vt 0.718750 1.000000 -vt 0.687500 1.000000 -vt 0.031250 1.000000 -vt 0.031250 0.500000 -vt 0.000000 1.000000 -vt 0.000000 0.500000 -vt 0.812500 0.500000 -vt 0.843750 0.500000 -vt 0.562500 1.000000 -vt 0.593750 1.000000 -vt 0.562500 1.000000 -vt 0.437500 1.000000 -vt 0.406250 1.000000 -vt 0.156250 1.000000 -vt 0.125000 1.000000 -vt 0.843750 1.000000 -vt 0.812500 1.000000 -vt 0.531250 1.000000 -vt 0.281250 1.000000 -vt 0.250000 1.000000 -vt 0.968750 1.000000 -vt 0.937500 1.000000 -vt 0.656250 1.000000 -vt 0.375000 1.000000 -vt 0.093750 1.000000 -vt 0.781250 1.000000 -vt 0.500000 1.000000 -vt 0.218750 1.000000 -vt 0.906250 1.000000 -vt 0.625000 1.000000 -vt 0.343750 1.000000 -vt 0.062500 1.000000 -vt 0.750000 1.000000 -vt 0.468750 1.000000 -vt 0.187500 1.000000 -vt 0.875000 1.000000 -vt 0.312500 1.000000 -vt 0.031250 1.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vt 0.890975 0.466368 -vt 0.873729 0.481154 -vt 0.889672 0.485865 -vt 0.894793 0.474776 -vt 0.968750 1.000000 -vt 0.125000 1.000000 -vt 0.531250 1.000000 -vt 0.937500 1.000000 -vt 0.093750 1.000000 -vt 0.500000 1.000000 -vt 0.906250 1.000000 -vt 0.062500 1.000000 -vt 0.468750 1.000000 -vt 0.875000 1.000000 -vt 0.031250 1.000000 -vt 0.437500 1.000000 -vt 0.843750 1.000000 -vt 0.000000 1.000000 -vt 0.406250 1.000000 -vt 0.812500 1.000000 -vt 0.375000 1.000000 -vt 0.781250 1.000000 -vt 0.343750 1.000000 -vt 0.750000 1.000000 -vt 0.312500 1.000000 -vt 0.718750 1.000000 -vt 0.281250 1.000000 -vt 0.687500 1.000000 -vt 0.250000 1.000000 -vt 0.656250 1.000000 -vt 0.218750 1.000000 -vt 0.625000 1.000000 -vt 0.187500 1.000000 -vt 0.593750 1.000000 -vt 0.156250 1.000000 -vt 0.250000 0.496667 -vt 0.255226 0.495129 -vt 0.031250 0.500000 -vt 0.000000 0.500000 -vt 0.531250 0.500000 -vt 0.562500 0.500000 -vt 0.250000 0.500000 -vt 0.281250 0.500000 -vt 0.937500 0.500000 -vt 0.968750 0.500000 -vt 0.656250 0.500000 -vt 0.687500 0.500000 -vt 0.375000 0.500000 -vt 0.406250 0.500000 -vt 0.093750 0.500000 -vt 0.125000 0.500000 -vt 0.781250 0.500000 -vt 0.500000 0.500000 -vt 0.218750 0.500000 -vt 0.906250 0.500000 -vt 0.625000 0.500000 -vt 0.343750 0.500000 -vt 0.062500 0.500000 -vt 0.750000 0.500000 -vt 0.468750 0.500000 -vt 0.187500 0.500000 -vt 0.875000 0.500000 -vt 0.593750 0.500000 -vt 0.312500 0.500000 -vt 0.718750 0.500000 -vt 0.437500 0.500000 -vt 0.156250 0.500000 -vt 1.000000 0.500000 -vt 0.919706 0.080294 -vt 0.883337 0.050447 -vt 0.883337 0.050447 -vt 0.919706 0.080294 -vt 0.261052 0.490577 -vt 0.268054 0.483184 -vt 0.276765 0.473235 -vt 0.287649 0.461112 -vt 0.301090 0.447281 -vt 0.317371 0.432274 -vt 0.336667 0.416667 -vt 0.359037 0.401060 -vt 0.384423 0.386052 -vt 0.412649 0.372221 -vt 0.443431 0.360098 -vt 0.476388 0.350149 -vt 0.511052 0.342756 -vt 0.546893 0.338204 -vt 0.583333 0.336667 -vt 0.619774 0.338204 -vt 0.655615 0.342756 -vt 0.690279 0.350149 -vt 0.723235 0.360098 -vt 0.754018 0.372221 -vt 0.782244 0.386052 -vt 0.807629 0.401059 -vt 0.830000 0.416667 -vt 0.849296 0.432274 -vt 0.865577 0.447281 -vt 0.879017 0.461112 -vt 0.889902 0.473235 -vt 0.898612 0.483184 -vt 0.905614 0.490577 -vt 0.911441 0.495129 -vt 0.916667 0.496667 -vt 0.825476 0.487824 -vt 0.791667 0.491667 -vt 0.833333 0.493333 -vt 0.854131 0.490259 -vt 0.882786 0.492694 -vt 0.875000 0.495000 -vt 0.857787 0.476443 -vt 0.887156 0.457961 -vt 0.912255 0.433088 -vt 0.904804 0.446470 -vt 0.897353 0.459853 -vt 0.931919 0.402781 -vt 0.914285 0.422224 -vt 0.896651 0.441668 -vt 0.945192 0.368203 -vt 0.918654 0.394563 -vt 0.892115 0.420922 -vt 0.951365 0.330685 -vt 0.917342 0.364548 -vt 0.883319 0.398411 -vt 0.950000 0.291667 -vt 0.910000 0.333333 -vt 0.870000 0.375000 -vt 0.940949 0.252649 -vt 0.896509 0.302119 -vt 0.852069 0.351589 -vt 0.924359 0.215130 -vt 0.876987 0.272104 -vt 0.829616 0.329078 -vt 0.900669 0.180553 -vt 0.851785 0.244442 -vt 0.802901 0.308332 -vt 0.870588 0.150245 -vt 0.821470 0.220196 -vt 0.772353 0.290147 -vt 0.835072 0.125373 -vt 0.786808 0.200298 -vt 0.738543 0.275224 -vt 0.795287 0.106891 -vt 0.748729 0.185513 -vt 0.702172 0.264134 -vt 0.752560 0.095510 -vt 0.708298 0.176408 -vt 0.664036 0.257306 -vt 0.708333 0.091667 -vt 0.666667 0.173333 -vt 0.625000 0.255000 -vt 0.664107 0.095510 -vt 0.625035 0.176408 -vt 0.585964 0.257306 -vt 0.621380 0.106891 -vt 0.584604 0.185513 -vt 0.547828 0.264134 -vt 0.581594 0.125373 -vt 0.546525 0.200298 -vt 0.511457 0.275224 -vt 0.546079 0.150245 -vt 0.511863 0.220196 -vt 0.477647 0.290147 -vt 0.515998 0.180553 -vt 0.481548 0.244442 -vt 0.447099 0.308332 -vt 0.492307 0.215130 -vt 0.456346 0.272104 -vt 0.420384 0.329078 -vt 0.475718 0.252649 -vt 0.436824 0.302119 -vt 0.397931 0.351589 -vt 0.466667 0.291667 -vt 0.423333 0.333333 -vt 0.380000 0.375000 -vt 0.465301 0.330685 -vt 0.415991 0.364548 -vt 0.366681 0.398411 -vt 0.471474 0.368204 -vt 0.414679 0.394563 -vt 0.357885 0.420922 -vt 0.484748 0.402781 -vt 0.419048 0.422225 -vt 0.353349 0.441669 -vt 0.504412 0.433088 -vt 0.428530 0.446470 -vt 0.352647 0.459853 -vt 0.529511 0.457961 -vt 0.442359 0.466368 -vt 0.355207 0.474776 -vt 0.558880 0.476443 -vt 0.459604 0.481154 -vt 0.360328 0.485866 -vt 0.591191 0.487824 -vt 0.479202 0.490259 -vt 0.367214 0.492694 -vt 0.625000 0.491667 -vt 0.500000 0.493333 -vt 0.375000 0.495000 -vt 0.750000 0.490000 -vt 0.703179 0.485389 -vt 0.658156 0.471731 -vt 0.616663 0.449553 -vt 0.580295 0.419706 -vt 0.550447 0.383337 -vt 0.528269 0.341844 -vt 0.514612 0.296822 -vt 0.510000 0.250000 -vt 0.514611 0.203179 -vt 0.528269 0.158156 -vt 0.550447 0.116663 -vt 0.580294 0.080294 -vt 0.616663 0.050447 -vt 0.658156 0.028269 -vt 0.703178 0.014612 -vt 0.750000 0.010000 -vt 0.796822 0.014612 -vt 0.841844 0.028269 -vt 0.949553 0.116663 -vt 0.971731 0.158156 -vt 0.985388 0.203178 -vt 0.990000 0.250000 -vt 0.985388 0.296822 -vt 0.971731 0.341844 -vt 0.949553 0.383337 -vt 0.919706 0.419706 -vt 0.883337 0.449553 -vt 0.841844 0.471731 -vt 0.796822 0.485388 -vt 0.750000 0.490000 -vt 0.796822 0.485388 -vt 0.841844 0.471731 -vt 0.883337 0.449553 -vt 0.919706 0.419706 -vt 0.949553 0.383337 -vt 0.971731 0.341844 -vt 0.985388 0.296822 -vt 0.990000 0.250000 -vt 0.985388 0.203178 -vt 0.971731 0.158156 -vt 0.949553 0.116663 -vt 0.841844 0.028269 -vt 0.796822 0.014612 -vt 0.750000 0.010000 -vt 0.703178 0.014612 -vt 0.658156 0.028269 -vt 0.616663 0.050447 -vt 0.580294 0.080294 -vt 0.550447 0.116663 -vt 0.528269 0.158156 -vt 0.514611 0.203179 -vt 0.510000 0.250000 -vt 0.514612 0.296822 -vt 0.528269 0.341844 -vt 0.550447 0.383337 -vt 0.580295 0.419706 -vt 0.616663 0.449553 -vt 0.658156 0.471731 -vt 0.703179 0.485389 -vt 1.000000 0.500000 -vt 0.968750 0.500000 -vt 0.968750 1.000000 -vt 1.000000 1.000000 -vt 0.937500 0.500000 -vt 0.937500 1.000000 -vt 0.906250 0.500000 -vt 0.906250 1.000000 -vt 0.875000 0.500000 -vt 0.875000 1.000000 -vt 0.843750 0.500000 -vt 0.843750 1.000000 -vt 0.812500 0.500000 -vt 0.812500 1.000000 -vt 0.781250 0.500000 -vt 0.781250 1.000000 -vt 0.750000 0.500000 -vt 0.750000 1.000000 -vt 0.718750 0.500000 -vt 0.718750 1.000000 -vt 0.687500 0.500000 -vt 0.687500 1.000000 -vt 0.656250 0.500000 -vt 0.656250 1.000000 -vt 0.625000 0.500000 -vt 0.625000 1.000000 -vt 0.593750 0.500000 -vt 0.593750 1.000000 -vt 0.562500 0.500000 -vt 0.562500 1.000000 -vt 0.531250 0.500000 -vt 0.531250 1.000000 -vt 0.500000 0.500000 -vt 0.500000 1.000000 -vt 0.468750 0.500000 -vt 0.468750 1.000000 -vt 0.437500 0.500000 -vt 0.437500 1.000000 -vt 0.406250 0.500000 -vt 0.406250 1.000000 -vt 0.375000 0.500000 -vt 0.375000 1.000000 -vt 0.343750 0.500000 -vt 0.343750 1.000000 -vt 0.312500 0.500000 -vt 0.312500 1.000000 -vt 0.281250 0.500000 -vt 0.281250 1.000000 -vt 0.250000 0.500000 -vt 0.250000 1.000000 -vt 0.218750 0.500000 -vt 0.218750 1.000000 -vt 0.187500 0.500000 -vt 0.187500 1.000000 -vt 0.156250 0.500000 -vt 0.156250 1.000000 -vt 0.125000 0.500000 -vt 0.125000 1.000000 -vt 0.093750 0.500000 -vt 0.093750 1.000000 -vt 0.062500 0.500000 -vt 0.062500 1.000000 -vt 0.687500 1.000000 -vt 0.718750 1.000000 -vt 0.031250 0.500000 -vt 0.031250 1.000000 -vt 0.000000 0.500000 -vt 0.000000 1.000000 -vt 0.843750 0.500000 -vt 0.812500 0.500000 -vt 0.562500 1.000000 -vt 0.562500 1.000000 -vt 0.593750 1.000000 -vt 0.406250 1.000000 -vt 0.437500 1.000000 -vt 0.125000 1.000000 -vt 0.156250 1.000000 -vt 0.812500 1.000000 -vt 0.843750 1.000000 -vt 0.531250 1.000000 -vt 0.250000 1.000000 -vt 0.281250 1.000000 -vt 0.937500 1.000000 -vt 0.968750 1.000000 -vt 0.656250 1.000000 -vt 0.375000 1.000000 -vt 0.093750 1.000000 -vt 0.781250 1.000000 -vt 0.500000 1.000000 -vt 0.218750 1.000000 -vt 0.906250 1.000000 -vt 0.625000 1.000000 -vt 0.343750 1.000000 -vt 0.062500 1.000000 -vt 0.750000 1.000000 -vt 0.468750 1.000000 -vt 0.187500 1.000000 -vt 0.875000 1.000000 -vt 0.312500 1.000000 -vt 0.031250 1.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vt 0.890975 0.466368 -vt 0.894793 0.474776 -vt 0.889672 0.485865 -vt 0.873729 0.481154 -vt 0.968750 1.000000 -vt 0.125000 1.000000 -vt 0.531250 1.000000 -vt 0.937500 1.000000 -vt 0.093750 1.000000 -vt 0.500000 1.000000 -vt 0.906250 1.000000 -vt 0.062500 1.000000 -vt 0.468750 1.000000 -vt 0.875000 1.000000 -vt 0.031250 1.000000 -vt 0.437500 1.000000 -vt 0.843750 1.000000 -vt 0.000000 1.000000 -vt 0.406250 1.000000 -vt 0.812500 1.000000 -vt 0.375000 1.000000 -vt 0.781250 1.000000 -vt 0.343750 1.000000 -vt 0.750000 1.000000 -vt 0.312500 1.000000 -vt 0.718750 1.000000 -vt 0.281250 1.000000 -vt 0.687500 1.000000 -vt 0.250000 1.000000 -vt 0.656250 1.000000 -vt 0.218750 1.000000 -vt 0.625000 1.000000 -vt 0.187500 1.000000 -vt 0.593750 1.000000 -vt 0.156250 1.000000 -vt 0.250000 0.496667 -vt 0.000000 0.500000 -vt 0.031250 0.500000 -vt 0.255226 0.495129 -vt 0.562500 0.500000 -vt 0.531250 0.500000 -vt 0.281250 0.500000 -vt 0.250000 0.500000 -vt 0.968750 0.500000 -vt 0.937500 0.500000 -vt 0.687500 0.500000 -vt 0.656250 0.500000 -vt 0.406250 0.500000 -vt 0.375000 0.500000 -vt 0.125000 0.500000 -vt 0.093750 0.500000 -vt 0.781250 0.500000 -vt 0.500000 0.500000 -vt 0.218750 0.500000 -vt 0.906250 0.500000 -vt 0.625000 0.500000 -vt 0.343750 0.500000 -vt 0.062500 0.500000 -vt 0.750000 0.500000 -vt 0.468750 0.500000 -vt 0.187500 0.500000 -vt 0.875000 0.500000 -vt 0.593750 0.500000 -vt 0.312500 0.500000 -vt 0.718750 0.500000 -vt 0.437500 0.500000 -vt 0.156250 0.500000 -vt 1.000000 0.500000 -vt 0.919706 0.080294 -vt 0.919706 0.080294 -vt 0.883337 0.050447 -vt 0.883337 0.050447 -vt 0.261052 0.490577 -vt 0.268054 0.483184 -vt 0.276765 0.473235 -vt 0.287649 0.461112 -vt 0.301090 0.447281 -vt 0.317371 0.432274 -vt 0.336667 0.416667 -vt 0.359037 0.401060 -vt 0.384423 0.386052 -vt 0.412649 0.372221 -vt 0.443431 0.360098 -vt 0.476388 0.350149 -vt 0.511052 0.342756 -vt 0.546893 0.338204 -vt 0.583333 0.336667 -vt 0.619774 0.338204 -vt 0.655615 0.342756 -vt 0.690279 0.350149 -vt 0.723235 0.360098 -vt 0.754018 0.372221 -vt 0.782244 0.386052 -vt 0.807629 0.401059 -vt 0.830000 0.416667 -vt 0.849296 0.432274 -vt 0.865577 0.447281 -vt 0.879017 0.461112 -vt 0.889902 0.473235 -vt 0.898612 0.483184 -vt 0.905614 0.490577 -vt 0.911441 0.495129 -vt 0.916667 0.496667 -vt 0.825476 0.487824 -vt 0.854131 0.490259 -vt 0.833333 0.493333 -vt 0.791667 0.491667 -vt 0.882786 0.492694 -vt 0.875000 0.495000 -vt 0.857787 0.476443 -vt 0.887156 0.457961 -vt 0.912255 0.433088 -vt 0.904804 0.446470 -vt 0.897353 0.459853 -vt 0.931919 0.402781 -vt 0.914285 0.422224 -vt 0.896651 0.441668 -vt 0.945192 0.368203 -vt 0.918654 0.394563 -vt 0.892115 0.420922 -vt 0.951365 0.330685 -vt 0.917342 0.364548 -vt 0.883319 0.398411 -vt 0.950000 0.291667 -vt 0.910000 0.333333 -vt 0.870000 0.375000 -vt 0.940949 0.252649 -vt 0.896509 0.302119 -vt 0.852069 0.351589 -vt 0.924359 0.215130 -vt 0.876987 0.272104 -vt 0.829616 0.329078 -vt 0.900669 0.180553 -vt 0.851785 0.244442 -vt 0.802901 0.308332 -vt 0.870588 0.150245 -vt 0.821470 0.220196 -vt 0.772353 0.290147 -vt 0.835072 0.125373 -vt 0.786808 0.200298 -vt 0.738543 0.275224 -vt 0.795287 0.106891 -vt 0.748729 0.185513 -vt 0.702172 0.264134 -vt 0.752560 0.095510 -vt 0.708298 0.176408 -vt 0.664036 0.257306 -vt 0.708333 0.091667 -vt 0.666667 0.173333 -vt 0.625000 0.255000 -vt 0.664107 0.095510 -vt 0.625035 0.176408 -vt 0.585964 0.257306 -vt 0.621380 0.106891 -vt 0.584604 0.185513 -vt 0.547828 0.264134 -vt 0.581594 0.125373 -vt 0.546525 0.200298 -vt 0.511457 0.275224 -vt 0.546079 0.150245 -vt 0.511863 0.220196 -vt 0.477647 0.290147 -vt 0.515998 0.180553 -vt 0.481548 0.244442 -vt 0.447099 0.308332 -vt 0.492307 0.215130 -vt 0.456346 0.272104 -vt 0.420384 0.329078 -vt 0.475718 0.252649 -vt 0.436824 0.302119 -vt 0.397931 0.351589 -vt 0.466667 0.291667 -vt 0.423333 0.333333 -vt 0.380000 0.375000 -vt 0.465301 0.330685 -vt 0.415991 0.364548 -vt 0.366681 0.398411 -vt 0.471474 0.368204 -vt 0.414679 0.394563 -vt 0.357885 0.420922 -vt 0.484748 0.402781 -vt 0.419048 0.422225 -vt 0.353349 0.441669 -vt 0.504412 0.433088 -vt 0.428530 0.446470 -vt 0.352647 0.459853 -vt 0.529511 0.457961 -vt 0.442359 0.466368 -vt 0.355207 0.474776 -vt 0.558880 0.476443 -vt 0.459604 0.481154 -vt 0.360328 0.485866 -vt 0.591191 0.487824 -vt 0.479202 0.490259 -vt 0.367214 0.492694 -vt 0.625000 0.491667 -vt 0.500000 0.493333 -vt 0.375000 0.495000 -vt 0.750000 0.490000 -vt 0.703179 0.485389 -vt 0.658156 0.471731 -vt 0.616663 0.449553 -vt 0.580295 0.419706 -vt 0.550447 0.383337 -vt 0.528269 0.341844 -vt 0.514612 0.296822 -vt 0.510000 0.250000 -vt 0.514611 0.203179 -vt 0.528269 0.158156 -vt 0.550447 0.116663 -vt 0.580294 0.080294 -vt 0.616663 0.050447 -vt 0.658156 0.028269 -vt 0.703178 0.014612 -vt 0.750000 0.010000 -vt 0.796822 0.014612 -vt 0.841844 0.028269 -vt 0.949553 0.116663 -vt 0.971731 0.158156 -vt 0.985388 0.203178 -vt 0.990000 0.250000 -vt 0.985388 0.296822 -vt 0.971731 0.341844 -vt 0.949553 0.383337 -vt 0.919706 0.419706 -vt 0.883337 0.449553 -vt 0.841844 0.471731 -vt 0.796822 0.485388 -vt 0.750000 0.490000 -vt 0.703179 0.485389 -vt 0.658156 0.471731 -vt 0.616663 0.449553 -vt 0.580295 0.419706 -vt 0.550447 0.383337 -vt 0.528269 0.341844 -vt 0.514612 0.296822 -vt 0.510000 0.250000 -vt 0.514611 0.203179 -vt 0.528269 0.158156 -vt 0.550447 0.116663 -vt 0.580294 0.080294 -vt 0.616663 0.050447 -vt 0.658156 0.028269 -vt 0.703178 0.014612 -vt 0.750000 0.010000 -vt 0.796822 0.014612 -vt 0.841844 0.028269 -vt 0.949553 0.116663 -vt 0.971731 0.158156 -vt 0.985388 0.203178 -vt 0.990000 0.250000 -vt 0.985388 0.296822 -vt 0.971731 0.341844 -vt 0.949553 0.383337 -vt 0.919706 0.419706 -vt 0.883337 0.449553 -vt 0.841844 0.471731 -vt 0.796822 0.485388 -vn 0.0000 -0.9952 0.0980 -vn 0.0000 -0.4714 -0.8819 -vn -0.4652 -0.8810 0.0868 -vn -0.1306 -0.6290 -0.7664 -vn 0.0000 -0.6344 -0.7730 -vn 0.0000 -0.9569 0.2903 -vn 0.0000 -0.7730 -0.6344 -vn 0.0000 -0.8819 0.4714 -vn 0.0000 0.0980 0.9952 -vn 0.0000 -0.8819 -0.4714 -vn 0.0000 -0.7730 0.6344 -vn 0.0000 0.2903 0.9569 -vn 0.0000 -0.9569 -0.2903 -vn 0.0000 -0.6344 0.7730 -vn 0.0000 0.4714 0.8819 -vn 0.0000 -0.9952 -0.0980 -vn 0.0000 -0.4714 0.8819 -vn -0.0000 0.6344 0.7730 -vn 0.0000 -0.2903 0.9569 -vn -0.0000 0.7730 0.6344 -vn 0.0000 -0.0980 0.9952 -vn -0.0000 0.8819 0.4714 -vn -0.0000 0.9569 0.2903 -vn -0.0000 0.9952 0.0980 -vn -0.0000 0.9952 -0.0980 -vn -0.0000 0.9569 -0.2903 -vn -0.0000 0.8819 -0.4714 -vn -0.0000 0.7730 -0.6344 -vn -0.0000 0.6344 -0.7730 -vn -0.0000 0.4714 -0.8819 -vn -0.0000 0.2903 -0.9569 -vn -0.0000 0.0980 -0.9952 -vn -0.0000 -0.0980 -0.9952 -vn -0.0000 -0.2903 -0.9569 -vn 0.1948 -0.2847 0.9386 -vn -0.1306 0.9487 0.2878 -vn -0.1306 -0.7664 -0.6290 -vn -0.1306 0.9867 0.0972 -vn -0.1306 -0.8744 -0.4674 -vn -0.1306 0.9867 -0.0972 -vn -0.1306 -0.9487 -0.2878 -vn -0.1306 0.9487 -0.2878 -vn -0.1306 -0.9867 -0.0972 -vn -0.1306 0.8744 -0.4674 -vn -0.1306 -0.9867 0.0972 -vn -0.1306 0.7664 -0.6290 -vn -0.1306 -0.9487 0.2878 -vn -0.1306 0.6290 -0.7664 -vn -0.1306 -0.8744 0.4674 -vn -0.1306 0.4674 -0.8744 -vn -0.1306 0.0972 0.9867 -vn -0.1306 -0.7664 0.6290 -vn -0.1306 0.2878 -0.9487 -vn -0.1306 0.2878 0.9487 -vn -0.1306 -0.6290 0.7664 -vn -0.1306 0.0972 -0.9867 -vn -0.1306 0.4674 0.8744 -vn -0.1306 -0.4674 0.8744 -vn -0.1306 -0.0972 -0.9867 -vn -0.1306 0.6290 0.7664 -vn -0.1306 -0.2878 0.9487 -vn -0.1306 -0.2878 -0.9487 -vn -0.1306 0.7664 0.6290 -vn -0.1306 -0.0972 0.9867 -vn -0.1306 -0.4674 -0.8744 -vn -0.1306 0.8744 0.4674 -vn 0.8252 -0.4366 -0.3583 -vn 0.1948 -0.2847 -0.9386 -vn 0.1948 0.7582 0.6222 -vn 0.1948 -0.0961 0.9761 -vn 0.1948 -0.4624 -0.8650 -vn 0.1948 0.8650 0.4624 -vn 0.1948 -0.6222 -0.7582 -vn 0.1948 0.9386 0.2847 -vn 0.1948 -0.7582 -0.6222 -vn 0.1948 0.9761 0.0961 -vn 0.1948 -0.8650 -0.4624 -vn 0.1948 0.9761 -0.0961 -vn 0.1948 -0.9386 -0.2847 -vn 0.1948 0.9386 -0.2847 -vn 0.1948 -0.9761 -0.0961 -vn 0.1948 0.8650 -0.4624 -vn 0.1948 -0.9761 0.0961 -vn 0.1948 0.7582 -0.6222 -vn 0.1948 -0.9386 0.2847 -vn 0.1948 0.6222 -0.7582 -vn 0.1948 -0.8650 0.4624 -vn 0.1948 0.4624 -0.8650 -vn 0.1948 0.0961 0.9761 -vn 0.1948 -0.7582 0.6222 -vn 0.1948 0.2847 -0.9386 -vn 0.1948 0.2847 0.9386 -vn 0.1948 -0.6222 0.7582 -vn 0.1948 0.0961 -0.9761 -vn 0.1948 0.4624 0.8650 -vn 0.1948 -0.4624 0.8650 -vn 0.1948 -0.0961 -0.9761 -vn 0.1948 0.6222 0.7582 -vn 0.8252 0.5621 0.0554 -vn 0.8252 -0.4981 -0.2662 -vn 0.8252 0.5621 -0.0554 -vn 0.8253 -0.5404 -0.1640 -vn 0.8252 0.5405 -0.1639 -vn 0.8252 -0.5621 -0.0554 -vn 0.8252 0.4981 -0.2662 -vn 0.8252 -0.5621 0.0554 -vn 0.8253 0.4365 -0.3583 -vn 0.8252 -0.5405 0.1639 -vn 0.8252 0.3583 -0.4366 -vn 0.8252 -0.4981 0.2662 -vn 0.8252 0.2663 -0.4981 -vn 0.8252 0.0554 0.5621 -vn 0.8252 -0.4366 0.3583 -vn 0.8252 0.1639 -0.5405 -vn 0.8252 0.1640 0.5405 -vn 0.8252 -0.3583 0.4366 -vn 0.8252 0.0554 -0.5621 -vn 0.8252 0.2662 0.4981 -vn 0.8252 -0.2663 0.4981 -vn 0.8252 -0.0554 -0.5621 -vn 0.8252 0.3583 0.4366 -vn 0.8252 -0.1640 0.5405 -vn 0.8252 -0.1640 -0.5405 -vn 0.8252 0.4366 0.3583 -vn 0.8252 -0.0553 0.5621 -vn 0.8252 -0.2663 -0.4981 -vn 0.8252 0.4981 0.2662 -vn 0.8252 -0.3583 -0.4366 -vn 0.8252 0.5405 0.1639 -vn 0.3943 -0.2668 -0.8794 -vn 0.3943 -0.0901 -0.9145 -vn 0.3943 0.0901 -0.9145 -vn 0.3943 0.2668 -0.8794 -vn 0.3943 0.4332 -0.8105 -vn 0.3943 0.5830 -0.7104 -vn 0.3943 0.7104 -0.5830 -vn 0.3943 0.8105 -0.4332 -vn 0.3943 0.8794 -0.2668 -vn 0.3943 0.9145 -0.0901 -vn 0.3943 0.9145 0.0901 -vn 0.3943 0.8794 0.2668 -vn 0.3943 0.8105 0.4332 -vn 0.3943 -0.0901 0.9145 -vn 0.3943 0.7104 0.5830 -vn 0.3943 -0.2668 0.8794 -vn 0.3943 0.5830 0.7104 -vn 0.3943 -0.4332 0.8105 -vn 0.3943 0.4332 0.8105 -vn 0.3943 -0.5830 0.7104 -vn 0.3943 0.2668 0.8794 -vn 0.3943 -0.7104 0.5830 -vn 0.3943 0.0901 0.9145 -vn 0.3943 -0.8105 0.4332 -vn 0.3943 -0.8794 0.2668 -vn 0.3943 -0.9145 0.0901 -vn 0.3943 -0.9145 -0.0901 -vn 0.3943 -0.8794 -0.2668 -vn 0.3943 -0.8105 -0.4332 -vn 0.3943 -0.7104 -0.5830 -vn 0.3943 -0.5830 -0.7104 -vn 0.3943 -0.4332 -0.8105 -vn -0.3943 -0.4332 -0.8105 -vn 0.4847 -0.4123 -0.7714 -vn 0.5859 -0.3820 -0.7147 -vn -0.4847 -0.4123 -0.7714 -vn -0.3943 -0.5830 -0.7104 -vn 0.4847 -0.5549 -0.6761 -vn 0.5859 -0.5141 -0.6264 -vn -0.4847 -0.5549 -0.6761 -vn -0.3943 -0.7104 -0.5830 -vn 0.4847 -0.6761 -0.5549 -vn 0.5859 -0.6264 -0.5141 -vn -0.4847 -0.6761 -0.5549 -vn -0.3943 -0.8105 -0.4332 -vn 0.4847 -0.7714 -0.4123 -vn 0.5859 -0.7147 -0.3820 -vn -0.4847 -0.7714 -0.4123 -vn -0.3943 -0.8794 -0.2668 -vn 0.4847 -0.8370 -0.2539 -vn 0.5859 -0.7755 -0.2352 -vn -0.4847 -0.8370 -0.2539 -vn -0.3943 -0.9145 -0.0901 -vn 0.4847 -0.8705 -0.0857 -vn 0.5859 -0.8065 -0.0794 -vn -0.4847 -0.8705 -0.0857 -vn -0.3943 -0.9145 0.0901 -vn 0.4847 -0.8705 0.0857 -vn 0.5859 -0.8064 0.0794 -vn 0.5859 -0.8065 0.0794 -vn -0.4847 -0.8705 0.0857 -vn -0.3943 -0.8794 0.2668 -vn 0.4847 -0.8370 0.2539 -vn 0.5859 -0.7755 0.2352 -vn -0.4847 -0.8370 0.2539 -vn -0.3943 -0.8105 0.4332 -vn 0.4847 -0.7714 0.4123 -vn 0.5859 -0.7147 0.3820 -vn -0.4847 -0.7714 0.4123 -vn -0.3943 0.0901 0.9145 -vn 0.4847 0.0857 0.8705 -vn 0.5859 0.0794 0.8065 -vn 0.5859 0.0795 0.8065 -vn -0.4847 0.0857 0.8705 -vn -0.3943 -0.7104 0.5830 -vn 0.4847 -0.6761 0.5549 -vn 0.5859 -0.6264 0.5141 -vn -0.4847 -0.6761 0.5549 -vn -0.3943 0.2668 0.8794 -vn 0.4847 0.2539 0.8370 -vn 0.5859 0.2352 0.7755 -vn -0.4847 0.2539 0.8370 -vn -0.3943 -0.5830 0.7104 -vn 0.4847 -0.5549 0.6761 -vn 0.5859 -0.5141 0.6264 -vn -0.4847 -0.5549 0.6761 -vn -0.3943 0.4332 0.8105 -vn 0.4847 0.4123 0.7714 -vn 0.5859 0.3820 0.7147 -vn -0.4847 0.4123 0.7714 -vn -0.3943 -0.4332 0.8105 -vn 0.4847 -0.4123 0.7714 -vn 0.5859 -0.3820 0.7147 -vn -0.4847 -0.4123 0.7714 -vn -0.3943 0.5830 0.7104 -vn 0.4847 0.5549 0.6761 -vn 0.5859 0.5141 0.6264 -vn -0.4847 0.5549 0.6761 -vn -0.3943 -0.2668 0.8794 -vn 0.4847 -0.2539 0.8370 -vn 0.5859 -0.2352 0.7755 -vn -0.4847 -0.2539 0.8370 -vn -0.3943 0.7104 0.5830 -vn 0.4847 0.6761 0.5549 -vn 0.5859 0.6264 0.5141 -vn -0.4847 0.6761 0.5549 -vn -0.3943 -0.0901 0.9145 -vn 0.4847 -0.0857 0.8705 -vn 0.5859 -0.0794 0.8065 -vn 0.5859 -0.0795 0.8065 -vn -0.4847 -0.0857 0.8705 -vn -0.3943 0.8105 0.4332 -vn 0.4847 0.7714 0.4123 -vn 0.5859 0.7147 0.3820 -vn -0.4847 0.7714 0.4123 -vn -0.3943 0.8794 0.2668 -vn 0.4847 0.8370 0.2539 -vn 0.5859 0.7755 0.2352 -vn -0.4847 0.8370 0.2539 -vn -0.3943 0.9145 0.0901 -vn 0.4847 0.8705 0.0857 -vn 0.5859 0.8065 0.0794 -vn -0.4847 0.8705 0.0857 -vn -0.3943 0.9145 -0.0901 -vn 0.4847 0.8705 -0.0857 -vn 0.5859 0.8065 -0.0794 -vn -0.4847 0.8705 -0.0857 -vn -0.3943 0.8794 -0.2668 -vn 0.4847 0.8370 -0.2539 -vn 0.5859 0.7755 -0.2352 -vn -0.4847 0.8370 -0.2539 -vn -0.3943 0.8105 -0.4332 -vn 0.4847 0.7714 -0.4123 -vn 0.5859 0.7147 -0.3820 -vn -0.4847 0.7714 -0.4123 -vn -0.3943 0.7104 -0.5830 -vn 0.4847 0.6761 -0.5549 -vn 0.5859 0.6264 -0.5141 -vn -0.4847 0.6761 -0.5549 -vn -0.3943 0.5830 -0.7104 -vn 0.4847 0.5549 -0.6761 -vn 0.5859 0.5141 -0.6264 -vn -0.4847 0.5549 -0.6761 -vn -0.3943 0.4332 -0.8105 -vn 0.4847 0.4123 -0.7714 -vn 0.5859 0.3820 -0.7147 -vn -0.4847 0.4123 -0.7714 -vn -0.3943 0.2668 -0.8794 -vn 0.4847 0.2539 -0.8370 -vn 0.5859 0.2352 -0.7755 -vn -0.4847 0.2539 -0.8370 -vn -0.3943 0.0901 -0.9145 -vn 0.4847 0.0857 -0.8705 -vn 0.5859 0.0794 -0.8065 -vn -0.4847 0.0857 -0.8705 -vn -0.3943 -0.0901 -0.9145 -vn 0.4847 -0.0857 -0.8705 -vn 0.5859 -0.0794 -0.8065 -vn -0.4847 -0.0857 -0.8705 -vn -0.3943 -0.2668 -0.8794 -vn 0.4847 -0.2539 -0.8370 -vn 0.5859 -0.2352 -0.7755 -vn -0.4847 -0.2539 -0.8370 -vn -0.5859 -0.2352 -0.7755 -vn -0.5859 -0.0794 -0.8065 -vn -0.5859 0.0794 -0.8065 -vn -0.5859 0.2352 -0.7755 -vn -0.5859 0.3820 -0.7147 -vn -0.5859 0.5141 -0.6264 -vn -0.5859 0.6264 -0.5141 -vn -0.5859 0.7147 -0.3820 -vn -0.5859 0.7755 -0.2352 -vn -0.5859 0.8065 -0.0794 -vn -0.5859 0.8065 0.0794 -vn -0.5859 0.7755 0.2352 -vn -0.5859 0.7147 0.3820 -vn -0.5859 -0.0794 0.8065 -vn -0.5859 0.6264 0.5141 -vn -0.5859 -0.2352 0.7755 -vn -0.5859 0.5141 0.6264 -vn -0.5859 -0.3820 0.7147 -vn -0.5859 0.3820 0.7147 -vn -0.5859 -0.5141 0.6264 -vn -0.5859 0.2352 0.7755 -vn -0.5859 -0.6264 0.5141 -vn -0.5859 0.0794 0.8065 -vn -0.5859 -0.7147 0.3820 -vn -0.5859 -0.7755 0.2352 -vn -0.5859 -0.8065 0.0794 -vn -0.5859 -0.8064 -0.0794 -vn -0.5859 -0.7755 -0.2352 -vn -0.5859 -0.7147 -0.3820 -vn -0.5859 -0.6264 -0.5141 -vn -0.5859 -0.5141 -0.6264 -vn -0.5859 -0.3820 -0.7147 -vn -0.5859 -0.2353 -0.7755 -vn -0.5859 -0.8065 -0.0794 -vn -0.5859 0.0794 -0.8064 -vn -0.5860 0.8064 -0.0794 -vn -0.5859 0.8064 0.0794 -vn -0.5860 -0.8064 -0.0794 -vn -0.5860 -0.7755 -0.2352 -vn -0.6480 -0.7580 -0.0747 -vn -0.6480 -0.7288 -0.2211 -vn -0.6480 -0.6717 -0.3590 -vn -0.6480 -0.5888 -0.4832 -vn -0.6480 -0.4832 -0.5888 -vn -0.6480 -0.3590 -0.6717 -vn -0.6480 -0.2211 -0.7288 -vn -0.6480 -0.0747 -0.7580 -vn -0.6480 0.0747 -0.7580 -vn -0.6480 0.2211 -0.7288 -vn -0.6480 0.3590 -0.6717 -vn -0.6480 0.4832 -0.5888 -vn -0.6480 0.5888 -0.4832 -vn -0.6480 0.6717 -0.3590 -vn -0.6480 0.7288 -0.2211 -vn -0.6480 0.7580 -0.0747 -vn -0.6480 0.7580 0.0747 -vn -0.6480 0.7288 0.2211 -vn -0.6480 0.6717 0.3590 -vn -0.6480 -0.0747 0.7580 -vn -0.6480 0.5888 0.4832 -vn -0.6480 -0.2211 0.7288 -vn -0.6480 0.4832 0.5888 -vn -0.6480 -0.3590 0.6717 -vn -0.6480 0.3590 0.6717 -vn -0.6480 -0.4832 0.5888 -vn -0.6480 0.2211 0.7288 -vn -0.6480 -0.5888 0.4832 -vn -0.6480 0.0747 0.7580 -vn -0.6480 -0.6717 0.3590 -vn -0.6480 -0.7288 0.2211 -vn -0.6480 -0.7580 0.0747 -vn 0.6480 -0.7580 0.0747 -vn -0.2632 -0.9601 0.0946 -vn -0.5813 -0.8097 0.0798 -vn -0.5814 -0.8097 0.0798 -vn 0.2632 -0.9601 0.0946 -vn 0.6480 -0.7289 0.2211 -vn -0.2632 -0.9232 0.2801 -vn -0.5813 -0.7786 0.2362 -vn 0.2632 -0.9232 0.2801 -vn 0.6480 -0.6717 0.3590 -vn -0.2632 -0.8508 0.4548 -vn -0.5813 -0.7176 0.3836 -vn 0.2632 -0.8508 0.4548 -vn 0.6480 0.0747 0.7580 -vn -0.2632 0.0946 0.9601 -vn -0.5813 0.0798 0.8097 -vn -0.5814 0.0798 0.8097 -vn 0.2632 0.0946 0.9601 -vn 0.6480 -0.5888 0.4832 -vn -0.2632 -0.7458 0.6120 -vn -0.5813 -0.6290 0.5162 -vn 0.2632 -0.7458 0.6120 -vn 0.6480 0.2211 0.7289 -vn -0.2632 0.2801 0.9232 -vn -0.5813 0.2362 0.7786 -vn 0.2632 0.2801 0.9232 -vn 0.6480 -0.4832 0.5888 -vn -0.2632 -0.6120 0.7458 -vn -0.5813 -0.5162 0.6290 -vn 0.2632 -0.6120 0.7458 -vn 0.6480 0.3590 0.6717 -vn -0.2632 0.4548 0.8508 -vn -0.5813 0.3836 0.7176 -vn 0.2632 0.4548 0.8508 -vn 0.6480 -0.3590 0.6717 -vn -0.2632 -0.4548 0.8508 -vn -0.5813 -0.3836 0.7176 -vn 0.2632 -0.4548 0.8508 -vn 0.6480 0.4832 0.5888 -vn -0.2632 0.6120 0.7458 -vn -0.5813 0.5162 0.6290 -vn 0.2632 0.6120 0.7458 -vn 0.6480 -0.2211 0.7289 -vn -0.2632 -0.2800 0.9232 -vn -0.5813 -0.2362 0.7786 -vn 0.2632 -0.2800 0.9232 -vn 0.6480 0.5888 0.4832 -vn -0.2632 0.7458 0.6120 -vn -0.5813 0.6290 0.5162 -vn 0.2632 0.7458 0.6120 -vn 0.6480 -0.0747 0.7580 -vn -0.2632 -0.0946 0.9601 -vn -0.5813 -0.0798 0.8097 -vn -0.5814 -0.0798 0.8097 -vn 0.2632 -0.0946 0.9601 -vn 0.6480 0.6717 0.3590 -vn -0.2632 0.8508 0.4548 -vn -0.5813 0.7176 0.3836 -vn 0.2632 0.8508 0.4548 -vn 0.6480 0.7289 0.2211 -vn -0.2632 0.9232 0.2800 -vn -0.5813 0.7786 0.2362 -vn 0.2632 0.9232 0.2801 -vn 0.6480 0.7580 0.0747 -vn -0.2632 0.9601 0.0946 -vn -0.5813 0.8097 0.0798 -vn 0.2632 0.9601 0.0946 -vn 0.6480 0.7580 -0.0747 -vn -0.2632 0.9601 -0.0946 -vn -0.5813 0.8097 -0.0798 -vn 0.2632 0.9601 -0.0946 -vn 0.6480 0.7289 -0.2211 -vn -0.2632 0.9232 -0.2800 -vn -0.5813 0.7786 -0.2362 -vn 0.2632 0.9232 -0.2801 -vn 0.6480 0.6717 -0.3590 -vn -0.2632 0.8508 -0.4548 -vn -0.5813 0.7176 -0.3836 -vn 0.2632 0.8508 -0.4548 -vn 0.6480 0.5888 -0.4832 -vn -0.2632 0.7458 -0.6120 -vn -0.5813 0.6290 -0.5162 -vn 0.2632 0.7458 -0.6120 -vn 0.6480 0.4832 -0.5888 -vn -0.2632 0.6120 -0.7458 -vn -0.5813 0.5162 -0.6290 -vn 0.2632 0.6120 -0.7458 -vn 0.6480 0.3590 -0.6717 -vn -0.2632 0.4548 -0.8508 -vn -0.5813 0.3836 -0.7176 -vn 0.2632 0.4548 -0.8508 -vn 0.6480 0.2211 -0.7289 -vn -0.2632 0.2800 -0.9232 -vn -0.5814 0.2362 -0.7786 -vn 0.2632 0.2800 -0.9232 -vn 0.6480 0.0747 -0.7580 -vn -0.2632 0.0946 -0.9601 -vn -0.5814 0.0798 -0.8097 -vn 0.2632 0.0946 -0.9601 -vn 0.6480 -0.0747 -0.7580 -vn -0.2632 -0.0946 -0.9601 -vn -0.5813 -0.0798 -0.8097 -vn 0.2632 -0.0946 -0.9601 -vn 0.6480 -0.2211 -0.7289 -vn -0.2632 -0.2801 -0.9232 -vn -0.5814 -0.2362 -0.7786 -vn -0.5813 -0.2362 -0.7786 -vn 0.2632 -0.2801 -0.9232 -vn 0.6480 -0.3590 -0.6717 -vn -0.2632 -0.4548 -0.8508 -vn -0.5813 -0.3836 -0.7176 -vn 0.2632 -0.4548 -0.8508 -vn 0.6480 -0.4832 -0.5888 -vn -0.2632 -0.6120 -0.7458 -vn -0.5814 -0.5162 -0.6290 -vn -0.5813 -0.5162 -0.6290 -vn 0.2632 -0.6120 -0.7458 -vn 0.6480 -0.5888 -0.4832 -vn -0.2632 -0.7458 -0.6120 -vn -0.5813 -0.6290 -0.5162 -vn 0.2632 -0.7458 -0.6120 -vn 0.6480 -0.6717 -0.3590 -vn -0.2632 -0.8508 -0.4548 -vn -0.5813 -0.7176 -0.3836 -vn 0.2632 -0.8508 -0.4548 -vn 0.6480 -0.7289 -0.2211 -vn -0.2632 -0.9232 -0.2800 -vn -0.5813 -0.7786 -0.2362 -vn 0.2632 -0.9232 -0.2800 -vn 0.6480 -0.7580 -0.0747 -vn -0.2632 -0.9601 -0.0946 -vn -0.5813 -0.8097 -0.0798 -vn -0.5814 -0.8097 -0.0798 -vn 0.2632 -0.9601 -0.0946 -vn 0.5813 -0.8097 -0.0797 -vn 0.5813 -0.7786 -0.2362 -vn 0.5813 -0.7176 -0.3836 -vn 0.5813 -0.6290 -0.5162 -vn 0.5813 -0.5162 -0.6290 -vn 0.5813 -0.3836 -0.7176 -vn 0.5813 -0.2362 -0.7786 -vn 0.5813 -0.0798 -0.8097 -vn 0.5813 0.0798 -0.8097 -vn 0.5813 0.2362 -0.7786 -vn 0.5813 0.3836 -0.7176 -vn 0.5813 0.5162 -0.6290 -vn 0.5813 0.6290 -0.5162 -vn 0.5813 0.7176 -0.3836 -vn 0.5813 0.7786 -0.2362 -vn 0.5814 0.8097 -0.0798 -vn 0.5813 0.8097 0.0798 -vn 0.5813 0.7786 0.2362 -vn 0.5814 0.7176 0.3836 -vn 0.5813 -0.0797 0.8097 -vn 0.5813 0.6290 0.5162 -vn 0.5813 -0.2362 0.7786 -vn 0.5813 0.5162 0.6290 -vn 0.5813 -0.3836 0.7176 -vn 0.5813 0.3836 0.7176 -vn 0.5813 -0.5162 0.6290 -vn 0.5813 0.2362 0.7786 -vn 0.5813 -0.6290 0.5162 -vn 0.5813 0.0797 0.8097 -vn 0.5814 -0.7176 0.3836 -vn 0.5814 -0.7786 0.2362 -vn 0.5813 -0.8097 0.0797 -vn 0.5813 0.8097 -0.0798 -vn 0.5813 0.7176 0.3836 -vn 0.5813 -0.7176 0.3836 -vn 0.5813 -0.7786 0.2362 -vn -0.1725 -0.9426 0.2859 -vn -0.4652 0.6843 -0.5616 -vn -0.4652 -0.8471 0.2570 -vn -0.4652 0.5616 -0.6843 -vn -0.4652 -0.7807 0.4173 -vn -0.4652 0.4173 -0.7807 -vn -0.4652 0.0868 0.8810 -vn -0.4652 -0.6843 0.5616 -vn -0.4652 0.2570 -0.8471 -vn -0.4652 0.2570 0.8471 -vn -0.4652 -0.5616 0.6843 -vn -0.4652 0.0868 -0.8810 -vn -0.4652 0.4173 0.7807 -vn -0.4652 -0.4173 0.7807 -vn -0.4652 -0.0868 -0.8810 -vn -0.4652 0.5616 0.6843 -vn -0.4652 -0.2570 0.8471 -vn -0.4652 -0.2570 -0.8471 -vn -0.4652 0.6843 0.5616 -vn -0.4652 -0.0868 0.8810 -vn -0.4652 -0.4173 -0.7807 -vn -0.4652 0.7807 0.4173 -vn -0.4652 -0.5616 -0.6843 -vn -0.4652 0.8471 0.2570 -vn -0.4652 -0.6843 -0.5616 -vn -0.4652 0.8810 0.0868 -vn -0.4652 -0.7807 -0.4173 -vn -0.4652 0.8810 -0.0868 -vn -0.4652 -0.8471 -0.2570 -vn -0.4652 0.8471 -0.2570 -vn -0.4652 -0.8810 -0.0868 -vn -0.4652 0.7807 -0.4173 +vt 0.343750 0.531250 +vt 0.312500 0.531250 +vt 0.343750 0.562500 +vt 0.312500 0.562500 +vt 0.343750 0.593750 +vt 0.312500 0.593750 +vt 0.343750 0.625000 +vt 0.312500 0.625000 +vt 0.343750 0.656250 +vt 0.312500 0.656250 +vt 0.343750 0.687500 +vt 0.312500 0.687500 +vt 0.343750 0.718750 +vt 0.312500 0.718750 +vt 0.156250 0.875000 +vt 0.125000 0.875000 +vt 0.156250 0.906250 +vt 0.125000 0.906250 +vt 0.437500 0.218750 +vt 0.406250 0.218750 +vt 0.437500 0.250000 +vt 0.406250 0.250000 +vt 0.437500 0.437500 +vt 0.406250 0.437500 +vt 0.406250 0.406250 +vt 0.437500 0.406250 +vt 0.406250 0.375000 +vt 0.437500 0.375000 +vt 0.187500 0.875000 +vt 0.156250 0.875000 +vt 0.187500 0.906250 +vt 0.156250 0.906250 +vt 0.031250 0.875000 +vt 0.000000 0.875000 +vt 0.031250 0.906250 +vt 0.000000 0.906250 +vt 0.375000 0.250000 +vt 0.406250 0.250000 +vt 0.375000 0.218750 +vt 0.406250 0.218750 +vt 0.375000 0.312500 +vt 0.406250 0.312500 +vt 0.406250 0.343750 +vt 0.375000 0.343750 +vt 0.406250 0.375000 +vt 0.375000 0.375000 +vt 0.312500 0.875000 +vt 0.281250 0.875000 +vt 0.312500 0.906250 +vt 0.281250 0.906250 +vt 0.250000 0.875000 +vt 0.218750 0.875000 +vt 0.250000 0.906250 +vt 0.218750 0.906250 +vt 0.250000 0.937500 +vt 0.218750 0.937500 +vt 0.093750 0.875000 +vt 0.062500 0.875000 +vt 0.093750 0.906250 +vt 0.062500 0.906250 +vt 0.093750 0.937500 +vt 0.062500 0.937500 +vt 0.437500 0.156250 +vt 0.406250 0.156250 +vt 0.406250 0.125000 +vt 0.437500 0.125000 +vt 0.406250 0.093750 +vt 0.437500 0.093750 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.375000 0.000000 +vt 0.406250 0.000000 +vt 0.406250 0.031250 +vt 0.375000 0.031250 +vt 0.406250 0.062500 +vt 0.375000 0.062500 +vt 0.406250 0.093750 +vt 0.375000 0.093750 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 vn 0.0000 0.0000 1.0000 -vn -0.1725 0.6249 -0.7614 -vn -0.1725 -0.8687 0.4643 -vn -0.1725 0.4643 -0.8687 -vn -0.1725 0.0965 0.9803 -vn -0.1725 -0.7614 0.6249 -vn -0.1725 0.2859 -0.9426 -vn -0.1725 0.2859 0.9426 -vn -0.1725 -0.6249 0.7614 -vn -0.1725 0.0965 -0.9803 -vn -0.1725 0.4643 0.8687 -vn -0.1725 -0.4643 0.8687 -vn -0.1725 -0.0965 -0.9803 -vn -0.1725 0.6249 0.7614 -vn -0.1725 -0.2859 0.9426 -vn -0.1725 -0.2859 -0.9426 -vn -0.1725 0.7614 0.6249 -vn -0.1725 -0.0965 0.9803 -vn -0.1725 -0.4643 -0.8687 -vn -0.1725 0.8687 0.4643 -vn -0.1725 -0.6249 -0.7614 -vn -0.1725 0.9426 0.2859 -vn -0.1725 -0.7614 -0.6249 -vn -0.1725 0.9803 0.0965 -vn -0.1725 -0.8687 -0.4643 -vn -0.1725 0.9803 -0.0965 -vn -0.1725 -0.9426 -0.2859 -vn -0.1725 0.9426 -0.2859 -vn -0.1725 -0.9803 -0.0965 -vn -0.1725 0.8687 -0.4643 -vn -0.1725 -0.9803 0.0965 -vn -0.1725 0.7614 -0.6249 -vn -0.0098 0.7730 -0.6344 -vn -0.0098 -0.9951 0.0980 -vn -0.0098 0.8819 -0.4714 -vn -0.0098 -0.9951 -0.0980 -vn -0.0098 0.9569 -0.2903 -vn -0.0098 -0.9569 -0.2903 -vn -0.0098 0.9951 -0.0980 -vn -0.0098 -0.8819 -0.4714 -vn -0.0098 0.9951 0.0980 -vn -0.0098 -0.7730 -0.6344 -vn -0.0098 0.9569 0.2903 -vn -0.0098 -0.6344 -0.7730 -vn -0.0098 0.8819 0.4714 -vn -0.0098 -0.4714 -0.8819 -vn -0.0098 -0.0980 0.9951 -vn -0.0098 0.7730 0.6344 -vn -0.0098 -0.2903 -0.9569 -vn -0.0098 -0.2903 0.9569 -vn -0.0098 0.6344 0.7730 -vn -0.0098 -0.0980 -0.9951 -vn -0.0098 -0.4714 0.8819 -vn -0.0098 0.4714 0.8819 -vn -0.0098 0.0980 -0.9951 -vn -0.0098 -0.6344 0.7730 -vn -0.0098 0.2903 0.9569 -vn -0.0098 0.2903 -0.9569 -vn -0.0098 -0.7730 0.6344 -vn -0.0098 0.0980 0.9951 -vn -0.0098 0.4714 -0.8819 -vn -0.0098 -0.8819 0.4714 -vn -0.0098 0.6344 -0.7730 -vn -0.0098 -0.9569 0.2903 -vn 0.2072 0.7562 -0.6206 -vn 0.2072 -0.9736 0.0959 -vn 0.2072 0.8628 -0.4612 -vn 0.2072 -0.9736 -0.0959 -vn 0.2072 0.9362 -0.2840 -vn 0.2072 -0.9362 -0.2840 -vn 0.2072 0.9736 -0.0959 -vn 0.2072 -0.8628 -0.4612 -vn 0.2072 0.9736 0.0959 -vn 0.2072 -0.7562 -0.6206 -vn 0.2072 0.9362 0.2840 -vn 0.2072 -0.6206 -0.7562 -vn 0.2072 0.8628 0.4612 -vn 0.2072 -0.4612 -0.8628 -vn 0.2072 -0.0959 0.9736 -vn 0.2072 0.7562 0.6206 -vn 0.2072 -0.2840 -0.9362 -vn 0.2072 -0.2840 0.9362 -vn 0.2072 0.6206 0.7562 -vn 0.2072 -0.0959 -0.9736 -vn 0.2072 -0.4612 0.8628 -vn 0.2072 0.4612 0.8628 -vn 0.2072 0.0959 -0.9736 -vn 0.2072 -0.6206 0.7562 -vn 0.2072 0.2840 0.9362 -vn 0.2072 0.2840 -0.9362 -vn 0.2072 -0.7562 0.6206 -vn 0.2072 0.0959 0.9736 -vn 0.2072 0.4612 -0.8628 -vn 0.2072 -0.8628 0.4612 -vn 0.2072 0.6206 -0.7562 -vn 0.2072 -0.9362 0.2840 -vn -0.0596 -0.9552 0.2898 -vn -0.0596 0.6333 -0.7716 -vn -0.0596 -0.8804 0.4706 -vn -0.0596 0.4706 -0.8804 -vn -0.0596 0.0978 0.9934 -vn -0.0596 -0.7716 0.6333 -vn -0.0596 0.2898 -0.9552 -vn -0.0596 0.2898 0.9552 -vn -0.0596 -0.6333 0.7716 -vn -0.0596 0.0978 -0.9934 -vn -0.0596 0.4706 0.8804 -vn -0.0596 -0.4706 0.8804 -vn -0.0596 -0.0978 -0.9934 -vn -0.0596 0.6333 0.7716 -vn -0.0596 -0.2898 0.9552 -vn -0.0596 -0.2898 -0.9552 -vn -0.0596 0.7716 0.6333 -vn -0.0596 -0.0978 0.9934 -vn -0.0596 -0.4706 -0.8804 -vn -0.0596 0.8804 0.4706 -vn -0.0596 -0.6333 -0.7716 -vn -0.0596 0.9552 0.2898 -vn -0.0596 -0.7716 -0.6333 -vn -0.0596 0.9934 0.0978 -vn -0.0596 -0.8804 -0.4706 -vn -0.0596 0.9934 -0.0978 -vn -0.0596 -0.9552 -0.2898 -vn -0.0596 0.9552 -0.2898 -vn -0.0596 -0.9934 -0.0978 -vn -0.0596 0.8804 -0.4706 -vn -0.0596 -0.9934 0.0978 -vn -0.0596 0.7716 -0.6333 -vn -0.3698 -0.8891 0.2697 -vn -0.3698 0.5894 -0.7182 -vn -0.3698 -0.8194 0.4380 -vn -0.3698 0.4380 -0.8194 -vn -0.3698 0.0911 0.9246 -vn -0.3698 -0.7182 0.5894 -vn -0.3698 0.2697 -0.8891 -vn -0.3698 0.2697 0.8891 -vn -0.3698 -0.5894 0.7182 -vn -0.3698 0.0911 -0.9246 -vn -0.3698 0.4380 0.8194 -vn -0.3698 -0.4380 0.8194 -vn -0.3698 -0.0911 -0.9246 -vn -0.3698 0.5894 0.7182 -vn -0.3698 -0.2697 0.8891 -vn -0.3698 -0.2697 -0.8891 -vn -0.3698 0.7182 0.5894 -vn -0.3698 -0.0911 0.9246 -vn -0.3698 -0.4380 -0.8194 -vn -0.3698 0.8194 0.4380 -vn -0.3698 -0.5894 -0.7182 -vn -0.3698 0.8891 0.2697 -vn -0.3698 -0.7182 -0.5894 -vn -0.3698 0.9246 0.0911 -vn -0.3698 -0.8194 -0.4380 -vn -0.3698 0.9246 -0.0911 -vn -0.3698 -0.8891 -0.2697 -vn -0.3698 0.8891 -0.2697 -vn -0.3698 -0.9246 -0.0911 -vn -0.3698 0.8194 -0.4380 -vn -0.3698 -0.9246 0.0911 -vn -0.3698 0.7182 -0.5894 -vn -0.0191 0.7729 -0.6343 -vn 0.4373 0.6952 -0.5705 -vn 0.4880 0.6747 -0.5537 -vn -0.4880 0.6747 -0.5537 -vn 0.5006 0.6692 -0.5492 -vn -0.4978 0.6704 -0.5502 -vn -0.0191 -0.9950 0.0980 -vn 0.4373 -0.8950 0.0882 -vn 0.4880 -0.8686 0.0856 -vn -0.4880 -0.8686 0.0856 -vn 0.4806 -0.8727 0.0859 -vn -0.4778 -0.8742 0.0861 -vn 0.4880 -0.8686 0.0855 -vn -0.0191 0.8818 -0.4713 -vn 0.4373 0.7931 -0.4239 -vn 0.4880 0.7698 -0.4115 -vn -0.4880 0.7698 -0.4115 -vn 0.5001 0.7637 -0.4082 -vn -0.4974 0.7651 -0.4090 -vn -0.4880 0.7698 -0.4114 -vn -0.0191 -0.9950 -0.0980 -vn 0.4373 -0.8950 -0.0881 -vn 0.4880 -0.8686 -0.0856 -vn -0.4880 -0.8686 -0.0856 -vn 0.4822 -0.8719 -0.0859 -vn -0.4794 -0.8733 -0.0860 -vn -0.0191 0.9568 -0.2902 -vn 0.4373 0.8606 -0.2611 -vn 0.4880 0.8352 -0.2534 -vn -0.4880 0.8352 -0.2534 -vn -0.4880 0.8353 -0.2534 -vn 0.4993 0.8291 -0.2515 -vn -0.4965 0.8306 -0.2520 -vn 0.4880 0.8353 -0.2534 -vn -0.0191 -0.9568 -0.2902 -vn 0.4373 -0.8606 -0.2611 -vn 0.4880 -0.8353 -0.2534 -vn -0.4880 -0.8352 -0.2534 -vn 0.4880 -0.8352 -0.2534 -vn -0.4880 -0.8353 -0.2534 -vn 0.4840 -0.8374 -0.2540 -vn -0.4813 -0.8388 -0.2544 -vn -0.0191 0.9950 -0.0980 -vn 0.4373 0.8950 -0.0882 -vn 0.4880 0.8686 -0.0856 -vn -0.4880 0.8686 -0.0856 -vn 0.4981 0.8630 -0.0850 -vn -0.4953 0.8645 -0.0851 -vn -0.0191 -0.8818 -0.4713 -vn 0.4373 -0.7931 -0.4239 -vn 0.4880 -0.7698 -0.4115 -vn -0.4880 -0.7698 -0.4115 -vn 0.4880 -0.7698 -0.4114 -vn 0.4861 -0.7707 -0.4120 -vn -0.4834 -0.7720 -0.4127 -vn -0.4880 -0.7698 -0.4114 -vn -0.0191 0.9950 0.0980 -vn 0.4373 0.8950 0.0882 -vn 0.4880 0.8686 0.0856 -vn -0.4880 0.8686 0.0856 -vn 0.4965 0.8638 0.0851 -vn -0.4938 0.8654 0.0852 -vn -0.0191 -0.7729 -0.6343 -vn 0.4373 -0.6952 -0.5705 -vn 0.4880 -0.6747 -0.5537 -vn -0.4880 -0.6747 -0.5537 -vn 0.4883 -0.6746 -0.5536 -vn -0.4856 -0.6758 -0.5546 -vn -0.0191 0.9568 0.2902 -vn 0.4373 0.8606 0.2611 -vn 0.4880 0.8353 0.2534 -vn -0.4880 0.8352 0.2534 -vn 0.4880 0.8352 0.2534 -vn -0.4880 0.8353 0.2534 -vn 0.4947 0.8316 0.2523 -vn -0.4920 0.8331 0.2527 -vn -0.0191 -0.6343 -0.7729 -vn 0.4373 -0.5705 -0.6952 -vn 0.4880 -0.5537 -0.6747 -vn -0.4880 -0.5537 -0.6747 -vn 0.4905 -0.5528 -0.6736 -vn -0.4878 -0.5538 -0.6748 -vn -0.0191 0.8818 0.4713 -vn 0.4373 0.7931 0.4239 -vn 0.4880 0.7698 0.4115 -vn -0.4880 0.7698 0.4115 -vn 0.4927 0.7675 0.4102 -vn -0.4899 0.7688 0.4109 -vn 0.4880 0.7698 0.4114 -vn -0.4880 0.7698 0.4114 -vn -0.0191 -0.4713 -0.8818 -vn 0.4373 -0.4239 -0.7931 -vn 0.4880 -0.4115 -0.7698 -vn -0.4880 -0.4115 -0.7698 -vn 0.4927 -0.4102 -0.7675 -vn -0.4899 -0.4109 -0.7688 -vn -0.4880 -0.4114 -0.7698 -vn -0.0191 -0.0980 0.9950 -vn 0.4373 -0.0881 0.8950 -vn 0.4880 -0.0856 0.8686 -vn -0.4880 -0.0856 0.8686 -vn 0.4806 -0.0860 0.8727 -vn -0.4778 -0.0861 0.8742 -vn -0.4880 -0.0855 0.8686 -vn -0.0191 0.7729 0.6343 -vn 0.4373 0.6952 0.5705 -vn 0.4880 0.6747 0.5537 -vn -0.4880 0.6747 0.5537 -vn 0.4905 0.6736 0.5528 -vn -0.4878 0.6748 0.5538 -vn -0.0191 -0.2902 -0.9568 -vn 0.4373 -0.2611 -0.8606 -vn 0.4880 -0.2534 -0.8353 -vn -0.4880 -0.2534 -0.8353 -vn 0.4880 -0.2534 -0.8352 -vn 0.4947 -0.2523 -0.8316 -vn -0.4920 -0.2527 -0.8331 -vn -0.4880 -0.2534 -0.8352 -vn -0.0191 -0.2902 0.9568 -vn 0.4373 -0.2611 0.8606 -vn 0.4880 -0.2534 0.8352 -vn -0.4880 -0.2534 0.8352 -vn -0.4880 -0.2534 0.8353 -vn 0.4793 -0.2548 0.8399 -vn -0.4766 -0.2552 0.8413 -vn 0.4880 -0.2534 0.8353 -vn -0.0191 0.6343 0.7729 -vn 0.4373 0.5705 0.6952 -vn 0.4880 0.5537 0.6747 -vn -0.4880 0.5537 0.6747 -vn 0.4883 0.5536 0.6746 -vn -0.4856 0.5546 0.6758 -vn -0.0191 -0.0980 -0.9950 -vn 0.4373 -0.0881 -0.8950 -vn 0.4880 -0.0856 -0.8686 -vn -0.4880 -0.0856 -0.8686 -vn 0.4965 -0.0851 -0.8638 -vn -0.4938 -0.0852 -0.8654 -vn -0.0191 -0.4713 0.8818 -vn 0.4373 -0.4239 0.7931 -vn 0.4880 -0.4114 0.7698 -vn -0.4880 -0.4115 0.7698 -vn -0.4880 -0.4114 0.7698 -vn 0.4784 -0.4139 0.7744 -vn -0.4757 -0.4146 0.7757 -vn 0.4880 -0.4115 0.7698 -vn -0.0191 0.4713 0.8818 -vn 0.4373 0.4239 0.7931 -vn 0.4880 0.4114 0.7698 -vn -0.4880 0.4115 0.7698 -vn 0.4861 0.4120 0.7707 -vn -0.4834 0.4127 0.7720 -vn 0.4880 0.4115 0.7698 -vn -0.4880 0.4114 0.7698 -vn -0.0191 0.0980 -0.9950 -vn 0.4373 0.0881 -0.8950 -vn 0.4880 0.0856 -0.8686 -vn -0.4880 0.0856 -0.8686 -vn 0.4981 0.0850 -0.8630 -vn -0.4953 0.0851 -0.8645 -vn -0.4880 0.0855 -0.8686 -vn -0.0191 -0.6343 0.7729 -vn 0.4373 -0.5705 0.6952 -vn 0.4880 -0.5537 0.6747 -vn -0.4880 -0.5537 0.6747 -vn 0.4780 -0.5572 0.6790 -vn -0.4744 -0.5567 0.6819 -vn 0.4904 -0.5577 0.6697 -vn -0.0191 0.2902 0.9568 -vn 0.4373 0.2611 0.8606 -vn 0.4880 0.2534 0.8352 -vn -0.4880 0.2534 0.8352 -vn -0.4880 0.2534 0.8353 -vn 0.4840 0.2540 0.8374 -vn -0.4813 0.2544 0.8388 -vn 0.4880 0.2534 0.8353 -vn -0.0191 0.2902 -0.9568 -vn 0.4373 0.2611 -0.8606 -vn 0.4880 0.2534 -0.8352 -vn -0.4880 0.2534 -0.8353 -vn 0.4993 0.2515 -0.8291 -vn -0.4965 0.2520 -0.8306 -vn 0.4880 0.2534 -0.8353 -vn -0.4880 0.2534 -0.8352 -vn -0.0191 -0.7729 0.6343 -vn 0.4373 -0.6952 0.5705 -vn 0.4880 -0.6747 0.5537 -vn -0.4880 -0.6747 0.5537 -vn 0.4780 -0.6790 0.5572 -vn -0.4731 -0.6846 0.5545 -vn 0.4892 -0.6722 0.5557 -vn -0.0191 0.0980 0.9950 -vn 0.4373 0.0882 0.8950 -vn 0.4880 0.0856 0.8686 -vn -0.4880 0.0856 0.8686 -vn 0.4880 0.0855 0.8686 -vn 0.4822 0.0859 0.8719 -vn -0.4794 0.0860 0.8734 -vn -0.4880 0.0855 0.8686 -vn -0.0191 0.4713 -0.8818 -vn 0.4373 0.4239 -0.7931 -vn 0.4880 0.4114 -0.7698 -vn -0.4880 0.4115 -0.7698 -vn 0.4880 0.4115 -0.7698 -vn 0.5001 0.4082 -0.7637 -vn -0.4974 0.4090 -0.7651 -vn -0.4880 0.4114 -0.7698 -vn -0.0191 -0.8818 0.4713 -vn 0.4373 -0.7931 0.4239 -vn 0.4880 -0.7698 0.4115 -vn -0.4880 -0.7698 0.4115 -vn 0.4784 -0.7744 0.4139 -vn -0.4757 -0.7757 0.4146 -vn -0.4880 -0.7698 0.4114 -vn -0.0191 0.6343 -0.7729 -vn 0.4373 0.5705 -0.6952 -vn 0.4880 0.5537 -0.6747 -vn -0.4880 0.5537 -0.6747 -vn 0.5006 0.5492 -0.6692 -vn -0.4978 0.5502 -0.6704 -vn -0.0191 -0.9568 0.2902 -vn 0.4373 -0.8606 0.2611 -vn 0.4880 -0.8352 0.2534 -vn -0.4880 -0.8352 0.2534 -vn -0.4880 -0.8353 0.2534 -vn 0.4793 -0.8399 0.2548 -vn -0.4766 -0.8413 0.2552 -vn -0.4880 -0.8353 0.2533 -vn -0.0993 -0.0975 -0.9903 -vn -0.0920 -0.2891 -0.9529 -vn -0.0775 -0.4700 -0.8793 -vn -0.0564 -0.6334 -0.7718 -vn -0.0294 -0.7727 -0.6341 -vn 0.0024 -0.8819 -0.4714 -vn 0.0377 -0.9563 -0.2901 -vn 0.0750 -0.9924 -0.0977 -vn 0.1127 -0.9888 0.0974 -vn 0.1492 -0.9462 0.2870 -vn 0.1831 -0.8670 0.4634 -vn 0.2130 -0.7553 0.6198 -vn 0.2380 -0.6162 0.7508 -vn 0.2573 -0.4555 0.8522 -vn 0.2705 -0.2795 0.9213 -vn 0.2771 -0.0942 0.9562 -vn 0.2771 0.0942 0.9562 -vn 0.2705 0.2795 0.9213 -vn 0.2573 0.4555 0.8522 -vn 0.2380 0.6162 0.7508 -vn 0.2130 0.7553 0.6198 -vn 0.1831 0.8670 0.4634 -vn 0.1492 0.9462 0.2870 -vn 0.1127 0.9888 0.0974 -vn 0.0750 0.9924 -0.0977 -vn 0.0377 0.9563 -0.2901 -vn 0.0024 0.8819 -0.4714 -vn -0.0294 0.7727 -0.6341 -vn -0.0564 0.6334 -0.7718 -vn -0.0775 0.4700 -0.8793 -vn -0.0351 -0.9564 0.2901 -vn -0.0920 0.2891 -0.9529 -vn -0.0993 0.0975 -0.9903 -vn 0.1152 -0.4683 0.8761 -vn -0.1060 0.4687 0.8769 -vn 0.0765 0.7707 -0.6325 -vn 0.0569 -0.8805 -0.4706 -vn -0.1149 -0.2884 0.9506 -vn -0.0118 0.9951 0.0980 -vn 0.1149 -0.2884 -0.9506 -vn -0.0569 -0.8805 0.4706 -vn -0.0931 0.6316 0.7697 -vn 0.0931 0.6316 -0.7697 -vn 0.0351 -0.9564 -0.2901 -vn -0.1195 -0.0973 0.9881 -vn 0.0119 0.9951 -0.0980 -vn 0.1060 -0.4687 -0.8770 -vn -0.0765 -0.7707 0.6325 -vn -0.0765 0.7707 0.6325 -vn 0.1060 0.4687 -0.8770 -vn 0.0119 -0.9951 -0.0980 -vn -0.1195 0.0973 0.9881 -vn 0.0351 0.9564 -0.2901 -vn 0.0931 -0.6316 -0.7697 -vn -0.0931 -0.6316 0.7697 -vn -0.0569 0.8805 0.4706 -vn 0.1149 0.2884 -0.9506 -vn -0.0118 -0.9951 0.0980 -vn -0.1149 0.2884 0.9506 -vn 0.0569 0.8805 -0.4706 -vn 0.0765 -0.7707 -0.6325 -vn -0.1060 -0.4687 0.8770 -vn -0.0351 0.9564 0.2901 -vn 0.1195 -0.0973 -0.9881 -vn 0.1195 0.0973 -0.9881 -vn -0.7025 -0.3729 -0.6062 -vn 0.1152 -0.0974 -0.9886 -vn 0.1152 0.7679 -0.6302 -vn 0.1152 -0.2884 0.9506 -vn 0.1152 -0.2884 -0.9506 -vn 0.1152 0.6302 -0.7679 -vn 0.1152 -0.0974 0.9886 -vn 0.1152 -0.4683 -0.8761 -vn 0.1152 0.4683 -0.8761 -vn 0.1152 0.0974 0.9886 -vn 0.1152 -0.6302 -0.7679 -vn 0.1152 0.2884 -0.9506 -vn 0.1152 0.2884 0.9506 -vn 0.1152 -0.7679 -0.6302 -vn 0.1152 0.0974 -0.9886 -vn 0.1152 0.4683 0.8761 -vn 0.1152 -0.8761 -0.4683 -vn 0.1152 0.6302 0.7679 -vn 0.1152 -0.9506 -0.2884 -vn 0.1152 0.7679 0.6302 -vn 0.1152 -0.9886 -0.0974 -vn 0.1152 0.8761 0.4683 -vn 0.1152 -0.9886 0.0974 -vn 0.1152 0.9506 0.2884 -vn 0.1152 -0.9506 0.2884 -vn 0.1152 0.9886 0.0974 -vn 0.1152 -0.8761 0.4683 -vn 0.1152 0.9886 -0.0974 -vn 0.1152 -0.7679 0.6302 -vn 0.1152 0.9506 -0.2884 -vn 0.1152 -0.6302 0.7679 -vn 0.1152 0.8761 -0.4683 -vn -0.1922 0.0966 -0.9766 -vn -0.1857 0.2864 -0.9400 -vn -0.1728 0.4660 -0.8677 -vn -0.1540 0.6288 -0.7621 -vn -0.1298 0.7685 -0.6266 -vn -0.1011 0.8791 -0.4658 -vn -0.0689 0.9558 -0.2859 -vn -0.0346 0.9950 -0.0940 -vn 0.0005 0.9948 0.1020 -vn 0.0349 0.9553 0.2937 -vn 0.0671 0.8783 0.4734 -vn 0.0960 0.7675 0.6338 -vn 0.1203 0.6279 0.7689 -vn 0.1393 0.4652 0.8742 -vn 0.1522 0.2859 0.9461 -vn 0.1588 0.0964 0.9826 -vn 0.1588 -0.0964 0.9826 -vn 0.1522 -0.2859 0.9461 -vn 0.1393 -0.4652 0.8742 -vn 0.1203 -0.6279 0.7689 -vn 0.0960 -0.7675 0.6338 -vn 0.0671 -0.8783 0.4734 -vn 0.0349 -0.9553 0.2937 -vn 0.0005 -0.9948 0.1020 -vn -0.0346 -0.9950 -0.0940 -vn -0.0689 -0.9558 -0.2859 -vn -0.1011 -0.8791 -0.4658 -vn -0.1298 -0.7685 -0.6266 -vn -0.1540 -0.6288 -0.7621 -vn -0.1728 -0.4660 -0.8677 -vn -0.1857 -0.2864 -0.9400 -vn -0.1922 -0.0966 -0.9766 -vn -0.9837 -0.0775 -0.1625 -vn -0.5622 -0.0867 -0.8224 -vn -0.9605 -0.2326 -0.1529 -vn -0.5376 -0.2588 -0.8025 -vn -0.9119 -0.3878 -0.1342 -vn -0.4884 -0.4261 -0.7615 -vn -0.8337 -0.5417 -0.1076 -vn -0.4148 -0.5843 -0.6975 -vn -0.7200 -0.6899 -0.0751 -vn -0.3184 -0.7269 -0.6085 -vn -0.5652 -0.8240 -0.0404 -vn -0.2025 -0.8460 -0.4933 -vn -0.3669 -0.9302 -0.0090 -vn -0.0731 -0.9328 -0.3529 -vn -0.1313 -0.9913 0.0124 -vn 0.0612 -0.9796 -0.1912 -vn 0.1229 -0.9923 0.0177 -vn 0.1903 -0.9816 -0.0156 -vn 0.3680 -0.9298 0.0045 -vn 0.3048 -0.9381 0.1644 -vn 0.5778 -0.8158 -0.0242 -vn 0.3975 -0.8530 0.3382 -vn 0.7387 -0.6713 -0.0616 -vn 0.4652 -0.7335 0.4955 -vn 0.8509 -0.5157 -0.0999 -vn 0.5091 -0.5888 0.6279 -vn 0.9229 -0.3614 -0.1330 -vn 0.5334 -0.4280 0.7296 -vn 0.9643 -0.2131 -0.1569 -vn 0.5445 -0.2590 0.7978 -vn 0.9830 -0.0703 -0.1693 -vn 0.5483 -0.0866 0.8318 -vn 0.9830 0.0703 -0.1693 -vn 0.5483 0.0866 0.8318 -vn 0.9643 0.2131 -0.1569 -vn 0.5445 0.2590 0.7978 -vn 0.9229 0.3614 -0.1330 -vn 0.5334 0.4280 0.7296 -vn 0.8509 0.5157 -0.0999 -vn 0.5091 0.5888 0.6279 -vn 0.7387 0.6713 -0.0616 -vn 0.4653 0.7335 0.4955 -vn 0.5778 0.8158 -0.0242 -vn 0.3975 0.8530 0.3382 -vn 0.3680 0.9298 0.0045 -vn 0.3048 0.9381 0.1644 -vn 0.1229 0.9923 0.0177 -vn 0.1903 0.9816 -0.0156 -vn -0.1313 0.9913 0.0124 -vn 0.0612 0.9796 -0.1912 -vn -0.3669 0.9302 -0.0090 -vn -0.0731 0.9328 -0.3529 -vn -0.5651 0.8240 -0.0404 -vn -0.2025 0.8460 -0.4933 -vn -0.7200 0.6899 -0.0751 -vn -0.3184 0.7269 -0.6085 -vn -0.8337 0.5417 -0.1076 -vn -0.4148 0.5843 -0.6975 -vn -0.9119 0.3878 -0.1342 -vn -0.4884 0.4261 -0.7615 -vn -0.9605 0.2326 -0.1529 -vn -0.5376 0.2588 -0.8025 -vn -0.9837 0.0775 -0.1625 -vn -0.5622 0.0867 -0.8224 -vn -0.6261 -0.5222 -0.5791 -vn -0.5175 -0.6667 -0.5363 -vn -0.3735 -0.7981 -0.4728 -vn -0.1954 -0.9023 -0.3844 -vn 0.0076 -0.9626 -0.2708 -vn 0.2169 -0.9663 -0.1387 -vn 0.4103 -0.9120 -0.0005 -vn 0.5709 -0.8106 0.1302 -vn 0.6925 -0.6790 0.2437 -vn 0.7776 -0.5321 0.3350 -vn 0.8327 -0.3798 0.4029 -vn 0.8649 -0.2271 0.4476 -vn 0.8796 -0.0755 0.4697 -vn 0.8796 0.0755 0.4697 -vn 0.8649 0.2272 0.4476 -vn 0.8327 0.3798 0.4029 -vn 0.7776 0.5321 0.3350 -vn 0.6925 0.6790 0.2437 -vn 0.5709 0.8106 0.1302 -vn 0.4103 0.9120 -0.0005 -vn 0.2169 0.9663 -0.1387 -vn 0.0076 0.9626 -0.2708 -vn -0.1954 0.9023 -0.3844 -vn -0.3735 0.7981 -0.4728 -vn -0.5175 0.6667 -0.5363 -vn -0.6261 0.5222 -0.5791 -vn -0.7025 0.3729 -0.6062 -vn -0.7506 0.2233 -0.6219 -vn -0.7738 0.0743 -0.6291 -vn -0.7506 -0.2233 -0.6219 -vn -0.7738 -0.0743 -0.6291 -vn -0.8764 0.0830 -0.4744 -vn -0.8532 0.2487 -0.4584 -vn -0.8050 0.4131 -0.4258 -vn -0.7283 0.5731 -0.3756 -vn -0.6193 0.7223 -0.3077 -vn -0.4760 0.8505 -0.2236 -vn -0.3013 0.9449 -0.1281 -vn -0.1043 0.9941 -0.0293 -vn 0.1010 0.9929 0.0632 -vn 0.2997 0.9435 0.1412 -vn 0.4803 0.8540 0.2000 -vn 0.6358 0.7338 0.2394 -vn 0.7628 0.5911 0.2620 -vn 0.8594 0.4327 0.2723 -vn 0.9244 0.2637 0.2755 -vn 0.9571 0.0886 0.2758 -vn 0.9571 -0.0886 0.2758 -vn 0.9244 -0.2637 0.2755 -vn 0.8594 -0.4327 0.2723 -vn 0.7628 -0.5911 0.2620 -vn 0.6358 -0.7338 0.2394 -vn 0.4803 -0.8540 0.2000 -vn 0.2997 -0.9435 0.1412 -vn 0.1010 -0.9929 0.0632 -vn -0.1043 -0.9941 -0.0293 -vn -0.3013 -0.9449 -0.1281 -vn -0.4760 -0.8505 -0.2236 -vn -0.6193 -0.7223 -0.3077 -vn -0.7283 -0.5731 -0.3756 -vn -0.8050 -0.4131 -0.4258 -vn -0.8532 -0.2487 -0.4584 -vn -0.8764 -0.0830 -0.4744 -vn -0.0993 -0.0975 0.9903 -vn -0.0920 -0.2891 0.9529 -vn -0.0775 -0.4700 0.8793 -vn -0.0564 -0.6334 0.7718 -vn -0.0294 -0.7727 0.6341 -vn 0.0024 -0.8819 0.4714 -vn 0.0377 -0.9563 0.2901 -vn 0.0750 -0.9924 0.0977 -vn 0.1127 -0.9888 -0.0974 -vn 0.1492 -0.9462 -0.2870 -vn 0.1831 -0.8670 -0.4634 -vn 0.2130 -0.7553 -0.6198 -vn 0.2380 -0.6162 -0.7508 -vn 0.2573 -0.4555 -0.8522 -vn 0.2705 -0.2795 -0.9213 -vn 0.2771 -0.0942 -0.9562 -vn 0.2771 0.0942 -0.9562 -vn 0.2705 0.2795 -0.9213 -vn 0.2573 0.4555 -0.8522 -vn 0.2380 0.6162 -0.7508 -vn 0.2130 0.7553 -0.6198 -vn 0.1831 0.8670 -0.4634 -vn 0.1492 0.9462 -0.2870 -vn 0.1127 0.9888 -0.0974 -vn 0.0750 0.9924 0.0977 -vn 0.0377 0.9563 0.2901 -vn 0.0024 0.8819 0.4714 -vn -0.0294 0.7727 0.6341 -vn -0.0564 0.6334 0.7718 -vn -0.0775 0.4700 0.8793 -vn -0.0351 -0.9564 -0.2901 -vn -0.0920 0.2891 0.9529 -vn -0.0993 0.0975 0.9903 -vn -0.1060 0.4687 -0.8770 -vn 0.0765 0.7707 0.6325 -vn 0.0569 -0.8805 0.4706 -vn -0.1149 -0.2884 -0.9506 -vn -0.0118 0.9951 -0.0980 -vn 0.1149 -0.2884 0.9506 -vn -0.0569 -0.8805 -0.4706 -vn -0.0931 0.6316 -0.7697 -vn 0.0931 0.6316 0.7697 -vn 0.0351 -0.9564 0.2901 -vn -0.1195 -0.0973 -0.9881 -vn 0.0119 0.9951 0.0980 -vn 0.1060 -0.4687 0.8769 -vn -0.0765 -0.7707 -0.6325 -vn -0.0765 0.7707 -0.6325 -vn 0.1060 0.4687 0.8769 -vn 0.0119 -0.9951 0.0980 -vn -0.1195 0.0973 -0.9881 -vn 0.0351 0.9564 0.2901 -vn 0.0931 -0.6316 0.7697 -vn -0.0931 -0.6316 -0.7697 -vn -0.0569 0.8805 -0.4706 -vn 0.1149 0.2884 0.9506 -vn -0.0118 -0.9951 -0.0980 -vn -0.1149 0.2884 -0.9506 -vn 0.0569 0.8805 0.4706 -vn 0.0765 -0.7707 0.6325 -vn -0.1060 -0.4687 -0.8770 -vn -0.0351 0.9564 -0.2901 -vn 0.1195 -0.0973 0.9881 -vn 0.1195 0.0973 0.9881 -vn -0.7025 -0.3729 0.6062 -vn 0.1152 -0.4683 0.8760 -vn 0.1152 0.4683 0.8760 -vn -0.1922 0.0966 0.9766 -vn -0.0000 -0.0000 -1.0000 -vn -0.1857 0.2864 0.9400 -vn -0.1728 0.4660 0.8677 -vn -0.1540 0.6288 0.7621 -vn -0.1298 0.7685 0.6266 -vn -0.1011 0.8791 0.4658 -vn -0.0689 0.9558 0.2859 -vn -0.0346 0.9950 0.0940 -vn 0.0005 0.9948 -0.1020 -vn 0.0349 0.9553 -0.2937 -vn 0.0671 0.8783 -0.4734 -vn 0.0960 0.7676 -0.6338 -vn 0.1203 0.6279 -0.7689 -vn 0.1393 0.4652 -0.8742 -vn 0.1522 0.2859 -0.9461 -vn 0.1588 0.0964 -0.9826 -vn 0.1588 -0.0964 -0.9826 -vn 0.1522 -0.2859 -0.9461 -vn 0.1393 -0.4652 -0.8742 -vn 0.1203 -0.6279 -0.7689 -vn 0.0960 -0.7675 -0.6338 -vn 0.0671 -0.8783 -0.4734 -vn 0.0349 -0.9553 -0.2937 -vn 0.0005 -0.9948 -0.1020 -vn -0.0346 -0.9950 0.0940 -vn -0.0689 -0.9558 0.2859 -vn -0.1011 -0.8791 0.4658 -vn -0.1298 -0.7685 0.6266 -vn -0.1540 -0.6288 0.7621 -vn -0.1728 -0.4660 0.8677 -vn -0.1857 -0.2864 0.9399 -vn -0.1922 -0.0966 0.9766 -vn -0.9837 -0.0775 0.1625 -vn -0.5622 -0.0867 0.8224 -vn -0.9605 -0.2326 0.1529 -vn -0.5376 -0.2588 0.8025 -vn -0.9119 -0.3878 0.1342 -vn -0.4884 -0.4261 0.7615 -vn -0.8337 -0.5417 0.1076 -vn -0.4148 -0.5843 0.6975 -vn -0.7200 -0.6899 0.0751 -vn -0.3184 -0.7269 0.6085 -vn -0.5652 -0.8240 0.0404 -vn -0.2025 -0.8460 0.4933 -vn -0.3669 -0.9302 0.0090 -vn -0.0731 -0.9328 0.3529 -vn -0.1313 -0.9913 -0.0124 -vn 0.0612 -0.9796 0.1912 -vn 0.1229 -0.9923 -0.0177 -vn 0.1903 -0.9816 0.0156 -vn 0.3680 -0.9298 -0.0045 -vn 0.3048 -0.9381 -0.1644 -vn 0.5778 -0.8158 0.0242 -vn 0.3975 -0.8530 -0.3382 -vn 0.7387 -0.6713 0.0616 -vn 0.4652 -0.7335 -0.4955 -vn 0.8509 -0.5157 0.0999 -vn 0.5091 -0.5888 -0.6279 -vn 0.9229 -0.3614 0.1330 -vn 0.5334 -0.4280 -0.7296 -vn 0.9643 -0.2131 0.1569 -vn 0.5445 -0.2590 -0.7978 -vn 0.9830 -0.0703 0.1693 -vn 0.5483 -0.0866 -0.8318 -vn 0.9830 0.0703 0.1693 -vn 0.5483 0.0866 -0.8318 -vn 0.9643 0.2131 0.1569 -vn 0.5445 0.2590 -0.7978 -vn 0.9229 0.3614 0.1330 -vn 0.5334 0.4280 -0.7296 -vn 0.8509 0.5157 0.0999 -vn 0.5091 0.5888 -0.6279 -vn 0.7387 0.6713 0.0616 -vn 0.4652 0.7335 -0.4955 -vn 0.5778 0.8158 0.0242 -vn 0.3975 0.8530 -0.3382 -vn 0.3680 0.9298 -0.0045 -vn 0.3048 0.9381 -0.1644 -vn 0.1229 0.9923 -0.0177 -vn 0.1903 0.9816 0.0156 -vn -0.1313 0.9913 -0.0124 -vn 0.0612 0.9796 0.1912 -vn -0.3669 0.9302 0.0090 -vn -0.0731 0.9328 0.3529 -vn -0.5652 0.8240 0.0404 -vn -0.2025 0.8460 0.4933 -vn -0.7200 0.6899 0.0751 -vn -0.3184 0.7269 0.6085 -vn -0.8337 0.5417 0.1076 -vn -0.4148 0.5843 0.6975 -vn -0.9119 0.3878 0.1342 -vn -0.4884 0.4261 0.7615 -vn -0.9605 0.2326 0.1529 -vn -0.5376 0.2588 0.8025 -vn -0.9837 0.0775 0.1625 -vn -0.5622 0.0867 0.8224 -vn -0.6261 -0.5221 0.5791 -vn -0.5175 -0.6667 0.5363 -vn -0.3736 -0.7981 0.4728 -vn -0.1954 -0.9023 0.3844 -vn 0.0076 -0.9626 0.2708 -vn 0.2169 -0.9663 0.1387 -vn 0.4103 -0.9120 0.0005 -vn 0.5709 -0.8106 -0.1302 -vn 0.6925 -0.6790 -0.2437 -vn 0.7776 -0.5321 -0.3350 -vn 0.8327 -0.3798 -0.4029 -vn 0.8649 -0.2271 -0.4476 -vn 0.8796 -0.0755 -0.4697 -vn 0.8796 0.0755 -0.4697 -vn 0.8649 0.2271 -0.4476 -vn 0.8327 0.3798 -0.4029 -vn 0.7776 0.5321 -0.3350 -vn 0.6925 0.6790 -0.2437 -vn 0.5709 0.8106 -0.1302 -vn 0.4103 0.9120 0.0005 -vn 0.2169 0.9663 0.1387 -vn 0.0076 0.9626 0.2708 -vn -0.1954 0.9023 0.3844 -vn -0.3735 0.7981 0.4728 -vn -0.5175 0.6667 0.5363 -vn -0.6261 0.5222 0.5791 -vn -0.7025 0.3729 0.6062 -vn -0.7506 0.2233 0.6219 -vn -0.7738 0.0743 0.6291 -vn -0.7506 -0.2233 0.6219 -vn -0.7738 -0.0743 0.6291 -vn -0.8764 0.0830 0.4744 -vn -0.8532 0.2486 0.4584 -vn -0.8050 0.4131 0.4258 -vn -0.7283 0.5731 0.3756 -vn -0.6193 0.7223 0.3077 -vn -0.4760 0.8505 0.2236 -vn -0.3013 0.9449 0.1281 -vn -0.1043 0.9941 0.0293 -vn 0.1010 0.9929 -0.0632 -vn 0.2997 0.9435 -0.1412 -vn 0.4803 0.8540 -0.2000 -vn 0.6358 0.7338 -0.2394 -vn 0.7629 0.5911 -0.2620 -vn 0.8594 0.4327 -0.2723 -vn 0.9244 0.2637 -0.2755 -vn 0.9571 0.0885 -0.2758 -vn 0.9571 -0.0885 -0.2758 -vn 0.9244 -0.2637 -0.2755 -vn 0.8594 -0.4327 -0.2723 -vn 0.7629 -0.5911 -0.2620 -vn 0.6358 -0.7338 -0.2394 -vn 0.4803 -0.8540 -0.2000 -vn 0.2997 -0.9435 -0.1412 -vn 0.1010 -0.9929 -0.0632 -vn -0.1043 -0.9941 0.0293 -vn -0.3013 -0.9449 0.1281 -vn -0.4761 -0.8505 0.2236 -vn -0.6193 -0.7223 0.3077 -vn -0.7283 -0.5731 0.3756 -vn -0.8050 -0.4131 0.4258 -vn -0.8532 -0.2487 0.4584 -vn -0.8764 -0.0830 0.4744 -vn -0.1060 0.4687 0.8770 -vn 0.1060 -0.4687 -0.8769 -vn -0.7386 -0.3778 -0.5583 -vn -0.1046 0.0957 -0.9899 -vn 0.6109 -0.7917 -0.0030 -vn -0.0972 0.2839 -0.9539 -vn -0.0827 0.4621 -0.8830 -vn -0.0613 0.6238 -0.7792 -vn -0.0337 0.7626 -0.6460 -vn -0.0006 0.8729 -0.4879 -vn 0.0369 0.9497 -0.3108 -vn 0.0775 0.9895 -0.1219 -vn 0.1198 0.9902 0.0712 -vn 0.1621 0.9518 0.2602 -vn 0.2029 0.8760 0.4375 -vn 0.2405 0.7663 0.5958 -vn 0.2731 0.6274 0.7292 -vn 0.2994 0.4651 0.8331 -vn 0.3177 0.2859 0.9040 -vn 0.3272 0.0965 0.9400 -vn 0.3272 -0.0965 0.9400 -vn 0.3177 -0.2859 0.9040 -vn 0.2994 -0.4651 0.8331 -vn 0.2731 -0.6274 0.7292 -vn 0.2405 -0.7663 0.5958 -vn 0.2029 -0.8760 0.4375 -vn 0.1621 -0.9518 0.2602 -vn 0.1198 -0.9902 0.0712 -vn 0.0775 -0.9895 -0.1219 -vn 0.0369 -0.9497 -0.3108 -vn -0.0006 -0.8729 -0.4879 -vn -0.0337 -0.7626 -0.6460 -vn -0.0613 -0.6238 -0.7792 -vn -0.0827 -0.4621 -0.8830 -vn -0.0972 -0.2839 -0.9539 -vn -0.1046 -0.0958 -0.9899 -vn -0.9275 -0.0776 -0.3658 -vn -0.5959 -0.0874 -0.7983 -vn -0.9062 -0.2331 -0.3528 -vn -0.5709 -0.2608 -0.7785 -vn -0.8612 -0.3894 -0.3267 -vn -0.5208 -0.4294 -0.7378 -vn -0.7880 -0.5449 -0.2868 -vn -0.4460 -0.5887 -0.6742 -vn -0.6804 -0.6947 -0.2333 -vn -0.3480 -0.7322 -0.5854 -vn -0.5329 -0.8294 -0.1675 -vn -0.2305 -0.8518 -0.4705 -vn -0.3445 -0.9341 -0.0935 -vn -0.0997 -0.9387 -0.3301 -vn -0.1227 -0.9923 -0.0187 -vn 0.0351 -0.9851 -0.1683 -vn 0.1144 -0.9923 0.0478 -vn 0.1634 -0.9865 0.0080 -vn 0.3432 -0.9341 0.0980 -vn 0.2754 -0.9424 0.1897 -vn 0.5439 -0.8293 0.1287 -vn 0.3638 -0.8565 0.3662 -vn 0.7057 -0.6942 0.1418 -vn 0.4254 -0.7357 0.5270 -vn 0.8271 -0.5437 0.1425 -vn 0.4615 -0.5895 0.6630 -vn 0.9115 -0.3880 0.1367 -vn 0.4778 -0.4275 0.7674 -vn 0.9641 -0.2319 0.1297 -vn 0.4823 -0.2580 0.8371 -vn 0.9891 -0.0771 0.1252 -vn 0.4823 -0.0862 0.8718 -vn 0.9891 0.0771 0.1252 -vn 0.4823 0.0862 0.8718 -vn 0.9641 0.2319 0.1297 -vn 0.4823 0.2580 0.8371 -vn 0.9115 0.3880 0.1367 -vn 0.4778 0.4275 0.7674 -vn 0.8271 0.5437 0.1425 -vn 0.4615 0.5895 0.6630 -vn 0.7057 0.6942 0.1418 -vn 0.4254 0.7357 0.5270 -vn 0.5438 0.8293 0.1287 -vn 0.3638 0.8565 0.3662 -vn 0.3432 0.9341 0.0980 -vn 0.2754 0.9424 0.1897 -vn 0.1144 0.9923 0.0478 -vn 0.1634 0.9865 0.0080 -vn -0.1227 0.9923 -0.0187 -vn 0.0351 0.9851 -0.1683 -vn -0.3445 0.9341 -0.0935 -vn -0.0997 0.9387 -0.3301 -vn -0.5329 0.8294 -0.1675 -vn -0.2305 0.8518 -0.4705 -vn -0.6804 0.6947 -0.2333 -vn -0.3480 0.7322 -0.5854 -vn -0.7880 0.5449 -0.2868 -vn -0.4460 0.5887 -0.6742 -vn -0.8612 0.3894 -0.3267 -vn -0.5208 0.4294 -0.7378 -vn -0.9062 0.2331 -0.3528 -vn -0.5709 0.2608 -0.7785 -vn -0.9275 0.0776 -0.3658 -vn -0.5959 0.0874 -0.7983 -vn -0.6636 -0.5294 -0.5286 -vn -0.5562 -0.6767 -0.4823 -vn -0.4132 -0.8110 -0.4142 -vn -0.2352 -0.9177 -0.3202 -vn -0.0315 -0.9791 -0.2007 -vn 0.1787 -0.9819 -0.0632 -vn 0.3725 -0.9247 0.0790 -vn 0.5325 -0.8195 0.2119 -vn 0.6524 -0.6842 0.3259 -vn 0.7351 -0.5346 0.4169 -vn 0.7879 -0.3806 0.4841 -vn 0.8182 -0.2272 0.5281 -vn 0.8318 -0.0755 0.5499 -vn 0.8318 0.0755 0.5499 -vn 0.8182 0.2272 0.5281 -vn 0.7879 0.3806 0.4841 -vn 0.7351 0.5346 0.4169 -vn 0.6524 0.6842 0.3259 -vn 0.5325 0.8195 0.2119 -vn 0.3725 0.9247 0.0790 -vn 0.1787 0.9819 -0.0632 -vn -0.0315 0.9791 -0.2007 -vn -0.2352 0.9177 -0.3202 -vn -0.4132 0.8110 -0.4142 -vn -0.5562 0.6767 -0.4823 -vn -0.6636 0.5294 -0.5286 -vn -0.7386 0.3777 -0.5583 -vn -0.7858 0.2260 -0.5757 -vn -0.8085 0.0752 -0.5837 -vn -0.7858 -0.2260 -0.5757 -vn -0.8085 -0.0752 -0.5837 -vn -0.9503 0.0881 -0.2984 -vn -0.9219 0.2632 -0.2841 -vn -0.8638 0.4341 -0.2559 -vn -0.7737 0.5960 -0.2150 -vn -0.6502 0.7419 -0.1639 -vn -0.4941 0.8628 -0.1069 -vn -0.3101 0.9494 -0.0501 -vn -0.1069 0.9943 -0.0008 -vn 0.1038 0.9940 0.0342 -vn 0.3100 0.9494 0.0506 -vn 0.5006 0.8644 0.0468 -vn 0.6662 0.7454 0.0255 -vn 0.7999 0.6002 -0.0073 -vn 0.8983 0.4374 -0.0429 -vn 0.9615 0.2650 -0.0726 -vn 0.9920 0.0887 -0.0894 -vn 0.9920 -0.0887 -0.0894 -vn 0.9615 -0.2650 -0.0726 -vn 0.8983 -0.4374 -0.0429 -vn 0.7999 -0.6001 -0.0073 -vn 0.6661 -0.7454 0.0255 -vn 0.5006 -0.8644 0.0468 -vn 0.3100 -0.9494 0.0506 -vn 0.1038 -0.9940 0.0342 -vn -0.1069 -0.9943 -0.0008 -vn -0.3101 -0.9494 -0.0501 -vn -0.4941 -0.8628 -0.1069 -vn -0.6502 -0.7419 -0.1639 -vn -0.7737 -0.5960 -0.2150 -vn -0.8637 -0.4341 -0.2559 -vn -0.9219 -0.2632 -0.2841 -vn -0.9503 -0.0881 -0.2984 -vn -0.3194 0.9437 -0.0860 -vn 0.7635 -0.6444 -0.0425 -vn -0.8741 -0.1360 -0.4663 -vn -0.4548 0.8752 -0.1650 -vn 0.8989 -0.4307 -0.0803 -vn -0.8175 -0.3916 -0.4223 -vn -0.5906 0.7655 -0.2552 -vn 0.9827 -0.1528 -0.1044 -vn -0.7169 -0.6052 -0.3462 -vn -0.7169 0.6052 -0.3462 -vn 0.9827 0.1528 -0.1044 -vn -0.5906 -0.7655 -0.2552 -vn -0.8175 0.3916 -0.4223 -vn 0.8989 0.4307 -0.0803 -vn -0.4548 -0.8752 -0.1650 -vn -0.8741 0.1360 -0.4663 -vn 0.7635 0.6445 -0.0425 -vn -0.3194 -0.9437 -0.0860 -vn 0.6109 0.7917 -0.0030 -vn -0.1886 -0.9818 -0.0232 -vn 0.4609 0.8869 0.0297 -vn -0.0622 -0.9978 0.0214 -vn 0.3202 0.9460 0.0506 -vn 0.0622 -0.9969 0.0480 -vn 0.1883 0.9804 0.0573 -vn 0.1883 -0.9804 0.0573 -vn 0.0622 0.9969 0.0480 -vn 0.3202 -0.9460 0.0506 -vn -0.0622 0.9978 0.0214 -vn 0.4609 -0.8869 0.0297 -vn -0.1886 0.9818 -0.0232 -vn 0.1060 -0.4687 0.8770 -vn -0.0765 0.7708 -0.6325 -vn 0.1060 0.4687 0.8770 -vn -0.7386 -0.3777 0.5583 -vn -0.1046 0.0958 0.9899 -vn 0.6109 -0.7917 0.0030 -vn -0.0972 0.2839 0.9539 -vn -0.0827 0.4621 0.8830 -vn -0.0613 0.6238 0.7792 -vn -0.0337 0.7626 0.6460 -vn -0.0006 0.8729 0.4879 -vn 0.0369 0.9497 0.3108 -vn 0.0775 0.9895 0.1219 -vn 0.1198 0.9902 -0.0712 -vn 0.1621 0.9518 -0.2602 -vn 0.2029 0.8760 -0.4375 -vn 0.2405 0.7663 -0.5958 -vn 0.2731 0.6274 -0.7292 -vn 0.2994 0.4651 -0.8331 -vn 0.3177 0.2859 -0.9040 -vn 0.3272 0.0965 -0.9400 -vn 0.3272 -0.0965 -0.9400 -vn 0.3177 -0.2859 -0.9040 -vn 0.2994 -0.4651 -0.8331 -vn 0.2731 -0.6274 -0.7292 -vn 0.2405 -0.7663 -0.5958 -vn 0.2029 -0.8760 -0.4375 -vn 0.1621 -0.9518 -0.2602 -vn 0.1198 -0.9902 -0.0712 -vn 0.0775 -0.9895 0.1219 -vn 0.0369 -0.9497 0.3108 -vn -0.0006 -0.8729 0.4879 -vn -0.0336 -0.7626 0.6460 -vn -0.0613 -0.6238 0.7792 -vn -0.0827 -0.4621 0.8830 -vn -0.0972 -0.2839 0.9539 -vn -0.1046 -0.0958 0.9899 -vn -0.9275 -0.0776 0.3658 -vn -0.5959 -0.0874 0.7983 -vn -0.9062 -0.2331 0.3528 -vn -0.5709 -0.2608 0.7785 -vn -0.8612 -0.3894 0.3267 -vn -0.5208 -0.4294 0.7378 -vn -0.7880 -0.5449 0.2868 -vn -0.4460 -0.5887 0.6742 -vn -0.6804 -0.6947 0.2333 -vn -0.3480 -0.7322 0.5854 -vn -0.5329 -0.8294 0.1675 -vn -0.2305 -0.8518 0.4705 -vn -0.3445 -0.9341 0.0935 -vn -0.0997 -0.9387 0.3301 -vn -0.1227 -0.9923 0.0187 -vn 0.0351 -0.9851 0.1683 -vn 0.1144 -0.9923 -0.0478 -vn 0.1634 -0.9865 -0.0080 -vn 0.3432 -0.9341 -0.0980 -vn 0.2754 -0.9424 -0.1897 -vn 0.5438 -0.8293 -0.1287 -vn 0.3638 -0.8565 -0.3662 -vn 0.7057 -0.6942 -0.1418 -vn 0.4254 -0.7357 -0.5270 -vn 0.8271 -0.5437 -0.1425 -vn 0.4615 -0.5895 -0.6630 -vn 0.9115 -0.3879 -0.1367 -vn 0.4778 -0.4275 -0.7674 -vn 0.9641 -0.2319 -0.1297 -vn 0.4823 -0.2580 -0.8371 -vn 0.9891 -0.0771 -0.1252 -vn 0.4823 -0.0861 -0.8718 -vn 0.9891 0.0771 -0.1252 -vn 0.4823 0.0861 -0.8718 -vn 0.9641 0.2319 -0.1297 -vn 0.4823 0.2580 -0.8371 -vn 0.9115 0.3879 -0.1367 -vn 0.4778 0.4275 -0.7674 -vn 0.8271 0.5437 -0.1425 -vn 0.4615 0.5895 -0.6630 -vn 0.7057 0.6942 -0.1418 -vn 0.4254 0.7357 -0.5270 -vn 0.5438 0.8293 -0.1287 -vn 0.3638 0.8565 -0.3662 -vn 0.3432 0.9341 -0.0980 -vn 0.2754 0.9424 -0.1897 -vn 0.1144 0.9923 -0.0478 -vn 0.1634 0.9865 -0.0080 -vn -0.1227 0.9923 0.0187 -vn 0.0351 0.9851 0.1683 -vn -0.3445 0.9341 0.0935 -vn -0.0997 0.9387 0.3301 -vn -0.5330 0.8294 0.1675 -vn -0.2305 0.8518 0.4705 -vn -0.6804 0.6947 0.2333 -vn -0.3480 0.7322 0.5854 -vn -0.7880 0.5449 0.2868 -vn -0.4460 0.5887 0.6742 -vn -0.8612 0.3894 0.3267 -vn -0.5208 0.4294 0.7378 -vn -0.9062 0.2331 0.3528 -vn -0.5709 0.2608 0.7785 -vn -0.9275 0.0776 0.3658 -vn -0.5959 0.0874 0.7983 -vn -0.6636 -0.5294 0.5286 -vn -0.5562 -0.6767 0.4823 -vn -0.4132 -0.8110 0.4142 -vn -0.2352 -0.9177 0.3202 -vn -0.0315 -0.9791 0.2007 -vn 0.1787 -0.9819 0.0632 -vn 0.3725 -0.9247 -0.0790 -vn 0.5325 -0.8195 -0.2119 -vn 0.6524 -0.6843 -0.3259 -vn 0.7351 -0.5346 -0.4169 -vn 0.7879 -0.3806 -0.4841 -vn 0.8182 -0.2272 -0.5281 -vn 0.8318 -0.0755 -0.5499 -vn 0.8318 0.0755 -0.5499 -vn 0.8182 0.2272 -0.5281 -vn 0.7879 0.3806 -0.4841 -vn 0.7351 0.5346 -0.4169 -vn 0.6524 0.6842 -0.3259 -vn 0.5325 0.8195 -0.2119 -vn 0.3725 0.9247 -0.0790 -vn 0.1787 0.9819 0.0632 -vn -0.0315 0.9791 0.2007 -vn -0.2352 0.9177 0.3202 -vn -0.4132 0.8110 0.4142 -vn -0.5562 0.6767 0.4823 -vn -0.6636 0.5294 0.5286 -vn -0.7386 0.3777 0.5583 -vn -0.7858 0.2260 0.5757 -vn -0.8085 0.0752 0.5837 -vn -0.7858 -0.2260 0.5757 -vn -0.8085 -0.0752 0.5837 -vn -0.9503 0.0881 0.2984 -vn -0.9219 0.2632 0.2841 -vn -0.8638 0.4341 0.2559 -vn -0.7737 0.5960 0.2150 -vn -0.6502 0.7419 0.1639 -vn -0.4941 0.8628 0.1069 -vn -0.3101 0.9494 0.0501 -vn -0.1069 0.9943 0.0008 -vn 0.1038 0.9940 -0.0342 -vn 0.3100 0.9494 -0.0506 -vn 0.5006 0.8644 -0.0468 -vn 0.6661 0.7454 -0.0255 -vn 0.7998 0.6002 0.0073 -vn 0.8983 0.4374 0.0429 -vn 0.9615 0.2650 0.0726 -vn 0.9920 0.0887 0.0894 -vn 0.9920 -0.0887 0.0894 -vn 0.9615 -0.2650 0.0726 -vn 0.8983 -0.4374 0.0429 -vn 0.7998 -0.6002 0.0073 -vn 0.6661 -0.7454 -0.0255 -vn 0.5006 -0.8644 -0.0468 -vn 0.3100 -0.9494 -0.0506 -vn 0.1038 -0.9940 -0.0342 -vn -0.1069 -0.9943 0.0008 -vn -0.3101 -0.9494 0.0501 -vn -0.4941 -0.8628 0.1069 -vn -0.6502 -0.7419 0.1639 -vn -0.7737 -0.5960 0.2150 -vn -0.8638 -0.4341 0.2559 -vn -0.9219 -0.2632 0.2841 -vn -0.9503 -0.0881 0.2984 -vn -0.3194 0.9437 0.0860 -vn 0.7635 -0.6445 0.0425 -vn -0.8741 -0.1360 0.4663 -vn -0.4548 0.8752 0.1650 -vn 0.8989 -0.4306 0.0803 -vn -0.8175 -0.3916 0.4223 -vn -0.5906 0.7655 0.2552 -vn 0.9827 -0.1529 0.1044 -vn -0.7169 -0.6052 0.3462 -vn -0.7169 0.6052 0.3462 -vn 0.9827 0.1529 0.1044 -vn -0.5906 -0.7655 0.2552 -vn -0.8175 0.3916 0.4223 -vn 0.8989 0.4306 0.0803 -vn -0.4548 -0.8752 0.1650 -vn -0.8741 0.1360 0.4663 -vn 0.7635 0.6445 0.0425 -vn -0.3194 -0.9437 0.0860 -vn 0.6109 0.7917 0.0030 -vn -0.1886 -0.9818 0.0232 -vn 0.4609 0.8869 -0.0297 -vn -0.0622 -0.9978 -0.0214 -vn 0.3202 0.9460 -0.0506 -vn 0.0622 -0.9969 -0.0480 -vn 0.1883 0.9804 -0.0573 -vn 0.1883 -0.9804 -0.0573 -vn 0.0622 0.9969 -0.0480 -vn 0.3202 -0.9460 -0.0506 -vn -0.0622 0.9978 -0.0214 -vn 0.4609 -0.8869 -0.0297 -vn -0.1886 0.9818 0.0232 -usemtl Jewelry +vn 1.0000 0.0000 0.0000 +usemtl Material.001 s off -f 768/1/1 738/2/1 58/3/1 57/4/1 -f 196/5/2 194/6/2 83/7/2 84/8/2 -f 1219/9/3 1218/10/3 1115/11/3 1114/12/3 -f 85/13/4 84/8/4 116/14/4 117/15/4 -f 197/16/5 196/5/5 84/8/5 85/13/5 -f 738/2/6 739/17/6 59/18/6 58/3/6 -f 198/19/7 197/16/7 85/13/7 86/20/7 -f 739/17/8 740/21/8 60/22/8 59/18/8 -f 769/23/9 741/24/9 34/25/9 33/26/9 -f 199/27/10 198/19/10 86/20/10 87/28/10 -f 740/21/11 742/29/11 61/30/11 60/22/11 -f 741/24/12 743/31/12 35/32/12 34/25/12 -f 200/33/13 199/27/13 87/28/13 88/34/13 -f 742/29/14 744/35/14 62/36/14 61/30/14 -f 743/31/15 745/37/15 36/38/15 35/32/15 -f 201/39/16 200/33/16 88/34/16 89/40/16 -f 744/35/17 746/41/17 63/42/17 62/36/17 -f 745/37/18 747/43/18 37/44/18 36/38/18 -f 202/45/1 201/39/1 89/40/1 90/46/1 -f 746/41/19 748/47/19 64/48/19 63/42/19 -f 747/43/20 749/49/20 38/50/20 37/44/20 -f 203/51/6 202/45/6 90/46/6 91/52/6 -f 748/47/21 769/53/21 33/54/21 64/48/21 -f 749/49/22 750/55/22 39/56/22 38/50/22 -f 204/57/8 203/51/8 91/52/8 92/58/8 -f 205/59/9 195/60/9 66/61/9 65/62/9 -f 750/55/23 751/63/23 40/64/23 39/56/23 -f 206/65/11 204/57/11 92/58/11 93/66/11 -f 207/67/12 205/59/12 65/62/12 67/68/12 -f 751/63/24 752/69/24 41/70/24 40/64/24 -f 208/71/14 206/65/14 93/66/14 94/72/14 -f 209/73/15 207/67/15 67/68/15 68/74/15 -f 752/69/25 753/75/25 42/76/25 41/70/25 -f 210/77/17 208/71/17 94/72/17 95/78/17 -f 211/79/18 209/73/18 68/74/18 69/80/18 -f 753/75/26 754/81/26 43/82/26 42/76/26 -f 212/83/19 210/77/19 95/78/19 96/84/19 -f 213/85/20 211/79/20 69/80/20 70/86/20 -f 754/81/27 755/87/27 44/88/27 43/82/27 -f 195/89/21 212/83/21 96/84/21 66/90/21 -f 214/91/22 213/85/22 70/86/22 71/92/22 -f 755/87/28 756/93/28 45/94/28 44/88/28 -f 215/95/23 214/91/23 71/92/23 72/96/23 -f 756/93/29 757/97/29 46/98/29 45/94/29 -f 216/99/24 215/95/24 72/96/24 73/100/24 -f 757/97/30 758/101/30 47/102/30 46/98/30 -f 217/103/25 216/99/25 73/100/25 74/104/25 -f 758/101/31 759/105/31 48/106/31 47/102/31 -f 218/107/26 217/103/26 74/104/26 75/108/26 -f 759/105/32 760/109/32 49/110/32 48/106/32 -f 219/111/27 218/107/27 75/108/27 76/112/27 -f 760/109/33 761/113/33 50/114/33 49/110/33 -f 220/115/28 219/111/28 76/112/28 77/116/28 -f 761/113/34 762/117/34 51/118/34 50/114/34 -f 221/119/29 220/115/29 77/116/29 78/120/29 -f 762/117/2 763/121/2 52/122/2 51/118/2 -f 222/123/30 221/119/30 78/120/30 79/124/30 -f 763/121/5 764/125/5 53/126/5 52/122/5 -f 223/127/31 222/123/31 79/124/31 80/128/31 -f 764/125/7 765/129/7 54/130/7 53/126/7 -f 224/131/32 223/127/32 80/128/32 81/132/32 -f 765/129/10 766/133/10 55/134/10 54/130/10 -f 225/135/33 224/131/33 81/132/33 82/136/33 -f 766/133/13 767/137/13 56/138/13 55/134/13 -f 194/6/34 225/135/34 82/136/34 83/7/34 -f 767/137/16 768/1/16 57/4/16 56/138/16 -f 128/139/35 127/140/35 159/141/35 160/142/35 -f 72/96/36 71/92/36 103/143/36 104/144/36 -f 86/20/37 85/13/37 117/15/37 118/145/37 -f 73/100/38 72/96/38 104/144/38 105/146/38 -f 87/28/39 86/20/39 118/145/39 119/147/39 -f 74/104/40 73/100/40 105/146/40 106/148/40 -f 88/34/41 87/28/41 119/147/41 120/149/41 -f 75/108/42 74/104/42 106/148/42 107/150/42 -f 89/40/43 88/34/43 120/149/43 121/151/43 -f 76/112/44 75/108/44 107/150/44 108/152/44 -f 90/46/45 89/40/45 121/151/45 122/153/45 -f 77/116/46 76/112/46 108/152/46 109/154/46 -f 91/52/47 90/46/47 122/153/47 123/155/47 -f 78/120/48 77/116/48 109/154/48 110/156/48 -f 92/58/49 91/52/49 123/155/49 124/157/49 -f 79/124/50 78/120/50 110/156/50 111/158/50 -f 65/62/51 66/61/51 98/159/51 97/160/51 -f 93/66/52 92/58/52 124/157/52 125/161/52 -f 80/128/53 79/124/53 111/158/53 112/162/53 -f 67/68/54 65/62/54 97/160/54 99/163/54 -f 94/72/55 93/66/55 125/161/55 126/164/55 -f 81/132/56 80/128/56 112/162/56 113/165/56 -f 68/74/57 67/68/57 99/163/57 100/166/57 -f 95/78/58 94/72/58 126/164/58 127/140/58 -f 82/136/59 81/132/59 113/165/59 114/167/59 -f 69/80/60 68/74/60 100/166/60 101/168/60 -f 96/84/61 95/78/61 127/140/61 128/139/61 -f 83/7/62 82/136/62 114/167/62 115/169/62 -f 70/86/63 69/80/63 101/168/63 102/170/63 -f 66/90/64 96/84/64 128/139/64 98/171/64 -f 84/8/65 83/7/65 115/169/65 116/14/65 -f 71/92/66 70/86/66 102/170/66 103/143/66 -f 150/172/67 149/173/67 161/174/67 -f 115/169/68 114/167/68 146/175/68 147/176/68 -f 102/170/69 101/168/69 133/177/69 134/178/69 -f 98/171/70 128/139/70 160/142/70 130/179/70 -f 116/14/71 115/169/71 147/176/71 148/180/71 -f 103/143/72 102/170/72 134/178/72 135/181/72 -f 117/15/73 116/14/73 148/180/73 149/173/73 -f 104/144/74 103/143/74 135/181/74 136/182/74 -f 118/145/75 117/15/75 149/173/75 150/172/75 -f 105/146/76 104/144/76 136/182/76 137/183/76 -f 119/147/77 118/145/77 150/172/77 151/184/77 -f 106/148/78 105/146/78 137/183/78 138/185/78 -f 120/149/79 119/147/79 151/184/79 152/186/79 -f 107/150/80 106/148/80 138/185/80 139/187/80 -f 121/151/81 120/149/81 152/186/81 153/188/81 -f 108/152/82 107/150/82 139/187/82 140/189/82 -f 122/153/83 121/151/83 153/188/83 154/190/83 -f 109/154/84 108/152/84 140/189/84 141/191/84 -f 123/155/85 122/153/85 154/190/85 155/192/85 -f 110/156/86 109/154/86 141/191/86 142/193/86 -f 124/157/87 123/155/87 155/192/87 156/194/87 -f 111/158/88 110/156/88 142/193/88 143/195/88 -f 97/160/89 98/159/89 130/196/89 129/197/89 -f 125/161/90 124/157/90 156/194/90 157/198/90 -f 112/162/91 111/158/91 143/195/91 144/199/91 -f 99/163/92 97/160/92 129/197/92 131/200/92 -f 126/164/93 125/161/93 157/198/93 158/201/93 -f 113/165/94 112/162/94 144/199/94 145/202/94 -f 100/166/95 99/163/95 131/200/95 132/203/95 -f 127/140/96 126/164/96 158/201/96 159/141/96 -f 114/167/97 113/165/97 145/202/97 146/175/97 -f 101/168/98 100/166/98 132/203/98 133/177/98 -f 137/183/99 136/182/99 161/204/99 -f 151/184/100 150/172/100 161/205/100 -f 138/185/101 137/183/101 161/206/101 -f 152/186/102 151/184/102 161/207/102 -f 139/187/103 138/185/103 161/208/103 -f 153/188/104 152/186/104 161/209/104 -f 140/189/105 139/187/105 161/210/105 -f 154/190/106 153/188/106 161/211/106 -f 141/191/107 140/189/107 161/212/107 -f 155/192/108 154/190/108 161/213/108 -f 142/193/109 141/191/109 161/214/109 -f 156/194/110 155/192/110 161/215/110 -f 143/195/111 142/193/111 161/216/111 -f 129/197/112 130/196/112 161/217/112 -f 157/198/113 156/194/113 161/218/113 -f 144/199/114 143/195/114 161/219/114 -f 131/200/115 129/197/115 161/220/115 -f 158/201/116 157/198/116 161/221/116 -f 145/202/117 144/199/117 161/222/117 -f 132/203/118 131/200/118 161/223/118 -f 159/141/119 158/201/119 161/224/119 -f 146/175/120 145/202/120 161/225/120 -f 133/177/121 132/203/121 161/226/121 -f 160/142/122 159/141/122 161/227/122 -f 147/176/123 146/175/123 161/228/123 -f 134/178/124 133/177/124 161/229/124 -f 130/179/125 160/142/125 161/230/125 -f 148/180/126 147/176/126 161/231/126 -f 135/181/127 134/178/127 161/232/127 -f 149/173/128 148/180/128 161/233/128 -f 136/182/129 135/181/129 161/234/129 -f 597/235/130 574/236/130 225/135/130 194/6/130 -f 574/236/131 562/237/131 224/131/131 225/135/131 -f 562/237/132 550/238/132 223/127/132 224/131/132 -f 550/238/133 538/239/133 222/123/133 223/127/133 -f 538/239/134 526/240/134 221/119/134 222/123/134 -f 526/240/135 514/241/135 220/115/135 221/119/135 -f 514/241/136 502/242/136 219/111/136 220/115/136 -f 502/242/137 490/243/137 218/107/137 219/111/137 -f 490/243/138 478/244/138 217/103/138 218/107/138 -f 478/244/139 466/245/139 216/99/139 217/103/139 -f 466/245/140 454/246/140 215/95/140 216/99/140 -f 454/246/141 442/247/141 214/91/141 215/95/141 -f 442/247/142 430/248/142 213/85/142 214/91/142 -f 609/249/143 418/250/143 212/83/143 195/89/143 -f 430/248/144 406/251/144 211/79/144 213/85/144 -f 418/250/145 394/252/145 210/77/145 212/83/145 -f 406/251/146 382/253/146 209/73/146 211/79/146 -f 394/252/147 370/254/147 208/71/147 210/77/147 -f 382/253/148 358/255/148 207/67/148 209/73/148 -f 370/254/149 346/256/149 206/65/149 208/71/149 -f 358/255/150 334/257/150 205/59/150 207/67/150 -f 346/256/151 322/258/151 204/57/151 206/65/151 -f 334/257/152 609/259/152 195/60/152 205/59/152 -f 322/258/153 310/260/153 203/51/153 204/57/153 -f 310/260/154 298/261/154 202/45/154 203/51/154 -f 298/261/155 286/262/155 201/39/155 202/45/155 -f 286/262/156 274/263/156 200/33/156 201/39/156 -f 274/263/157 262/264/157 199/27/157 200/33/157 -f 262/264/158 250/265/158 198/19/158 199/27/158 -f 250/265/159 238/266/159 197/16/159 198/19/159 -f 238/266/160 226/267/160 196/5/160 197/16/160 -f 226/267/161 597/235/161 194/6/161 196/5/161 -f 163/268/162 162/269/162 586/270/162 237/271/162 -f 237/271/163 586/270/163 587/272/163 236/273/163 -f 236/273/2 587/272/2 588/274/2 235/275/2 -f 235/275/2 588/274/2 589/276/2 234/277/2 -f 674/278/164 704/279/164 590/280/164 233/281/164 -f 233/281/2 590/280/2 591/282/2 232/283/2 -f 642/284/164 672/285/164 592/286/164 231/287/164 -f 231/287/2 592/286/2 593/288/2 230/289/2 -f 610/290/164 640/291/164 594/292/164 229/293/164 -f 229/293/2 594/292/2 595/294/2 228/295/2 -f 228/295/2 595/294/2 596/296/2 227/297/2 -f 227/297/165 596/296/165 597/235/165 226/267/165 -f 164/298/166 163/268/166 237/271/166 249/299/166 -f 249/299/167 237/271/167 236/273/167 248/300/167 -f 248/300/5 236/273/5 235/275/5 247/301/5 -f 247/301/5 235/275/5 234/277/5 246/302/5 -f 675/303/168 674/278/168 233/281/168 245/304/168 -f 245/304/5 233/281/5 232/283/5 244/305/5 -f 643/306/168 642/284/168 231/287/168 243/307/168 -f 243/307/5 231/287/5 230/289/5 242/308/5 -f 611/309/168 610/290/168 229/293/168 241/310/168 -f 241/310/5 229/293/5 228/295/5 240/311/5 -f 240/311/5 228/295/5 227/297/5 239/312/5 -f 239/312/169 227/297/169 226/267/169 238/266/169 -f 165/313/170 164/298/170 249/299/170 261/314/170 -f 261/314/171 249/299/171 248/300/171 260/315/171 -f 260/315/7 248/300/7 247/301/7 259/316/7 -f 259/316/7 247/301/7 246/302/7 258/317/7 -f 676/318/172 675/303/172 245/304/172 257/319/172 -f 257/319/7 245/304/7 244/305/7 256/320/7 -f 644/321/172 643/306/172 243/307/172 255/322/172 -f 255/322/7 243/307/7 242/308/7 254/323/7 -f 612/324/172 611/309/172 241/310/172 253/325/172 -f 253/325/7 241/310/7 240/311/7 252/326/7 -f 252/326/7 240/311/7 239/312/7 251/327/7 -f 251/327/173 239/312/173 238/266/173 250/265/173 -f 166/328/174 165/313/174 261/314/174 273/329/174 -f 273/329/175 261/314/175 260/315/175 272/330/175 -f 272/330/10 260/315/10 259/316/10 271/331/10 -f 271/331/10 259/316/10 258/317/10 270/332/10 -f 677/333/176 676/318/176 257/319/176 269/334/176 -f 269/334/10 257/319/10 256/320/10 268/335/10 -f 645/336/176 644/321/176 255/322/176 267/337/176 -f 267/337/10 255/322/10 254/323/10 266/338/10 -f 613/339/176 612/324/176 253/325/176 265/340/176 -f 265/340/10 253/325/10 252/326/10 264/341/10 -f 264/341/10 252/326/10 251/327/10 263/342/10 -f 263/342/177 251/327/177 250/265/177 262/264/177 -f 167/343/178 166/328/178 273/329/178 285/344/178 -f 285/344/179 273/329/179 272/330/179 284/345/179 -f 284/345/13 272/330/13 271/331/13 283/346/13 -f 283/346/13 271/331/13 270/332/13 282/347/13 -f 678/348/180 677/333/180 269/334/180 281/349/180 -f 281/349/13 269/334/13 268/335/13 280/350/13 -f 646/351/180 645/336/180 267/337/180 279/352/180 -f 279/352/13 267/337/13 266/338/13 278/353/13 -f 614/354/180 613/339/180 265/340/180 277/355/180 -f 277/355/13 265/340/13 264/341/13 276/356/13 -f 276/356/13 264/341/13 263/342/13 275/357/13 -f 275/357/181 263/342/181 262/264/181 274/263/181 -f 168/358/182 167/343/182 285/344/182 297/359/182 -f 297/359/183 285/344/183 284/345/183 296/360/183 -f 296/360/16 284/345/16 283/346/16 295/361/16 -f 295/361/16 283/346/16 282/347/16 294/362/16 -f 679/363/184 678/348/184 281/349/184 293/364/184 -f 293/364/16 281/349/16 280/350/16 292/365/16 -f 647/366/184 646/351/184 279/352/184 291/367/184 -f 291/367/16 279/352/16 278/353/16 290/368/16 -f 615/369/184 614/354/184 277/355/184 289/370/184 -f 289/370/16 277/355/16 276/356/16 288/371/16 -f 288/371/16 276/356/16 275/357/16 287/372/16 -f 287/372/185 275/357/185 274/263/185 286/262/185 -f 169/373/186 168/358/186 297/359/186 309/374/186 -f 309/374/187 297/359/187 296/360/187 308/375/187 -f 308/375/1 296/360/1 295/361/1 307/376/1 -f 307/376/1 295/361/1 294/362/1 306/377/1 -f 680/378/188 679/363/188 293/364/188 305/379/188 -f 305/379/1 293/364/1 292/365/1 304/380/1 -f 648/381/189 647/366/189 291/367/189 303/382/189 -f 303/382/1 291/367/1 290/368/1 302/383/1 -f 616/384/189 615/369/189 289/370/189 301/385/189 -f 301/385/1 289/370/1 288/371/1 300/386/1 -f 300/386/1 288/371/1 287/372/1 299/387/1 -f 299/387/190 287/372/190 286/262/190 298/261/190 -f 170/388/191 169/373/191 309/374/191 321/389/191 -f 321/389/192 309/374/192 308/375/192 320/390/192 -f 320/390/6 308/375/6 307/376/6 319/391/6 -f 319/391/6 307/376/6 306/377/6 318/392/6 -f 681/393/193 680/378/193 305/379/193 317/394/193 -f 317/394/6 305/379/6 304/380/6 316/395/6 -f 649/396/193 648/381/193 303/382/193 315/397/193 -f 315/397/6 303/382/6 302/383/6 314/398/6 -f 617/399/193 616/384/193 301/385/193 313/400/193 -f 313/400/6 301/385/6 300/386/6 312/401/6 -f 312/401/6 300/386/6 299/387/6 311/402/6 -f 311/402/194 299/387/194 298/261/194 310/260/194 -f 171/403/195 170/388/195 321/389/195 333/404/195 -f 333/404/196 321/389/196 320/390/196 332/405/196 -f 332/405/8 320/390/8 319/391/8 331/406/8 -f 331/406/8 319/391/8 318/392/8 330/407/8 -f 682/408/197 681/393/197 317/394/197 329/409/197 -f 329/409/8 317/394/8 316/395/8 328/410/8 -f 650/411/197 649/396/197 315/397/197 327/412/197 -f 327/412/8 315/397/8 314/398/8 326/413/8 -f 618/414/197 617/399/197 313/400/197 325/415/197 -f 325/415/8 313/400/8 312/401/8 324/416/8 -f 324/416/8 312/401/8 311/402/8 323/417/8 -f 323/417/198 311/402/198 310/260/198 322/258/198 -f 173/418/199 172/419/199 598/420/199 345/421/199 -f 345/421/200 598/420/200 599/422/200 344/423/200 -f 344/423/9 599/422/9 600/424/9 343/425/9 -f 343/425/9 600/424/9 601/426/9 342/427/9 -f 683/428/201 705/429/201 602/430/201 341/431/201 -f 341/431/9 602/430/9 603/432/9 340/433/9 -f 651/434/202 673/435/202 604/436/202 339/437/202 -f 339/437/9 604/436/9 605/438/9 338/439/9 -f 619/440/201 641/441/201 606/442/201 337/443/201 -f 337/443/9 606/442/9 607/444/9 336/445/9 -f 336/445/9 607/444/9 608/446/9 335/447/9 -f 335/447/203 608/446/203 609/259/203 334/257/203 -f 174/448/204 171/403/204 333/404/204 357/449/204 -f 357/449/205 333/404/205 332/405/205 356/450/205 -f 356/450/11 332/405/11 331/406/11 355/451/11 -f 355/451/11 331/406/11 330/407/11 354/452/11 -f 684/453/206 682/408/206 329/409/206 353/454/206 -f 353/454/11 329/409/11 328/410/11 352/455/11 -f 652/456/206 650/411/206 327/412/206 351/457/206 -f 351/457/11 327/412/11 326/413/11 350/458/11 -f 620/459/206 618/414/206 325/415/206 349/460/206 -f 349/460/11 325/415/11 324/416/11 348/461/11 -f 348/461/11 324/416/11 323/417/11 347/462/11 -f 347/462/207 323/417/207 322/258/207 346/256/207 -f 175/463/208 173/418/208 345/421/208 369/464/208 -f 369/464/209 345/421/209 344/423/209 368/465/209 -f 368/465/12 344/423/12 343/425/12 367/466/12 -f 367/466/12 343/425/12 342/427/12 366/467/12 -f 685/468/210 683/428/210 341/431/210 365/469/210 -f 365/469/12 341/431/12 340/433/12 364/470/12 -f 653/471/210 651/434/210 339/437/210 363/472/210 -f 363/472/12 339/437/12 338/439/12 362/473/12 -f 621/474/210 619/440/210 337/443/210 361/475/210 -f 361/475/12 337/443/12 336/445/12 360/476/12 -f 360/476/12 336/445/12 335/447/12 359/477/12 -f 359/477/211 335/447/211 334/257/211 358/255/211 -f 176/478/212 174/448/212 357/449/212 381/479/212 -f 381/479/213 357/449/213 356/450/213 380/480/213 -f 380/480/14 356/450/14 355/451/14 379/481/14 -f 379/481/14 355/451/14 354/452/14 378/482/14 -f 686/483/214 684/453/214 353/454/214 377/484/214 -f 377/484/14 353/454/14 352/455/14 376/485/14 -f 654/486/214 652/456/214 351/457/214 375/487/214 -f 375/487/14 351/457/14 350/458/14 374/488/14 -f 622/489/214 620/459/214 349/460/214 373/490/214 -f 373/490/14 349/460/14 348/461/14 372/491/14 -f 372/491/14 348/461/14 347/462/14 371/492/14 -f 371/492/215 347/462/215 346/256/215 370/254/215 -f 177/493/216 175/463/216 369/464/216 393/494/216 -f 393/494/217 369/464/217 368/465/217 392/495/217 -f 392/495/15 368/465/15 367/466/15 391/496/15 -f 391/496/15 367/466/15 366/467/15 390/497/15 -f 687/498/218 685/468/218 365/469/218 389/499/218 -f 389/499/15 365/469/15 364/470/15 388/500/15 -f 655/501/218 653/471/218 363/472/218 387/502/218 -f 387/502/15 363/472/15 362/473/15 386/503/15 -f 623/504/218 621/474/218 361/475/218 385/505/218 -f 385/505/15 361/475/15 360/476/15 384/506/15 -f 384/506/15 360/476/15 359/477/15 383/507/15 -f 383/507/219 359/477/219 358/255/219 382/253/219 -f 178/508/220 176/478/220 381/479/220 405/509/220 -f 405/509/221 381/479/221 380/480/221 404/510/221 -f 404/510/17 380/480/17 379/481/17 403/511/17 -f 403/511/17 379/481/17 378/482/17 402/512/17 -f 688/513/222 686/483/222 377/484/222 401/514/222 -f 401/514/17 377/484/17 376/485/17 400/515/17 -f 656/516/222 654/486/222 375/487/222 399/517/222 -f 399/517/17 375/487/17 374/488/17 398/518/17 -f 624/519/222 622/489/222 373/490/222 397/520/222 -f 397/520/17 373/490/17 372/491/17 396/521/17 -f 396/521/17 372/491/17 371/492/17 395/522/17 -f 395/522/223 371/492/223 370/254/223 394/252/223 -f 179/523/224 177/493/224 393/494/224 417/524/224 -f 417/524/225 393/494/225 392/495/225 416/525/225 -f 416/525/18 392/495/18 391/496/18 415/526/18 -f 415/526/18 391/496/18 390/497/18 414/527/18 -f 689/528/226 687/498/226 389/499/226 413/529/226 -f 413/529/18 389/499/18 388/500/18 412/530/18 -f 657/531/226 655/501/226 387/502/226 411/532/226 -f 411/532/18 387/502/18 386/503/18 410/533/18 -f 625/534/226 623/504/226 385/505/226 409/535/226 -f 409/535/18 385/505/18 384/506/18 408/536/18 -f 408/536/18 384/506/18 383/507/18 407/537/18 -f 407/537/227 383/507/227 382/253/227 406/251/227 -f 180/538/228 178/508/228 405/509/228 429/539/228 -f 429/539/229 405/509/229 404/510/229 428/540/229 -f 428/540/19 404/510/19 403/511/19 427/541/19 -f 427/541/19 403/511/19 402/512/19 426/542/19 -f 690/543/230 688/513/230 401/514/230 425/544/230 -f 425/544/19 401/514/19 400/515/19 424/545/19 -f 658/546/230 656/516/230 399/517/230 423/547/230 -f 423/547/19 399/517/19 398/518/19 422/548/19 -f 626/549/230 624/519/230 397/520/230 421/550/230 -f 421/550/19 397/520/19 396/521/19 420/551/19 -f 420/551/19 396/521/19 395/522/19 419/552/19 -f 419/552/231 395/522/231 394/252/231 418/250/231 -f 181/553/232 179/523/232 417/524/232 441/554/232 -f 441/554/233 417/524/233 416/525/233 440/555/233 -f 440/555/20 416/525/20 415/526/20 439/556/20 -f 439/556/20 415/526/20 414/527/20 438/557/20 -f 691/558/234 689/528/234 413/529/234 437/559/234 -f 437/559/20 413/529/20 412/530/20 436/560/20 -f 659/561/234 657/531/234 411/532/234 435/562/234 -f 435/562/20 411/532/20 410/533/20 434/563/20 -f 627/564/234 625/534/234 409/535/234 433/565/234 -f 433/565/20 409/535/20 408/536/20 432/566/20 -f 432/566/20 408/536/20 407/537/20 431/567/20 -f 431/567/235 407/537/235 406/251/235 430/248/235 -f 172/568/236 180/538/236 429/539/236 598/569/236 -f 598/569/237 429/539/237 428/540/237 599/570/237 -f 599/570/21 428/540/21 427/541/21 600/571/21 -f 600/571/21 427/541/21 426/542/21 601/572/21 -f 705/573/238 690/543/238 425/544/238 602/574/238 -f 602/574/21 425/544/21 424/545/21 603/575/21 -f 673/576/239 658/546/239 423/547/239 604/577/239 -f 604/577/21 423/547/21 422/548/21 605/578/21 -f 641/579/238 626/549/238 421/550/238 606/580/238 -f 606/580/21 421/550/21 420/551/21 607/581/21 -f 607/581/21 420/551/21 419/552/21 608/582/21 -f 608/582/240 419/552/240 418/250/240 609/249/240 -f 182/583/241 181/553/241 441/554/241 453/584/241 -f 453/584/242 441/554/242 440/555/242 452/585/242 -f 452/585/22 440/555/22 439/556/22 451/586/22 -f 451/586/22 439/556/22 438/557/22 450/587/22 -f 692/588/243 691/558/243 437/559/243 449/589/243 -f 449/589/22 437/559/22 436/560/22 448/590/22 -f 660/591/243 659/561/243 435/562/243 447/592/243 -f 447/592/22 435/562/22 434/563/22 446/593/22 -f 628/594/243 627/564/243 433/565/243 445/595/243 -f 445/595/22 433/565/22 432/566/22 444/596/22 -f 444/596/22 432/566/22 431/567/22 443/597/22 -f 443/597/244 431/567/244 430/248/244 442/247/244 -f 183/598/245 182/583/245 453/584/245 465/599/245 -f 465/599/246 453/584/246 452/585/246 464/600/246 -f 464/600/23 452/585/23 451/586/23 463/601/23 -f 463/601/23 451/586/23 450/587/23 462/602/23 -f 693/603/247 692/588/247 449/589/247 461/604/247 -f 461/604/23 449/589/23 448/590/23 460/605/23 -f 661/606/247 660/591/247 447/592/247 459/607/247 -f 459/607/23 447/592/23 446/593/23 458/608/23 -f 629/609/247 628/594/247 445/595/247 457/610/247 -f 457/610/23 445/595/23 444/596/23 456/611/23 -f 456/611/23 444/596/23 443/597/23 455/612/23 -f 455/612/248 443/597/248 442/247/248 454/246/248 -f 184/613/249 183/598/249 465/599/249 477/614/249 -f 477/614/250 465/599/250 464/600/250 476/615/250 -f 476/615/24 464/600/24 463/601/24 475/616/24 -f 475/616/24 463/601/24 462/602/24 474/617/24 -f 694/618/251 693/603/251 461/604/251 473/619/251 -f 473/619/24 461/604/24 460/605/24 472/620/24 -f 662/621/251 661/606/251 459/607/251 471/622/251 -f 471/622/24 459/607/24 458/608/24 470/623/24 -f 630/624/251 629/609/251 457/610/251 469/625/251 -f 469/625/24 457/610/24 456/611/24 468/626/24 -f 468/626/24 456/611/24 455/612/24 467/627/24 -f 467/627/252 455/612/252 454/246/252 466/245/252 -f 185/628/253 184/613/253 477/614/253 489/629/253 -f 489/629/254 477/614/254 476/615/254 488/630/254 -f 488/630/25 476/615/25 475/616/25 487/631/25 -f 487/631/25 475/616/25 474/617/25 486/632/25 -f 695/633/255 694/618/255 473/619/255 485/634/255 -f 485/634/25 473/619/25 472/620/25 484/635/25 -f 663/636/255 662/621/255 471/622/255 483/637/255 -f 483/637/25 471/622/25 470/623/25 482/638/25 -f 631/639/255 630/624/255 469/625/255 481/640/255 -f 481/640/25 469/625/25 468/626/25 480/641/25 -f 480/641/25 468/626/25 467/627/25 479/642/25 -f 479/642/256 467/627/256 466/245/256 478/244/256 -f 186/643/257 185/628/257 489/629/257 501/644/257 -f 501/644/258 489/629/258 488/630/258 500/645/258 -f 500/645/26 488/630/26 487/631/26 499/646/26 -f 499/646/26 487/631/26 486/632/26 498/647/26 -f 696/648/259 695/633/259 485/634/259 497/649/259 -f 497/649/26 485/634/26 484/635/26 496/650/26 -f 664/651/259 663/636/259 483/637/259 495/652/259 -f 495/652/26 483/637/26 482/638/26 494/653/26 -f 632/654/259 631/639/259 481/640/259 493/655/259 -f 493/655/26 481/640/26 480/641/26 492/656/26 -f 492/656/26 480/641/26 479/642/26 491/657/26 -f 491/657/260 479/642/260 478/244/260 490/243/260 -f 187/658/261 186/643/261 501/644/261 513/659/261 -f 513/659/262 501/644/262 500/645/262 512/660/262 -f 512/660/27 500/645/27 499/646/27 511/661/27 -f 511/661/27 499/646/27 498/647/27 510/662/27 -f 697/663/263 696/648/263 497/649/263 509/664/263 -f 509/664/27 497/649/27 496/650/27 508/665/27 -f 665/666/263 664/651/263 495/652/263 507/667/263 -f 507/667/27 495/652/27 494/653/27 506/668/27 -f 633/669/263 632/654/263 493/655/263 505/670/263 -f 505/670/27 493/655/27 492/656/27 504/671/27 -f 504/671/27 492/656/27 491/657/27 503/672/27 -f 503/672/264 491/657/264 490/243/264 502/242/264 -f 188/673/265 187/658/265 513/659/265 525/674/265 -f 525/674/266 513/659/266 512/660/266 524/675/266 -f 524/675/28 512/660/28 511/661/28 523/676/28 -f 523/676/28 511/661/28 510/662/28 522/677/28 -f 698/678/267 697/663/267 509/664/267 521/679/267 -f 521/679/28 509/664/28 508/665/28 520/680/28 -f 666/681/267 665/666/267 507/667/267 519/682/267 -f 519/682/28 507/667/28 506/668/28 518/683/28 -f 634/684/267 633/669/267 505/670/267 517/685/267 -f 517/685/28 505/670/28 504/671/28 516/686/28 -f 516/686/28 504/671/28 503/672/28 515/687/28 -f 515/687/268 503/672/268 502/242/268 514/241/268 -f 189/688/269 188/673/269 525/674/269 537/689/269 -f 537/689/270 525/674/270 524/675/270 536/690/270 -f 536/690/29 524/675/29 523/676/29 535/691/29 -f 535/691/29 523/676/29 522/677/29 534/692/29 -f 699/693/271 698/678/271 521/679/271 533/694/271 -f 533/694/29 521/679/29 520/680/29 532/695/29 -f 667/696/271 666/681/271 519/682/271 531/697/271 -f 531/697/29 519/682/29 518/683/29 530/698/29 -f 635/699/271 634/684/271 517/685/271 529/700/271 -f 529/700/29 517/685/29 516/686/29 528/701/29 -f 528/701/29 516/686/29 515/687/29 527/702/29 -f 527/702/272 515/687/272 514/241/272 526/240/272 -f 190/703/273 189/688/273 537/689/273 549/704/273 -f 549/704/274 537/689/274 536/690/274 548/705/274 -f 548/705/30 536/690/30 535/691/30 547/706/30 -f 547/706/30 535/691/30 534/692/30 546/707/30 -f 700/708/275 699/693/275 533/694/275 545/709/275 -f 545/709/30 533/694/30 532/695/30 544/710/30 -f 668/711/275 667/696/275 531/697/275 543/712/275 -f 543/712/30 531/697/30 530/698/30 542/713/30 -f 636/714/275 635/699/275 529/700/275 541/715/275 -f 541/715/30 529/700/30 528/701/30 540/716/30 -f 540/716/30 528/701/30 527/702/30 539/717/30 -f 539/717/276 527/702/276 526/240/276 538/239/276 -f 191/718/277 190/703/277 549/704/277 561/719/277 -f 561/719/278 549/704/278 548/705/278 560/720/278 -f 560/720/31 548/705/31 547/706/31 559/721/31 -f 559/721/31 547/706/31 546/707/31 558/722/31 -f 701/723/279 700/708/279 545/709/279 557/724/279 -f 557/724/31 545/709/31 544/710/31 556/725/31 -f 669/726/279 668/711/279 543/712/279 555/727/279 -f 555/727/31 543/712/31 542/713/31 554/728/31 -f 637/729/279 636/714/279 541/715/279 553/730/279 -f 553/730/31 541/715/31 540/716/31 552/731/31 -f 552/731/31 540/716/31 539/717/31 551/732/31 -f 551/732/280 539/717/280 538/239/280 550/238/280 -f 192/733/281 191/718/281 561/719/281 573/734/281 -f 573/734/282 561/719/282 560/720/282 572/735/282 -f 572/735/32 560/720/32 559/721/32 571/736/32 -f 571/736/32 559/721/32 558/722/32 570/737/32 -f 702/738/283 701/723/283 557/724/283 569/739/283 -f 569/739/32 557/724/32 556/725/32 568/740/32 -f 670/741/283 669/726/283 555/727/283 567/742/283 -f 567/742/32 555/727/32 554/728/32 566/743/32 -f 638/744/283 637/729/283 553/730/283 565/745/283 -f 565/745/32 553/730/32 552/731/32 564/746/32 -f 564/746/32 552/731/32 551/732/32 563/747/32 -f 563/747/284 551/732/284 550/238/284 562/237/284 -f 193/748/285 192/733/285 573/734/285 585/749/285 -f 585/749/286 573/734/286 572/735/286 584/750/286 -f 584/750/33 572/735/33 571/736/33 583/751/33 -f 583/751/33 571/736/33 570/737/33 582/752/33 -f 703/753/287 702/738/287 569/739/287 581/754/287 -f 581/754/33 569/739/33 568/740/33 580/755/33 -f 671/756/287 670/741/287 567/742/287 579/757/287 -f 579/757/33 567/742/33 566/743/33 578/758/33 -f 639/759/287 638/744/287 565/745/287 577/760/287 -f 577/760/33 565/745/33 564/746/33 576/761/33 -f 576/761/33 564/746/33 563/747/33 575/762/33 -f 575/762/288 563/747/288 562/237/288 574/236/288 -f 162/269/289 193/748/289 585/749/289 586/270/289 -f 586/270/290 585/749/290 584/750/290 587/272/290 -f 587/272/34 584/750/34 583/751/34 588/274/34 -f 588/274/34 583/751/34 582/752/34 589/276/34 -f 704/279/291 703/753/291 581/754/291 590/280/291 -f 590/280/34 581/754/34 580/755/34 591/282/34 -f 672/285/291 671/756/291 579/757/291 592/286/291 -f 592/286/34 579/757/34 578/758/34 593/288/34 -f 640/291/291 639/759/291 577/760/291 594/292/291 -f 594/292/34 577/760/34 576/761/34 595/294/34 -f 595/294/34 576/761/34 575/762/34 596/296/34 -f 596/296/292 575/762/292 574/236/292 597/235/292 -f 593/288/293 578/758/293 639/759/293 640/291/293 -f 578/758/294 566/743/294 638/744/294 639/759/294 -f 566/743/295 554/728/295 637/729/295 638/744/295 -f 554/728/296 542/713/296 636/714/296 637/729/296 -f 542/713/297 530/698/297 635/699/297 636/714/297 -f 530/698/298 518/683/298 634/684/298 635/699/298 -f 518/683/299 506/668/299 633/669/299 634/684/299 -f 506/668/300 494/653/300 632/654/300 633/669/300 -f 494/653/301 482/638/301 631/639/301 632/654/301 -f 482/638/302 470/623/302 630/624/302 631/639/302 -f 470/623/303 458/608/303 629/609/303 630/624/303 -f 458/608/304 446/593/304 628/594/304 629/609/304 -f 446/593/305 434/563/305 627/564/305 628/594/305 -f 605/578/306 422/548/306 626/549/306 641/579/306 -f 434/563/307 410/533/307 625/534/307 627/564/307 -f 422/548/308 398/518/308 624/519/308 626/549/308 -f 410/533/309 386/503/309 623/504/309 625/534/309 -f 398/518/310 374/488/310 622/489/310 624/519/310 -f 386/503/311 362/473/311 621/474/311 623/504/311 -f 374/488/312 350/458/312 620/459/312 622/489/312 -f 362/473/313 338/439/313 619/440/313 621/474/313 -f 350/458/314 326/413/314 618/414/314 620/459/314 -f 338/439/315 605/438/315 641/441/315 619/440/315 -f 326/413/316 314/398/316 617/399/316 618/414/316 -f 314/398/317 302/383/317 616/384/317 617/399/317 -f 302/383/318 290/368/318 615/369/318 616/384/318 -f 290/368/319 278/353/319 614/354/319 615/369/319 -f 278/353/320 266/338/320 613/339/320 614/354/320 -f 266/338/321 254/323/321 612/324/321 613/339/321 -f 254/323/322 242/308/322 611/309/322 612/324/322 -f 242/308/323 230/289/323 610/290/323 611/309/323 -f 230/289/324 593/288/324 640/291/324 610/290/324 -f 591/282/325 580/755/325 671/756/325 672/285/325 -f 580/755/294 568/740/294 670/741/294 671/756/294 -f 568/740/295 556/725/295 669/726/295 670/741/295 -f 556/725/296 544/710/296 668/711/296 669/726/296 -f 544/710/297 532/695/297 667/696/297 668/711/297 -f 532/695/298 520/680/298 666/681/298 667/696/298 -f 520/680/299 508/665/299 665/666/299 666/681/299 -f 508/665/300 496/650/300 664/651/300 665/666/300 -f 496/650/301 484/635/301 663/636/301 664/651/301 -f 484/635/302 472/620/302 662/621/302 663/636/302 -f 472/620/303 460/605/303 661/606/303 662/621/303 -f 460/605/304 448/590/304 660/591/304 661/606/304 -f 448/590/305 436/560/305 659/561/305 660/591/305 -f 603/575/306 424/545/306 658/546/306 673/576/306 -f 436/560/307 412/530/307 657/531/307 659/561/307 -f 424/545/308 400/515/308 656/516/308 658/546/308 -f 412/530/309 388/500/309 655/501/309 657/531/309 -f 400/515/310 376/485/310 654/486/310 656/516/310 -f 388/500/311 364/470/311 653/471/311 655/501/311 -f 376/485/312 352/455/312 652/456/312 654/486/312 -f 364/470/313 340/433/313 651/434/313 653/471/313 -f 352/455/314 328/410/314 650/411/314 652/456/314 -f 340/433/315 603/432/315 673/435/315 651/434/315 -f 328/410/316 316/395/316 649/396/316 650/411/316 -f 316/395/317 304/380/317 648/381/317 649/396/317 -f 304/380/318 292/365/318 647/366/318 648/381/318 -f 292/365/326 280/350/326 646/351/326 647/366/326 -f 280/350/320 268/335/320 645/336/320 646/351/320 -f 268/335/321 256/320/321 644/321/321 645/336/321 -f 256/320/322 244/305/322 643/306/322 644/321/322 -f 244/305/323 232/283/323 642/284/323 643/306/323 -f 232/283/324 591/282/324 672/285/324 642/284/324 -f 589/276/293 582/752/293 703/753/293 704/279/293 -f 582/752/294 570/737/294 702/738/294 703/753/294 -f 570/737/327 558/722/327 701/723/327 702/738/327 -f 558/722/296 546/707/296 700/708/296 701/723/296 -f 546/707/297 534/692/297 699/693/297 700/708/297 -f 534/692/298 522/677/298 698/678/298 699/693/298 -f 522/677/299 510/662/299 697/663/299 698/678/299 -f 510/662/300 498/647/300 696/648/300 697/663/300 -f 498/647/301 486/632/301 695/633/301 696/648/301 -f 486/632/328 474/617/328 694/618/328 695/633/328 -f 474/617/329 462/602/329 693/603/329 694/618/329 -f 462/602/304 450/587/304 692/588/304 693/603/304 -f 450/587/305 438/557/305 691/558/305 692/588/305 -f 601/572/306 426/542/306 690/543/306 705/573/306 -f 438/557/307 414/527/307 689/528/307 691/558/307 -f 426/542/308 402/512/308 688/513/308 690/543/308 -f 414/527/309 390/497/309 687/498/309 689/528/309 -f 402/512/310 378/482/310 686/483/310 688/513/310 -f 390/497/311 366/467/311 685/468/311 687/498/311 -f 378/482/312 354/452/312 684/453/312 686/483/312 -f 366/467/313 342/427/313 683/428/313 685/468/313 -f 354/452/314 330/407/314 682/408/314 684/453/314 -f 342/427/315 601/426/315 705/429/315 683/428/315 -f 330/407/316 318/392/316 681/393/316 682/408/316 -f 318/392/317 306/377/317 680/378/317 681/393/317 -f 306/377/318 294/362/318 679/363/318 680/378/318 -f 294/362/330 282/347/330 678/348/330 679/363/330 -f 282/347/331 270/332/331 677/333/331 678/348/331 -f 270/332/321 258/317/321 676/318/321 677/333/321 -f 258/317/322 246/302/322 675/303/322 676/318/322 -f 246/302/323 234/277/323 674/278/323 675/303/323 -f 234/277/324 589/276/324 704/279/324 674/278/324 -f 24/763/16 25/764/16 707/765/16 737/766/16 -f 23/767/13 24/763/13 737/766/13 736/768/13 -f 22/769/10 23/767/10 736/768/10 735/770/10 -f 21/771/7 22/769/7 735/770/7 734/772/7 -f 20/773/5 21/771/5 734/772/5 733/774/5 -f 19/775/2 20/773/2 733/774/2 732/776/2 -f 18/777/34 19/775/34 732/776/34 731/778/34 -f 17/779/33 18/777/33 731/778/33 730/780/33 -f 16/781/32 17/779/32 730/780/32 729/782/32 -f 15/783/31 16/781/31 729/782/31 728/784/31 -f 14/785/30 15/783/30 728/784/30 727/786/30 -f 13/787/29 14/785/29 727/786/29 726/788/29 -f 12/789/28 13/787/28 726/788/28 725/790/28 -f 11/791/27 12/789/27 725/790/27 724/792/27 -f 10/793/26 11/791/26 724/792/26 723/794/26 -f 9/795/25 10/793/25 723/794/25 722/796/25 -f 8/797/24 9/795/24 722/796/24 721/798/24 -f 7/799/23 8/797/23 721/798/23 720/800/23 -f 6/801/22 7/799/22 720/800/22 719/802/22 -f 32/803/21 1/804/21 711/805/21 718/806/21 -f 5/807/20 6/801/20 719/802/20 717/808/20 -f 31/809/19 32/803/19 718/806/19 716/810/19 -f 4/811/18 5/807/18 717/808/18 715/812/18 -f 30/813/17 31/809/17 716/810/17 714/814/17 -f 3/815/15 4/811/15 715/812/15 713/816/15 -f 29/817/14 30/813/14 714/814/14 712/818/14 -f 2/819/12 3/815/12 713/816/12 710/820/12 -f 28/821/11 29/817/11 712/818/11 709/822/11 -f 1/823/9 2/819/9 710/820/9 711/824/9 -f 27/825/8 28/821/8 709/822/8 708/826/8 -f 26/827/6 27/825/6 708/826/6 706/828/6 -f 25/764/1 26/827/1 706/828/1 707/765/1 -f 1025/829/332 770/830/332 768/1/332 767/137/332 -f 1017/831/333 1025/829/333 767/137/333 766/133/333 -f 1009/832/334 1017/831/334 766/133/334 765/129/334 -f 1001/833/335 1009/832/335 765/129/335 764/125/335 -f 993/834/336 1001/833/336 764/125/336 763/121/336 -f 985/835/337 993/834/337 763/121/337 762/117/337 -f 977/836/338 985/835/338 762/117/338 761/113/338 -f 969/837/339 977/836/339 761/113/339 760/109/339 -f 961/838/340 969/837/340 760/109/340 759/105/340 -f 953/839/341 961/838/341 759/105/341 758/101/341 -f 945/840/342 953/839/342 758/101/342 757/97/342 -f 937/841/343 945/840/343 757/97/343 756/93/343 -f 929/842/344 937/841/344 756/93/344 755/87/344 -f 921/843/345 929/842/345 755/87/345 754/81/345 -f 913/844/346 921/843/346 754/81/346 753/75/346 -f 905/845/347 913/844/347 753/75/347 752/69/347 -f 897/846/348 905/845/348 752/69/348 751/63/348 -f 889/847/349 897/846/349 751/63/349 750/55/349 -f 881/848/350 889/847/350 750/55/350 749/49/350 -f 873/849/351 778/850/351 769/53/351 748/47/351 -f 865/851/352 881/848/352 749/49/352 747/43/352 -f 857/852/353 873/849/353 748/47/353 746/41/353 -f 849/853/354 865/851/354 747/43/354 745/37/354 -f 841/854/355 857/852/355 746/41/355 744/35/355 -f 833/855/356 849/853/356 745/37/356 743/31/356 -f 825/856/357 841/854/357 744/35/357 742/29/357 -f 817/857/358 833/855/358 743/31/358 741/24/358 -f 809/858/359 825/856/359 742/29/359 740/21/359 -f 778/859/360 817/857/360 741/24/360 769/23/360 -f 801/860/361 809/858/361 740/21/361 739/17/361 -f 793/861/362 801/860/362 739/17/362 738/2/362 -f 770/830/363 793/861/363 738/2/363 768/1/363 -f 707/765/364 706/828/364 786/862/364 777/863/364 -f 777/863/365 786/862/365 787/864/365 776/865/365 -f 776/865/1 787/864/1 788/866/1 775/867/1 -f 1058/868/366 1060/869/366 789/870/366 774/871/366 -f 774/871/1 789/870/1 790/872/1 773/873/1 -f 1026/874/367 1028/875/367 791/876/367 772/877/367 -f 772/877/1 791/876/1 792/878/1 771/879/1 -f 771/879/368 792/878/368 793/861/368 770/830/368 -f 706/828/369 708/826/369 794/880/369 786/862/369 -f 786/862/370 794/880/370 795/881/370 787/864/370 -f 787/864/6 795/881/6 796/882/6 788/866/6 -f 1060/869/371 1061/883/371 797/884/371 789/870/371 -f 789/870/6 797/884/6 798/885/6 790/872/6 -f 1028/875/371 1029/886/371 799/887/371 791/876/371 -f 791/876/6 799/887/6 800/888/6 792/878/6 -f 792/878/372 800/888/372 801/860/372 793/861/372 -f 708/826/373 709/822/373 802/889/373 794/880/373 -f 794/880/374 802/889/374 803/890/374 795/881/374 -f 795/881/8 803/890/8 804/891/8 796/882/8 -f 1061/883/375 1062/892/375 805/893/375 797/884/375 -f 797/884/8 805/893/8 806/894/8 798/885/8 -f 1029/886/375 1030/895/375 807/896/375 799/887/375 -f 799/887/8 807/896/8 808/897/8 800/888/8 -f 800/888/376 808/897/376 809/858/376 801/860/376 -f 711/824/377 710/820/377 810/898/377 785/899/377 -f 785/899/378 810/898/378 811/900/378 784/901/378 -f 784/901/9 811/900/9 812/902/9 783/903/9 -f 1059/904/379 1063/905/379 813/906/379 782/907/379 -f 782/907/9 813/906/9 814/908/9 781/909/9 -f 1027/910/380 1031/911/380 815/912/380 780/913/380 -f 780/913/9 815/912/9 816/914/9 779/915/9 -f 779/915/381 816/914/381 817/857/381 778/859/381 -f 709/822/382 712/818/382 818/916/382 802/889/382 -f 802/889/383 818/916/383 819/917/383 803/890/383 -f 803/890/11 819/917/11 820/918/11 804/891/11 -f 1062/892/384 1064/919/384 821/920/384 805/893/384 -f 805/893/11 821/920/11 822/921/11 806/894/11 -f 1030/895/384 1032/922/384 823/923/384 807/896/384 -f 807/896/11 823/923/11 824/924/11 808/897/11 -f 808/897/385 824/924/385 825/856/385 809/858/385 -f 710/820/386 713/816/386 826/925/386 810/898/386 -f 810/898/387 826/925/387 827/926/387 811/900/387 -f 811/900/12 827/926/12 828/927/12 812/902/12 -f 1063/905/388 1065/928/388 829/929/388 813/906/388 -f 813/906/12 829/929/12 830/930/12 814/908/12 -f 1031/911/388 1033/931/388 831/932/388 815/912/388 -f 815/912/12 831/932/12 832/933/12 816/914/12 -f 816/914/389 832/933/389 833/855/389 817/857/389 -f 712/818/390 714/814/390 834/934/390 818/916/390 -f 818/916/391 834/934/391 835/935/391 819/917/391 -f 819/917/14 835/935/14 836/936/14 820/918/14 -f 1064/919/392 1066/937/392 837/938/392 821/920/392 -f 821/920/14 837/938/14 838/939/14 822/921/14 -f 1032/922/392 1034/940/392 839/941/392 823/923/392 -f 823/923/14 839/941/14 840/942/14 824/924/14 -f 824/924/393 840/942/393 841/854/393 825/856/393 -f 713/816/394 715/812/394 842/943/394 826/925/394 -f 826/925/395 842/943/395 843/944/395 827/926/395 -f 827/926/15 843/944/15 844/945/15 828/927/15 -f 1065/928/396 1067/946/396 845/947/396 829/929/396 -f 829/929/15 845/947/15 846/948/15 830/930/15 -f 1033/931/396 1035/949/396 847/950/396 831/932/396 -f 831/932/15 847/950/15 848/951/15 832/933/15 -f 832/933/397 848/951/397 849/853/397 833/855/397 -f 714/814/398 716/810/398 850/952/398 834/934/398 -f 834/934/399 850/952/399 851/953/399 835/935/399 -f 835/935/17 851/953/17 852/954/17 836/936/17 -f 1066/937/400 1068/955/400 853/956/400 837/938/400 -f 837/938/17 853/956/17 854/957/17 838/939/17 -f 1034/940/400 1036/958/400 855/959/400 839/941/400 -f 839/941/17 855/959/17 856/960/17 840/942/17 -f 840/942/401 856/960/401 857/852/401 841/854/401 -f 715/812/402 717/808/402 858/961/402 842/943/402 -f 842/943/403 858/961/403 859/962/403 843/944/403 -f 843/944/18 859/962/18 860/963/18 844/945/18 -f 1067/946/404 1069/964/404 861/965/404 845/947/404 -f 845/947/18 861/965/18 862/966/18 846/948/18 -f 1035/949/404 1037/967/404 863/968/404 847/950/404 -f 847/950/18 863/968/18 864/969/18 848/951/18 -f 848/951/405 864/969/405 865/851/405 849/853/405 -f 716/810/406 718/806/406 866/970/406 850/952/406 -f 850/952/407 866/970/407 867/971/407 851/953/407 -f 851/953/19 867/971/19 868/972/19 852/954/19 -f 1068/955/408 1070/973/408 869/974/408 853/956/408 -f 853/956/19 869/974/19 870/975/19 854/957/19 -f 1036/958/408 1038/976/408 871/977/408 855/959/408 -f 855/959/19 871/977/19 872/978/19 856/960/19 -f 856/960/409 872/978/409 873/849/409 857/852/409 -f 717/808/410 719/802/410 874/979/410 858/961/410 -f 858/961/411 874/979/411 875/980/411 859/962/411 -f 859/962/20 875/980/20 876/981/20 860/963/20 -f 1069/964/412 1071/982/412 877/983/412 861/965/412 -f 861/965/20 877/983/20 878/984/20 862/966/20 -f 1037/967/412 1039/985/412 879/986/412 863/968/412 -f 863/968/20 879/986/20 880/987/20 864/969/20 -f 864/969/413 880/987/413 881/848/413 865/851/413 -f 718/806/414 711/805/414 785/988/414 866/970/414 -f 866/970/415 785/988/415 784/989/415 867/971/415 -f 867/971/21 784/989/21 783/990/21 868/972/21 -f 1070/973/416 1059/991/416 782/992/416 869/974/416 -f 869/974/21 782/992/21 781/993/21 870/975/21 -f 1038/976/417 1027/994/417 780/995/417 871/977/417 -f 871/977/21 780/995/21 779/996/21 872/978/21 -f 872/978/418 779/996/418 778/850/418 873/849/418 -f 719/802/419 720/800/419 882/997/419 874/979/419 -f 874/979/420 882/997/420 883/998/420 875/980/420 -f 875/980/22 883/998/22 884/999/22 876/981/22 -f 1071/982/421 1072/1000/421 885/1001/421 877/983/421 -f 877/983/22 885/1001/22 886/1002/22 878/984/22 -f 1039/985/421 1040/1003/421 887/1004/421 879/986/421 -f 879/986/22 887/1004/22 888/1005/22 880/987/22 -f 880/987/422 888/1005/422 889/847/422 881/848/422 -f 720/800/423 721/798/423 890/1006/423 882/997/423 -f 882/997/424 890/1006/424 891/1007/424 883/998/424 -f 883/998/23 891/1007/23 892/1008/23 884/999/23 -f 1072/1000/425 1073/1009/425 893/1010/425 885/1001/425 -f 885/1001/23 893/1010/23 894/1011/23 886/1002/23 -f 1040/1003/425 1041/1012/425 895/1013/425 887/1004/425 -f 887/1004/23 895/1013/23 896/1014/23 888/1005/23 -f 888/1005/426 896/1014/426 897/846/426 889/847/426 -f 721/798/427 722/796/427 898/1015/427 890/1006/427 -f 890/1006/428 898/1015/428 899/1016/428 891/1007/428 -f 891/1007/24 899/1016/24 900/1017/24 892/1008/24 -f 1073/1009/429 1074/1018/429 901/1019/429 893/1010/429 -f 893/1010/24 901/1019/24 902/1020/24 894/1011/24 -f 1041/1012/429 1042/1021/429 903/1022/429 895/1013/429 -f 895/1013/24 903/1022/24 904/1023/24 896/1014/24 -f 896/1014/430 904/1023/430 905/845/430 897/846/430 -f 722/796/431 723/794/431 906/1024/431 898/1015/431 -f 898/1015/432 906/1024/432 907/1025/432 899/1016/432 -f 899/1016/25 907/1025/25 908/1026/25 900/1017/25 -f 1074/1018/433 1075/1027/433 909/1028/433 901/1019/433 -f 901/1019/25 909/1028/25 910/1029/25 902/1020/25 -f 1042/1021/433 1043/1030/433 911/1031/433 903/1022/433 -f 903/1022/25 911/1031/25 912/1032/25 904/1023/25 -f 904/1023/434 912/1032/434 913/844/434 905/845/434 -f 723/794/435 724/792/435 914/1033/435 906/1024/435 -f 906/1024/436 914/1033/436 915/1034/436 907/1025/436 -f 907/1025/26 915/1034/26 916/1035/26 908/1026/26 -f 1075/1027/437 1076/1036/437 917/1037/437 909/1028/437 -f 909/1028/26 917/1037/26 918/1038/26 910/1029/26 -f 1043/1030/437 1044/1039/437 919/1040/437 911/1031/437 -f 911/1031/26 919/1040/26 920/1041/26 912/1032/26 -f 912/1032/438 920/1041/438 921/843/438 913/844/438 -f 724/792/439 725/790/439 922/1042/439 914/1033/439 -f 914/1033/440 922/1042/440 923/1043/440 915/1034/440 -f 915/1034/27 923/1043/27 924/1044/27 916/1035/27 -f 1076/1036/441 1077/1045/441 925/1046/441 917/1037/441 -f 917/1037/27 925/1046/27 926/1047/27 918/1038/27 -f 1044/1039/441 1045/1048/441 927/1049/441 919/1040/441 -f 919/1040/27 927/1049/27 928/1050/27 920/1041/27 -f 920/1041/442 928/1050/442 929/842/442 921/843/442 -f 725/790/443 726/788/443 930/1051/443 922/1042/443 -f 922/1042/444 930/1051/444 931/1052/444 923/1043/444 -f 923/1043/28 931/1052/28 932/1053/28 924/1044/28 -f 1077/1045/445 1078/1054/445 933/1055/445 925/1046/445 -f 925/1046/28 933/1055/28 934/1056/28 926/1047/28 -f 1045/1048/445 1046/1057/445 935/1058/445 927/1049/445 -f 927/1049/28 935/1058/28 936/1059/28 928/1050/28 -f 928/1050/446 936/1059/446 937/841/446 929/842/446 -f 726/788/447 727/786/447 938/1060/447 930/1051/447 -f 930/1051/448 938/1060/448 939/1061/448 931/1052/448 -f 931/1052/29 939/1061/29 940/1062/29 932/1053/29 -f 1078/1054/449 1079/1063/449 941/1064/449 933/1055/449 -f 933/1055/29 941/1064/29 942/1065/29 934/1056/29 -f 1046/1057/449 1047/1066/449 943/1067/449 935/1058/449 -f 935/1058/29 943/1067/29 944/1068/29 936/1059/29 -f 936/1059/450 944/1068/450 945/840/450 937/841/450 -f 727/786/451 728/784/451 946/1069/451 938/1060/451 -f 938/1060/452 946/1069/452 947/1070/452 939/1061/452 -f 939/1061/30 947/1070/30 948/1071/30 940/1062/30 -f 1079/1063/453 1080/1072/453 949/1073/453 941/1064/453 -f 941/1064/30 949/1073/30 950/1074/30 942/1065/30 -f 1047/1066/453 1048/1075/453 951/1076/453 943/1067/453 -f 943/1067/30 951/1076/30 952/1077/30 944/1068/30 -f 944/1068/454 952/1077/454 953/839/454 945/840/454 -f 728/784/455 729/782/455 954/1078/455 946/1069/455 -f 946/1069/456 954/1078/456 955/1079/456 947/1070/456 -f 947/1070/31 955/1079/31 956/1080/31 948/1071/31 -f 1080/1072/457 1081/1081/457 957/1082/457 949/1073/457 -f 949/1073/31 957/1082/31 958/1083/31 950/1074/31 -f 1048/1075/457 1049/1084/457 959/1085/457 951/1076/457 -f 951/1076/31 959/1085/31 960/1086/31 952/1077/31 -f 952/1077/458 960/1086/458 961/838/458 953/839/458 -f 729/782/459 730/780/459 962/1087/459 954/1078/459 -f 954/1078/460 962/1087/460 963/1088/460 955/1079/460 -f 955/1079/32 963/1088/32 964/1089/32 956/1080/32 -f 1081/1081/461 1082/1090/461 965/1091/461 957/1082/461 -f 957/1082/32 965/1091/32 966/1092/32 958/1083/32 -f 1049/1084/461 1050/1093/461 967/1094/461 959/1085/461 -f 959/1085/32 967/1094/32 968/1095/32 960/1086/32 -f 960/1086/462 968/1095/462 969/837/462 961/838/462 -f 730/780/463 731/778/463 970/1096/463 962/1087/463 -f 962/1087/464 970/1096/464 971/1097/464 963/1088/464 -f 963/1088/33 971/1097/33 972/1098/33 964/1089/33 -f 1082/1090/465 1083/1099/465 973/1100/465 965/1091/465 -f 965/1091/33 973/1100/33 974/1101/33 966/1092/33 -f 1050/1093/465 1051/1102/465 975/1103/465 967/1094/465 -f 967/1094/33 975/1103/33 976/1104/33 968/1095/33 -f 968/1095/466 976/1104/466 977/836/466 969/837/466 -f 731/778/467 732/776/467 978/1105/467 970/1096/467 -f 970/1096/468 978/1105/468 979/1106/468 971/1097/468 -f 971/1097/34 979/1106/34 980/1107/34 972/1098/34 -f 1083/1099/469 1084/1108/469 981/1109/469 973/1100/469 -f 973/1100/34 981/1109/34 982/1110/34 974/1101/34 -f 1051/1102/470 1052/1111/470 983/1112/470 975/1103/470 -f 975/1103/34 983/1112/34 984/1113/34 976/1104/34 -f 976/1104/471 984/1113/471 985/835/471 977/836/471 -f 732/776/472 733/774/472 986/1114/472 978/1105/472 -f 978/1105/473 986/1114/473 987/1115/473 979/1106/473 -f 979/1106/2 987/1115/2 988/1116/2 980/1107/2 -f 1084/1108/474 1085/1117/474 989/1118/474 981/1109/474 -f 981/1109/2 989/1118/2 990/1119/2 982/1110/2 -f 1052/1111/474 1053/1120/474 991/1121/474 983/1112/474 -f 983/1112/2 991/1121/2 992/1122/2 984/1113/2 -f 984/1113/475 992/1122/475 993/834/475 985/835/475 -f 733/774/476 734/772/476 994/1123/476 986/1114/476 -f 986/1114/477 994/1123/477 995/1124/477 987/1115/477 -f 987/1115/5 995/1124/5 996/1125/5 988/1116/5 -f 1085/1117/478 1086/1126/478 997/1127/478 989/1118/478 -f 989/1118/5 997/1127/5 998/1128/5 990/1119/5 -f 1053/1120/479 1054/1129/479 999/1130/479 991/1121/479 -f 991/1121/5 999/1130/5 1000/1131/5 992/1122/5 -f 992/1122/480 1000/1131/480 1001/833/480 993/834/480 -f 734/772/481 735/770/481 1002/1132/481 994/1123/481 -f 994/1123/482 1002/1132/482 1003/1133/482 995/1124/482 -f 995/1124/7 1003/1133/7 1004/1134/7 996/1125/7 -f 1086/1126/483 1087/1135/483 1005/1136/483 997/1127/483 -f 997/1127/7 1005/1136/7 1006/1137/7 998/1128/7 -f 1054/1129/483 1055/1138/483 1007/1139/483 999/1130/483 -f 999/1130/7 1007/1139/7 1008/1140/7 1000/1131/7 -f 1000/1131/484 1008/1140/484 1009/832/484 1001/833/484 -f 735/770/485 736/768/485 1010/1141/485 1002/1132/485 -f 1002/1132/486 1010/1141/486 1011/1142/486 1003/1133/486 -f 1003/1133/10 1011/1142/10 1012/1143/10 1004/1134/10 -f 1087/1135/487 1088/1144/487 1013/1145/487 1005/1136/487 -f 1005/1136/10 1013/1145/10 1014/1146/10 1006/1137/10 -f 1055/1138/487 1056/1147/487 1015/1148/487 1007/1139/487 -f 1007/1139/10 1015/1148/10 1016/1149/10 1008/1140/10 -f 1008/1140/488 1016/1149/488 1017/831/488 1009/832/488 -f 736/768/489 737/766/489 1018/1150/489 1010/1141/489 -f 1010/1141/490 1018/1150/490 1019/1151/490 1011/1142/490 -f 1011/1142/13 1019/1151/13 1020/1152/13 1012/1143/13 -f 1088/1144/491 1089/1153/491 1021/1154/491 1013/1145/491 -f 1013/1145/13 1021/1154/13 1022/1155/13 1014/1146/13 -f 1056/1147/491 1057/1156/491 1023/1157/491 1015/1148/491 -f 1015/1148/13 1023/1157/13 1024/1158/13 1016/1149/13 -f 1016/1149/492 1024/1158/492 1025/829/492 1017/831/492 -f 737/766/493 707/765/493 777/863/493 1018/1150/493 -f 1018/1150/494 777/863/494 776/865/494 1019/1151/494 -f 1019/1151/16 776/865/16 775/867/16 1020/1152/16 -f 1089/1153/495 1058/868/495 774/871/495 1021/1154/495 -f 1021/1154/16 774/871/16 773/873/16 1022/1155/16 -f 1057/1156/496 1026/874/496 772/877/496 1023/1157/496 -f 1023/1157/16 772/877/16 771/879/16 1024/1158/16 -f 1024/1158/497 771/879/497 770/830/497 1025/829/497 -f 1022/1155/498 773/873/498 1026/874/498 1057/1156/498 -f 1014/1146/499 1022/1155/499 1057/1156/499 1056/1147/499 -f 1006/1137/500 1014/1146/500 1056/1147/500 1055/1138/500 -f 998/1128/501 1006/1137/501 1055/1138/501 1054/1129/501 -f 990/1119/502 998/1128/502 1054/1129/502 1053/1120/502 -f 982/1110/503 990/1119/503 1053/1120/503 1052/1111/503 -f 974/1101/504 982/1110/504 1052/1111/504 1051/1102/504 -f 966/1092/505 974/1101/505 1051/1102/505 1050/1093/505 -f 958/1083/506 966/1092/506 1050/1093/506 1049/1084/506 -f 950/1074/507 958/1083/507 1049/1084/507 1048/1075/507 -f 942/1065/508 950/1074/508 1048/1075/508 1047/1066/508 -f 934/1056/509 942/1065/509 1047/1066/509 1046/1057/509 -f 926/1047/510 934/1056/510 1046/1057/510 1045/1048/510 -f 918/1038/511 926/1047/511 1045/1048/511 1044/1039/511 -f 910/1029/512 918/1038/512 1044/1039/512 1043/1030/512 -f 902/1020/513 910/1029/513 1043/1030/513 1042/1021/513 -f 894/1011/514 902/1020/514 1042/1021/514 1041/1012/514 -f 886/1002/515 894/1011/515 1041/1012/515 1040/1003/515 -f 878/984/516 886/1002/516 1040/1003/516 1039/985/516 -f 870/975/517 781/993/517 1027/994/517 1038/976/517 -f 862/966/518 878/984/518 1039/985/518 1037/967/518 -f 854/957/519 870/975/519 1038/976/519 1036/958/519 -f 846/948/520 862/966/520 1037/967/520 1035/949/520 -f 838/939/521 854/957/521 1036/958/521 1034/940/521 -f 830/930/522 846/948/522 1035/949/522 1033/931/522 -f 822/921/523 838/939/523 1034/940/523 1032/922/523 -f 814/908/524 830/930/524 1033/931/524 1031/911/524 -f 806/894/525 822/921/525 1032/922/525 1030/895/525 -f 781/909/526 814/908/526 1031/911/526 1027/910/526 -f 798/885/527 806/894/527 1030/895/527 1029/886/527 -f 790/872/528 798/885/528 1029/886/528 1028/875/528 -f 773/873/529 790/872/529 1028/875/529 1026/874/529 -f 1020/1152/498 775/867/498 1058/868/498 1089/1153/498 -f 1012/1143/499 1020/1152/499 1089/1153/499 1088/1144/499 -f 1004/1134/500 1012/1143/500 1088/1144/500 1087/1135/500 -f 996/1125/501 1004/1134/501 1087/1135/501 1086/1126/501 -f 988/1116/502 996/1125/502 1086/1126/502 1085/1117/502 -f 980/1107/503 988/1116/503 1085/1117/503 1084/1108/503 -f 972/1098/504 980/1107/504 1084/1108/504 1083/1099/504 -f 964/1089/505 972/1098/505 1083/1099/505 1082/1090/505 -f 956/1080/506 964/1089/506 1082/1090/506 1081/1081/506 -f 948/1071/507 956/1080/507 1081/1081/507 1080/1072/507 -f 940/1062/508 948/1071/508 1080/1072/508 1079/1063/508 -f 932/1053/509 940/1062/509 1079/1063/509 1078/1054/509 -f 924/1044/510 932/1053/510 1078/1054/510 1077/1045/510 -f 916/1035/511 924/1044/511 1077/1045/511 1076/1036/511 -f 908/1026/512 916/1035/512 1076/1036/512 1075/1027/512 -f 900/1017/530 908/1026/530 1075/1027/530 1074/1018/530 -f 892/1008/514 900/1017/514 1074/1018/514 1073/1009/514 -f 884/999/515 892/1008/515 1073/1009/515 1072/1000/515 -f 876/981/531 884/999/531 1072/1000/531 1071/982/531 -f 868/972/517 783/990/517 1059/991/517 1070/973/517 -f 860/963/518 876/981/518 1071/982/518 1069/964/518 -f 852/954/519 868/972/519 1070/973/519 1068/955/519 -f 844/945/520 860/963/520 1069/964/520 1067/946/520 -f 836/936/521 852/954/521 1068/955/521 1066/937/521 -f 828/927/522 844/945/522 1067/946/522 1065/928/522 -f 820/918/523 836/936/523 1066/937/523 1064/919/523 -f 812/902/524 828/927/524 1065/928/524 1063/905/524 -f 804/891/525 820/918/525 1064/919/525 1062/892/525 -f 783/903/526 812/902/526 1063/905/526 1059/904/526 -f 796/882/532 804/891/532 1062/892/532 1061/883/532 -f 788/866/533 796/882/533 1061/883/533 1060/869/533 -f 775/867/529 788/866/529 1060/869/529 1058/868/529 -f 1215/1159/534 1186/1160/534 1148/1161/534 1147/1162/534 -f 1221/1163/535 1220/1164/535 1102/1165/535 1101/1166/535 -f 1218/10/536 1222/1167/536 1116/1168/536 1115/11/536 -f 1220/1164/537 1223/1169/537 1103/1170/537 1102/1165/537 -f 1222/1167/538 1224/1171/538 1117/1172/538 1116/1168/538 -f 1223/1169/539 1225/1173/539 1104/1174/539 1103/1170/539 -f 1227/1175/540 1226/1176/540 1091/1177/540 1090/1178/540 -f 1224/1171/541 1228/1179/541 1118/1180/541 1117/1172/541 -f 1225/1173/542 1229/1181/542 1105/1182/542 1104/1174/542 -f 1226/1176/543 1230/1183/543 1092/1184/543 1091/1177/543 -f 1228/1179/544 1231/1185/544 1119/1186/544 1118/1180/544 -f 1229/1181/545 1232/1187/545 1106/1188/545 1105/1182/545 -f 1230/1183/546 1233/1189/546 1093/1190/546 1092/1184/546 -f 1231/1185/547 1234/1191/547 1120/1192/547 1119/1186/547 -f 1232/1187/548 1235/1193/548 1107/1194/548 1106/1188/548 -f 1233/1189/549 1236/1195/549 1094/1196/549 1093/1190/549 -f 1234/1191/550 1237/1197/550 1121/1198/550 1120/1192/550 -f 1235/1193/551 1238/1199/551 1108/1200/551 1107/1194/551 -f 1236/1195/552 1239/1201/552 1095/1202/552 1094/1196/552 -f 1237/1197/553 1227/1203/553 1090/1204/553 1121/1198/553 -f 1238/1199/554 1240/1205/554 1109/1206/554 1108/1200/554 -f 1239/1201/555 1241/1207/555 1096/1208/555 1095/1202/555 -f 1240/1205/556 1242/1209/556 1110/1210/556 1109/1206/556 -f 1241/1207/557 1243/1211/557 1097/1212/557 1096/1208/557 -f 1242/1209/558 1244/1213/558 1111/1214/558 1110/1210/558 -f 1243/1211/559 1245/1215/559 1098/1216/559 1097/1212/559 -f 1244/1213/560 1246/1217/560 1112/1218/560 1111/1214/560 -f 1245/1215/561 1247/1219/561 1099/1220/561 1098/1216/561 -f 1246/1217/562 1248/1221/562 1113/1222/562 1112/1218/562 -f 1247/1219/563 1249/1223/563 1100/1224/563 1099/1220/563 -f 1248/1221/564 1219/9/564 1114/12/564 1113/1222/564 -f 1249/1223/565 1221/1163/565 1101/1166/565 1100/1224/565 -f 1122/1225/566 1123/1226/566 1124/1227/566 1125/1228/566 1126/1229/566 1127/1230/566 1128/1231/566 1129/1232/566 1130/1233/566 1131/1234/566 1132/1235/566 1133/1236/566 1134/1237/566 1135/1238/566 1136/1239/566 1137/1240/566 1138/1241/566 1139/1242/566 1140/1243/566 1141/1244/566 1142/1245/566 1143/1246/566 1144/1247/566 1145/1248/566 1146/1249/566 1147/1250/566 1148/1251/566 1149/1252/566 1150/1253/566 1151/1254/566 1152/1255/566 1153/1256/566 -f 1216/1257/567 1187/1258/567 1135/1259/567 1134/1260/567 -f 1186/1160/568 1188/1261/568 1149/1262/568 1148/1161/568 -f 1187/1258/569 1189/1263/569 1136/1264/569 1135/1259/569 -f 1217/1265/570 1190/1266/570 1123/1267/570 1122/1268/570 -f 1188/1261/571 1191/1269/571 1150/1270/571 1149/1262/571 -f 1189/1263/572 1192/1271/572 1137/1272/572 1136/1264/572 -f 1190/1266/573 1193/1273/573 1124/1274/573 1123/1267/573 -f 1191/1269/574 1194/1275/574 1151/1276/574 1150/1270/574 -f 1192/1271/575 1195/1277/575 1138/1278/575 1137/1272/575 -f 1193/1273/576 1196/1279/576 1125/1280/576 1124/1274/576 -f 1194/1275/577 1197/1281/577 1152/1282/577 1151/1276/577 -f 1195/1277/578 1198/1283/578 1139/1284/578 1138/1278/578 -f 1196/1279/579 1199/1285/579 1126/1286/579 1125/1280/579 -f 1197/1281/580 1200/1287/580 1153/1288/580 1152/1282/580 -f 1198/1283/581 1201/1289/581 1140/1290/581 1139/1284/581 -f 1199/1285/582 1202/1291/582 1127/1292/582 1126/1286/582 -f 1200/1287/583 1217/1293/583 1122/1294/583 1153/1288/583 -f 1201/1289/584 1203/1295/584 1141/1296/584 1140/1290/584 -f 1202/1291/585 1204/1297/585 1128/1298/585 1127/1292/585 -f 1203/1295/586 1205/1299/586 1142/1300/586 1141/1296/586 -f 1204/1297/587 1206/1301/587 1129/1302/587 1128/1298/587 -f 1205/1299/588 1207/1303/588 1143/1304/588 1142/1300/588 -f 1206/1301/589 1208/1305/589 1130/1306/589 1129/1302/589 -f 1207/1303/590 1209/1307/590 1144/1308/590 1143/1304/590 -f 1208/1305/591 1210/1309/591 1131/1310/591 1130/1306/591 -f 1209/1307/592 1211/1311/592 1145/1312/592 1144/1308/592 -f 1210/1309/593 1212/1313/593 1132/1314/593 1131/1310/593 -f 1211/1311/594 1213/1315/594 1146/1316/594 1145/1312/594 -f 1212/1313/595 1214/1317/595 1133/1318/595 1132/1314/595 -f 1213/1315/596 1215/1159/596 1147/1162/596 1146/1316/596 -f 1214/1317/597 1216/1257/597 1134/1260/597 1133/1318/597 -f 1310/1319/598 1312/1320/598 1157/1321/598 1185/1322/598 -f 1309/1323/599 1311/1324/599 1155/1325/599 1184/1326/599 -f 1308/1327/600 1310/1319/600 1185/1322/600 1183/1328/600 -f 1307/1329/601 1309/1323/601 1184/1326/601 1182/1330/601 -f 1306/1331/602 1308/1327/602 1183/1328/602 1181/1332/602 -f 1305/1333/603 1307/1329/603 1182/1330/603 1180/1334/603 -f 1304/1335/604 1306/1331/604 1181/1332/604 1179/1336/604 -f 1303/1337/605 1305/1333/605 1180/1334/605 1178/1338/605 -f 1302/1339/606 1304/1335/606 1179/1336/606 1177/1340/606 -f 1301/1341/607 1303/1337/607 1178/1338/607 1176/1342/607 -f 1300/1343/608 1302/1339/608 1177/1340/608 1175/1344/608 -f 1299/1345/609 1301/1341/609 1176/1342/609 1174/1346/609 -f 1298/1347/610 1300/1343/610 1175/1344/610 1173/1348/610 -f 1297/1349/611 1299/1345/611 1174/1346/611 1172/1350/611 -f 1296/1351/612 1313/1352/612 1161/1353/612 1171/1354/612 -f 1295/1355/613 1298/1347/613 1173/1348/613 1170/1356/613 -f 1294/1357/614 1297/1349/614 1172/1350/614 1169/1358/614 -f 1293/1359/615 1296/1351/615 1171/1354/615 1168/1360/615 -f 1292/1361/616 1295/1355/616 1170/1356/616 1167/1362/616 -f 1291/1363/617 1294/1357/617 1169/1358/617 1166/1364/617 -f 1290/1365/618 1293/1359/618 1168/1360/618 1165/1366/618 -f 1289/1367/619 1292/1361/619 1167/1362/619 1164/1368/619 -f 1288/1369/620 1291/1363/620 1166/1364/620 1163/1370/620 -f 1287/1371/621 1290/1365/621 1165/1366/621 1162/1372/621 -f 1286/1373/622 1289/1367/622 1164/1368/622 1160/1374/622 -f 1285/1375/623 1288/1369/623 1163/1370/623 1159/1376/623 -f 1284/1377/624 1287/1371/624 1162/1372/624 1158/1378/624 -f 1313/1379/625 1286/1373/625 1160/1374/625 1161/1380/625 -f 1283/1381/626 1285/1375/626 1159/1376/626 1156/1382/626 -f 1282/1383/627 1284/1377/627 1158/1378/627 1154/1384/627 -f 1312/1320/628 1283/1381/628 1156/1382/628 1157/1321/628 -f 1311/1324/629 1282/1383/629 1154/1384/629 1155/1325/629 -f 1185/1322/630 1157/1321/630 1216/1257/630 1214/1317/630 -f 1184/1326/631 1155/1325/631 1215/1159/631 1213/1315/631 -f 1183/1328/632 1185/1322/632 1214/1317/632 1212/1313/632 -f 1182/1330/633 1184/1326/633 1213/1315/633 1211/1311/633 -f 1181/1332/634 1183/1328/634 1212/1313/634 1210/1309/634 -f 1180/1334/635 1182/1330/635 1211/1311/635 1209/1307/635 -f 1179/1336/636 1181/1332/636 1210/1309/636 1208/1305/636 -f 1178/1338/637 1180/1334/637 1209/1307/637 1207/1303/637 -f 1177/1340/638 1179/1336/638 1208/1305/638 1206/1301/638 -f 1176/1342/639 1178/1338/639 1207/1303/639 1205/1299/639 -f 1175/1344/640 1177/1340/640 1206/1301/640 1204/1297/640 -f 1174/1346/641 1176/1342/641 1205/1299/641 1203/1295/641 -f 1173/1348/642 1175/1344/642 1204/1297/642 1202/1291/642 -f 1172/1350/643 1174/1346/643 1203/1295/643 1201/1289/643 -f 1171/1354/644 1161/1353/644 1217/1293/644 1200/1287/644 -f 1170/1356/645 1173/1348/645 1202/1291/645 1199/1285/645 -f 1169/1358/646 1172/1350/646 1201/1289/646 1198/1283/646 -f 1168/1360/647 1171/1354/647 1200/1287/647 1197/1281/647 -f 1167/1362/648 1170/1356/648 1199/1285/648 1196/1279/648 -f 1166/1364/649 1169/1358/649 1198/1283/649 1195/1277/649 -f 1165/1366/650 1168/1360/650 1197/1281/650 1194/1275/650 -f 1164/1368/651 1167/1362/651 1196/1279/651 1193/1273/651 -f 1163/1370/652 1166/1364/652 1195/1277/652 1192/1271/652 -f 1162/1372/653 1165/1366/653 1194/1275/653 1191/1269/653 -f 1160/1374/654 1164/1368/654 1193/1273/654 1190/1266/654 -f 1159/1376/655 1163/1370/655 1192/1271/655 1189/1263/655 -f 1158/1378/656 1162/1372/656 1191/1269/656 1188/1261/656 -f 1161/1380/657 1160/1374/657 1190/1266/657 1217/1265/657 -f 1156/1382/658 1159/1376/658 1189/1263/658 1187/1258/658 -f 1154/1384/659 1158/1378/659 1188/1261/659 1186/1160/659 -f 1157/1321/660 1156/1382/660 1187/1258/660 1216/1257/660 -f 1155/1325/661 1154/1384/661 1186/1160/661 1215/1159/661 -f 43/82/27 44/88/27 1221/1163/27 1249/1223/27 -f 56/138/16 57/4/16 1219/9/16 1248/1221/16 -f 42/76/26 43/82/26 1249/1223/26 1247/1219/26 -f 55/134/13 56/138/13 1248/1221/13 1246/1217/13 -f 41/70/25 42/76/25 1247/1219/25 1245/1215/25 -f 54/130/10 55/134/10 1246/1217/10 1244/1213/10 -f 40/64/24 41/70/24 1245/1215/24 1243/1211/24 -f 53/126/7 54/130/7 1244/1213/7 1242/1209/7 -f 39/56/23 40/64/23 1243/1211/23 1241/1207/23 -f 52/122/5 53/126/5 1242/1209/5 1240/1205/5 -f 38/50/22 39/56/22 1241/1207/22 1239/1201/22 -f 51/118/2 52/122/2 1240/1205/2 1238/1199/2 -f 64/48/21 33/54/21 1227/1203/21 1237/1197/21 -f 37/44/20 38/50/20 1239/1201/20 1236/1195/20 -f 50/114/34 51/118/34 1238/1199/34 1235/1193/34 -f 63/42/19 64/48/19 1237/1197/19 1234/1191/19 -f 36/38/18 37/44/18 1236/1195/18 1233/1189/18 -f 49/110/33 50/114/33 1235/1193/33 1232/1187/33 -f 62/36/17 63/42/17 1234/1191/17 1231/1185/17 -f 35/32/15 36/38/15 1233/1189/15 1230/1183/15 -f 48/106/32 49/110/32 1232/1187/32 1229/1181/32 -f 61/30/14 62/36/14 1231/1185/14 1228/1179/14 -f 34/25/12 35/32/12 1230/1183/12 1226/1176/12 -f 47/102/31 48/106/31 1229/1181/31 1225/1173/31 -f 60/22/11 61/30/11 1228/1179/11 1224/1171/11 -f 33/26/9 34/25/9 1226/1176/9 1227/1175/9 -f 46/98/30 47/102/30 1225/1173/30 1223/1169/30 -f 59/18/8 60/22/8 1224/1171/8 1222/1167/8 -f 45/94/29 46/98/29 1223/1169/29 1220/1164/29 -f 58/3/6 59/18/6 1222/1167/6 1218/10/6 -f 44/88/28 45/94/28 1220/1164/28 1221/1163/28 -f 57/4/1 58/3/1 1218/10/1 1219/9/1 -f 1115/11/662 1116/1168/662 1253/1385/662 1250/1386/662 -f 1102/1165/663 1103/1170/663 1254/1387/663 1251/1388/663 -f 1116/1168/664 1117/1172/664 1255/1389/664 1253/1385/664 -f 1103/1170/665 1104/1174/665 1256/1390/665 1254/1387/665 -f 1090/1178/666 1091/1177/666 1257/1391/666 1252/1392/666 -f 1117/1172/667 1118/1180/667 1258/1393/667 1255/1389/667 -f 1104/1174/668 1105/1182/668 1259/1394/668 1256/1390/668 -f 1091/1177/669 1092/1184/669 1260/1395/669 1257/1391/669 -f 1118/1180/670 1119/1186/670 1261/1396/670 1258/1393/670 -f 1105/1182/671 1106/1188/671 1262/1397/671 1259/1394/671 -f 1092/1184/672 1093/1190/672 1263/1398/672 1260/1395/672 -f 1119/1186/673 1120/1192/673 1264/1399/673 1261/1396/673 -f 1106/1188/674 1107/1194/674 1265/1400/674 1262/1397/674 -f 1093/1190/675 1094/1196/675 1266/1401/675 1263/1398/675 -f 1120/1192/676 1121/1198/676 1267/1402/676 1264/1399/676 -f 1107/1194/677 1108/1200/677 1268/1403/677 1265/1400/677 -f 1094/1196/678 1095/1202/678 1269/1404/678 1266/1401/678 -f 1121/1198/679 1090/1204/679 1252/1405/679 1267/1402/679 -f 1108/1200/680 1109/1206/680 1270/1406/680 1268/1403/680 -f 1095/1202/681 1096/1208/681 1271/1407/681 1269/1404/681 -f 1109/1206/682 1110/1210/682 1272/1408/682 1270/1406/682 -f 1096/1208/683 1097/1212/683 1273/1409/683 1271/1407/683 -f 1110/1210/684 1111/1214/684 1274/1410/684 1272/1408/684 -f 1097/1212/685 1098/1216/685 1275/1411/685 1273/1409/685 -f 1111/1214/686 1112/1218/686 1276/1412/686 1274/1410/686 -f 1098/1216/687 1099/1220/687 1277/1413/687 1275/1411/687 -f 1112/1218/688 1113/1222/688 1278/1414/688 1276/1412/688 -f 1099/1220/689 1100/1224/689 1279/1415/689 1277/1413/689 -f 1113/1222/690 1114/12/690 1280/1416/690 1278/1414/690 -f 1100/1224/691 1101/1166/691 1281/1417/691 1279/1415/691 -f 1114/12/692 1115/11/692 1250/1386/692 1280/1416/692 -f 1101/1166/693 1102/1165/693 1251/1388/693 1281/1417/693 -f 1314/1418/694 1361/1419/694 1282/1383/694 1311/1324/694 -f 1326/1420/695 1373/1421/695 1283/1381/695 1312/1320/695 -f 1361/1419/696 1385/1422/696 1284/1377/696 1282/1383/696 -f 1373/1421/697 1397/1423/697 1285/1375/697 1283/1381/697 -f 1338/1424/698 1409/1425/698 1286/1373/698 1313/1379/698 -f 1385/1422/699 1421/1426/699 1287/1371/699 1284/1377/699 -f 1397/1423/700 1433/1427/700 1288/1369/700 1285/1375/700 -f 1409/1425/701 1445/1428/701 1289/1367/701 1286/1373/701 -f 1421/1426/702 1457/1429/702 1290/1365/702 1287/1371/702 -f 1433/1427/703 1469/1430/703 1291/1363/703 1288/1369/703 -f 1445/1428/704 1481/1431/704 1292/1361/704 1289/1367/704 -f 1457/1429/705 1493/1432/705 1293/1359/705 1290/1365/705 -f 1469/1430/706 1505/1433/706 1294/1357/706 1291/1363/706 -f 1481/1431/707 1517/1434/707 1295/1355/707 1292/1361/707 -f 1493/1432/708 1529/1435/708 1296/1351/708 1293/1359/708 -f 1505/1433/709 1541/1436/709 1297/1349/709 1294/1357/709 -f 1517/1434/710 1553/1437/710 1298/1347/710 1295/1355/710 -f 1529/1435/711 1338/1438/711 1313/1352/711 1296/1351/711 -f 1541/1436/712 1565/1439/712 1299/1345/712 1297/1349/712 -f 1553/1437/713 1577/1440/713 1300/1343/713 1298/1347/713 -f 1565/1439/714 1589/1441/714 1301/1341/714 1299/1345/714 -f 1577/1440/715 1601/1442/715 1302/1339/715 1300/1343/715 -f 1589/1441/716 1613/1443/716 1303/1337/716 1301/1341/716 -f 1601/1442/717 1625/1444/717 1304/1335/717 1302/1339/717 -f 1613/1443/718 1637/1445/718 1305/1333/718 1303/1337/718 -f 1625/1444/719 1649/1446/719 1306/1331/719 1304/1335/719 -f 1637/1445/720 1661/1447/720 1307/1329/720 1305/1333/720 -f 1649/1446/721 1673/1448/721 1308/1327/721 1306/1331/721 -f 1661/1447/722 1685/1449/722 1309/1323/722 1307/1329/722 -f 1673/1448/723 1697/1450/723 1310/1319/723 1308/1327/723 -f 1685/1449/724 1314/1418/724 1311/1324/724 1309/1323/724 -f 1697/1450/725 1326/1420/725 1312/1320/725 1310/1319/725 -f 1281/1417/726 1251/1388/726 1337/1451/726 1686/1452/726 -f 1686/1452/727 1337/1451/727 1336/1453/727 1687/1454/727 -f 1687/1454/728 1336/1453/728 1335/1455/728 1688/1456/728 -f 1688/1456/729 1335/1455/729 1334/1457/729 1689/1458/729 -f 1689/1458/728 1334/1457/728 1333/1459/728 1690/1460/728 -f 1690/1460/729 1333/1459/729 1332/1461/729 1691/1462/729 -f 1691/1462/730 1332/1461/730 1331/1463/730 1692/1464/730 -f 1692/1464/731 1331/1463/731 1330/1465/731 1693/1466/731 -f 1693/1466/728 1330/1465/728 1329/1467/728 1694/1468/728 -f 1694/1468/729 1329/1467/729 1328/1469/729 1695/1470/729 -f 1695/1470/728 1328/1469/728 1327/1471/728 1696/1472/728 -f 1696/1472/729 1327/1471/729 1326/1420/729 1697/1450/729 -f 1280/1416/732 1250/1386/732 1325/1473/732 1674/1474/732 -f 1674/1474/733 1325/1473/733 1324/1475/733 1675/1476/733 -f 1675/1476/734 1324/1475/734 1323/1477/734 1676/1478/734 -f 1676/1478/735 1323/1477/735 1322/1479/735 1677/1480/735 -f 1677/1480/734 1322/1479/734 1321/1481/734 1678/1482/734 -f 1678/1482/735 1321/1481/735 1320/1483/735 1679/1484/735 -f 1679/1484/736 1320/1483/736 1319/1485/736 1680/1486/736 -f 1680/1486/737 1319/1485/737 1318/1487/737 1681/1488/737 -f 1681/1488/734 1318/1487/734 1317/1489/734 1682/1490/734 -f 1682/1490/735 1317/1489/735 1316/1491/735 1683/1492/735 -f 1683/1492/738 1316/1491/738 1315/1493/738 1684/1494/738 -f 1684/1494/735 1315/1493/735 1314/1418/735 1685/1449/735 -f 1279/1415/739 1281/1417/739 1686/1452/739 1662/1495/739 -f 1662/1495/740 1686/1452/740 1687/1454/740 1663/1496/740 -f 1663/1496/741 1687/1454/741 1688/1456/741 1664/1497/741 -f 1664/1497/742 1688/1456/742 1689/1458/742 1665/1498/742 -f 1665/1498/741 1689/1458/741 1690/1460/741 1666/1499/741 -f 1666/1499/742 1690/1460/742 1691/1462/742 1667/1500/742 -f 1667/1500/743 1691/1462/743 1692/1464/743 1668/1501/743 -f 1668/1501/744 1692/1464/744 1693/1466/744 1669/1502/744 -f 1669/1502/741 1693/1466/741 1694/1468/741 1670/1503/741 -f 1670/1503/745 1694/1468/745 1695/1470/745 1671/1504/745 -f 1671/1504/741 1695/1470/741 1696/1472/741 1672/1505/741 -f 1672/1505/745 1696/1472/745 1697/1450/745 1673/1448/745 -f 1278/1414/746 1280/1416/746 1674/1474/746 1650/1506/746 -f 1650/1506/747 1674/1474/747 1675/1476/747 1651/1507/747 -f 1651/1507/748 1675/1476/748 1676/1478/748 1652/1508/748 -f 1652/1508/749 1676/1478/749 1677/1480/749 1653/1509/749 -f 1653/1509/748 1677/1480/748 1678/1482/748 1654/1510/748 -f 1654/1510/749 1678/1482/749 1679/1484/749 1655/1511/749 -f 1655/1511/750 1679/1484/750 1680/1486/750 1656/1512/750 -f 1656/1512/751 1680/1486/751 1681/1488/751 1657/1513/751 -f 1657/1513/748 1681/1488/748 1682/1490/748 1658/1514/748 -f 1658/1514/749 1682/1490/749 1683/1492/749 1659/1515/749 -f 1659/1515/748 1683/1492/748 1684/1494/748 1660/1516/748 -f 1660/1516/749 1684/1494/749 1685/1449/749 1661/1447/749 -f 1277/1413/752 1279/1415/752 1662/1495/752 1638/1517/752 -f 1638/1517/753 1662/1495/753 1663/1496/753 1639/1518/753 -f 1639/1518/754 1663/1496/754 1664/1497/754 1640/1519/754 -f 1640/1519/755 1664/1497/755 1665/1498/755 1641/1520/755 -f 1641/1520/754 1665/1498/754 1666/1499/754 1642/1521/754 -f 1642/1521/756 1666/1499/756 1667/1500/756 1643/1522/756 -f 1643/1522/757 1667/1500/757 1668/1501/757 1644/1523/757 -f 1644/1523/758 1668/1501/758 1669/1502/758 1645/1524/758 -f 1645/1524/759 1669/1502/759 1670/1503/759 1646/1525/759 -f 1646/1525/756 1670/1503/756 1671/1504/756 1647/1526/756 -f 1647/1526/759 1671/1504/759 1672/1505/759 1648/1527/759 -f 1648/1527/755 1672/1505/755 1673/1448/755 1649/1446/755 -f 1276/1412/760 1278/1414/760 1650/1506/760 1626/1528/760 -f 1626/1528/761 1650/1506/761 1651/1507/761 1627/1529/761 -f 1627/1529/762 1651/1507/762 1652/1508/762 1628/1530/762 -f 1628/1530/763 1652/1508/763 1653/1509/763 1629/1531/763 -f 1629/1531/764 1653/1509/764 1654/1510/764 1630/1532/764 -f 1630/1532/765 1654/1510/765 1655/1511/765 1631/1533/765 -f 1631/1533/766 1655/1511/766 1656/1512/766 1632/1534/766 -f 1632/1534/767 1656/1512/767 1657/1513/767 1633/1535/767 -f 1633/1535/762 1657/1513/762 1658/1514/762 1634/1536/762 -f 1634/1536/763 1658/1514/763 1659/1515/763 1635/1537/763 -f 1635/1537/762 1659/1515/762 1660/1516/762 1636/1538/762 -f 1636/1538/763 1660/1516/763 1661/1447/763 1637/1445/763 -f 1275/1411/768 1277/1413/768 1638/1517/768 1614/1539/768 -f 1614/1539/769 1638/1517/769 1639/1518/769 1615/1540/769 -f 1615/1540/770 1639/1518/770 1640/1519/770 1616/1541/770 -f 1616/1541/771 1640/1519/771 1641/1520/771 1617/1542/771 -f 1617/1542/770 1641/1520/770 1642/1521/770 1618/1543/770 -f 1618/1543/771 1642/1521/771 1643/1522/771 1619/1544/771 -f 1619/1544/772 1643/1522/772 1644/1523/772 1620/1545/772 -f 1620/1545/773 1644/1523/773 1645/1524/773 1621/1546/773 -f 1621/1546/770 1645/1524/770 1646/1525/770 1622/1547/770 -f 1622/1547/771 1646/1525/771 1647/1526/771 1623/1548/771 -f 1623/1548/770 1647/1526/770 1648/1527/770 1624/1549/770 -f 1624/1549/771 1648/1527/771 1649/1446/771 1625/1444/771 -f 1274/1410/774 1276/1412/774 1626/1528/774 1602/1550/774 -f 1602/1550/775 1626/1528/775 1627/1529/775 1603/1551/775 -f 1603/1551/776 1627/1529/776 1628/1530/776 1604/1552/776 -f 1604/1552/777 1628/1530/777 1629/1531/777 1605/1553/777 -f 1605/1553/778 1629/1531/778 1630/1532/778 1606/1554/778 -f 1606/1554/777 1630/1532/777 1631/1533/777 1607/1555/777 -f 1607/1555/779 1631/1533/779 1632/1534/779 1608/1556/779 -f 1608/1556/780 1632/1534/780 1633/1535/780 1609/1557/780 -f 1609/1557/776 1633/1535/776 1634/1536/776 1610/1558/776 -f 1610/1558/781 1634/1536/781 1635/1537/781 1611/1559/781 -f 1611/1559/776 1635/1537/776 1636/1538/776 1612/1560/776 -f 1612/1560/781 1636/1538/781 1637/1445/781 1613/1443/781 -f 1273/1409/782 1275/1411/782 1614/1539/782 1590/1561/782 -f 1590/1561/783 1614/1539/783 1615/1540/783 1591/1562/783 -f 1591/1562/784 1615/1540/784 1616/1541/784 1592/1563/784 -f 1592/1563/785 1616/1541/785 1617/1542/785 1593/1564/785 -f 1593/1564/784 1617/1542/784 1618/1543/784 1594/1565/784 -f 1594/1565/785 1618/1543/785 1619/1544/785 1595/1566/785 -f 1595/1566/786 1619/1544/786 1620/1545/786 1596/1567/786 -f 1596/1567/787 1620/1545/787 1621/1546/787 1597/1568/787 -f 1597/1568/784 1621/1546/784 1622/1547/784 1598/1569/784 -f 1598/1569/785 1622/1547/785 1623/1548/785 1599/1570/785 -f 1599/1570/784 1623/1548/784 1624/1549/784 1600/1571/784 -f 1600/1571/785 1624/1549/785 1625/1444/785 1601/1442/785 -f 1272/1408/788 1274/1410/788 1602/1550/788 1578/1572/788 -f 1578/1572/789 1602/1550/789 1603/1551/789 1579/1573/789 -f 1579/1573/790 1603/1551/790 1604/1552/790 1580/1574/790 -f 1580/1574/791 1604/1552/791 1605/1553/791 1581/1575/791 -f 1581/1575/790 1605/1553/790 1606/1554/790 1582/1576/790 -f 1582/1576/791 1606/1554/791 1607/1555/791 1583/1577/791 -f 1583/1577/792 1607/1555/792 1608/1556/792 1584/1578/792 -f 1584/1578/793 1608/1556/793 1609/1557/793 1585/1579/793 -f 1585/1579/790 1609/1557/790 1610/1558/790 1586/1580/790 -f 1586/1580/791 1610/1558/791 1611/1559/791 1587/1581/791 -f 1587/1581/790 1611/1559/790 1612/1560/790 1588/1582/790 -f 1588/1582/791 1612/1560/791 1613/1443/791 1589/1441/791 -f 1271/1407/794 1273/1409/794 1590/1561/794 1566/1583/794 -f 1566/1583/795 1590/1561/795 1591/1562/795 1567/1584/795 -f 1567/1584/796 1591/1562/796 1592/1563/796 1568/1585/796 -f 1568/1585/797 1592/1563/797 1593/1564/797 1569/1586/797 -f 1569/1586/798 1593/1564/798 1594/1565/798 1570/1587/798 -f 1570/1587/799 1594/1565/799 1595/1566/799 1571/1588/799 -f 1571/1588/800 1595/1566/800 1596/1567/800 1572/1589/800 -f 1572/1589/801 1596/1567/801 1597/1568/801 1573/1590/801 -f 1573/1590/796 1597/1568/796 1598/1569/796 1574/1591/796 -f 1574/1591/797 1598/1569/797 1599/1570/797 1575/1592/797 -f 1575/1592/796 1599/1570/796 1600/1571/796 1576/1593/796 -f 1576/1593/797 1600/1571/797 1601/1442/797 1577/1440/797 -f 1270/1406/802 1272/1408/802 1578/1572/802 1554/1594/802 -f 1554/1594/803 1578/1572/803 1579/1573/803 1555/1595/803 -f 1555/1595/804 1579/1573/804 1580/1574/804 1556/1596/804 -f 1556/1596/805 1580/1574/805 1581/1575/805 1557/1597/805 -f 1557/1597/804 1581/1575/804 1582/1576/804 1558/1598/804 -f 1558/1598/805 1582/1576/805 1583/1577/805 1559/1599/805 -f 1559/1599/806 1583/1577/806 1584/1578/806 1560/1600/806 -f 1560/1600/807 1584/1578/807 1585/1579/807 1561/1601/807 -f 1561/1601/804 1585/1579/804 1586/1580/804 1562/1602/804 -f 1562/1602/805 1586/1580/805 1587/1581/805 1563/1603/805 -f 1563/1603/804 1587/1581/804 1588/1582/804 1564/1604/804 -f 1564/1604/805 1588/1582/805 1589/1441/805 1565/1439/805 -f 1269/1404/808 1271/1407/808 1566/1583/808 1542/1605/808 -f 1542/1605/809 1566/1583/809 1567/1584/809 1543/1606/809 -f 1543/1606/810 1567/1584/810 1568/1585/810 1544/1607/810 -f 1544/1607/811 1568/1585/811 1569/1586/811 1545/1608/811 -f 1545/1608/810 1569/1586/810 1570/1587/810 1546/1609/810 -f 1546/1609/811 1570/1587/811 1571/1588/811 1547/1610/811 -f 1547/1610/812 1571/1588/812 1572/1589/812 1548/1611/812 -f 1548/1611/813 1572/1589/813 1573/1590/813 1549/1612/813 -f 1549/1612/814 1573/1590/814 1574/1591/814 1550/1613/814 -f 1550/1613/811 1574/1591/811 1575/1592/811 1551/1614/811 -f 1551/1614/810 1575/1592/810 1576/1593/810 1552/1615/810 -f 1552/1615/815 1576/1593/815 1577/1440/815 1553/1437/815 -f 1268/1403/816 1270/1406/816 1554/1594/816 1530/1616/816 -f 1530/1616/817 1554/1594/817 1555/1595/817 1531/1617/817 -f 1531/1617/818 1555/1595/818 1556/1596/818 1532/1618/818 -f 1532/1618/819 1556/1596/819 1557/1597/819 1533/1619/819 -f 1533/1619/818 1557/1597/818 1558/1598/818 1534/1620/818 -f 1534/1620/819 1558/1598/819 1559/1599/819 1535/1621/819 -f 1535/1621/820 1559/1599/820 1560/1600/820 1536/1622/820 -f 1536/1622/821 1560/1600/821 1561/1601/821 1537/1623/821 -f 1537/1623/818 1561/1601/818 1562/1602/818 1538/1624/818 -f 1538/1624/822 1562/1602/822 1563/1603/822 1539/1625/822 -f 1539/1625/818 1563/1603/818 1564/1604/818 1540/1626/818 -f 1540/1626/822 1564/1604/822 1565/1439/822 1541/1436/822 -f 1267/1402/823 1252/1405/823 1349/1627/823 1518/1628/823 -f 1518/1628/824 1349/1627/824 1348/1629/824 1519/1630/824 -f 1519/1630/825 1348/1629/825 1347/1631/825 1520/1632/825 -f 1520/1632/826 1347/1631/826 1346/1633/826 1521/1634/826 -f 1521/1634/825 1346/1633/825 1345/1635/825 1522/1636/825 -f 1522/1636/826 1345/1635/826 1344/1637/826 1523/1638/826 -f 1523/1638/827 1344/1637/827 1343/1639/827 1524/1640/827 -f 1524/1640/828 1343/1639/828 1342/1641/828 1525/1642/828 -f 1525/1642/825 1342/1641/825 1341/1643/825 1526/1644/825 -f 1526/1644/826 1341/1643/826 1340/1645/826 1527/1646/826 -f 1527/1646/825 1340/1645/825 1339/1647/825 1528/1648/825 -f 1528/1648/829 1339/1647/829 1338/1438/829 1529/1435/829 -f 1266/1401/830 1269/1404/830 1542/1605/830 1506/1649/830 -f 1506/1649/831 1542/1605/831 1543/1606/831 1507/1650/831 -f 1507/1650/832 1543/1606/832 1544/1607/832 1508/1651/832 -f 1508/1651/833 1544/1607/833 1545/1608/833 1509/1652/833 -f 1509/1652/832 1545/1608/832 1546/1609/832 1510/1653/832 -f 1510/1653/833 1546/1609/833 1547/1610/833 1511/1654/833 -f 1511/1654/834 1547/1610/834 1548/1611/834 1512/1655/834 -f 1512/1655/835 1548/1611/835 1549/1612/835 1513/1656/835 -f 1513/1656/832 1549/1612/832 1550/1613/832 1514/1657/832 -f 1514/1657/833 1550/1613/833 1551/1614/833 1515/1658/833 -f 1515/1658/832 1551/1614/832 1552/1615/832 1516/1659/832 -f 1516/1659/833 1552/1615/833 1553/1437/833 1517/1434/833 -f 1265/1400/836 1268/1403/836 1530/1616/836 1494/1660/836 -f 1494/1660/837 1530/1616/837 1531/1617/837 1495/1661/837 -f 1495/1661/838 1531/1617/838 1532/1618/838 1496/1662/838 -f 1496/1662/839 1532/1618/839 1533/1619/839 1497/1663/839 -f 1497/1663/840 1533/1619/840 1534/1620/840 1498/1664/840 -f 1498/1664/839 1534/1620/839 1535/1621/839 1499/1665/839 -f 1499/1665/841 1535/1621/841 1536/1622/841 1500/1666/841 -f 1500/1666/842 1536/1622/842 1537/1623/842 1501/1667/842 -f 1501/1667/838 1537/1623/838 1538/1624/838 1502/1668/838 -f 1502/1668/843 1538/1624/843 1539/1625/843 1503/1669/843 -f 1503/1669/838 1539/1625/838 1540/1626/838 1504/1670/838 -f 1504/1670/843 1540/1626/843 1541/1436/843 1505/1433/843 -f 1264/1399/844 1267/1402/844 1518/1628/844 1482/1671/844 -f 1482/1671/845 1518/1628/845 1519/1630/845 1483/1672/845 -f 1483/1672/846 1519/1630/846 1520/1632/846 1484/1673/846 -f 1484/1673/847 1520/1632/847 1521/1634/847 1485/1674/847 -f 1485/1674/846 1521/1634/846 1522/1636/846 1486/1675/846 -f 1486/1675/848 1522/1636/848 1523/1638/848 1487/1676/848 -f 1487/1676/849 1523/1638/849 1524/1640/849 1488/1677/849 -f 1488/1677/850 1524/1640/850 1525/1642/850 1489/1678/850 -f 1489/1678/851 1525/1642/851 1526/1644/851 1490/1679/851 -f 1490/1679/847 1526/1644/847 1527/1646/847 1491/1680/847 -f 1491/1680/851 1527/1646/851 1528/1648/851 1492/1681/851 -f 1492/1681/847 1528/1648/847 1529/1435/847 1493/1432/847 -f 1263/1398/852 1266/1401/852 1506/1649/852 1470/1682/852 -f 1470/1682/853 1506/1649/853 1507/1650/853 1471/1683/853 -f 1471/1683/854 1507/1650/854 1508/1651/854 1472/1684/854 -f 1472/1684/855 1508/1651/855 1509/1652/855 1473/1685/855 -f 1473/1685/854 1509/1652/854 1510/1653/854 1474/1686/854 -f 1474/1686/855 1510/1653/855 1511/1654/855 1475/1687/855 -f 1475/1687/856 1511/1654/856 1512/1655/856 1476/1688/856 -f 1476/1688/857 1512/1655/857 1513/1656/857 1477/1689/857 -f 1477/1689/854 1513/1656/854 1514/1657/854 1478/1690/854 -f 1478/1690/855 1514/1657/855 1515/1658/855 1479/1691/855 -f 1479/1691/854 1515/1658/854 1516/1659/854 1480/1692/854 -f 1480/1692/855 1516/1659/855 1517/1434/855 1481/1431/855 -f 1262/1397/858 1265/1400/858 1494/1660/858 1458/1693/858 -f 1458/1693/859 1494/1660/859 1495/1661/859 1459/1694/859 -f 1459/1694/860 1495/1661/860 1496/1662/860 1460/1695/860 -f 1460/1695/861 1496/1662/861 1497/1663/861 1461/1696/861 -f 1461/1696/860 1497/1663/860 1498/1664/860 1462/1697/860 -f 1462/1697/861 1498/1664/861 1499/1665/861 1463/1698/861 -f 1463/1698/862 1499/1665/862 1500/1666/862 1464/1699/862 -f 1464/1699/863 1500/1666/863 1501/1667/863 1465/1700/863 -f 1465/1700/860 1501/1667/860 1502/1668/860 1466/1701/860 -f 1466/1701/861 1502/1668/861 1503/1669/861 1467/1702/861 -f 1467/1702/860 1503/1669/860 1504/1670/860 1468/1703/860 -f 1468/1703/861 1504/1670/861 1505/1433/861 1469/1430/861 -f 1261/1396/864 1264/1399/864 1482/1671/864 1446/1704/864 -f 1446/1704/865 1482/1671/865 1483/1672/865 1447/1705/865 -f 1447/1705/866 1483/1672/866 1484/1673/866 1448/1706/866 -f 1448/1706/867 1484/1673/867 1485/1674/867 1449/1707/867 -f 1449/1707/866 1485/1674/866 1486/1675/866 1450/1708/866 -f 1450/1708/868 1486/1675/868 1487/1676/868 1451/1709/868 -f 1451/1709/869 1487/1676/869 1488/1677/869 1452/1710/869 -f 1452/1710/870 1488/1677/870 1489/1678/870 1453/1711/870 -f 1453/1711/871 1489/1678/871 1490/1679/871 1454/1712/871 -f 1454/1712/868 1490/1679/868 1491/1680/868 1455/1713/868 -f 1455/1713/871 1491/1680/871 1492/1681/871 1456/1714/871 -f 1456/1714/868 1492/1681/868 1493/1432/868 1457/1429/868 -f 1260/1395/872 1263/1398/872 1470/1682/872 1434/1715/872 -f 1434/1715/873 1470/1682/873 1471/1683/873 1435/1716/873 -f 1435/1716/874 1471/1683/874 1472/1684/874 1436/1717/874 -f 1436/1717/875 1472/1684/875 1473/1685/875 1437/1718/875 -f 1437/1718/874 1473/1685/874 1474/1686/874 1438/1719/874 -f 1438/1719/875 1474/1686/875 1475/1687/875 1439/1720/875 -f 1439/1720/876 1475/1687/876 1476/1688/876 1440/1721/876 -f 1440/1721/877 1476/1688/877 1477/1689/877 1441/1722/877 -f 1441/1722/878 1477/1689/878 1478/1690/878 1442/1723/878 -f 1442/1723/879 1478/1690/879 1479/1691/879 1443/1724/879 -f 1443/1724/874 1479/1691/874 1480/1692/874 1444/1725/874 -f 1444/1725/879 1480/1692/879 1481/1431/879 1445/1428/879 -f 1259/1394/880 1262/1397/880 1458/1693/880 1422/1726/880 -f 1422/1726/881 1458/1693/881 1459/1694/881 1423/1727/881 -f 1423/1727/882 1459/1694/882 1460/1695/882 1424/1728/882 -f 1424/1728/883 1460/1695/883 1461/1696/883 1425/1729/883 -f 1425/1729/882 1461/1696/882 1462/1697/882 1426/1730/882 -f 1426/1730/883 1462/1697/883 1463/1698/883 1427/1731/883 -f 1427/1731/884 1463/1698/884 1464/1699/884 1428/1732/884 -f 1428/1732/885 1464/1699/885 1465/1700/885 1429/1733/885 -f 1429/1733/882 1465/1700/882 1466/1701/882 1430/1734/882 -f 1430/1734/886 1466/1701/886 1467/1702/886 1431/1735/886 -f 1431/1735/882 1467/1702/882 1468/1703/882 1432/1736/882 -f 1432/1736/886 1468/1703/886 1469/1430/886 1433/1427/886 -f 1258/1393/887 1261/1396/887 1446/1704/887 1410/1737/887 -f 1410/1737/888 1446/1704/888 1447/1705/888 1411/1738/888 -f 1411/1738/889 1447/1705/889 1448/1706/889 1412/1739/889 -f 1412/1739/890 1448/1706/890 1449/1707/890 1413/1740/890 -f 1413/1740/889 1449/1707/889 1450/1708/889 1414/1741/889 -f 1414/1741/890 1450/1708/890 1451/1709/890 1415/1742/890 -f 1415/1742/891 1451/1709/891 1452/1710/891 1416/1743/891 -f 1416/1743/892 1452/1710/892 1453/1711/892 1417/1744/892 -f 1417/1744/893 1453/1711/893 1454/1712/893 1418/1745/893 -f 1418/1745/890 1454/1712/890 1455/1713/890 1419/1746/890 -f 1419/1746/889 1455/1713/889 1456/1714/889 1420/1747/889 -f 1420/1747/890 1456/1714/890 1457/1429/890 1421/1426/890 -f 1257/1391/894 1260/1395/894 1434/1715/894 1398/1748/894 -f 1398/1748/895 1434/1715/895 1435/1716/895 1399/1749/895 -f 1399/1749/896 1435/1716/896 1436/1717/896 1400/1750/896 -f 1400/1750/897 1436/1717/897 1437/1718/897 1401/1751/897 -f 1401/1751/896 1437/1718/896 1438/1719/896 1402/1752/896 -f 1402/1752/898 1438/1719/898 1439/1720/898 1403/1753/898 -f 1403/1753/899 1439/1720/899 1440/1721/899 1404/1754/899 -f 1404/1754/900 1440/1721/900 1441/1722/900 1405/1755/900 -f 1405/1755/901 1441/1722/901 1442/1723/901 1406/1756/901 -f 1406/1756/897 1442/1723/897 1443/1724/897 1407/1757/897 -f 1407/1757/901 1443/1724/901 1444/1725/901 1408/1758/901 -f 1408/1758/897 1444/1725/897 1445/1428/897 1409/1425/897 -f 1256/1390/902 1259/1394/902 1422/1726/902 1386/1759/902 -f 1386/1759/903 1422/1726/903 1423/1727/903 1387/1760/903 -f 1387/1760/904 1423/1727/904 1424/1728/904 1388/1761/904 -f 1388/1761/905 1424/1728/905 1425/1729/905 1389/1762/905 -f 1389/1762/904 1425/1729/904 1426/1730/904 1390/1763/904 -f 1390/1763/905 1426/1730/905 1427/1731/905 1391/1764/905 -f 1391/1764/906 1427/1731/906 1428/1732/906 1392/1765/906 -f 1392/1765/907 1428/1732/907 1429/1733/907 1393/1766/907 -f 1393/1766/908 1429/1733/908 1430/1734/908 1394/1767/908 -f 1394/1767/909 1430/1734/909 1431/1735/909 1395/1768/909 -f 1395/1768/908 1431/1735/908 1432/1736/908 1396/1769/908 -f 1396/1769/909 1432/1736/909 1433/1427/909 1397/1423/909 -f 1255/1389/910 1258/1393/910 1410/1737/910 1374/1770/910 -f 1374/1770/911 1410/1737/911 1411/1738/911 1375/1771/911 -f 1375/1771/912 1411/1738/912 1412/1739/912 1376/1772/912 -f 1376/1772/913 1412/1739/913 1413/1740/913 1377/1773/913 -f 1377/1773/912 1413/1740/912 1414/1741/912 1378/1774/912 -f 1378/1774/913 1414/1741/913 1415/1742/913 1379/1775/913 -f 1379/1775/914 1415/1742/914 1416/1743/914 1380/1776/914 -f 1380/1776/915 1416/1743/915 1417/1744/915 1381/1777/915 -f 1381/1777/916 1417/1744/916 1418/1745/916 1382/1778/916 -f 1382/1778/913 1418/1745/913 1419/1746/913 1383/1779/913 -f 1383/1779/912 1419/1746/912 1420/1747/912 1384/1780/912 -f 1384/1780/913 1420/1747/913 1421/1426/913 1385/1422/913 -f 1252/1392/917 1257/1391/917 1398/1748/917 1349/1781/917 -f 1349/1781/918 1398/1748/918 1399/1749/918 1348/1782/918 -f 1348/1782/919 1399/1749/919 1400/1750/919 1347/1783/919 -f 1347/1783/920 1400/1750/920 1401/1751/920 1346/1784/920 -f 1346/1784/921 1401/1751/921 1402/1752/921 1345/1785/921 -f 1345/1785/920 1402/1752/920 1403/1753/920 1344/1786/920 -f 1344/1786/922 1403/1753/922 1404/1754/922 1343/1787/922 -f 1343/1787/923 1404/1754/923 1405/1755/923 1342/1788/923 -f 1342/1788/919 1405/1755/919 1406/1756/919 1341/1789/919 -f 1341/1789/920 1406/1756/920 1407/1757/920 1340/1790/920 -f 1340/1790/919 1407/1757/919 1408/1758/919 1339/1791/919 -f 1339/1791/924 1408/1758/924 1409/1425/924 1338/1424/924 -f 1254/1387/925 1256/1390/925 1386/1759/925 1362/1792/925 -f 1362/1792/926 1386/1759/926 1387/1760/926 1363/1793/926 -f 1363/1793/927 1387/1760/927 1388/1761/927 1364/1794/927 -f 1364/1794/928 1388/1761/928 1389/1762/928 1365/1795/928 -f 1365/1795/929 1389/1762/929 1390/1763/929 1366/1796/929 -f 1366/1796/928 1390/1763/928 1391/1764/928 1367/1797/928 -f 1367/1797/930 1391/1764/930 1392/1765/930 1368/1798/930 -f 1368/1798/931 1392/1765/931 1393/1766/931 1369/1799/931 -f 1369/1799/929 1393/1766/929 1394/1767/929 1370/1800/929 -f 1370/1800/928 1394/1767/928 1395/1768/928 1371/1801/928 -f 1371/1801/929 1395/1768/929 1396/1769/929 1372/1802/929 -f 1372/1802/932 1396/1769/932 1397/1423/932 1373/1421/932 -f 1253/1385/933 1255/1389/933 1374/1770/933 1350/1803/933 -f 1350/1803/934 1374/1770/934 1375/1771/934 1351/1804/934 -f 1351/1804/935 1375/1771/935 1376/1772/935 1352/1805/935 -f 1352/1805/936 1376/1772/936 1377/1773/936 1353/1806/936 -f 1353/1806/935 1377/1773/935 1378/1774/935 1354/1807/935 -f 1354/1807/936 1378/1774/936 1379/1775/936 1355/1808/936 -f 1355/1808/937 1379/1775/937 1380/1776/937 1356/1809/937 -f 1356/1809/938 1380/1776/938 1381/1777/938 1357/1810/938 -f 1357/1810/935 1381/1777/935 1382/1778/935 1358/1811/935 -f 1358/1811/939 1382/1778/939 1383/1779/939 1359/1812/939 -f 1359/1812/935 1383/1779/935 1384/1780/935 1360/1813/935 -f 1360/1813/939 1384/1780/939 1385/1422/939 1361/1419/939 -f 1251/1388/940 1254/1387/940 1362/1792/940 1337/1451/940 -f 1337/1451/941 1362/1792/941 1363/1793/941 1336/1453/941 -f 1336/1453/942 1363/1793/942 1364/1794/942 1335/1455/942 -f 1335/1455/943 1364/1794/943 1365/1795/943 1334/1457/943 -f 1334/1457/942 1365/1795/942 1366/1796/942 1333/1459/942 -f 1333/1459/943 1366/1796/943 1367/1797/943 1332/1461/943 -f 1332/1461/944 1367/1797/944 1368/1798/944 1331/1463/944 -f 1331/1463/945 1368/1798/945 1369/1799/945 1330/1465/945 -f 1330/1465/942 1369/1799/942 1370/1800/942 1329/1467/942 -f 1329/1467/943 1370/1800/943 1371/1801/943 1328/1469/943 -f 1328/1469/942 1371/1801/942 1372/1802/942 1327/1471/942 -f 1327/1471/943 1372/1802/943 1373/1421/943 1326/1420/943 -f 1250/1386/946 1253/1385/946 1350/1803/946 1325/1473/946 -f 1325/1473/947 1350/1803/947 1351/1804/947 1324/1475/947 -f 1324/1475/948 1351/1804/948 1352/1805/948 1323/1477/948 -f 1323/1477/949 1352/1805/949 1353/1806/949 1322/1479/949 -f 1322/1479/948 1353/1806/948 1354/1807/948 1321/1481/948 -f 1321/1481/950 1354/1807/950 1355/1808/950 1320/1483/950 -f 1320/1483/951 1355/1808/951 1356/1809/951 1319/1485/951 -f 1319/1485/952 1356/1809/952 1357/1810/952 1318/1487/952 -f 1318/1487/948 1357/1810/948 1358/1811/948 1317/1489/948 -f 1317/1489/950 1358/1811/950 1359/1812/950 1316/1491/950 -f 1316/1491/948 1359/1812/948 1360/1813/948 1315/1493/948 -f 1315/1493/953 1360/1813/953 1361/1419/953 1314/1418/953 -f 173/418/12 175/463/12 3/815/12 2/819/12 -f 175/463/15 177/493/15 4/811/15 3/815/15 -f 177/493/18 179/523/18 5/807/18 4/811/18 -f 179/523/20 181/553/20 6/801/20 5/807/20 -f 181/553/22 182/583/22 7/799/22 6/801/22 -f 182/583/23 183/598/23 8/797/23 7/799/23 -f 183/598/24 184/613/24 9/795/24 8/797/24 -f 184/613/25 185/628/25 10/793/25 9/795/25 -f 185/628/26 186/643/26 11/791/26 10/793/26 -f 186/643/27 187/658/27 12/789/27 11/791/27 -f 187/658/28 188/673/28 13/787/28 12/789/28 -f 188/673/29 189/688/29 14/785/29 13/787/29 -f 189/688/30 190/703/30 15/783/30 14/785/30 -f 190/703/31 191/718/31 16/781/31 15/783/31 -f 191/718/32 192/733/32 17/779/32 16/781/32 -f 192/733/33 193/748/33 18/777/33 17/779/33 -f 193/748/34 162/269/34 19/775/34 18/777/34 -f 162/269/2 163/268/2 20/773/2 19/775/2 -f 163/268/5 164/298/5 21/771/5 20/773/5 -f 164/298/7 165/313/7 22/769/7 21/771/7 -f 165/313/10 166/328/10 23/767/10 22/769/10 -f 166/328/13 167/343/13 24/763/13 23/767/13 -f 167/343/16 168/358/16 25/764/16 24/763/16 -f 168/358/1 169/373/1 26/827/1 25/764/1 -f 169/373/6 170/388/6 27/825/6 26/827/6 -f 170/388/8 171/403/8 28/821/8 27/825/8 -f 171/403/11 174/448/11 29/817/11 28/821/11 -f 174/448/14 176/478/14 30/813/14 29/817/14 -f 176/478/17 178/508/17 31/809/17 30/813/17 -f 178/508/19 180/538/19 32/803/19 31/809/19 -f 180/538/21 172/568/21 1/804/21 32/803/21 -f 172/419/9 173/418/9 2/819/9 1/823/9 -f 1698/1814/954 1699/1815/954 1701/1816/954 1700/1817/954 -f 1700/1817/955 1701/1816/955 1703/1818/955 1702/1819/955 -f 1702/1819/956 1703/1818/956 1705/1820/956 1704/1821/956 -f 1704/1821/957 1705/1820/957 1707/1822/957 1706/1823/957 -f 1706/1823/958 1707/1822/958 1709/1824/958 1708/1825/958 -f 1708/1825/959 1709/1824/959 1711/1826/959 1710/1827/959 -f 1710/1827/960 1711/1826/960 1713/1828/960 1712/1829/960 -f 1712/1829/961 1713/1828/961 1715/1830/961 1714/1831/961 -f 1714/1831/962 1715/1830/962 1717/1832/962 1716/1833/962 -f 1716/1833/963 1717/1832/963 1719/1834/963 1718/1835/963 -f 1718/1835/964 1719/1834/964 1721/1836/964 1720/1837/964 -f 1720/1837/965 1721/1836/965 1723/1838/965 1722/1839/965 -f 1722/1839/966 1723/1838/966 1725/1840/966 1724/1841/966 -f 1724/1841/967 1725/1840/967 1727/1842/967 1726/1843/967 -f 1726/1843/968 1727/1842/968 1729/1844/968 1728/1845/968 -f 1728/1845/969 1729/1844/969 1731/1846/969 1730/1847/969 -f 1730/1847/970 1731/1846/970 1733/1848/970 1732/1849/970 -f 1732/1849/971 1733/1848/971 1735/1850/971 1734/1851/971 -f 1734/1851/972 1735/1850/972 1737/1852/972 1736/1853/972 -f 1736/1853/973 1737/1852/973 1739/1854/973 1738/1855/973 -f 1738/1855/974 1739/1854/974 1741/1856/974 1740/1857/974 -f 1740/1857/975 1741/1856/975 1743/1858/975 1742/1859/975 -f 1742/1859/976 1743/1858/976 1745/1860/976 1744/1861/976 -f 1744/1861/977 1745/1860/977 1747/1862/977 1746/1863/977 -f 1746/1863/978 1747/1862/978 1749/1864/978 1748/1865/978 -f 1748/1865/979 1749/1864/979 1751/1866/979 1750/1867/979 -f 1750/1867/980 1751/1866/980 1753/1868/980 1752/1869/980 -f 1752/1869/981 1753/1868/981 1755/1870/981 1754/1871/981 -f 1754/1871/982 1755/1870/982 1757/1872/982 1756/1873/982 -f 1756/1873/983 1757/1872/983 1759/1874/983 1758/1875/983 -f 1719/1834/984 1717/1832/984 1771/1876/984 1772/1877/984 -f 1758/1875/985 1759/1874/985 1761/1878/985 1760/1879/985 -f 1760/1879/986 1761/1878/986 1699/1880/986 1698/1881/986 -f 1708/1825/566 1710/1827/566 1832/1882/566 1831/1883/566 -f 1776/1884/987 1775/1885/987 1794/1886/987 -f 1737/1852/988 1735/1850/988 1780/1887/988 1781/1888/988 -f 1755/1870/989 1753/1868/989 1789/1889/989 1790/1890/989 -f 1711/1826/990 1709/1824/990 1767/1891/990 1768/1892/990 -f 1729/1844/991 1727/1842/991 1776/1884/991 1777/1893/991 -f 1747/1862/992 1745/1860/992 1785/1894/992 1786/1895/992 -f 1703/1818/993 1701/1816/993 1762/1896/993 1764/1897/993 -f 1721/1836/994 1719/1834/994 1772/1877/994 1773/1898/994 -f 1739/1854/995 1737/1852/995 1781/1888/995 1782/1899/995 -f 1757/1872/996 1755/1870/996 1790/1890/996 1791/1900/996 -f 1713/1828/997 1711/1826/997 1768/1892/997 1769/1901/997 -f 1731/1846/998 1729/1844/998 1777/1893/998 1778/1902/998 -f 1749/1864/999 1747/1862/999 1786/1895/999 1787/1903/999 -f 1705/1820/1000 1703/1818/1000 1764/1897/1000 1765/1904/1000 -f 1723/1838/1001 1721/1836/1001 1773/1898/1001 1774/1905/1001 -f 1741/1856/1002 1739/1854/1002 1782/1899/1002 1783/1906/1002 -f 1759/1874/1003 1757/1872/1003 1791/1900/1003 1792/1907/1003 -f 1715/1830/1004 1713/1828/1004 1769/1901/1004 1770/1908/1004 -f 1733/1848/1005 1731/1846/1005 1778/1902/1005 1779/1909/1005 -f 1751/1866/1006 1749/1864/1006 1787/1903/1006 1788/1910/1006 -f 1707/1822/1007 1705/1820/1007 1765/1904/1007 1766/1911/1007 -f 1725/1840/1008 1723/1838/1008 1774/1905/1008 1775/1885/1008 -f 1743/1858/1009 1741/1856/1009 1783/1906/1009 1784/1912/1009 -f 1761/1878/1010 1759/1874/1010 1792/1907/1010 1793/1913/1010 -f 1717/1832/1011 1715/1830/1011 1770/1908/1011 1771/1876/1011 -f 1735/1850/1012 1733/1848/1012 1779/1909/1012 1780/1887/1012 -f 1753/1868/1013 1751/1866/1013 1788/1910/1013 1789/1889/1013 -f 1709/1824/1014 1707/1822/1014 1766/1911/1014 1767/1891/1014 -f 1727/1842/1015 1725/1840/1015 1775/1885/1015 1776/1884/1015 -f 1745/1860/1016 1743/1858/1016 1784/1912/1016 1785/1894/1016 -f 1701/1816/1017 1699/1815/1017 1763/1914/1017 1762/1896/1017 -f 1699/1880/1018 1761/1878/1018 1793/1913/1018 1763/1915/1018 -f 1948/1916/1019 1950/1917/1019 1795/1918/1019 1796/1919/1019 -f 1762/1896/1020 1763/1914/1020 1794/1920/1020 -f 1790/1890/1021 1789/1889/1021 1794/1921/1021 -f 1777/1893/1022 1776/1884/1022 1794/1922/1022 -f 1764/1897/1023 1762/1896/1023 1794/1923/1023 -f 1791/1900/1024 1790/1890/1024 1794/1924/1024 -f 1778/1902/1025 1777/1893/1025 1794/1925/1025 -f 1765/1904/1026 1764/1897/1026 1794/1926/1026 -f 1792/1907/1027 1791/1900/1027 1794/1927/1027 -f 1779/1909/1028 1778/1902/1028 1794/1928/1028 -f 1766/1911/1029 1765/1904/1029 1794/1929/1029 -f 1793/1913/1030 1792/1907/1030 1794/1930/1030 -f 1780/1887/1031 1779/1909/1031 1794/1931/1031 -f 1767/1891/1032 1766/1911/1032 1794/1932/1032 -f 1763/1915/1033 1793/1913/1033 1794/1933/1033 -f 1781/1888/1034 1780/1887/1034 1794/1934/1034 -f 1768/1892/1035 1767/1891/1035 1794/1935/1035 -f 1782/1899/1036 1781/1888/1036 1794/1936/1036 -f 1769/1901/1037 1768/1892/1037 1794/1937/1037 -f 1783/1906/1038 1782/1899/1038 1794/1938/1038 -f 1770/1908/1039 1769/1901/1039 1794/1939/1039 -f 1784/1912/1040 1783/1906/1040 1794/1940/1040 -f 1771/1876/1041 1770/1908/1041 1794/1941/1041 -f 1785/1894/1042 1784/1912/1042 1794/1942/1042 -f 1772/1877/1043 1771/1876/1043 1794/1943/1043 -f 1786/1895/1044 1785/1894/1044 1794/1944/1044 -f 1773/1898/1045 1772/1877/1045 1794/1945/1045 -f 1787/1903/1046 1786/1895/1046 1794/1946/1046 -f 1774/1905/1047 1773/1898/1047 1794/1947/1047 -f 1788/1910/1048 1787/1903/1048 1794/1948/1048 -f 1775/1885/1049 1774/1905/1049 1794/1949/1049 -f 1789/1889/1050 1788/1910/1050 1794/1950/1050 -f 1890/1951/1051 1893/1952/1051 1857/1953/1051 1826/1954/1051 -f 1726/1843/566 1728/1845/566 1841/1955/566 1840/1956/566 -f 1744/1861/566 1746/1863/566 1850/1957/566 1849/1958/566 -f 1700/1817/566 1702/1819/566 1828/1959/566 1827/1960/566 -f 1718/1835/566 1720/1837/566 1837/1961/566 1836/1962/566 -f 1736/1853/566 1738/1855/566 1846/1963/566 1845/1964/566 -f 1754/1871/566 1756/1873/566 1855/1965/566 1854/1966/566 -f 1710/1827/566 1712/1829/566 1833/1967/566 1832/1882/566 -f 1728/1845/566 1730/1847/566 1842/1968/566 1841/1955/566 -f 1746/1863/566 1748/1865/566 1851/1969/566 1850/1957/566 -f 1702/1819/566 1704/1821/566 1829/1970/566 1828/1959/566 -f 1720/1837/566 1722/1839/566 1838/1971/566 1837/1961/566 -f 1738/1855/566 1740/1857/566 1847/1972/566 1846/1963/566 -f 1756/1873/566 1758/1875/566 1856/1973/566 1855/1965/566 -f 1712/1829/566 1714/1831/566 1834/1974/566 1833/1967/566 -f 1730/1847/566 1732/1849/566 1843/1975/566 1842/1968/566 -f 1748/1865/566 1750/1867/566 1852/1976/566 1851/1969/566 -f 1704/1821/566 1706/1823/566 1830/1977/566 1829/1970/566 -f 1722/1839/566 1724/1841/566 1839/1978/566 1838/1971/566 -f 1740/1857/566 1742/1859/566 1848/1979/566 1847/1972/566 -f 1758/1875/566 1760/1879/566 1857/1953/566 1856/1973/566 -f 1714/1831/566 1716/1833/566 1835/1980/566 1834/1974/566 -f 1732/1849/566 1734/1851/566 1844/1981/566 1843/1975/566 -f 1750/1867/566 1752/1869/566 1853/1982/566 1852/1976/566 -f 1706/1823/566 1708/1825/566 1831/1883/566 1830/1977/566 -f 1724/1841/566 1726/1843/566 1840/1956/566 1839/1978/566 -f 1742/1859/566 1744/1861/566 1849/1958/566 1848/1979/566 -f 1698/1814/566 1700/1817/566 1827/1960/566 1826/1983/566 -f 1760/1879/566 1698/1881/566 1826/1954/566 1857/1953/566 -f 1716/1833/566 1718/1835/566 1836/1962/566 1835/1980/566 -f 1734/1851/566 1736/1853/566 1845/1964/566 1844/1981/566 -f 1752/1869/566 1754/1871/566 1854/1966/566 1853/1982/566 -f 1858/1984/566 1859/1985/566 1860/1986/566 1861/1987/566 1862/1988/566 1863/1989/566 1864/1990/566 1865/1991/566 1866/1992/566 1867/1993/566 1868/1994/566 1869/1995/566 1870/1996/566 1871/1997/566 1872/1998/566 1873/1999/566 1874/2000/566 1875/2001/566 1876/2002/566 1877/2003/566 1878/2004/566 1879/2005/566 1880/2006/566 1881/2007/566 1882/2008/566 1883/2009/566 1884/2010/566 1885/2011/566 1886/2012/566 1887/2013/566 1888/2014/566 1889/2015/566 -f 1893/1952/1052 1895/2016/1052 1856/1973/1052 1857/1953/1052 -f 1895/2016/1053 1897/2017/1053 1855/1965/1053 1856/1973/1053 -f 1897/2017/1054 1899/2018/1054 1854/1966/1054 1855/1965/1054 -f 1899/2018/1055 1901/2019/1055 1853/1982/1055 1854/1966/1055 -f 1901/2019/1056 1903/2020/1056 1852/1976/1056 1853/1982/1056 -f 1903/2020/1057 1905/2021/1057 1851/1969/1057 1852/1976/1057 -f 1905/2021/1058 1907/2022/1058 1850/1957/1058 1851/1969/1058 -f 1907/2022/1059 1909/2023/1059 1849/1958/1059 1850/1957/1059 -f 1909/2023/1060 1911/2024/1060 1848/1979/1060 1849/1958/1060 -f 1911/2024/1061 1913/2025/1061 1847/1972/1061 1848/1979/1061 -f 1913/2025/1062 1915/2026/1062 1846/1963/1062 1847/1972/1062 -f 1915/2026/1063 1917/2027/1063 1845/1964/1063 1846/1963/1063 -f 1917/2027/1064 1919/2028/1064 1844/1981/1064 1845/1964/1064 -f 1919/2028/1065 1921/2029/1065 1843/1975/1065 1844/1981/1065 -f 1921/2029/1066 1923/2030/1066 1842/1968/1066 1843/1975/1066 -f 1923/2030/1067 1925/2031/1067 1841/1955/1067 1842/1968/1067 -f 1925/2031/1068 1927/2032/1068 1840/1956/1068 1841/1955/1068 -f 1927/2032/1069 1929/2033/1069 1839/1978/1069 1840/1956/1069 -f 1929/2033/1070 1931/2034/1070 1838/1971/1070 1839/1978/1070 -f 1931/2034/1071 1933/2035/1071 1837/1961/1071 1838/1971/1071 -f 1933/2035/1072 1935/2036/1072 1836/1962/1072 1837/1961/1072 -f 1935/2036/1073 1937/2037/1073 1835/1980/1073 1836/1962/1073 -f 1937/2037/1074 1939/2038/1074 1834/1974/1074 1835/1980/1074 -f 1939/2038/1075 1941/2039/1075 1833/1967/1075 1834/1974/1075 -f 1941/2039/1076 1943/2040/1076 1832/1882/1076 1833/1967/1076 -f 1943/2040/1077 1945/2041/1077 1831/1883/1077 1832/1882/1077 -f 1945/2041/1078 1947/2042/1078 1830/1977/1078 1831/1883/1078 -f 1947/2042/1079 1949/2043/1079 1829/1970/1079 1830/1977/1079 -f 1949/2043/1080 1951/2044/1080 1828/1959/1080 1829/1970/1080 -f 1951/2044/1081 1953/2045/1081 1827/1960/1081 1828/1959/1081 -f 1953/2045/1082 1890/2046/1082 1826/1983/1082 1827/1960/1082 -f 1986/2047/1083 1955/2048/1083 1891/2049/1083 1952/2050/1083 -f 1954/2051/1084 1825/2052/1084 1890/2046/1084 1953/2045/1084 -f 1985/2053/1085 1986/2047/1085 1952/2050/1085 1950/1917/1085 -f 1795/1918/1086 1954/2051/1086 1953/2045/1086 1951/2044/1086 -f 1984/2054/1087 1985/2053/1087 1950/1917/1087 1948/1916/1087 -f 1796/1919/1088 1795/1918/1088 1951/2044/1088 1949/2043/1088 -f 1983/2055/1089 1984/2054/1089 1948/1916/1089 1946/2056/1089 -f 1797/2057/1090 1796/1919/1090 1949/2043/1090 1947/2042/1090 -f 1982/2058/1091 1983/2055/1091 1946/2056/1091 1944/2059/1091 -f 1798/2060/1092 1797/2057/1092 1947/2042/1092 1945/2041/1092 -f 1981/2061/1093 1982/2058/1093 1944/2059/1093 1942/2062/1093 -f 1799/2063/1094 1798/2060/1094 1945/2041/1094 1943/2040/1094 -f 1980/2064/1095 1981/2061/1095 1942/2062/1095 1940/2065/1095 -f 1800/2066/1096 1799/2063/1096 1943/2040/1096 1941/2039/1096 -f 1979/2067/1097 1980/2064/1097 1940/2065/1097 1938/2068/1097 -f 1801/2069/1098 1800/2066/1098 1941/2039/1098 1939/2038/1098 -f 1978/2070/1099 1979/2067/1099 1938/2068/1099 1936/2071/1099 -f 1802/2072/1100 1801/2069/1100 1939/2038/1100 1937/2037/1100 -f 1977/2073/1101 1978/2070/1101 1936/2071/1101 1934/2074/1101 -f 1803/2075/1102 1802/2072/1102 1937/2037/1102 1935/2036/1102 -f 1976/2076/1103 1977/2073/1103 1934/2074/1103 1932/2077/1103 -f 1804/2078/1104 1803/2075/1104 1935/2036/1104 1933/2035/1104 -f 1975/2079/1105 1976/2076/1105 1932/2077/1105 1930/2080/1105 -f 1805/2081/1106 1804/2078/1106 1933/2035/1106 1931/2034/1106 -f 1974/2082/1107 1975/2079/1107 1930/2080/1107 1928/2083/1107 -f 1806/2084/1108 1805/2081/1108 1931/2034/1108 1929/2033/1108 -f 1973/2085/1109 1974/2082/1109 1928/2083/1109 1926/2086/1109 -f 1807/2087/1110 1806/2084/1110 1929/2033/1110 1927/2032/1110 -f 1972/2088/1111 1973/2085/1111 1926/2086/1111 1924/2089/1111 -f 1808/2090/1112 1807/2087/1112 1927/2032/1112 1925/2031/1112 -f 1971/2091/1113 1972/2088/1113 1924/2089/1113 1922/2092/1113 -f 1809/2093/1114 1808/2090/1114 1925/2031/1114 1923/2030/1114 -f 1970/2094/1115 1971/2091/1115 1922/2092/1115 1920/2095/1115 -f 1810/2096/1116 1809/2093/1116 1923/2030/1116 1921/2029/1116 -f 1969/2097/1117 1970/2094/1117 1920/2095/1117 1918/2098/1117 -f 1811/2099/1118 1810/2096/1118 1921/2029/1118 1919/2028/1118 -f 1968/2100/1119 1969/2097/1119 1918/2098/1119 1916/2101/1119 -f 1812/2102/1120 1811/2099/1120 1919/2028/1120 1917/2027/1120 -f 1967/2103/1121 1968/2100/1121 1916/2101/1121 1914/2104/1121 -f 1813/2105/1122 1812/2102/1122 1917/2027/1122 1915/2026/1122 -f 1966/2106/1123 1967/2103/1123 1914/2104/1123 1912/2107/1123 -f 1814/2108/1124 1813/2105/1124 1915/2026/1124 1913/2025/1124 -f 1965/2109/1125 1966/2106/1125 1912/2107/1125 1910/2110/1125 -f 1815/2111/1126 1814/2108/1126 1913/2025/1126 1911/2024/1126 -f 1964/2112/1127 1965/2109/1127 1910/2110/1127 1908/2113/1127 -f 1816/2114/1128 1815/2111/1128 1911/2024/1128 1909/2023/1128 -f 1963/2115/1129 1964/2112/1129 1908/2113/1129 1906/2116/1129 -f 1817/2117/1130 1816/2114/1130 1909/2023/1130 1907/2022/1130 -f 1962/2118/1131 1963/2115/1131 1906/2116/1131 1904/2119/1131 -f 1818/2120/1132 1817/2117/1132 1907/2022/1132 1905/2021/1132 -f 1961/2121/1133 1962/2118/1133 1904/2119/1133 1902/2122/1133 -f 1819/2123/1134 1818/2120/1134 1905/2021/1134 1903/2020/1134 -f 1960/2124/1135 1961/2121/1135 1902/2122/1135 1900/2125/1135 -f 1820/2126/1136 1819/2123/1136 1903/2020/1136 1901/2019/1136 -f 1959/2127/1137 1960/2124/1137 1900/2125/1137 1898/2128/1137 -f 1821/2129/1138 1820/2126/1138 1901/2019/1138 1899/2018/1138 -f 1958/2130/1139 1959/2127/1139 1898/2128/1139 1896/2131/1139 -f 1822/2132/1140 1821/2129/1140 1899/2018/1140 1897/2017/1140 -f 1957/2133/1141 1958/2130/1141 1896/2131/1141 1894/2134/1141 -f 1823/2135/1142 1822/2132/1142 1897/2017/1142 1895/2016/1142 -f 1956/2136/1143 1957/2133/1143 1894/2134/1143 1892/2137/1143 -f 1824/2138/1144 1823/2135/1144 1895/2016/1144 1893/1952/1144 -f 1955/2139/1145 1956/2136/1145 1892/2137/1145 1891/2140/1145 -f 1825/2141/1146 1824/2138/1146 1893/1952/1146 1890/1951/1146 -f 1946/2056/1147 1948/1916/1147 1796/1919/1147 1797/2057/1147 -f 1944/2059/1148 1946/2056/1148 1797/2057/1148 1798/2060/1148 -f 1942/2062/1149 1944/2059/1149 1798/2060/1149 1799/2063/1149 -f 1940/2065/1150 1942/2062/1150 1799/2063/1150 1800/2066/1150 -f 1938/2068/1151 1940/2065/1151 1800/2066/1151 1801/2069/1151 -f 1936/2071/1152 1938/2068/1152 1801/2069/1152 1802/2072/1152 -f 1934/2074/1153 1936/2071/1153 1802/2072/1153 1803/2075/1153 -f 1932/2077/1154 1934/2074/1154 1803/2075/1154 1804/2078/1154 -f 1930/2080/1155 1932/2077/1155 1804/2078/1155 1805/2081/1155 -f 1928/2083/1156 1930/2080/1156 1805/2081/1156 1806/2084/1156 -f 1926/2086/1157 1928/2083/1157 1806/2084/1157 1807/2087/1157 -f 1924/2089/1158 1926/2086/1158 1807/2087/1158 1808/2090/1158 -f 1922/2092/1159 1924/2089/1159 1808/2090/1159 1809/2093/1159 -f 1920/2095/1160 1922/2092/1160 1809/2093/1160 1810/2096/1160 -f 1918/2098/1161 1920/2095/1161 1810/2096/1161 1811/2099/1161 -f 1916/2101/1162 1918/2098/1162 1811/2099/1162 1812/2102/1162 -f 1914/2104/1163 1916/2101/1163 1812/2102/1163 1813/2105/1163 -f 1912/2107/1164 1914/2104/1164 1813/2105/1164 1814/2108/1164 -f 1910/2110/1165 1912/2107/1165 1814/2108/1165 1815/2111/1165 -f 1908/2113/1166 1910/2110/1166 1815/2111/1166 1816/2114/1166 -f 1906/2116/1167 1908/2113/1167 1816/2114/1167 1817/2117/1167 -f 1904/2119/1168 1906/2116/1168 1817/2117/1168 1818/2120/1168 -f 1902/2122/1169 1904/2119/1169 1818/2120/1169 1819/2123/1169 -f 1900/2125/1170 1902/2122/1170 1819/2123/1170 1820/2126/1170 -f 1898/2128/1171 1900/2125/1171 1820/2126/1171 1821/2129/1171 -f 1896/2131/1172 1898/2128/1172 1821/2129/1172 1822/2132/1172 -f 1894/2134/1173 1896/2131/1173 1822/2132/1173 1823/2135/1173 -f 1892/2137/1174 1894/2134/1174 1823/2135/1174 1824/2138/1174 -f 1891/2140/1175 1892/2137/1175 1824/2138/1175 1825/2141/1175 -f 1950/1917/1176 1952/2050/1176 1954/2051/1176 1795/1918/1176 -f 1952/2050/1177 1891/2049/1177 1825/2052/1177 1954/2051/1177 -f 1858/1984/1178 1889/2015/1178 1956/2136/1178 1955/2139/1178 -f 1889/2015/1179 1888/2014/1179 1957/2133/1179 1956/2136/1179 -f 1888/2014/1180 1887/2013/1180 1958/2130/1180 1957/2133/1180 -f 1887/2013/1181 1886/2012/1181 1959/2127/1181 1958/2130/1181 -f 1886/2012/1182 1885/2011/1182 1960/2124/1182 1959/2127/1182 -f 1885/2011/1183 1884/2010/1183 1961/2121/1183 1960/2124/1183 -f 1884/2010/1184 1883/2009/1184 1962/2118/1184 1961/2121/1184 -f 1883/2009/1185 1882/2008/1185 1963/2115/1185 1962/2118/1185 -f 1882/2008/1186 1881/2007/1186 1964/2112/1186 1963/2115/1186 -f 1881/2007/1187 1880/2006/1187 1965/2109/1187 1964/2112/1187 -f 1880/2006/1188 1879/2005/1188 1966/2106/1188 1965/2109/1188 -f 1879/2005/1189 1878/2004/1189 1967/2103/1189 1966/2106/1189 -f 1878/2004/1190 1877/2003/1190 1968/2100/1190 1967/2103/1190 -f 1877/2003/1191 1876/2002/1191 1969/2097/1191 1968/2100/1191 -f 1876/2002/1192 1875/2001/1192 1970/2094/1192 1969/2097/1192 -f 1875/2001/1193 1874/2000/1193 1971/2091/1193 1970/2094/1193 -f 1874/2000/1194 1873/1999/1194 1972/2088/1194 1971/2091/1194 -f 1873/1999/1195 1872/1998/1195 1973/2085/1195 1972/2088/1195 -f 1872/1998/1196 1871/1997/1196 1974/2082/1196 1973/2085/1196 -f 1871/1997/1197 1870/1996/1197 1975/2079/1197 1974/2082/1197 -f 1870/1996/1198 1869/1995/1198 1976/2076/1198 1975/2079/1198 -f 1869/1995/1199 1868/1994/1199 1977/2073/1199 1976/2076/1199 -f 1868/1994/1200 1867/1993/1200 1978/2070/1200 1977/2073/1200 -f 1867/1993/1201 1866/1992/1201 1979/2067/1201 1978/2070/1201 -f 1866/1992/1202 1865/1991/1202 1980/2064/1202 1979/2067/1202 -f 1865/1991/1203 1864/1990/1203 1981/2061/1203 1980/2064/1203 -f 1864/1990/1204 1863/1989/1204 1982/2058/1204 1981/2061/1204 -f 1863/1989/1205 1862/1988/1205 1983/2055/1205 1982/2058/1205 -f 1862/1988/1206 1861/1987/1206 1984/2054/1206 1983/2055/1206 -f 1861/1987/1207 1860/1986/1207 1985/2053/1207 1984/2054/1207 -f 1860/1986/1208 1859/1985/1208 1986/2047/1208 1985/2053/1208 -f 1859/1985/1209 1858/1984/1209 1955/2048/1209 1986/2047/1209 -f 1987/2142/1210 1989/2143/1210 1990/2144/1210 1988/2145/1210 -f 1989/2143/1211 1991/2146/1211 1992/2147/1211 1990/2144/1211 -f 1991/2146/1212 1993/2148/1212 1994/2149/1212 1992/2147/1212 -f 1993/2148/1213 1995/2150/1213 1996/2151/1213 1994/2149/1213 -f 1995/2150/1214 1997/2152/1214 1998/2153/1214 1996/2151/1214 -f 1997/2152/1215 1999/2154/1215 2000/2155/1215 1998/2153/1215 -f 1999/2154/1216 2001/2156/1216 2002/2157/1216 2000/2155/1216 -f 2001/2156/1217 2003/2158/1217 2004/2159/1217 2002/2157/1217 -f 2003/2158/1218 2005/2160/1218 2006/2161/1218 2004/2159/1218 -f 2005/2160/1219 2007/2162/1219 2008/2163/1219 2006/2161/1219 -f 2007/2162/1220 2009/2164/1220 2010/2165/1220 2008/2163/1220 -f 2009/2164/1221 2011/2166/1221 2012/2167/1221 2010/2165/1221 -f 2011/2166/1222 2013/2168/1222 2014/2169/1222 2012/2167/1222 -f 2013/2168/1223 2015/2170/1223 2016/2171/1223 2014/2169/1223 -f 2015/2170/1224 2017/2172/1224 2018/2173/1224 2016/2171/1224 -f 2017/2172/1225 2019/2174/1225 2020/2175/1225 2018/2173/1225 -f 2019/2174/1226 2021/2176/1226 2022/2177/1226 2020/2175/1226 -f 2021/2176/1227 2023/2178/1227 2024/2179/1227 2022/2177/1227 -f 2023/2178/1228 2025/2180/1228 2026/2181/1228 2024/2179/1228 -f 2025/2180/1229 2027/2182/1229 2028/2183/1229 2026/2181/1229 -f 2027/2182/1230 2029/2184/1230 2030/2185/1230 2028/2183/1230 -f 2029/2184/1231 2031/2186/1231 2032/2187/1231 2030/2185/1231 -f 2031/2186/1232 2033/2188/1232 2034/2189/1232 2032/2187/1232 -f 2033/2188/1233 2035/2190/1233 2036/2191/1233 2034/2189/1233 -f 2035/2190/1234 2037/2192/1234 2038/2193/1234 2036/2191/1234 -f 2037/2192/1235 2039/2194/1235 2040/2195/1235 2038/2193/1235 -f 2039/2194/1236 2041/2196/1236 2042/2197/1236 2040/2195/1236 -f 2041/2196/1237 2043/2198/1237 2044/2199/1237 2042/2197/1237 -f 2043/2198/1238 2045/2200/1238 2046/2201/1238 2044/2199/1238 -f 2045/2200/1239 2047/2202/1239 2048/2203/1239 2046/2201/1239 -f 2008/2163/1240 2061/2204/1240 2060/2205/1240 2006/2161/1240 -f 2047/2202/1241 2049/2206/1241 2050/2207/1241 2048/2203/1241 -f 2049/2206/1242 1987/2208/1242 1988/2209/1242 2050/2207/1242 -f 1997/2152/566 2120/2210/566 2121/2211/566 1999/2154/566 -f 2065/2212/1026 2083/2213/1026 2064/2214/1026 -f 2026/2181/1243 2070/2215/1243 2069/2216/1243 2024/2179/1243 -f 2044/2199/1244 2079/2217/1244 2078/2218/1244 2042/2197/1244 -f 2000/2155/1245 2057/2219/1245 2056/2220/1245 1998/2153/1245 -f 2018/2173/1246 2066/2221/1246 2065/2212/1246 2016/2171/1246 -f 2036/2191/1247 2075/2222/1247 2074/2223/1247 2034/2189/1247 -f 1992/2147/1248 2053/2224/1248 2051/2225/1248 1990/2144/1248 -f 2010/2165/1249 2062/2226/1249 2061/2204/1249 2008/2163/1249 -f 2028/2183/1250 2071/2227/1250 2070/2215/1250 2026/2181/1250 -f 2046/2201/1251 2080/2228/1251 2079/2217/1251 2044/2199/1251 -f 2002/2157/1252 2058/2229/1252 2057/2219/1252 2000/2155/1252 -f 2020/2175/1253 2067/2230/1253 2066/2221/1253 2018/2173/1253 -f 2038/2193/1254 2076/2231/1254 2075/2222/1254 2036/2191/1254 -f 1994/2149/1255 2054/2232/1255 2053/2224/1255 1992/2147/1255 -f 2012/2167/1256 2063/2233/1256 2062/2226/1256 2010/2165/1256 -f 2030/2185/1257 2072/2234/1257 2071/2227/1257 2028/2183/1257 -f 2048/2203/1258 2081/2235/1258 2080/2228/1258 2046/2201/1258 -f 2004/2159/1259 2059/2236/1259 2058/2229/1259 2002/2157/1259 -f 2022/2177/1260 2068/2237/1260 2067/2230/1260 2020/2175/1260 -f 2040/2195/1261 2077/2238/1261 2076/2231/1261 2038/2193/1261 -f 1996/2151/1262 2055/2239/1262 2054/2232/1262 1994/2149/1262 -f 2014/2169/1263 2064/2214/1263 2063/2233/1263 2012/2167/1263 -f 2032/2187/1264 2073/2240/1264 2072/2234/1264 2030/2185/1264 -f 2050/2207/1265 2082/2241/1265 2081/2235/1265 2048/2203/1265 -f 2006/2161/1266 2060/2205/1266 2059/2236/1266 2004/2159/1266 -f 2024/2179/1267 2069/2216/1267 2068/2237/1267 2022/2177/1267 -f 2042/2197/1268 2078/2218/1268 2077/2238/1268 2040/2195/1268 -f 1998/2153/1269 2056/2220/1269 2055/2239/1269 1996/2151/1269 -f 2016/2171/1270 2065/2212/1270 2064/2214/1270 2014/2169/1270 -f 2034/2189/1271 2074/2223/1271 2073/2240/1271 2032/2187/1271 -f 1990/2144/1272 2051/2225/1272 2052/2242/1272 1988/2145/1272 -f 1988/2209/1273 2052/2243/1273 2082/2241/1273 2050/2207/1273 -f 2237/2244/1274 2085/2245/1274 2084/2246/1274 2239/2247/1274 -f 2051/2225/1025 2083/2248/1025 2052/2242/1025 -f 2079/2217/1038 2083/2249/1038 2078/2218/1038 -f 2066/2221/1023 2083/2250/1023 2065/2212/1023 -f 2053/2224/1022 2083/2251/1022 2051/2225/1022 -f 2080/2228/1036 2083/2252/1036 2079/2217/1036 -f 2067/2230/1020 2083/2253/1020 2066/2221/1020 -f 2054/2232/1275 2083/2254/1275 2053/2224/1275 -f 2081/2235/1276 2083/2255/1276 2080/2228/1276 -f 2068/2237/1033 2083/2256/1033 2067/2230/1033 -f 2055/2239/1049 2083/2257/1049 2054/2232/1049 -f 2082/2241/1031 2083/2258/1031 2081/2235/1031 -f 2069/2216/1030 2083/2259/1030 2068/2237/1030 -f 2056/2220/1047 2083/2260/1047 2055/2239/1047 -f 2052/2243/1028 2083/2261/1028 2082/2241/1028 -f 2070/2215/1027 2083/2262/1027 2069/2216/1027 -f 2057/2219/1045 2083/2263/1045 2056/2220/1045 -f 2071/2227/1024 2083/2264/1024 2070/2215/1024 -f 2058/2229/1043 2083/2265/1043 2057/2219/1043 -f 2072/2234/1021 2083/2266/1021 2071/2227/1021 -f 2059/2236/1041 2083/2267/1041 2058/2229/1041 -f 2073/2240/1050 2083/2268/1050 2072/2234/1050 -f 2060/2205/1039 2083/2269/1039 2059/2236/1039 -f 2074/2223/1048 2083/2270/1048 2073/2240/1048 -f 2061/2204/1037 2083/2271/1037 2060/2205/1037 -f 2075/2222/1046 2083/2272/1046 2074/2223/1046 -f 2062/2226/1035 2083/2273/1035 2061/2204/1035 -f 2076/2231/1044 2083/2274/1044 2075/2222/1044 -f 2063/2233/1032 2083/2275/1032 2062/2226/1032 -f 2077/2238/1042 2083/2276/1042 2076/2231/1042 -f 2064/2214/1029 2083/2277/1029 2063/2233/1029 -f 2078/2218/1040 2083/2278/1040 2077/2238/1040 -f 2179/2279/1277 2115/2280/1277 2146/2281/1277 2182/2282/1277 -f 2015/2170/566 2129/2283/566 2130/2284/566 2017/2172/566 -f 2033/2188/566 2138/2285/566 2139/2286/566 2035/2190/566 -f 1989/2143/566 2116/2287/566 2117/2288/566 1991/2146/566 -f 2007/2162/566 2125/2289/566 2126/2290/566 2009/2164/566 -f 2025/2180/566 2134/2291/566 2135/2292/566 2027/2182/566 -f 2043/2198/566 2143/2293/566 2144/2294/566 2045/2200/566 -f 1999/2154/566 2121/2211/566 2122/2295/566 2001/2156/566 -f 2017/2172/566 2130/2284/566 2131/2296/566 2019/2174/566 -f 2035/2190/566 2139/2286/566 2140/2297/566 2037/2192/566 -f 1991/2146/566 2117/2288/566 2118/2298/566 1993/2148/566 -f 2009/2164/566 2126/2290/566 2127/2299/566 2011/2166/566 -f 2027/2182/566 2135/2292/566 2136/2300/566 2029/2184/566 -f 2045/2200/566 2144/2294/566 2145/2301/566 2047/2202/566 -f 2001/2156/566 2122/2295/566 2123/2302/566 2003/2158/566 -f 2019/2174/566 2131/2296/566 2132/2303/566 2021/2176/566 -f 2037/2192/566 2140/2297/566 2141/2304/566 2039/2194/566 -f 1993/2148/566 2118/2298/566 2119/2305/566 1995/2150/566 -f 2011/2166/566 2127/2299/566 2128/2306/566 2013/2168/566 -f 2029/2184/566 2136/2300/566 2137/2307/566 2031/2186/566 -f 2047/2202/566 2145/2301/566 2146/2281/566 2049/2206/566 -f 2003/2158/566 2123/2302/566 2124/2308/566 2005/2160/566 -f 2021/2176/566 2132/2303/566 2133/2309/566 2023/2178/566 -f 2039/2194/566 2141/2304/566 2142/2310/566 2041/2196/566 -f 1995/2150/566 2119/2305/566 2120/2210/566 1997/2152/566 -f 2013/2168/566 2128/2306/566 2129/2283/566 2015/2170/566 -f 2031/2186/566 2137/2307/566 2138/2285/566 2033/2188/566 -f 1987/2142/566 2115/2311/566 2116/2287/566 1989/2143/566 -f 2049/2206/566 2146/2281/566 2115/2280/566 1987/2208/566 -f 2005/2160/566 2124/2308/566 2125/2289/566 2007/2162/566 -f 2023/2178/566 2133/2309/566 2134/2291/566 2025/2180/566 -f 2041/2196/566 2142/2310/566 2143/2293/566 2043/2198/566 -f 2147/2312/1278 2178/2313/1278 2177/2314/1278 2176/2315/1278 2175/2316/1278 2174/2317/1278 2173/2318/1278 2172/2319/1278 2171/2320/1278 2170/2321/1278 2169/2322/1278 2168/2323/1278 2167/2324/1278 2166/2325/1278 2165/2326/1278 2164/2327/1278 2163/2328/1278 2162/2329/1278 2161/2330/1278 2160/2331/1278 2159/2332/1278 2158/2333/1278 2157/2334/1278 2156/2335/1278 2155/2336/1278 2154/2337/1278 2153/2338/1278 2152/2339/1278 2151/2340/1278 2150/2341/1278 2149/2342/1278 2148/2343/1278 -f 2182/2282/1279 2146/2281/1279 2145/2301/1279 2184/2344/1279 -f 2184/2344/1280 2145/2301/1280 2144/2294/1280 2186/2345/1280 -f 2186/2345/1281 2144/2294/1281 2143/2293/1281 2188/2346/1281 -f 2188/2346/1282 2143/2293/1282 2142/2310/1282 2190/2347/1282 -f 2190/2347/1283 2142/2310/1283 2141/2304/1283 2192/2348/1283 -f 2192/2348/1284 2141/2304/1284 2140/2297/1284 2194/2349/1284 -f 2194/2349/1285 2140/2297/1285 2139/2286/1285 2196/2350/1285 -f 2196/2350/1286 2139/2286/1286 2138/2285/1286 2198/2351/1286 -f 2198/2351/1287 2138/2285/1287 2137/2307/1287 2200/2352/1287 -f 2200/2352/1288 2137/2307/1288 2136/2300/1288 2202/2353/1288 -f 2202/2353/1289 2136/2300/1289 2135/2292/1289 2204/2354/1289 -f 2204/2354/1290 2135/2292/1290 2134/2291/1290 2206/2355/1290 -f 2206/2355/1291 2134/2291/1291 2133/2309/1291 2208/2356/1291 -f 2208/2356/1292 2133/2309/1292 2132/2303/1292 2210/2357/1292 -f 2210/2357/1293 2132/2303/1293 2131/2296/1293 2212/2358/1293 -f 2212/2358/1294 2131/2296/1294 2130/2284/1294 2214/2359/1294 -f 2214/2359/1295 2130/2284/1295 2129/2283/1295 2216/2360/1295 -f 2216/2360/1296 2129/2283/1296 2128/2306/1296 2218/2361/1296 -f 2218/2361/1297 2128/2306/1297 2127/2299/1297 2220/2362/1297 -f 2220/2362/1298 2127/2299/1298 2126/2290/1298 2222/2363/1298 -f 2222/2363/1299 2126/2290/1299 2125/2289/1299 2224/2364/1299 -f 2224/2364/1300 2125/2289/1300 2124/2308/1300 2226/2365/1300 -f 2226/2365/1301 2124/2308/1301 2123/2302/1301 2228/2366/1301 -f 2228/2366/1302 2123/2302/1302 2122/2295/1302 2230/2367/1302 -f 2230/2367/1303 2122/2295/1303 2121/2211/1303 2232/2368/1303 -f 2232/2368/1304 2121/2211/1304 2120/2210/1304 2234/2369/1304 -f 2234/2369/1305 2120/2210/1305 2119/2305/1305 2236/2370/1305 -f 2236/2370/1306 2119/2305/1306 2118/2298/1306 2238/2371/1306 -f 2238/2371/1307 2118/2298/1307 2117/2288/1307 2240/2372/1307 -f 2240/2372/1308 2117/2288/1308 2116/2287/1308 2242/2373/1308 -f 2242/2373/1309 2116/2287/1309 2115/2311/1309 2179/2374/1309 -f 2275/2375/1310 2241/2376/1310 2180/2377/1310 2244/2378/1310 -f 2243/2379/1311 2242/2373/1311 2179/2374/1311 2114/2380/1311 -f 2274/2381/1312 2239/2247/1312 2241/2376/1312 2275/2375/1312 -f 2084/2246/1313 2240/2372/1313 2242/2373/1313 2243/2379/1313 -f 2273/2382/1314 2237/2244/1314 2239/2247/1314 2274/2381/1314 -f 2085/2245/1315 2238/2371/1315 2240/2372/1315 2084/2246/1315 -f 2272/2383/1316 2235/2384/1316 2237/2244/1316 2273/2382/1316 -f 2086/2385/1317 2236/2370/1317 2238/2371/1317 2085/2245/1317 -f 2271/2386/1318 2233/2387/1318 2235/2384/1318 2272/2383/1318 -f 2087/2388/1319 2234/2369/1319 2236/2370/1319 2086/2385/1319 -f 2270/2389/1320 2231/2390/1320 2233/2387/1320 2271/2386/1320 -f 2088/2391/1321 2232/2368/1321 2234/2369/1321 2087/2388/1321 -f 2269/2392/1322 2229/2393/1322 2231/2390/1322 2270/2389/1322 -f 2089/2394/1323 2230/2367/1323 2232/2368/1323 2088/2391/1323 -f 2268/2395/1324 2227/2396/1324 2229/2393/1324 2269/2392/1324 -f 2090/2397/1325 2228/2366/1325 2230/2367/1325 2089/2394/1325 -f 2267/2398/1326 2225/2399/1326 2227/2396/1326 2268/2395/1326 -f 2091/2400/1327 2226/2365/1327 2228/2366/1327 2090/2397/1327 -f 2266/2401/1328 2223/2402/1328 2225/2399/1328 2267/2398/1328 -f 2092/2403/1329 2224/2364/1329 2226/2365/1329 2091/2400/1329 -f 2265/2404/1330 2221/2405/1330 2223/2402/1330 2266/2401/1330 -f 2093/2406/1331 2222/2363/1331 2224/2364/1331 2092/2403/1331 -f 2264/2407/1332 2219/2408/1332 2221/2405/1332 2265/2404/1332 -f 2094/2409/1333 2220/2362/1333 2222/2363/1333 2093/2406/1333 -f 2263/2410/1334 2217/2411/1334 2219/2408/1334 2264/2407/1334 -f 2095/2412/1335 2218/2361/1335 2220/2362/1335 2094/2409/1335 -f 2262/2413/1336 2215/2414/1336 2217/2411/1336 2263/2410/1336 -f 2096/2415/1337 2216/2360/1337 2218/2361/1337 2095/2412/1337 -f 2261/2416/1338 2213/2417/1338 2215/2414/1338 2262/2413/1338 -f 2097/2418/1339 2214/2359/1339 2216/2360/1339 2096/2415/1339 -f 2260/2419/1340 2211/2420/1340 2213/2417/1340 2261/2416/1340 -f 2098/2421/1341 2212/2358/1341 2214/2359/1341 2097/2418/1341 -f 2259/2422/1342 2209/2423/1342 2211/2420/1342 2260/2419/1342 -f 2099/2424/1343 2210/2357/1343 2212/2358/1343 2098/2421/1343 -f 2258/2425/1344 2207/2426/1344 2209/2423/1344 2259/2422/1344 -f 2100/2427/1345 2208/2356/1345 2210/2357/1345 2099/2424/1345 -f 2257/2428/1346 2205/2429/1346 2207/2426/1346 2258/2425/1346 -f 2101/2430/1347 2206/2355/1347 2208/2356/1347 2100/2427/1347 -f 2256/2431/1348 2203/2432/1348 2205/2429/1348 2257/2428/1348 -f 2102/2433/1349 2204/2354/1349 2206/2355/1349 2101/2430/1349 -f 2255/2434/1350 2201/2435/1350 2203/2432/1350 2256/2431/1350 -f 2103/2436/1351 2202/2353/1351 2204/2354/1351 2102/2433/1351 -f 2254/2437/1352 2199/2438/1352 2201/2435/1352 2255/2434/1352 -f 2104/2439/1353 2200/2352/1353 2202/2353/1353 2103/2436/1353 -f 2253/2440/1354 2197/2441/1354 2199/2438/1354 2254/2437/1354 -f 2105/2442/1355 2198/2351/1355 2200/2352/1355 2104/2439/1355 -f 2252/2443/1356 2195/2444/1356 2197/2441/1356 2253/2440/1356 -f 2106/2445/1357 2196/2350/1357 2198/2351/1357 2105/2442/1357 -f 2251/2446/1358 2193/2447/1358 2195/2444/1358 2252/2443/1358 -f 2107/2448/1359 2194/2349/1359 2196/2350/1359 2106/2445/1359 -f 2250/2449/1360 2191/2450/1360 2193/2447/1360 2251/2446/1360 -f 2108/2451/1361 2192/2348/1361 2194/2349/1361 2107/2448/1361 -f 2249/2452/1362 2189/2453/1362 2191/2450/1362 2250/2449/1362 -f 2109/2454/1363 2190/2347/1363 2192/2348/1363 2108/2451/1363 -f 2248/2455/1364 2187/2456/1364 2189/2453/1364 2249/2452/1364 -f 2110/2457/1365 2188/2346/1365 2190/2347/1365 2109/2454/1365 -f 2247/2458/1366 2185/2459/1366 2187/2456/1366 2248/2455/1366 -f 2111/2460/1367 2186/2345/1367 2188/2346/1367 2110/2457/1367 -f 2246/2461/1368 2183/2462/1368 2185/2459/1368 2247/2458/1368 -f 2112/2463/1369 2184/2344/1369 2186/2345/1369 2111/2460/1369 -f 2245/2464/1370 2181/2465/1370 2183/2462/1370 2246/2461/1370 -f 2113/2466/1371 2182/2282/1371 2184/2344/1371 2112/2463/1371 -f 2244/2467/1372 2180/2468/1372 2181/2465/1372 2245/2464/1372 -f 2114/2469/1373 2179/2279/1373 2182/2282/1373 2113/2466/1373 -f 2235/2384/1374 2086/2385/1374 2085/2245/1374 2237/2244/1374 -f 2233/2387/1375 2087/2388/1375 2086/2385/1375 2235/2384/1375 -f 2231/2390/1376 2088/2391/1376 2087/2388/1376 2233/2387/1376 -f 2229/2393/1377 2089/2394/1377 2088/2391/1377 2231/2390/1377 -f 2227/2396/1378 2090/2397/1378 2089/2394/1378 2229/2393/1378 -f 2225/2399/1379 2091/2400/1379 2090/2397/1379 2227/2396/1379 -f 2223/2402/1380 2092/2403/1380 2091/2400/1380 2225/2399/1380 -f 2221/2405/1381 2093/2406/1381 2092/2403/1381 2223/2402/1381 -f 2219/2408/1382 2094/2409/1382 2093/2406/1382 2221/2405/1382 -f 2217/2411/1383 2095/2412/1383 2094/2409/1383 2219/2408/1383 -f 2215/2414/1384 2096/2415/1384 2095/2412/1384 2217/2411/1384 -f 2213/2417/1385 2097/2418/1385 2096/2415/1385 2215/2414/1385 -f 2211/2420/1386 2098/2421/1386 2097/2418/1386 2213/2417/1386 -f 2209/2423/1387 2099/2424/1387 2098/2421/1387 2211/2420/1387 -f 2207/2426/1388 2100/2427/1388 2099/2424/1388 2209/2423/1388 -f 2205/2429/1389 2101/2430/1389 2100/2427/1389 2207/2426/1389 -f 2203/2432/1390 2102/2433/1390 2101/2430/1390 2205/2429/1390 -f 2201/2435/1391 2103/2436/1391 2102/2433/1391 2203/2432/1391 -f 2199/2438/1392 2104/2439/1392 2103/2436/1392 2201/2435/1392 -f 2197/2441/1393 2105/2442/1393 2104/2439/1393 2199/2438/1393 -f 2195/2444/1394 2106/2445/1394 2105/2442/1394 2197/2441/1394 -f 2193/2447/1395 2107/2448/1395 2106/2445/1395 2195/2444/1395 -f 2191/2450/1396 2108/2451/1396 2107/2448/1396 2193/2447/1396 -f 2189/2453/1397 2109/2454/1397 2108/2451/1397 2191/2450/1397 -f 2187/2456/1398 2110/2457/1398 2109/2454/1398 2189/2453/1398 -f 2185/2459/1399 2111/2460/1399 2110/2457/1399 2187/2456/1399 -f 2183/2462/1400 2112/2463/1400 2111/2460/1400 2185/2459/1400 -f 2181/2465/1401 2113/2466/1401 2112/2463/1401 2183/2462/1401 -f 2180/2468/1402 2114/2469/1402 2113/2466/1402 2181/2465/1402 -f 2239/2247/1403 2084/2246/1403 2243/2379/1403 2241/2376/1403 -f 2241/2376/1404 2243/2379/1404 2114/2380/1404 2180/2377/1404 -f 2147/2312/1405 2244/2467/1405 2245/2464/1405 2178/2313/1405 -f 2178/2313/1406 2245/2464/1406 2246/2461/1406 2177/2314/1406 -f 2177/2314/1407 2246/2461/1407 2247/2458/1407 2176/2315/1407 -f 2176/2315/1408 2247/2458/1408 2248/2455/1408 2175/2316/1408 -f 2175/2316/1409 2248/2455/1409 2249/2452/1409 2174/2317/1409 -f 2174/2317/1410 2249/2452/1410 2250/2449/1410 2173/2318/1410 -f 2173/2318/1411 2250/2449/1411 2251/2446/1411 2172/2319/1411 -f 2172/2319/1412 2251/2446/1412 2252/2443/1412 2171/2320/1412 -f 2171/2320/1413 2252/2443/1413 2253/2440/1413 2170/2321/1413 -f 2170/2321/1414 2253/2440/1414 2254/2437/1414 2169/2322/1414 -f 2169/2322/1415 2254/2437/1415 2255/2434/1415 2168/2323/1415 -f 2168/2323/1416 2255/2434/1416 2256/2431/1416 2167/2324/1416 -f 2167/2324/1417 2256/2431/1417 2257/2428/1417 2166/2325/1417 -f 2166/2325/1418 2257/2428/1418 2258/2425/1418 2165/2326/1418 -f 2165/2326/1419 2258/2425/1419 2259/2422/1419 2164/2327/1419 -f 2164/2327/1420 2259/2422/1420 2260/2419/1420 2163/2328/1420 -f 2163/2328/1421 2260/2419/1421 2261/2416/1421 2162/2329/1421 -f 2162/2329/1422 2261/2416/1422 2262/2413/1422 2161/2330/1422 -f 2161/2330/1423 2262/2413/1423 2263/2410/1423 2160/2331/1423 -f 2160/2331/1424 2263/2410/1424 2264/2407/1424 2159/2332/1424 -f 2159/2332/1425 2264/2407/1425 2265/2404/1425 2158/2333/1425 -f 2158/2333/1426 2265/2404/1426 2266/2401/1426 2157/2334/1426 -f 2157/2334/1427 2266/2401/1427 2267/2398/1427 2156/2335/1427 -f 2156/2335/1428 2267/2398/1428 2268/2395/1428 2155/2336/1428 -f 2155/2336/1429 2268/2395/1429 2269/2392/1429 2154/2337/1429 -f 2154/2337/1430 2269/2392/1430 2270/2389/1430 2153/2338/1430 -f 2153/2338/1431 2270/2389/1431 2271/2386/1431 2152/2339/1431 -f 2152/2339/1432 2271/2386/1432 2272/2383/1432 2151/2340/1432 -f 2151/2340/1433 2272/2383/1433 2273/2382/1433 2150/2341/1433 -f 2150/2341/1434 2273/2382/1434 2274/2381/1434 2149/2342/1434 -f 2149/2342/1435 2274/2381/1435 2275/2375/1435 2148/2343/1435 -f 2148/2343/1436 2275/2375/1436 2244/2378/1436 2147/2312/1436 -f 2276/2470/954 2277/2471/954 2279/2472/954 2278/2473/954 -f 2278/2473/955 2279/2472/955 2281/2474/955 2280/2475/955 -f 2280/2475/956 2281/2474/956 2283/2476/956 2282/2477/956 -f 2282/2477/957 2283/2476/957 2285/2478/957 2284/2479/957 -f 2284/2479/958 2285/2478/958 2287/2480/958 2286/2481/958 -f 2286/2481/959 2287/2480/959 2289/2482/959 2288/2483/959 -f 2288/2483/960 2289/2482/960 2291/2484/960 2290/2485/960 -f 2290/2485/961 2291/2484/961 2293/2486/961 2292/2487/961 -f 2292/2487/962 2293/2486/962 2295/2488/962 2294/2489/962 -f 2294/2489/963 2295/2488/963 2297/2490/963 2296/2491/963 -f 2296/2491/964 2297/2490/964 2299/2492/964 2298/2493/964 -f 2298/2493/965 2299/2492/965 2301/2494/965 2300/2495/965 -f 2300/2495/966 2301/2494/966 2303/2496/966 2302/2497/966 -f 2302/2497/967 2303/2496/967 2305/2498/967 2304/2499/967 -f 2304/2499/968 2305/2498/968 2307/2500/968 2306/2501/968 -f 2306/2501/969 2307/2500/969 2309/2502/969 2308/2503/969 -f 2308/2503/970 2309/2502/970 2311/2504/970 2310/2505/970 -f 2310/2505/971 2311/2504/971 2313/2506/971 2312/2507/971 -f 2312/2507/972 2313/2506/972 2315/2508/972 2314/2509/972 -f 2314/2509/973 2315/2508/973 2317/2510/973 2316/2511/973 -f 2316/2511/974 2317/2510/974 2319/2512/974 2318/2513/974 -f 2318/2513/975 2319/2512/975 2321/2514/975 2320/2515/975 -f 2320/2515/976 2321/2514/976 2323/2516/976 2322/2517/976 -f 2322/2517/977 2323/2516/977 2325/2518/977 2324/2519/977 -f 2324/2519/978 2325/2518/978 2327/2520/978 2326/2521/978 -f 2326/2521/979 2327/2520/979 2329/2522/979 2328/2523/979 -f 2328/2523/980 2329/2522/980 2331/2524/980 2330/2525/980 -f 2330/2525/981 2331/2524/981 2333/2526/981 2332/2527/981 -f 2332/2527/982 2333/2526/982 2335/2528/982 2334/2529/982 -f 2334/2529/983 2335/2528/983 2337/2530/983 2336/2531/983 -f 2297/2490/984 2295/2488/984 2349/2532/984 2350/2533/984 -f 2336/2531/985 2337/2530/985 2339/2534/985 2338/2535/985 -f 2338/2535/986 2339/2534/986 2277/2536/986 2276/2537/986 -f 2286/2481/566 2288/2483/566 2410/2538/566 2409/2539/566 -f 2354/2540/987 2353/2541/987 2372/2542/987 -f 2315/2508/1437 2313/2506/1437 2358/2543/1437 2359/2544/1437 -f 2333/2526/989 2331/2524/989 2367/2545/989 2368/2546/989 -f 2289/2482/990 2287/2480/990 2345/2547/990 2346/2548/990 -f 2307/2500/991 2305/2498/991 2354/2540/991 2355/2549/991 -f 2325/2518/992 2323/2516/992 2363/2550/992 2364/2551/992 -f 2281/2474/993 2279/2472/993 2340/2552/993 2342/2553/993 -f 2299/2492/994 2297/2490/994 2350/2533/994 2351/2554/994 -f 2317/2510/995 2315/2508/995 2359/2544/995 2360/2555/995 -f 2335/2528/996 2333/2526/996 2368/2546/996 2369/2556/996 -f 2291/2484/997 2289/2482/997 2346/2548/997 2347/2557/997 -f 2309/2502/998 2307/2500/998 2355/2549/998 2356/2558/998 -f 2327/2520/999 2325/2518/999 2364/2551/999 2365/2559/999 -f 2283/2476/1438 2281/2474/1438 2342/2553/1438 2343/2560/1438 -f 2301/2494/1001 2299/2492/1001 2351/2554/1001 2352/2561/1001 -f 2319/2512/1002 2317/2510/1002 2360/2555/1002 2361/2562/1002 -f 2337/2530/1003 2335/2528/1003 2369/2556/1003 2370/2563/1003 -f 2293/2486/1004 2291/2484/1004 2347/2557/1004 2348/2564/1004 -f 2311/2504/1005 2309/2502/1005 2356/2558/1005 2357/2565/1005 -f 2329/2522/1006 2327/2520/1006 2365/2559/1006 2366/2566/1006 -f 2285/2478/1007 2283/2476/1007 2343/2560/1007 2344/2567/1007 -f 2303/2496/1008 2301/2494/1008 2352/2561/1008 2353/2541/1008 -f 2321/2514/1009 2319/2512/1009 2361/2562/1009 2362/2568/1009 -f 2339/2534/1010 2337/2530/1010 2370/2563/1010 2371/2569/1010 -f 2295/2488/1011 2293/2486/1011 2348/2564/1011 2349/2532/1011 -f 2313/2506/1012 2311/2504/1012 2357/2565/1012 2358/2543/1012 -f 2331/2524/1013 2329/2522/1013 2366/2566/1013 2367/2545/1013 -f 2287/2480/1014 2285/2478/1014 2344/2567/1014 2345/2547/1014 -f 2305/2498/1015 2303/2496/1015 2353/2541/1015 2354/2540/1015 -f 2323/2516/1016 2321/2514/1016 2362/2568/1016 2363/2550/1016 -f 2279/2472/1017 2277/2471/1017 2341/2570/1017 2340/2552/1017 -f 2277/2536/1018 2339/2534/1018 2371/2569/1018 2341/2571/1018 -f 2526/2572/1439 2528/2573/1439 2373/2574/1439 2374/2575/1439 -f 2340/2552/1020 2341/2570/1020 2372/2576/1020 -f 2368/2546/1021 2367/2545/1021 2372/2577/1021 -f 2355/2549/1022 2354/2540/1022 2372/2578/1022 -f 2342/2553/1023 2340/2552/1023 2372/2579/1023 -f 2369/2556/1024 2368/2546/1024 2372/2580/1024 -f 2356/2558/1025 2355/2549/1025 2372/2581/1025 -f 2343/2560/1026 2342/2553/1026 2372/2582/1026 -f 2370/2563/1027 2369/2556/1027 2372/2583/1027 -f 2357/2565/1028 2356/2558/1028 2372/2584/1028 -f 2344/2567/1029 2343/2560/1029 2372/2585/1029 -f 2371/2569/1030 2370/2563/1030 2372/2586/1030 -f 2358/2543/1031 2357/2565/1031 2372/2587/1031 -f 2345/2547/1032 2344/2567/1032 2372/2588/1032 -f 2341/2571/1033 2371/2569/1033 2372/2589/1033 -f 2359/2544/1034 2358/2543/1034 2372/2590/1034 -f 2346/2548/1035 2345/2547/1035 2372/2591/1035 -f 2360/2555/1036 2359/2544/1036 2372/2592/1036 -f 2347/2557/1037 2346/2548/1037 2372/2593/1037 -f 2361/2562/1038 2360/2555/1038 2372/2594/1038 -f 2348/2564/1039 2347/2557/1039 2372/2595/1039 -f 2362/2568/1040 2361/2562/1040 2372/2596/1040 -f 2349/2532/1041 2348/2564/1041 2372/2597/1041 -f 2363/2550/1042 2362/2568/1042 2372/2598/1042 -f 2350/2533/1043 2349/2532/1043 2372/2599/1043 -f 2364/2551/1044 2363/2550/1044 2372/2600/1044 -f 2351/2554/1045 2350/2533/1045 2372/2601/1045 -f 2365/2559/1046 2364/2551/1046 2372/2602/1046 -f 2352/2561/1047 2351/2554/1047 2372/2603/1047 -f 2366/2566/1048 2365/2559/1048 2372/2604/1048 -f 2353/2541/1049 2352/2561/1049 2372/2605/1049 -f 2367/2545/1050 2366/2566/1050 2372/2606/1050 -f 2468/2607/1440 2471/2608/1440 2435/2609/1440 2404/2610/1440 -f 2304/2499/566 2306/2501/566 2419/2611/566 2418/2612/566 -f 2322/2517/566 2324/2519/566 2428/2613/566 2427/2614/566 -f 2278/2473/566 2280/2475/566 2406/2615/566 2405/2616/566 -f 2296/2491/566 2298/2493/566 2415/2617/566 2414/2618/566 -f 2314/2509/566 2316/2511/566 2424/2619/566 2423/2620/566 -f 2332/2527/566 2334/2529/566 2433/2621/566 2432/2622/566 -f 2288/2483/566 2290/2485/566 2411/2623/566 2410/2538/566 -f 2306/2501/566 2308/2503/566 2420/2624/566 2419/2611/566 -f 2324/2519/566 2326/2521/566 2429/2625/566 2428/2613/566 -f 2280/2475/566 2282/2477/566 2407/2626/566 2406/2615/566 -f 2298/2493/566 2300/2495/566 2416/2627/566 2415/2617/566 -f 2316/2511/566 2318/2513/566 2425/2628/566 2424/2619/566 -f 2334/2529/566 2336/2531/566 2434/2629/566 2433/2621/566 -f 2290/2485/566 2292/2487/566 2412/2630/566 2411/2623/566 -f 2308/2503/566 2310/2505/566 2421/2631/566 2420/2624/566 -f 2326/2521/566 2328/2523/566 2430/2632/566 2429/2625/566 -f 2282/2477/566 2284/2479/566 2408/2633/566 2407/2626/566 -f 2300/2495/566 2302/2497/566 2417/2634/566 2416/2627/566 -f 2318/2513/566 2320/2515/566 2426/2635/566 2425/2628/566 -f 2336/2531/566 2338/2535/566 2435/2609/566 2434/2629/566 -f 2292/2487/566 2294/2489/566 2413/2636/566 2412/2630/566 -f 2310/2505/566 2312/2507/566 2422/2637/566 2421/2631/566 -f 2328/2523/566 2330/2525/566 2431/2638/566 2430/2632/566 -f 2284/2479/566 2286/2481/566 2409/2539/566 2408/2633/566 -f 2302/2497/566 2304/2499/566 2418/2612/566 2417/2634/566 -f 2320/2515/566 2322/2517/566 2427/2614/566 2426/2635/566 -f 2276/2470/566 2278/2473/566 2405/2616/566 2404/2639/566 -f 2338/2535/566 2276/2537/566 2404/2610/566 2435/2609/566 -f 2294/2489/566 2296/2491/566 2414/2618/566 2413/2636/566 -f 2312/2507/566 2314/2509/566 2423/2620/566 2422/2637/566 -f 2330/2525/566 2332/2527/566 2432/2622/566 2431/2638/566 -f 2448/2640/1441 2449/2641/1441 2578/2642/1441 2577/2643/1441 -f 2471/2608/1442 2473/2644/1442 2434/2629/1442 2435/2609/1442 -f 2473/2644/1443 2475/2645/1443 2433/2621/1443 2434/2629/1443 -f 2475/2645/1444 2477/2646/1444 2432/2622/1444 2433/2621/1444 -f 2477/2646/1445 2479/2647/1445 2431/2638/1445 2432/2622/1445 -f 2479/2647/1446 2481/2648/1446 2430/2632/1446 2431/2638/1446 -f 2481/2648/1447 2483/2649/1447 2429/2625/1447 2430/2632/1447 -f 2483/2649/1448 2485/2650/1448 2428/2613/1448 2429/2625/1448 -f 2485/2650/1449 2487/2651/1449 2427/2614/1449 2428/2613/1449 -f 2487/2651/1450 2489/2652/1450 2426/2635/1450 2427/2614/1450 -f 2489/2652/1451 2491/2653/1451 2425/2628/1451 2426/2635/1451 -f 2491/2653/1452 2493/2654/1452 2424/2619/1452 2425/2628/1452 -f 2493/2654/1453 2495/2655/1453 2423/2620/1453 2424/2619/1453 -f 2495/2655/1454 2497/2656/1454 2422/2637/1454 2423/2620/1454 -f 2497/2656/1455 2499/2657/1455 2421/2631/1455 2422/2637/1455 -f 2499/2657/1456 2501/2658/1456 2420/2624/1456 2421/2631/1456 -f 2501/2658/1457 2503/2659/1457 2419/2611/1457 2420/2624/1457 -f 2503/2659/1458 2505/2660/1458 2418/2612/1458 2419/2611/1458 -f 2505/2660/1459 2507/2661/1459 2417/2634/1459 2418/2612/1459 -f 2507/2661/1460 2509/2662/1460 2416/2627/1460 2417/2634/1460 -f 2509/2662/1461 2511/2663/1461 2415/2617/1461 2416/2627/1461 -f 2511/2663/1462 2513/2664/1462 2414/2618/1462 2415/2617/1462 -f 2513/2664/1463 2515/2665/1463 2413/2636/1463 2414/2618/1463 -f 2515/2665/1464 2517/2666/1464 2412/2630/1464 2413/2636/1464 -f 2517/2666/1465 2519/2667/1465 2411/2623/1465 2412/2630/1465 -f 2519/2667/1466 2521/2668/1466 2410/2538/1466 2411/2623/1466 -f 2521/2668/1467 2523/2669/1467 2409/2539/1467 2410/2538/1467 -f 2523/2669/1468 2525/2670/1468 2408/2633/1468 2409/2539/1468 -f 2525/2670/1469 2527/2671/1469 2407/2626/1469 2408/2633/1469 -f 2527/2671/1470 2529/2672/1470 2406/2615/1470 2407/2626/1470 -f 2529/2672/1471 2531/2673/1471 2405/2616/1471 2406/2615/1471 -f 2531/2673/1472 2468/2674/1472 2404/2639/1472 2405/2616/1472 -f 2564/2675/1473 2533/2676/1473 2469/2677/1473 2530/2678/1473 -f 2532/2679/1474 2403/2680/1474 2468/2674/1474 2531/2673/1474 -f 2563/2681/1475 2564/2675/1475 2530/2678/1475 2528/2573/1475 -f 2373/2574/1476 2532/2679/1476 2531/2673/1476 2529/2672/1476 -f 2562/2682/1477 2563/2681/1477 2528/2573/1477 2526/2572/1477 -f 2374/2575/1478 2373/2574/1478 2529/2672/1478 2527/2671/1478 -f 2561/2683/1479 2562/2682/1479 2526/2572/1479 2524/2684/1479 -f 2375/2685/1480 2374/2575/1480 2527/2671/1480 2525/2670/1480 -f 2560/2686/1481 2561/2683/1481 2524/2684/1481 2522/2687/1481 -f 2376/2688/1482 2375/2685/1482 2525/2670/1482 2523/2669/1482 -f 2559/2689/1483 2560/2686/1483 2522/2687/1483 2520/2690/1483 -f 2377/2691/1484 2376/2688/1484 2523/2669/1484 2521/2668/1484 -f 2558/2692/1485 2559/2689/1485 2520/2690/1485 2518/2693/1485 -f 2378/2694/1486 2377/2691/1486 2521/2668/1486 2519/2667/1486 -f 2557/2695/1487 2558/2692/1487 2518/2693/1487 2516/2696/1487 -f 2379/2697/1488 2378/2694/1488 2519/2667/1488 2517/2666/1488 -f 2556/2698/1489 2557/2695/1489 2516/2696/1489 2514/2699/1489 -f 2380/2700/1490 2379/2697/1490 2517/2666/1490 2515/2665/1490 -f 2555/2701/1491 2556/2698/1491 2514/2699/1491 2512/2702/1491 -f 2381/2703/1492 2380/2700/1492 2515/2665/1492 2513/2664/1492 -f 2554/2704/1493 2555/2701/1493 2512/2702/1493 2510/2705/1493 -f 2382/2706/1494 2381/2703/1494 2513/2664/1494 2511/2663/1494 -f 2553/2707/1495 2554/2704/1495 2510/2705/1495 2508/2708/1495 -f 2383/2709/1496 2382/2706/1496 2511/2663/1496 2509/2662/1496 -f 2552/2710/1497 2553/2707/1497 2508/2708/1497 2506/2711/1497 -f 2384/2712/1498 2383/2709/1498 2509/2662/1498 2507/2661/1498 -f 2551/2713/1499 2552/2710/1499 2506/2711/1499 2504/2714/1499 -f 2385/2715/1500 2384/2712/1500 2507/2661/1500 2505/2660/1500 -f 2550/2716/1501 2551/2713/1501 2504/2714/1501 2502/2717/1501 -f 2386/2718/1502 2385/2715/1502 2505/2660/1502 2503/2659/1502 -f 2549/2719/1503 2550/2716/1503 2502/2717/1503 2500/2720/1503 -f 2387/2721/1504 2386/2718/1504 2503/2659/1504 2501/2658/1504 -f 2548/2722/1505 2549/2719/1505 2500/2720/1505 2498/2723/1505 -f 2388/2724/1506 2387/2721/1506 2501/2658/1506 2499/2657/1506 -f 2547/2725/1507 2548/2722/1507 2498/2723/1507 2496/2726/1507 -f 2389/2727/1508 2388/2724/1508 2499/2657/1508 2497/2656/1508 -f 2546/2728/1509 2547/2725/1509 2496/2726/1509 2494/2729/1509 -f 2390/2730/1510 2389/2727/1510 2497/2656/1510 2495/2655/1510 -f 2545/2731/1511 2546/2728/1511 2494/2729/1511 2492/2732/1511 -f 2391/2733/1512 2390/2730/1512 2495/2655/1512 2493/2654/1512 -f 2544/2734/1513 2545/2731/1513 2492/2732/1513 2490/2735/1513 -f 2392/2736/1514 2391/2733/1514 2493/2654/1514 2491/2653/1514 -f 2543/2737/1515 2544/2734/1515 2490/2735/1515 2488/2738/1515 -f 2393/2739/1516 2392/2736/1516 2491/2653/1516 2489/2652/1516 -f 2542/2740/1517 2543/2737/1517 2488/2738/1517 2486/2741/1517 -f 2394/2742/1518 2393/2739/1518 2489/2652/1518 2487/2651/1518 -f 2541/2743/1519 2542/2740/1519 2486/2741/1519 2484/2744/1519 -f 2395/2745/1520 2394/2742/1520 2487/2651/1520 2485/2650/1520 -f 2540/2746/1521 2541/2743/1521 2484/2744/1521 2482/2747/1521 -f 2396/2748/1522 2395/2745/1522 2485/2650/1522 2483/2649/1522 -f 2539/2749/1523 2540/2746/1523 2482/2747/1523 2480/2750/1523 -f 2397/2751/1524 2396/2748/1524 2483/2649/1524 2481/2648/1524 -f 2538/2752/1525 2539/2749/1525 2480/2750/1525 2478/2753/1525 -f 2398/2754/1526 2397/2751/1526 2481/2648/1526 2479/2647/1526 -f 2537/2755/1527 2538/2752/1527 2478/2753/1527 2476/2756/1527 -f 2399/2757/1528 2398/2754/1528 2479/2647/1528 2477/2646/1528 -f 2536/2758/1529 2537/2755/1529 2476/2756/1529 2474/2759/1529 -f 2400/2760/1530 2399/2757/1530 2477/2646/1530 2475/2645/1530 -f 2535/2761/1531 2536/2758/1531 2474/2759/1531 2472/2762/1531 -f 2401/2763/1532 2400/2760/1532 2475/2645/1532 2473/2644/1532 -f 2534/2764/1533 2535/2761/1533 2472/2762/1533 2470/2765/1533 -f 2402/2766/1534 2401/2763/1534 2473/2644/1534 2471/2608/1534 -f 2533/2767/1535 2534/2764/1535 2470/2765/1535 2469/2768/1535 -f 2403/2769/1536 2402/2766/1536 2471/2608/1536 2468/2607/1536 -f 2524/2684/1537 2526/2572/1537 2374/2575/1537 2375/2685/1537 -f 2522/2687/1538 2524/2684/1538 2375/2685/1538 2376/2688/1538 -f 2520/2690/1539 2522/2687/1539 2376/2688/1539 2377/2691/1539 -f 2518/2693/1540 2520/2690/1540 2377/2691/1540 2378/2694/1540 -f 2516/2696/1541 2518/2693/1541 2378/2694/1541 2379/2697/1541 -f 2514/2699/1542 2516/2696/1542 2379/2697/1542 2380/2700/1542 -f 2512/2702/1543 2514/2699/1543 2380/2700/1543 2381/2703/1543 -f 2510/2705/1544 2512/2702/1544 2381/2703/1544 2382/2706/1544 -f 2508/2708/1545 2510/2705/1545 2382/2706/1545 2383/2709/1545 -f 2506/2711/1546 2508/2708/1546 2383/2709/1546 2384/2712/1546 -f 2504/2714/1547 2506/2711/1547 2384/2712/1547 2385/2715/1547 -f 2502/2717/1548 2504/2714/1548 2385/2715/1548 2386/2718/1548 -f 2500/2720/1549 2502/2717/1549 2386/2718/1549 2387/2721/1549 -f 2498/2723/1550 2500/2720/1550 2387/2721/1550 2388/2724/1550 -f 2496/2726/1551 2498/2723/1551 2388/2724/1551 2389/2727/1551 -f 2494/2729/1552 2496/2726/1552 2389/2727/1552 2390/2730/1552 -f 2492/2732/1553 2494/2729/1553 2390/2730/1553 2391/2733/1553 -f 2490/2735/1554 2492/2732/1554 2391/2733/1554 2392/2736/1554 -f 2488/2738/1555 2490/2735/1555 2392/2736/1555 2393/2739/1555 -f 2486/2741/1556 2488/2738/1556 2393/2739/1556 2394/2742/1556 -f 2484/2744/1557 2486/2741/1557 2394/2742/1557 2395/2745/1557 -f 2482/2747/1558 2484/2744/1558 2395/2745/1558 2396/2748/1558 -f 2480/2750/1559 2482/2747/1559 2396/2748/1559 2397/2751/1559 -f 2478/2753/1560 2480/2750/1560 2397/2751/1560 2398/2754/1560 -f 2476/2756/1561 2478/2753/1561 2398/2754/1561 2399/2757/1561 -f 2474/2759/1562 2476/2756/1562 2399/2757/1562 2400/2760/1562 -f 2472/2762/1563 2474/2759/1563 2400/2760/1563 2401/2763/1563 -f 2470/2765/1564 2472/2762/1564 2401/2763/1564 2402/2766/1564 -f 2469/2768/1565 2470/2765/1565 2402/2766/1565 2403/2769/1565 -f 2528/2573/1566 2530/2678/1566 2532/2679/1566 2373/2574/1566 -f 2530/2678/1567 2469/2677/1567 2403/2680/1567 2532/2679/1567 -f 2436/2770/1568 2467/2771/1568 2534/2764/1568 2533/2767/1568 -f 2467/2771/1569 2466/2772/1569 2535/2761/1569 2534/2764/1569 -f 2466/2772/1570 2465/2773/1570 2536/2758/1570 2535/2761/1570 -f 2465/2773/1571 2464/2774/1571 2537/2755/1571 2536/2758/1571 -f 2464/2774/1572 2463/2775/1572 2538/2752/1572 2537/2755/1572 -f 2463/2775/1573 2462/2776/1573 2539/2749/1573 2538/2752/1573 -f 2462/2776/1574 2461/2777/1574 2540/2746/1574 2539/2749/1574 -f 2461/2777/1575 2460/2778/1575 2541/2743/1575 2540/2746/1575 -f 2460/2778/1576 2459/2779/1576 2542/2740/1576 2541/2743/1576 -f 2459/2779/1577 2458/2780/1577 2543/2737/1577 2542/2740/1577 -f 2458/2780/1578 2457/2781/1578 2544/2734/1578 2543/2737/1578 -f 2457/2781/1579 2456/2782/1579 2545/2731/1579 2544/2734/1579 -f 2456/2782/1580 2455/2783/1580 2546/2728/1580 2545/2731/1580 -f 2455/2783/1581 2454/2784/1581 2547/2725/1581 2546/2728/1581 -f 2454/2784/1582 2453/2785/1582 2548/2722/1582 2547/2725/1582 -f 2453/2785/1583 2452/2786/1583 2549/2719/1583 2548/2722/1583 -f 2452/2786/1584 2451/2787/1584 2550/2716/1584 2549/2719/1584 -f 2451/2787/1585 2450/2788/1585 2551/2713/1585 2550/2716/1585 -f 2450/2788/1586 2449/2641/1586 2552/2710/1586 2551/2713/1586 -f 2449/2641/1587 2448/2640/1587 2553/2707/1587 2552/2710/1587 -f 2448/2640/1588 2447/2789/1588 2554/2704/1588 2553/2707/1588 -f 2447/2789/1589 2446/2790/1589 2555/2701/1589 2554/2704/1589 -f 2446/2790/1590 2445/2791/1590 2556/2698/1590 2555/2701/1590 -f 2445/2791/1591 2444/2792/1591 2557/2695/1591 2556/2698/1591 -f 2444/2792/1592 2443/2793/1592 2558/2692/1592 2557/2695/1592 -f 2443/2793/1593 2442/2794/1593 2559/2689/1593 2558/2692/1593 -f 2442/2794/1594 2441/2795/1594 2560/2686/1594 2559/2689/1594 -f 2441/2795/1595 2440/2796/1595 2561/2683/1595 2560/2686/1595 -f 2440/2796/1596 2439/2797/1596 2562/2682/1596 2561/2683/1596 -f 2439/2797/1597 2438/2798/1597 2563/2681/1597 2562/2682/1597 -f 2438/2798/1598 2437/2799/1598 2564/2675/1598 2563/2681/1598 -f 2437/2799/1599 2436/2770/1599 2533/2676/1599 2564/2675/1599 -f 2565/2800/566 2566/2801/566 2567/2802/566 2568/2803/566 2569/2804/566 2570/2805/566 2571/2806/566 2572/2807/566 2573/2808/566 2574/2809/566 2575/2810/566 2576/2811/566 2577/2643/566 2578/2642/566 2579/2812/566 2580/2813/566 2581/2814/566 2582/2815/566 2583/2816/566 2584/2817/566 2585/2818/566 2586/2819/566 2587/2820/566 2588/2821/566 2589/2822/566 2590/2823/566 2591/2824/566 2592/2825/566 2593/2826/566 2594/2827/566 2595/2828/566 2596/2829/566 -f 2462/2776/1600 2463/2775/1600 2592/2825/1600 2591/2824/1600 -f 2449/2641/1601 2450/2788/1601 2579/2812/1601 2578/2642/1601 -f 2436/2770/1602 2437/2799/1602 2566/2801/1602 2565/2800/1602 -f 2463/2775/1603 2464/2774/1603 2593/2826/1603 2592/2825/1603 -f 2450/2788/1604 2451/2787/1604 2580/2813/1604 2579/2812/1604 -f 2437/2799/1605 2438/2798/1605 2567/2802/1605 2566/2801/1605 -f 2464/2774/1606 2465/2773/1606 2594/2827/1606 2593/2826/1606 -f 2451/2787/1607 2452/2786/1607 2581/2814/1607 2580/2813/1607 -f 2438/2798/1608 2439/2797/1608 2568/2803/1608 2567/2802/1608 -f 2465/2773/1609 2466/2772/1609 2595/2828/1609 2594/2827/1609 -f 2452/2786/1610 2453/2785/1610 2582/2815/1610 2581/2814/1610 -f 2439/2797/1611 2440/2796/1611 2569/2804/1611 2568/2803/1611 -f 2466/2772/1612 2467/2771/1612 2596/2829/1612 2595/2828/1612 -f 2453/2785/1613 2454/2784/1613 2583/2816/1613 2582/2815/1613 -f 2440/2796/1614 2441/2795/1614 2570/2805/1614 2569/2804/1614 -f 2467/2771/1615 2436/2770/1615 2565/2800/1615 2596/2829/1615 -f 2454/2784/1616 2455/2783/1616 2584/2817/1616 2583/2816/1616 -f 2441/2795/1617 2442/2794/1617 2571/2806/1617 2570/2805/1617 -f 2455/2783/1618 2456/2782/1618 2585/2818/1618 2584/2817/1618 -f 2442/2794/1619 2443/2793/1619 2572/2807/1619 2571/2806/1619 -f 2456/2782/1620 2457/2781/1620 2586/2819/1620 2585/2818/1620 -f 2443/2793/1621 2444/2792/1621 2573/2808/1621 2572/2807/1621 -f 2457/2781/1622 2458/2780/1622 2587/2820/1622 2586/2819/1622 -f 2444/2792/1623 2445/2791/1623 2574/2809/1623 2573/2808/1623 -f 2458/2780/1624 2459/2779/1624 2588/2821/1624 2587/2820/1624 -f 2445/2791/1625 2446/2790/1625 2575/2810/1625 2574/2809/1625 -f 2459/2779/1626 2460/2778/1626 2589/2822/1626 2588/2821/1626 -f 2446/2790/1627 2447/2789/1627 2576/2811/1627 2575/2810/1627 -f 2460/2778/1628 2461/2777/1628 2590/2823/1628 2589/2822/1628 -f 2447/2789/1629 2448/2640/1629 2577/2643/1629 2576/2811/1629 -f 2461/2777/1630 2462/2776/1630 2591/2824/1630 2590/2823/1630 -f 2597/2830/1210 2599/2831/1210 2600/2832/1210 2598/2833/1210 -f 2599/2831/1211 2601/2834/1211 2602/2835/1211 2600/2832/1211 -f 2601/2834/1212 2603/2836/1212 2604/2837/1212 2602/2835/1212 -f 2603/2836/1213 2605/2838/1213 2606/2839/1213 2604/2837/1213 -f 2605/2838/1214 2607/2840/1214 2608/2841/1214 2606/2839/1214 -f 2607/2840/1215 2609/2842/1215 2610/2843/1215 2608/2841/1215 -f 2609/2842/1216 2611/2844/1216 2612/2845/1216 2610/2843/1216 -f 2611/2844/1217 2613/2846/1217 2614/2847/1217 2612/2845/1217 -f 2613/2846/1218 2615/2848/1218 2616/2849/1218 2614/2847/1218 -f 2615/2848/1219 2617/2850/1219 2618/2851/1219 2616/2849/1219 -f 2617/2850/1220 2619/2852/1220 2620/2853/1220 2618/2851/1220 -f 2619/2852/1221 2621/2854/1221 2622/2855/1221 2620/2853/1221 -f 2621/2854/1222 2623/2856/1222 2624/2857/1222 2622/2855/1222 -f 2623/2856/1223 2625/2858/1223 2626/2859/1223 2624/2857/1223 -f 2625/2858/1224 2627/2860/1224 2628/2861/1224 2626/2859/1224 -f 2627/2860/1225 2629/2862/1225 2630/2863/1225 2628/2861/1225 -f 2629/2862/1226 2631/2864/1226 2632/2865/1226 2630/2863/1226 -f 2631/2864/1227 2633/2866/1227 2634/2867/1227 2632/2865/1227 -f 2633/2866/1228 2635/2868/1228 2636/2869/1228 2634/2867/1228 -f 2635/2868/1229 2637/2870/1229 2638/2871/1229 2636/2869/1229 -f 2637/2870/1230 2639/2872/1230 2640/2873/1230 2638/2871/1230 -f 2639/2872/1231 2641/2874/1231 2642/2875/1231 2640/2873/1231 -f 2641/2874/1232 2643/2876/1232 2644/2877/1232 2642/2875/1232 -f 2643/2876/1233 2645/2878/1233 2646/2879/1233 2644/2877/1233 -f 2645/2878/1234 2647/2880/1234 2648/2881/1234 2646/2879/1234 -f 2647/2880/1235 2649/2882/1235 2650/2883/1235 2648/2881/1235 -f 2649/2882/1236 2651/2884/1236 2652/2885/1236 2650/2883/1236 -f 2651/2884/1237 2653/2886/1237 2654/2887/1237 2652/2885/1237 -f 2653/2886/1238 2655/2888/1238 2656/2889/1238 2654/2887/1238 -f 2655/2888/1239 2657/2890/1239 2658/2891/1239 2656/2889/1239 -f 2618/2851/1240 2671/2892/1240 2670/2893/1240 2616/2849/1240 -f 2657/2890/1241 2659/2894/1241 2660/2895/1241 2658/2891/1241 -f 2659/2894/1242 2597/2896/1242 2598/2897/1242 2660/2895/1242 -f 2607/2840/566 2730/2898/566 2731/2899/566 2609/2842/566 -f 2675/2900/1026 2693/2901/1026 2674/2902/1026 -f 2636/2869/1243 2680/2903/1243 2679/2904/1243 2634/2867/1243 -f 2654/2887/1244 2689/2905/1244 2688/2906/1244 2652/2885/1244 -f 2610/2843/1245 2667/2907/1245 2666/2908/1245 2608/2841/1245 -f 2628/2861/1246 2676/2909/1246 2675/2900/1246 2626/2859/1246 -f 2646/2879/1247 2685/2910/1247 2684/2911/1247 2644/2877/1247 -f 2602/2835/1248 2663/2912/1248 2661/2913/1248 2600/2832/1248 -f 2620/2853/1249 2672/2914/1249 2671/2892/1249 2618/2851/1249 -f 2638/2871/1250 2681/2915/1250 2680/2903/1250 2636/2869/1250 -f 2656/2889/1251 2690/2916/1251 2689/2905/1251 2654/2887/1251 -f 2612/2845/1252 2668/2917/1252 2667/2907/1252 2610/2843/1252 -f 2630/2863/1253 2677/2918/1253 2676/2909/1253 2628/2861/1253 -f 2648/2881/1254 2686/2919/1254 2685/2910/1254 2646/2879/1254 -f 2604/2837/1631 2664/2920/1631 2663/2912/1631 2602/2835/1631 -f 2622/2855/1256 2673/2921/1256 2672/2914/1256 2620/2853/1256 -f 2640/2873/1632 2682/2922/1632 2681/2915/1632 2638/2871/1632 -f 2658/2891/1633 2691/2923/1633 2690/2916/1633 2656/2889/1633 -f 2614/2847/1259 2669/2924/1259 2668/2917/1259 2612/2845/1259 -f 2632/2865/1260 2678/2925/1260 2677/2918/1260 2630/2863/1260 -f 2650/2883/1261 2687/2926/1261 2686/2919/1261 2648/2881/1261 -f 2606/2839/1262 2665/2927/1262 2664/2920/1262 2604/2837/1262 -f 2624/2857/1263 2674/2902/1263 2673/2921/1263 2622/2855/1263 -f 2642/2875/1264 2683/2928/1264 2682/2922/1264 2640/2873/1264 -f 2660/2895/1265 2692/2929/1265 2691/2923/1265 2658/2891/1265 -f 2616/2849/1266 2670/2893/1266 2669/2924/1266 2614/2847/1266 -f 2634/2867/1267 2679/2904/1267 2678/2925/1267 2632/2865/1267 -f 2652/2885/1268 2688/2906/1268 2687/2926/1268 2650/2883/1268 -f 2608/2841/1269 2666/2908/1269 2665/2927/1269 2606/2839/1269 -f 2626/2859/1270 2675/2900/1270 2674/2902/1270 2624/2857/1270 -f 2644/2877/1271 2684/2911/1271 2683/2928/1271 2642/2875/1271 -f 2600/2832/1272 2661/2913/1272 2662/2930/1272 2598/2833/1272 -f 2598/2897/1273 2662/2931/1273 2692/2929/1273 2660/2895/1273 -f 2847/2932/1634 2695/2933/1634 2694/2934/1634 2849/2935/1634 -f 2661/2913/1025 2693/2936/1025 2662/2930/1025 -f 2689/2905/1038 2693/2937/1038 2688/2906/1038 -f 2676/2909/1023 2693/2938/1023 2675/2900/1023 -f 2663/2912/1022 2693/2939/1022 2661/2913/1022 -f 2690/2916/1036 2693/2940/1036 2689/2905/1036 -f 2677/2918/1020 2693/2941/1020 2676/2909/1020 -f 2664/2920/987 2693/2942/987 2663/2912/987 -f 2691/2923/1034 2693/2943/1034 2690/2916/1034 -f 2678/2925/1033 2693/2944/1033 2677/2918/1033 -f 2665/2927/1049 2693/2945/1049 2664/2920/1049 -f 2692/2929/1031 2693/2946/1031 2691/2923/1031 -f 2679/2904/1030 2693/2947/1030 2678/2925/1030 -f 2666/2908/1047 2693/2948/1047 2665/2927/1047 -f 2662/2931/1028 2693/2949/1028 2692/2929/1028 -f 2680/2903/1027 2693/2950/1027 2679/2904/1027 -f 2667/2907/1045 2693/2951/1045 2666/2908/1045 -f 2681/2915/1024 2693/2952/1024 2680/2903/1024 -f 2668/2917/1043 2693/2953/1043 2667/2907/1043 -f 2682/2922/1021 2693/2954/1021 2681/2915/1021 -f 2669/2924/1041 2693/2955/1041 2668/2917/1041 -f 2683/2928/1050 2693/2956/1050 2682/2922/1050 -f 2670/2893/1039 2693/2957/1039 2669/2924/1039 -f 2684/2911/1048 2693/2958/1048 2683/2928/1048 -f 2671/2892/1037 2693/2959/1037 2670/2893/1037 -f 2685/2910/1046 2693/2960/1046 2684/2911/1046 -f 2672/2914/1035 2693/2961/1035 2671/2892/1035 -f 2686/2919/1044 2693/2962/1044 2685/2910/1044 -f 2673/2921/1032 2693/2963/1032 2672/2914/1032 -f 2687/2926/1042 2693/2964/1042 2686/2919/1042 -f 2674/2902/1029 2693/2965/1029 2673/2921/1029 -f 2688/2906/1040 2693/2966/1040 2687/2926/1040 -f 2789/2967/1635 2725/2968/1635 2756/2969/1635 2792/2970/1635 -f 2625/2858/566 2739/2971/566 2740/2972/566 2627/2860/566 -f 2643/2876/566 2748/2973/566 2749/2974/566 2645/2878/566 -f 2599/2831/566 2726/2975/566 2727/2976/566 2601/2834/566 -f 2617/2850/566 2735/2977/566 2736/2978/566 2619/2852/566 -f 2635/2868/566 2744/2979/566 2745/2980/566 2637/2870/566 -f 2653/2886/566 2753/2981/566 2754/2982/566 2655/2888/566 -f 2609/2842/566 2731/2899/566 2732/2983/566 2611/2844/566 -f 2627/2860/566 2740/2972/566 2741/2984/566 2629/2862/566 -f 2645/2878/566 2749/2974/566 2750/2985/566 2647/2880/566 -f 2601/2834/566 2727/2976/566 2728/2986/566 2603/2836/566 -f 2619/2852/566 2736/2978/566 2737/2987/566 2621/2854/566 -f 2637/2870/566 2745/2980/566 2746/2988/566 2639/2872/566 -f 2655/2888/566 2754/2982/566 2755/2989/566 2657/2890/566 -f 2611/2844/566 2732/2983/566 2733/2990/566 2613/2846/566 -f 2629/2862/566 2741/2984/566 2742/2991/566 2631/2864/566 -f 2647/2880/566 2750/2985/566 2751/2992/566 2649/2882/566 -f 2603/2836/566 2728/2986/566 2729/2993/566 2605/2838/566 -f 2621/2854/566 2737/2987/566 2738/2994/566 2623/2856/566 -f 2639/2872/566 2746/2988/566 2747/2995/566 2641/2874/566 -f 2657/2890/566 2755/2989/566 2756/2969/566 2659/2894/566 -f 2613/2846/566 2733/2990/566 2734/2996/566 2615/2848/566 -f 2631/2864/566 2742/2991/566 2743/2997/566 2633/2866/566 -f 2649/2882/566 2751/2992/566 2752/2998/566 2651/2884/566 -f 2605/2838/566 2729/2993/566 2730/2898/566 2607/2840/566 -f 2623/2856/566 2738/2994/566 2739/2971/566 2625/2858/566 -f 2641/2874/566 2747/2995/566 2748/2973/566 2643/2876/566 -f 2597/2830/566 2725/2999/566 2726/2975/566 2599/2831/566 -f 2659/2894/566 2756/2969/566 2725/2968/566 2597/2896/566 -f 2615/2848/566 2734/2996/566 2735/2977/566 2617/2850/566 -f 2633/2866/566 2743/2997/566 2744/2979/566 2635/2868/566 -f 2651/2884/566 2752/2998/566 2753/2981/566 2653/2886/566 -f 2769/3000/1636 2898/3001/1636 2899/3002/1636 2770/3003/1636 -f 2792/2970/1637 2756/2969/1637 2755/2989/1637 2794/3004/1637 -f 2794/3004/1638 2755/2989/1638 2754/2982/1638 2796/3005/1638 -f 2796/3005/1639 2754/2982/1639 2753/2981/1639 2798/3006/1639 -f 2798/3006/1640 2753/2981/1640 2752/2998/1640 2800/3007/1640 -f 2800/3007/1641 2752/2998/1641 2751/2992/1641 2802/3008/1641 -f 2802/3008/1642 2751/2992/1642 2750/2985/1642 2804/3009/1642 -f 2804/3009/1643 2750/2985/1643 2749/2974/1643 2806/3010/1643 -f 2806/3010/1644 2749/2974/1644 2748/2973/1644 2808/3011/1644 -f 2808/3011/1645 2748/2973/1645 2747/2995/1645 2810/3012/1645 -f 2810/3012/1646 2747/2995/1646 2746/2988/1646 2812/3013/1646 -f 2812/3013/1647 2746/2988/1647 2745/2980/1647 2814/3014/1647 -f 2814/3014/1648 2745/2980/1648 2744/2979/1648 2816/3015/1648 -f 2816/3015/1649 2744/2979/1649 2743/2997/1649 2818/3016/1649 -f 2818/3016/1650 2743/2997/1650 2742/2991/1650 2820/3017/1650 -f 2820/3017/1651 2742/2991/1651 2741/2984/1651 2822/3018/1651 -f 2822/3018/1652 2741/2984/1652 2740/2972/1652 2824/3019/1652 -f 2824/3019/1653 2740/2972/1653 2739/2971/1653 2826/3020/1653 -f 2826/3020/1654 2739/2971/1654 2738/2994/1654 2828/3021/1654 -f 2828/3021/1655 2738/2994/1655 2737/2987/1655 2830/3022/1655 -f 2830/3022/1656 2737/2987/1656 2736/2978/1656 2832/3023/1656 -f 2832/3023/1657 2736/2978/1657 2735/2977/1657 2834/3024/1657 -f 2834/3024/1658 2735/2977/1658 2734/2996/1658 2836/3025/1658 -f 2836/3025/1659 2734/2996/1659 2733/2990/1659 2838/3026/1659 -f 2838/3026/1660 2733/2990/1660 2732/2983/1660 2840/3027/1660 -f 2840/3027/1661 2732/2983/1661 2731/2899/1661 2842/3028/1661 -f 2842/3028/1662 2731/2899/1662 2730/2898/1662 2844/3029/1662 -f 2844/3029/1663 2730/2898/1663 2729/2993/1663 2846/3030/1663 -f 2846/3030/1664 2729/2993/1664 2728/2986/1664 2848/3031/1664 -f 2848/3031/1665 2728/2986/1665 2727/2976/1665 2850/3032/1665 -f 2850/3032/1666 2727/2976/1666 2726/2975/1666 2852/3033/1666 -f 2852/3033/1667 2726/2975/1667 2725/2999/1667 2789/3034/1667 -f 2885/3035/1668 2851/3036/1668 2790/3037/1668 2854/3038/1668 -f 2853/3039/1669 2852/3033/1669 2789/3034/1669 2724/3040/1669 -f 2884/3041/1670 2849/2935/1670 2851/3036/1670 2885/3035/1670 -f 2694/2934/1671 2850/3032/1671 2852/3033/1671 2853/3039/1671 -f 2883/3042/1672 2847/2932/1672 2849/2935/1672 2884/3041/1672 -f 2695/2933/1673 2848/3031/1673 2850/3032/1673 2694/2934/1673 -f 2882/3043/1674 2845/3044/1674 2847/2932/1674 2883/3042/1674 -f 2696/3045/1675 2846/3030/1675 2848/3031/1675 2695/2933/1675 -f 2881/3046/1676 2843/3047/1676 2845/3044/1676 2882/3043/1676 -f 2697/3048/1677 2844/3029/1677 2846/3030/1677 2696/3045/1677 -f 2880/3049/1678 2841/3050/1678 2843/3047/1678 2881/3046/1678 -f 2698/3051/1679 2842/3028/1679 2844/3029/1679 2697/3048/1679 -f 2879/3052/1680 2839/3053/1680 2841/3050/1680 2880/3049/1680 -f 2699/3054/1681 2840/3027/1681 2842/3028/1681 2698/3051/1681 -f 2878/3055/1682 2837/3056/1682 2839/3053/1682 2879/3052/1682 -f 2700/3057/1683 2838/3026/1683 2840/3027/1683 2699/3054/1683 -f 2877/3058/1684 2835/3059/1684 2837/3056/1684 2878/3055/1684 -f 2701/3060/1685 2836/3025/1685 2838/3026/1685 2700/3057/1685 -f 2876/3061/1686 2833/3062/1686 2835/3059/1686 2877/3058/1686 -f 2702/3063/1687 2834/3024/1687 2836/3025/1687 2701/3060/1687 -f 2875/3064/1688 2831/3065/1688 2833/3062/1688 2876/3061/1688 -f 2703/3066/1689 2832/3023/1689 2834/3024/1689 2702/3063/1689 -f 2874/3067/1690 2829/3068/1690 2831/3065/1690 2875/3064/1690 -f 2704/3069/1691 2830/3022/1691 2832/3023/1691 2703/3066/1691 -f 2873/3070/1692 2827/3071/1692 2829/3068/1692 2874/3067/1692 -f 2705/3072/1693 2828/3021/1693 2830/3022/1693 2704/3069/1693 -f 2872/3073/1694 2825/3074/1694 2827/3071/1694 2873/3070/1694 -f 2706/3075/1695 2826/3020/1695 2828/3021/1695 2705/3072/1695 -f 2871/3076/1696 2823/3077/1696 2825/3074/1696 2872/3073/1696 -f 2707/3078/1697 2824/3019/1697 2826/3020/1697 2706/3075/1697 -f 2870/3079/1698 2821/3080/1698 2823/3077/1698 2871/3076/1698 -f 2708/3081/1699 2822/3018/1699 2824/3019/1699 2707/3078/1699 -f 2869/3082/1700 2819/3083/1700 2821/3080/1700 2870/3079/1700 -f 2709/3084/1701 2820/3017/1701 2822/3018/1701 2708/3081/1701 -f 2868/3085/1702 2817/3086/1702 2819/3083/1702 2869/3082/1702 -f 2710/3087/1703 2818/3016/1703 2820/3017/1703 2709/3084/1703 -f 2867/3088/1704 2815/3089/1704 2817/3086/1704 2868/3085/1704 -f 2711/3090/1705 2816/3015/1705 2818/3016/1705 2710/3087/1705 -f 2866/3091/1706 2813/3092/1706 2815/3089/1706 2867/3088/1706 -f 2712/3093/1707 2814/3014/1707 2816/3015/1707 2711/3090/1707 -f 2865/3094/1708 2811/3095/1708 2813/3092/1708 2866/3091/1708 -f 2713/3096/1709 2812/3013/1709 2814/3014/1709 2712/3093/1709 -f 2864/3097/1710 2809/3098/1710 2811/3095/1710 2865/3094/1710 -f 2714/3099/1711 2810/3012/1711 2812/3013/1711 2713/3096/1711 -f 2863/3100/1712 2807/3101/1712 2809/3098/1712 2864/3097/1712 -f 2715/3102/1713 2808/3011/1713 2810/3012/1713 2714/3099/1713 -f 2862/3103/1714 2805/3104/1714 2807/3101/1714 2863/3100/1714 -f 2716/3105/1715 2806/3010/1715 2808/3011/1715 2715/3102/1715 -f 2861/3106/1716 2803/3107/1716 2805/3104/1716 2862/3103/1716 -f 2717/3108/1717 2804/3009/1717 2806/3010/1717 2716/3105/1717 -f 2860/3109/1718 2801/3110/1718 2803/3107/1718 2861/3106/1718 -f 2718/3111/1719 2802/3008/1719 2804/3009/1719 2717/3108/1719 -f 2859/3112/1720 2799/3113/1720 2801/3110/1720 2860/3109/1720 -f 2719/3114/1721 2800/3007/1721 2802/3008/1721 2718/3111/1721 -f 2858/3115/1722 2797/3116/1722 2799/3113/1722 2859/3112/1722 -f 2720/3117/1723 2798/3006/1723 2800/3007/1723 2719/3114/1723 -f 2857/3118/1724 2795/3119/1724 2797/3116/1724 2858/3115/1724 -f 2721/3120/1725 2796/3005/1725 2798/3006/1725 2720/3117/1725 -f 2856/3121/1726 2793/3122/1726 2795/3119/1726 2857/3118/1726 -f 2722/3123/1727 2794/3004/1727 2796/3005/1727 2721/3120/1727 -f 2855/3124/1728 2791/3125/1728 2793/3122/1728 2856/3121/1728 -f 2723/3126/1729 2792/2970/1729 2794/3004/1729 2722/3123/1729 -f 2854/3127/1730 2790/3128/1730 2791/3125/1730 2855/3124/1730 -f 2724/3129/1731 2789/2967/1731 2792/2970/1731 2723/3126/1731 -f 2845/3044/1732 2696/3045/1732 2695/2933/1732 2847/2932/1732 -f 2843/3047/1733 2697/3048/1733 2696/3045/1733 2845/3044/1733 -f 2841/3050/1734 2698/3051/1734 2697/3048/1734 2843/3047/1734 -f 2839/3053/1735 2699/3054/1735 2698/3051/1735 2841/3050/1735 -f 2837/3056/1736 2700/3057/1736 2699/3054/1736 2839/3053/1736 -f 2835/3059/1737 2701/3060/1737 2700/3057/1737 2837/3056/1737 -f 2833/3062/1738 2702/3063/1738 2701/3060/1738 2835/3059/1738 -f 2831/3065/1739 2703/3066/1739 2702/3063/1739 2833/3062/1739 -f 2829/3068/1740 2704/3069/1740 2703/3066/1740 2831/3065/1740 -f 2827/3071/1741 2705/3072/1741 2704/3069/1741 2829/3068/1741 -f 2825/3074/1742 2706/3075/1742 2705/3072/1742 2827/3071/1742 -f 2823/3077/1743 2707/3078/1743 2706/3075/1743 2825/3074/1743 -f 2821/3080/1744 2708/3081/1744 2707/3078/1744 2823/3077/1744 -f 2819/3083/1745 2709/3084/1745 2708/3081/1745 2821/3080/1745 -f 2817/3086/1746 2710/3087/1746 2709/3084/1746 2819/3083/1746 -f 2815/3089/1747 2711/3090/1747 2710/3087/1747 2817/3086/1747 -f 2813/3092/1748 2712/3093/1748 2711/3090/1748 2815/3089/1748 -f 2811/3095/1749 2713/3096/1749 2712/3093/1749 2813/3092/1749 -f 2809/3098/1750 2714/3099/1750 2713/3096/1750 2811/3095/1750 -f 2807/3101/1751 2715/3102/1751 2714/3099/1751 2809/3098/1751 -f 2805/3104/1752 2716/3105/1752 2715/3102/1752 2807/3101/1752 -f 2803/3107/1753 2717/3108/1753 2716/3105/1753 2805/3104/1753 -f 2801/3110/1754 2718/3111/1754 2717/3108/1754 2803/3107/1754 -f 2799/3113/1755 2719/3114/1755 2718/3111/1755 2801/3110/1755 -f 2797/3116/1756 2720/3117/1756 2719/3114/1756 2799/3113/1756 -f 2795/3119/1757 2721/3120/1757 2720/3117/1757 2797/3116/1757 -f 2793/3122/1758 2722/3123/1758 2721/3120/1758 2795/3119/1758 -f 2791/3125/1759 2723/3126/1759 2722/3123/1759 2793/3122/1759 -f 2790/3128/1760 2724/3129/1760 2723/3126/1760 2791/3125/1760 -f 2849/2935/1761 2694/2934/1761 2853/3039/1761 2851/3036/1761 -f 2851/3036/1762 2853/3039/1762 2724/3040/1762 2790/3037/1762 -f 2757/3130/1763 2854/3127/1763 2855/3124/1763 2788/3131/1763 -f 2788/3131/1764 2855/3124/1764 2856/3121/1764 2787/3132/1764 -f 2787/3132/1765 2856/3121/1765 2857/3118/1765 2786/3133/1765 -f 2786/3133/1766 2857/3118/1766 2858/3115/1766 2785/3134/1766 -f 2785/3134/1767 2858/3115/1767 2859/3112/1767 2784/3135/1767 -f 2784/3135/1768 2859/3112/1768 2860/3109/1768 2783/3136/1768 -f 2783/3136/1769 2860/3109/1769 2861/3106/1769 2782/3137/1769 -f 2782/3137/1770 2861/3106/1770 2862/3103/1770 2781/3138/1770 -f 2781/3138/1771 2862/3103/1771 2863/3100/1771 2780/3139/1771 -f 2780/3139/1772 2863/3100/1772 2864/3097/1772 2779/3140/1772 -f 2779/3140/1773 2864/3097/1773 2865/3094/1773 2778/3141/1773 -f 2778/3141/1774 2865/3094/1774 2866/3091/1774 2777/3142/1774 -f 2777/3142/1775 2866/3091/1775 2867/3088/1775 2776/3143/1775 -f 2776/3143/1776 2867/3088/1776 2868/3085/1776 2775/3144/1776 -f 2775/3144/1777 2868/3085/1777 2869/3082/1777 2774/3145/1777 -f 2774/3145/1778 2869/3082/1778 2870/3079/1778 2773/3146/1778 -f 2773/3146/1779 2870/3079/1779 2871/3076/1779 2772/3147/1779 -f 2772/3147/1780 2871/3076/1780 2872/3073/1780 2771/3148/1780 -f 2771/3148/1781 2872/3073/1781 2873/3070/1781 2770/3003/1781 -f 2770/3003/1782 2873/3070/1782 2874/3067/1782 2769/3000/1782 -f 2769/3000/1783 2874/3067/1783 2875/3064/1783 2768/3149/1783 -f 2768/3149/1784 2875/3064/1784 2876/3061/1784 2767/3150/1784 -f 2767/3150/1785 2876/3061/1785 2877/3058/1785 2766/3151/1785 -f 2766/3151/1786 2877/3058/1786 2878/3055/1786 2765/3152/1786 -f 2765/3152/1787 2878/3055/1787 2879/3052/1787 2764/3153/1787 -f 2764/3153/1788 2879/3052/1788 2880/3049/1788 2763/3154/1788 -f 2763/3154/1789 2880/3049/1789 2881/3046/1789 2762/3155/1789 -f 2762/3155/1790 2881/3046/1790 2882/3043/1790 2761/3156/1790 -f 2761/3156/1791 2882/3043/1791 2883/3042/1791 2760/3157/1791 -f 2760/3157/1792 2883/3042/1792 2884/3041/1792 2759/3158/1792 -f 2759/3158/1793 2884/3041/1793 2885/3035/1793 2758/3159/1793 -f 2758/3159/1794 2885/3035/1794 2854/3038/1794 2757/3130/1794 -f 2886/3160/1278 2917/3161/1278 2916/3162/1278 2915/3163/1278 2914/3164/1278 2913/3165/1278 2912/3166/1278 2911/3167/1278 2910/3168/1278 2909/3169/1278 2908/3170/1278 2907/3171/1278 2906/3172/1278 2905/3173/1278 2904/3174/1278 2903/3175/1278 2902/3176/1278 2901/3177/1278 2900/3178/1278 2899/3002/1278 2898/3001/1278 2897/3179/1278 2896/3180/1278 2895/3181/1278 2894/3182/1278 2893/3183/1278 2892/3184/1278 2891/3185/1278 2890/3186/1278 2889/3187/1278 2888/3188/1278 2887/3189/1278 -f 2783/3136/1795 2912/3166/1795 2913/3165/1795 2784/3135/1795 -f 2770/3003/1796 2899/3002/1796 2900/3178/1796 2771/3148/1796 -f 2757/3130/1797 2886/3160/1797 2887/3189/1797 2758/3159/1797 -f 2784/3135/1798 2913/3165/1798 2914/3164/1798 2785/3134/1798 -f 2771/3148/1799 2900/3178/1799 2901/3177/1799 2772/3147/1799 -f 2758/3159/1800 2887/3189/1800 2888/3188/1800 2759/3158/1800 -f 2785/3134/1801 2914/3164/1801 2915/3163/1801 2786/3133/1801 -f 2772/3147/1802 2901/3177/1802 2902/3176/1802 2773/3146/1802 -f 2759/3158/1803 2888/3188/1803 2889/3187/1803 2760/3157/1803 -f 2786/3133/1804 2915/3163/1804 2916/3162/1804 2787/3132/1804 -f 2773/3146/1805 2902/3176/1805 2903/3175/1805 2774/3145/1805 -f 2760/3157/1806 2889/3187/1806 2890/3186/1806 2761/3156/1806 -f 2787/3132/1807 2916/3162/1807 2917/3161/1807 2788/3131/1807 -f 2774/3145/1808 2903/3175/1808 2904/3174/1808 2775/3144/1808 -f 2761/3156/1809 2890/3186/1809 2891/3185/1809 2762/3155/1809 -f 2788/3131/1810 2917/3161/1810 2886/3160/1810 2757/3130/1810 -f 2775/3144/1811 2904/3174/1811 2905/3173/1811 2776/3143/1811 -f 2762/3155/1812 2891/3185/1812 2892/3184/1812 2763/3154/1812 -f 2776/3143/1813 2905/3173/1813 2906/3172/1813 2777/3142/1813 -f 2763/3154/1814 2892/3184/1814 2893/3183/1814 2764/3153/1814 -f 2777/3142/1815 2906/3172/1815 2907/3171/1815 2778/3141/1815 -f 2764/3153/1816 2893/3183/1816 2894/3182/1816 2765/3152/1816 -f 2778/3141/1817 2907/3171/1817 2908/3170/1817 2779/3140/1817 -f 2765/3152/1818 2894/3182/1818 2895/3181/1818 2766/3151/1818 -f 2779/3140/1819 2908/3170/1819 2909/3169/1819 2780/3139/1819 -f 2766/3151/1820 2895/3181/1820 2896/3180/1820 2767/3150/1820 -f 2780/3139/1821 2909/3169/1821 2910/3168/1821 2781/3138/1821 -f 2767/3150/1822 2896/3180/1822 2897/3179/1822 2768/3149/1822 -f 2781/3138/1823 2910/3168/1823 2911/3167/1823 2782/3137/1823 -f 2768/3149/1824 2897/3179/1824 2898/3001/1824 2769/3000/1824 -f 2782/3137/1825 2911/3167/1825 2912/3166/1825 2783/3136/1825 +f 45/1/1 94/2/1 2/3/1 1/4/1 +f 2/5/2 4/6/2 5/7/2 8/8/2 +f 4/9/3 3/10/3 16/11/3 15/12/3 +f 6/13/4 7/14/4 12/15/4 10/16/4 +f 9/17/2 5/7/2 18/18/2 21/19/2 +f 3/20/4 1/21/4 7/14/4 6/13/4 +f 173/22/5 172/23/5 34/24/5 33/25/5 +f 3/20/4 6/13/4 19/26/4 16/27/4 +f 2/5/2 8/8/2 17/28/2 13/29/2 +f 8/8/2 5/7/2 9/17/2 11/30/2 +f 14/31/1 13/32/1 17/33/1 20/34/1 +f 15/35/5 16/36/5 19/37/5 18/38/5 +f 24/39/4 20/40/4 28/41/4 32/42/4 +f 21/19/2 18/18/2 25/43/2 29/44/2 +f 11/45/6 12/46/6 24/47/6 23/48/6 +f 5/7/2 4/6/2 15/49/2 18/18/2 +f 1/50/3 2/51/3 13/52/3 14/53/3 +f 10/54/6 9/55/6 21/56/6 22/57/6 +f 8/8/2 11/30/2 23/58/2 17/28/2 +f 12/15/4 7/14/4 20/40/4 24/39/4 +f 7/14/4 1/21/4 14/59/4 20/40/4 +f 6/13/4 10/16/4 22/60/4 19/26/4 +f 25/61/5 26/62/5 30/63/5 29/64/5 +f 28/65/1 27/66/1 31/67/1 32/68/1 +f 148/69/4 147/70/4 38/71/4 40/72/4 +f 18/73/3 19/74/3 26/75/3 25/76/3 +f 17/28/2 23/58/2 31/77/2 27/78/2 +f 19/26/4 22/60/4 30/79/4 26/80/4 +f 160/81/4 159/82/4 44/83/4 42/84/4 +f 20/85/3 17/86/3 27/87/3 28/88/3 +f 36/89/6 35/90/6 33/91/6 34/92/6 +f 181/93/1 180/94/1 35/95/1 36/96/1 +f 180/97/2 173/98/2 33/99/2 35/100/2 +f 172/101/4 181/102/4 36/103/4 34/104/4 +f 38/105/6 37/106/6 39/107/6 40/108/6 +f 147/109/1 153/110/1 37/111/1 38/112/1 +f 154/113/5 148/114/5 40/115/5 39/116/5 +f 153/117/2 154/118/2 39/119/2 37/120/2 +f 41/121/6 42/122/6 44/123/6 43/124/6 +f 163/125/5 160/126/5 42/127/5 41/128/5 +f 159/129/1 168/130/1 43/131/1 44/132/1 +f 168/133/2 163/134/2 41/135/2 43/136/2 +f 4/6/2 2/5/2 94/137/2 120/138/2 +f 120/138/2 94/137/2 93/139/2 121/140/2 +f 121/140/2 93/139/2 92/141/2 122/142/2 +f 122/142/2 92/141/2 91/143/2 123/144/2 +f 123/144/2 91/143/2 90/145/2 124/146/2 +f 124/146/2 90/145/2 89/147/2 125/148/2 +f 125/148/2 89/147/2 88/149/2 126/150/2 +f 126/150/2 88/149/2 87/151/2 127/152/2 +f 127/152/2 87/151/2 86/153/2 128/154/2 +f 128/154/2 86/153/2 85/155/2 129/156/2 +f 129/156/2 85/155/2 84/157/2 130/158/2 +f 130/158/2 84/157/2 83/159/2 131/160/2 +f 131/160/2 83/159/2 82/161/2 132/162/2 +f 132/162/2 82/161/2 81/163/2 133/164/2 +f 133/164/2 81/163/2 80/165/2 134/166/2 +f 134/166/2 80/165/2 79/167/2 135/168/2 +f 135/168/2 79/167/2 78/169/2 136/170/2 +f 136/170/2 78/169/2 77/171/2 137/172/2 +f 137/172/2 77/171/2 76/173/2 138/174/2 +f 138/174/2 76/173/2 75/175/2 139/176/2 +f 139/176/2 75/175/2 74/177/2 140/178/2 +f 140/178/2 74/177/2 73/179/2 141/180/2 +f 141/180/2 73/179/2 72/181/2 142/182/2 +f 142/182/2 72/181/2 71/183/2 143/184/2 +f 143/184/2 71/183/2 70/185/2 144/186/2 +f 1/21/4 3/20/4 119/187/4 45/188/4 +f 45/188/4 119/187/4 118/189/4 46/190/4 +f 46/190/4 118/189/4 117/191/4 47/192/4 +f 47/192/4 117/191/4 116/193/4 48/194/4 +f 48/194/4 116/193/4 115/195/4 49/196/4 +f 49/196/4 115/195/4 114/197/4 50/198/4 +f 50/198/4 114/197/4 113/199/4 51/200/4 +f 51/200/4 113/199/4 112/201/4 52/202/4 +f 52/202/4 112/201/4 111/203/4 53/204/4 +f 53/204/4 111/203/4 110/205/4 54/206/4 +f 54/206/4 110/205/4 109/207/4 55/208/4 +f 55/208/4 109/207/4 108/209/4 56/210/4 +f 56/210/4 108/209/4 107/211/4 57/212/4 +f 57/212/4 107/211/4 106/213/4 58/214/4 +f 58/214/4 106/213/4 105/215/4 59/216/4 +f 59/216/4 105/215/4 104/217/4 60/218/4 +f 60/218/4 104/217/4 103/219/4 61/220/4 +f 61/220/4 103/219/4 102/221/4 62/222/4 +f 62/222/4 102/221/4 101/223/4 63/224/4 +f 63/224/4 101/223/4 100/225/4 64/226/4 +f 64/226/4 100/225/4 99/227/4 65/228/4 +f 65/228/4 99/227/4 98/229/4 66/230/4 +f 66/230/4 98/229/4 97/231/4 67/232/4 +f 67/232/4 97/231/4 96/233/4 68/234/4 +f 68/234/4 96/233/4 95/235/4 69/236/4 +f 3/237/5 4/238/5 120/239/5 119/240/5 +f 119/240/5 120/239/5 121/241/5 118/242/5 +f 118/242/5 121/241/5 122/243/5 117/244/5 +f 117/244/5 122/243/5 123/245/5 116/246/5 +f 116/246/5 123/245/5 124/247/5 115/248/5 +f 115/248/5 124/247/5 125/249/5 114/250/5 +f 114/250/5 125/249/5 126/251/5 113/252/5 +f 113/252/5 126/251/5 127/253/5 112/254/5 +f 112/254/5 127/253/5 128/255/5 111/256/5 +f 111/256/5 128/255/5 129/257/5 110/258/5 +f 110/258/5 129/257/5 130/259/5 109/260/5 +f 109/260/5 130/259/5 131/261/5 108/262/5 +f 108/262/5 131/261/5 132/263/5 107/264/5 +f 107/264/5 132/263/5 133/265/5 106/266/5 +f 106/266/5 133/265/5 134/267/5 105/268/5 +f 105/268/5 134/267/5 135/269/5 104/270/5 +f 104/270/5 135/269/5 136/271/5 103/272/5 +f 103/272/5 136/271/5 137/273/5 102/274/5 +f 102/274/5 137/273/5 138/275/5 101/276/5 +f 101/276/5 138/275/5 139/277/5 100/278/5 +f 100/278/5 139/277/5 140/279/5 99/280/5 +f 99/280/5 140/279/5 141/281/5 98/282/5 +f 98/282/5 141/281/5 142/283/5 97/284/5 +f 97/284/5 142/283/5 143/285/5 96/286/5 +f 96/286/5 143/285/5 144/287/5 95/288/5 +f 70/289/3 69/290/3 95/291/3 144/292/3 +f 69/293/1 70/294/1 71/295/1 68/296/1 +f 68/296/1 71/295/1 72/297/1 67/298/1 +f 67/298/1 72/297/1 73/299/1 66/300/1 +f 66/300/1 73/299/1 74/301/1 65/302/1 +f 65/302/1 74/301/1 75/303/1 64/304/1 +f 64/304/1 75/303/1 76/305/1 63/306/1 +f 63/306/1 76/305/1 77/307/1 62/308/1 +f 62/308/1 77/307/1 78/309/1 61/310/1 +f 61/310/1 78/309/1 79/311/1 60/312/1 +f 60/312/1 79/311/1 80/313/1 59/314/1 +f 59/314/1 80/313/1 81/315/1 58/316/1 +f 58/316/1 81/315/1 82/317/1 57/318/1 +f 57/318/1 82/317/1 83/319/1 56/320/1 +f 56/320/1 83/319/1 84/321/1 55/322/1 +f 55/322/1 84/321/1 85/323/1 54/324/1 +f 54/324/1 85/323/1 86/325/1 53/326/1 +f 53/326/1 86/325/1 87/327/1 52/328/1 +f 52/328/1 87/327/1 88/329/1 51/330/1 +f 51/330/1 88/329/1 89/331/1 50/332/1 +f 50/332/1 89/331/1 90/333/1 49/334/1 +f 49/334/1 90/333/1 91/335/1 48/336/1 +f 48/336/1 91/335/1 92/337/1 47/338/1 +f 47/338/1 92/337/1 93/339/1 46/340/1 +f 46/340/1 93/339/1 94/2/1 45/1/1 +f 21/19/2 29/44/2 156/341/2 151/342/2 +f 151/342/2 156/341/2 155/343/2 152/344/2 +f 152/344/2 155/343/2 154/118/2 153/117/2 +f 29/64/5 30/63/5 150/345/5 156/346/5 +f 156/346/5 150/345/5 149/347/5 155/348/5 +f 155/348/5 149/347/5 148/114/5 154/113/5 +f 22/349/1 21/350/1 151/351/1 145/352/1 +f 145/352/1 151/351/1 152/353/1 146/354/1 +f 146/354/1 152/353/1 153/110/1 147/109/1 +f 30/79/4 22/60/4 145/355/4 150/356/4 +f 150/356/4 145/355/4 146/357/4 149/358/4 +f 149/358/4 146/357/4 147/70/4 148/69/4 +f 31/77/2 23/58/2 165/359/2 166/360/2 +f 166/360/2 165/359/2 164/361/2 167/362/2 +f 167/362/2 164/361/2 163/134/2 168/133/2 +f 32/68/1 31/67/1 166/363/1 157/364/1 +f 157/364/1 166/363/1 167/365/1 158/366/1 +f 158/366/1 167/365/1 168/130/1 159/129/1 +f 23/367/5 24/368/5 162/369/5 165/370/5 +f 165/370/5 162/369/5 161/371/5 164/372/5 +f 164/372/5 161/371/5 160/126/5 163/125/5 +f 24/39/4 32/42/4 157/373/4 162/374/4 +f 162/374/4 157/373/4 158/375/4 161/376/4 +f 161/376/4 158/375/4 159/82/4 160/81/4 +f 10/16/4 12/15/4 184/377/4 169/378/4 +f 169/378/4 184/377/4 183/379/4 170/380/4 +f 170/380/4 183/379/4 182/381/4 171/382/4 +f 171/382/4 182/381/4 181/102/4 172/101/4 +f 11/30/2 9/17/2 176/383/2 177/384/2 +f 177/384/2 176/383/2 175/385/2 178/386/2 +f 178/386/2 175/385/2 174/387/2 179/388/2 +f 179/388/2 174/387/2 173/98/2 180/97/2 +f 12/389/1 11/390/1 177/391/1 184/392/1 +f 184/392/1 177/391/1 178/393/1 183/394/1 +f 183/394/1 178/393/1 179/395/1 182/396/1 +f 182/396/1 179/395/1 180/94/1 181/93/1 +f 9/397/5 10/398/5 169/399/5 176/400/5 +f 176/400/5 169/399/5 170/401/5 175/402/5 +f 175/402/5 170/401/5 171/403/5 174/404/5 +f 174/404/5 171/403/5 172/23/5 173/22/5 diff --git a/mods/ITEMS/mcl_tridents/textures/mcl_trident.png b/mods/ITEMS/mcl_tridents/textures/mcl_trident.png index 1cc256d00..db1b7d90f 100644 Binary files a/mods/ITEMS/mcl_tridents/textures/mcl_trident.png and b/mods/ITEMS/mcl_tridents/textures/mcl_trident.png differ diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index d2a65ec33..56a3cfe11 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -1,8 +1,7 @@ -local mg_name = minetest.get_mapgen_setting("mg_name") -local mg_seed = minetest.get_mapgen_setting("seed") +local mg_seed = mcl_mapgen.seed -- Some mapgen settings -local superflat = mg_name == "flat" and minetest.get_mapgen_setting("mcl_superflat_classic") == "true" +local superflat = mcl_mapgen.superflat local generate_fallen_logs = minetest.settings:get_bool("mcl_generate_fallen_logs", false) @@ -36,8 +35,8 @@ local function register_classic_superflat_biome() node_filler = "mcl_core:dirt", depth_filler = 3, node_stone = "mcl_core:dirt", - y_min = mcl_vars.mg_overworld_min - 512, - y_max = mcl_vars.mg_overworld_max, + y_min = mcl_mapgen.overworld.min - 512, + y_max = mcl_mapgen.overworld.max, humidity_point = 50, heat_point = 50, _mcl_biome_type = "medium", @@ -140,7 +139,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 24, heat_point = -5, _mcl_biome_type = "snowy", @@ -174,7 +173,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 3, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 58, heat_point = 8, _mcl_biome_type = "snowy", @@ -245,7 +244,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 76, heat_point = 10, _mcl_biome_type = "cold", @@ -277,7 +276,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 100, heat_point = 8, _mcl_biome_type = "cold", @@ -310,7 +309,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 4, y_min = 4, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 10, heat_point = 45, _mcl_biome_type = "cold", @@ -360,7 +359,7 @@ local function register_biomes() node_riverbed = "mcl_core:gravel", depth_riverbed = 3, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 0, heat_point = 25, _mcl_biome_type = "cold", @@ -413,7 +412,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 4, y_min = 42, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 24, heat_point = 25, _mcl_biome_type = "cold", @@ -443,7 +442,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 1, y_min = -7, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 0, heat_point = 8, _mcl_biome_type = "cold", @@ -479,7 +478,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 24, heat_point = 8, _mcl_biome_type = "snowy", @@ -511,7 +510,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 3, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 39, heat_point = 58, _mcl_biome_type = "medium", @@ -558,7 +557,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 4, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 28, heat_point = 45, _mcl_biome_type = "medium", @@ -590,7 +589,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 4, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 58, heat_point = 22, _mcl_biome_type = "cold", @@ -637,7 +636,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 61, heat_point = 45, _mcl_biome_type = "medium", @@ -684,7 +683,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 3, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 44, heat_point = 32, _mcl_biome_type = "medium", @@ -731,7 +730,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 78, heat_point = 31, _mcl_biome_type = "medium", @@ -763,7 +762,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 77, heat_point = 27, _mcl_biome_type = "medium", @@ -796,7 +795,7 @@ local function register_biomes() depth_riverbed = 2, node_stone = "mcl_core:sandstone", y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 26, heat_point = 94, _mcl_biome_type = "hot", @@ -828,7 +827,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 94, heat_point = 27, _mcl_biome_type = "medium", @@ -861,7 +860,7 @@ local function register_biomes() depth_riverbed = 1, node_stone = "mcl_colorblocks:hardened_clay", y_min = 11, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 0, heat_point = 100, _mcl_biome_type = "hot", @@ -911,7 +910,7 @@ local function register_biomes() depth_riverbed = 1, node_stone = "mcl_colorblocks:hardened_clay", y_min = 4, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = -5, heat_point = 100, _mcl_biome_type = "hot", @@ -983,7 +982,7 @@ local function register_biomes() depth_riverbed = 1, node_stone = "mcl_colorblocks:hardened_clay", y_min = 30, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 0, heat_point = 60, _mcl_biome_type = "hot", @@ -1053,7 +1052,7 @@ local function register_biomes() depth_riverbed = 1, node_stone = "mcl_colorblocks:hardened_clay", y_min = 30, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = -5, heat_point = 60, _mcl_biome_type = "hot", @@ -1105,7 +1104,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 36, heat_point = 79, _mcl_biome_type = "hot", @@ -1154,7 +1153,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 48, heat_point = 100, _mcl_biome_type = "hot", @@ -1186,7 +1185,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 88, heat_point = 81, _mcl_biome_type = "medium", @@ -1235,7 +1234,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 92, heat_point = 81, _mcl_biome_type = "medium", @@ -1283,7 +1282,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 88, heat_point = 76, _mcl_biome_type = "medium", @@ -1318,7 +1317,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, humidity_point = 90, heat_point = 79, _mcl_biome_type = "medium", @@ -1468,7 +1467,7 @@ local function register_biomes() name = biome .. "_underground", heat_point = minetest.registered_biomes[biome].heat_point, humidity_point = minetest.registered_biomes[biome].humidity_point, - y_min = mcl_vars.mg_overworld_min, + y_min = mcl_mapgen.overworld.min, y_max = DEEP_OCEAN_MIN - 1, _mcl_biome_type = minetest.registered_biomes[biome]._mcl_biome_type, _mcl_palette_index = minetest.registered_biomes[biome]._mcl_palette_index, @@ -1489,10 +1488,10 @@ local function register_dimension_biomes() node_water = "air", node_river_water = "air", node_cave_liquid = "air", - y_min = mcl_vars.mg_nether_min, + y_min = mcl_mapgen.nether.min, -- FIXME: For some reason the Nether stops generating early if this constant is not added. -- Figure out why. - y_max = mcl_vars.mg_nether_max + 80, + y_max = mcl_mapgen.nether.max + 80, heat_point = 100, humidity_point = 0, _mcl_biome_type = "hot", @@ -1509,8 +1508,8 @@ local function register_dimension_biomes() node_cave_liquid = "air", -- FIXME: For some reason the End stops generating early if this constant is not added. -- Figure out why. - y_min = mcl_vars.mg_end_min, - y_max = mcl_vars.mg_end_max + 80, + y_min = mcl_mapgen.end_.min, + y_max = mcl_mapgen.end_.max + 80, heat_point = 50, humidity_point = 50, _mcl_biome_type = "medium", @@ -1543,7 +1542,7 @@ local function register_biome_ores() -- Rarely replace stone with stone monster eggs. -- In v6 this can happen anywhere, in other mapgens only in Extreme Hills. local monster_egg_scarcity - if mg_name == "v6" then + if mcl_mapgen.v6 then monster_egg_scarcity = 28 * 28 * 28 else monster_egg_scarcity = 26 * 26 * 26 @@ -1555,7 +1554,7 @@ local function register_biome_ores() clust_scarcity = monster_egg_scarcity, clust_num_ores = 3, clust_size = 2, - y_min = mcl_vars.mg_overworld_min, + y_min = mcl_mapgen.overworld.min, y_max = mcl_worlds.layer_to_y(61), biomes = { "ExtremeHills", "ExtremeHills_beach", "ExtremeHills_ocean", "ExtremeHills_deep_ocean", "ExtremeHills_underground", @@ -1565,7 +1564,7 @@ local function register_biome_ores() }) -- Bonus gold spawn in Mesa - if mg_name ~= "v6" then + if not mcl_mapgen.v6 then minetest.register_ore({ ore_type = "scatter", ore = "mcl_core:stone_with_gold", @@ -1594,8 +1593,8 @@ local function register_biomelike_ores() clust_scarcity = 1, clust_num_ores = 12, clust_size = 10, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, noise_threshold = 0.2, noise_params = {offset=0, scale=15, spread={x=130, y=130, z=130}, seed=24, octaves=3, persist=0.70}, biomes = { "MegaTaiga" }, @@ -1607,8 +1606,8 @@ local function register_biomelike_ores() wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, column_height_max = 1, column_midpoint_factor = 0.0, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, noise_threshold = 0.0, noise_params = {offset=0, scale=15, spread={x=250, y=250, z=250}, seed=24, octaves=3, persist=0.70}, biomes = { "MesaPlateauF_grasstop" }, @@ -1620,8 +1619,8 @@ local function register_biomelike_ores() clust_scarcity = 1500, clust_num_ores = 25, clust_size = 7, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, noise_params = { offset = 0, scale = 1, @@ -1640,8 +1639,8 @@ local function register_biomelike_ores() wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, column_height_max = 1, column_midpoint_factor = 0.0, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, noise_threshold = -2.5, noise_params = {offset=1, scale=15, spread={x=250, y=250, z=250}, seed=24, octaves=3, persist=0.80}, biomes = { "MesaPlateauFM_grasstop" }, @@ -1653,8 +1652,8 @@ local function register_biomelike_ores() clust_scarcity = 1800, clust_num_ores = 65, clust_size = 15, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, noise_params = { offset = 0, scale = 1, @@ -1674,8 +1673,8 @@ local function register_biomelike_ores() wherein = {"group:hardened_clay", "group:sand","mcl_core:coarse_dirt"}, clust_scarcity = 4000, clust_size = 5, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, noise_params = { offset = 0, scale = 1, @@ -1694,8 +1693,8 @@ local function register_biomelike_ores() wherein = {"mcl_colorblocks:hardened_clay_orange"}, clust_scarcity = 300, clust_size = 8, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, noise_params = { offset = 0, scale = 1, @@ -1716,8 +1715,8 @@ local function register_biomelike_ores() clust_scarcity = 1, clust_num_ores = 12, clust_size = 10, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, noise_threshold = 0.1, noise_params = {offset=0, scale=15, spread={x=130, y=130, z=130}, seed=95, octaves=3, persist=0.70}, biomes = { "MesaPlateauFM" }, @@ -1728,8 +1727,8 @@ local function register_biomelike_ores() wherein = {"group:hardened_clay"}, clust_scarcity = 1500, clust_size = 4, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, noise_params = { offset = 0, scale = 1, @@ -1752,8 +1751,8 @@ local function register_biomelike_ores() clust_scarcity = 5000, clust_num_ores = 12, clust_size = 4, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, noise_threshold = 0.2, noise_params = {offset=0, scale=5, spread={x=250, y=250, z=250}, seed=64, octaves=3, persist=0.60}, biomes = { "ExtremeHillsM" }, @@ -1951,7 +1950,7 @@ local function register_dimension_ores() wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, clust_scarcity = 13 * 13 * 13, clust_size = 5, - y_min = mcl_vars.mg_nether_min, + y_min = mcl_mapgen.nether.min, y_max = mcl_worlds.layer_to_y(64, "nether"), noise_threshold = 0.0, noise_params = { @@ -2013,8 +2012,8 @@ local function register_dimension_ores() wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, clust_scarcity = 26 * 26 * 26, clust_size = 5, - y_min = mcl_vars.mg_lava_nether_max + 10, - y_max = mcl_vars.mg_nether_max, + y_min = mcl_mapgen.nether.lava_max + 10, + y_max = mcl_mapgen.nether.max, noise_threshold = 0.0, noise_params = { offset = 0.5, @@ -2057,8 +2056,8 @@ local function register_dimension_ores() clust_scarcity = 850, clust_num_ores = 4, -- MC cluster amount: 4-10 clust_size = 3, - y_min = mcl_vars.mg_nether_min, - y_max = mcl_vars.mg_nether_max, + y_min = mcl_mapgen.nether.min, + y_max = mcl_mapgen.nether.max, }) minetest.register_ore({ ore_type = "scatter", @@ -2067,8 +2066,8 @@ local function register_dimension_ores() clust_scarcity = 1650, clust_num_ores = 8, -- MC cluster amount: 4-10 clust_size = 4, - y_min = mcl_vars.mg_nether_min, - y_max = mcl_vars.mg_nether_max, + y_min = mcl_mapgen.nether.min, + y_max = mcl_mapgen.nether.max, }) end @@ -2094,8 +2093,8 @@ local function register_dimension_ores() clust_scarcity = 500, clust_num_ores = 1, clust_size = 1, - y_min = mcl_vars.mg_nether_min, - y_max = mcl_vars.mg_lava_nether_max + 1, + y_min = mcl_mapgen.nether.min, + y_max = mcl_mapgen.nether.lava_max + 1, }) minetest.register_ore({ @@ -2105,8 +2104,8 @@ local function register_dimension_ores() clust_scarcity = 1000, clust_num_ores = 1, clust_size = 1, - y_min = mcl_vars.mg_lava_nether_max + 2, - y_max = mcl_vars.mg_lava_nether_max + 12, + y_min = mcl_mapgen.nether.lava_max + 2, + y_max = mcl_mapgen.nether.lava_max + 12, }) minetest.register_ore({ @@ -2116,8 +2115,8 @@ local function register_dimension_ores() clust_scarcity = 2000, clust_num_ores = 1, clust_size = 1, - y_min = mcl_vars.mg_lava_nether_max + 13, - y_max = mcl_vars.mg_lava_nether_max + 48, + y_min = mcl_mapgen.nether.lava_max + 13, + y_max = mcl_mapgen.nether.lava_max + 48, }) minetest.register_ore({ ore_type = "scatter", @@ -2126,8 +2125,8 @@ local function register_dimension_ores() clust_scarcity = 3500, clust_num_ores = 1, clust_size = 1, - y_min = mcl_vars.mg_lava_nether_max + 49, - y_max = mcl_vars.mg_nether_max, + y_min = mcl_mapgen.nether.lava_max + 49, + y_max = mcl_mapgen.nether.max, }) --[[ THE END ]] @@ -2137,7 +2136,7 @@ local function register_dimension_ores() -- FIXME: Broken lighting in v6 mapgen local end_wherein - if mg_name == "v6" then + if mcl_mapgen.v6 then end_wherein = {"air", "mcl_core:stone"} else end_wherein = {"air"} @@ -2147,11 +2146,11 @@ local function register_dimension_ores() ore_type = "stratum", ore = "mcl_end:end_stone", wherein = end_wherein, - y_min = mcl_vars.mg_end_min+64, - y_max = mcl_vars.mg_end_min+80, + y_min = mcl_mapgen.end_.min+64, + y_max = mcl_mapgen.end_.min+80, noise_params = { - offset = mcl_vars.mg_end_min+70, + offset = mcl_mapgen.end_.min+70, scale = -1, spread = {x=126, y=126, z=126}, seed = mg_seed+9999, @@ -2174,11 +2173,11 @@ local function register_dimension_ores() ore_type = "stratum", ore = "mcl_end:end_stone", wherein = end_wherein, - y_min = mcl_vars.mg_end_min+64, - y_max = mcl_vars.mg_end_min+80, + y_min = mcl_mapgen.end_.min+64, + y_max = mcl_mapgen.end_.min+80, noise_params = { - offset = mcl_vars.mg_end_min+72, + offset = mcl_mapgen.end_.min+72, scale = -3, spread = {x=84, y=84, z=84}, seed = mg_seed+999, @@ -2200,11 +2199,11 @@ local function register_dimension_ores() ore_type = "stratum", ore = "mcl_end:end_stone", wherein = end_wherein, - y_min = mcl_vars.mg_end_min+64, - y_max = mcl_vars.mg_end_min+80, + y_min = mcl_mapgen.end_.min+64, + y_max = mcl_mapgen.end_.min+80, noise_params = { - offset = mcl_vars.mg_end_min+70, + offset = mcl_mapgen.end_.min+70, scale = -2, spread = {x=84, y=84, z=84}, seed = mg_seed+99, @@ -2257,7 +2256,7 @@ local function register_grass_decoration(grasstype, offset, scale, biomes) noise_params = noise, biomes = { biomes[b] }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, decoration = node, param2 = param2, }) @@ -2324,7 +2323,7 @@ local function register_decorations() }, biomes = {"IcePlainsSpikes"}, y_min = 4, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_structures.."/schematics/mcl_structures_ice_spike_large.mts", rotation = "random", flags = "place_center_x, place_center_z", @@ -2345,7 +2344,7 @@ local function register_decorations() }, biomes = {"IcePlainsSpikes"}, y_min = 4, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_structures.."/schematics/mcl_structures_ice_spike_small.mts", rotation = "random", flags = "place_center_x, place_center_z", @@ -2368,7 +2367,7 @@ local function register_decorations() }, biomes = {"Forest"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_oak_large_"..i..".mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2388,7 +2387,7 @@ local function register_decorations() }, biomes = {"ExtremeHills", "ExtremeHillsM", "ExtremeHills+", "ExtremeHills+_snowtop"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_oak_large_"..i..".mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2409,7 +2408,7 @@ local function register_decorations() }, biomes = {"Forest"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_oak_classic.mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2428,7 +2427,7 @@ local function register_decorations() }, biomes = {"FlowerForest"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_oak_classic.mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2447,7 +2446,7 @@ local function register_decorations() }, biomes = {"ExtremeHills", "ExtremeHillsM", "ExtremeHills+", "ExtremeHills+_snowtop"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_oak_classic.mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2467,7 +2466,7 @@ local function register_decorations() }, biomes = {"ExtremeHills+", "ExtremeHills+_snowtop"}, y_min = 50, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_oak_classic.mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2486,7 +2485,7 @@ local function register_decorations() }, biomes = {"MesaPlateauF_grasstop"}, y_min = 30, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_oak_classic.mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2505,7 +2504,7 @@ local function register_decorations() }, biomes = {"MesaPlateauFM_grasstop"}, y_min = 30, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_oak_classic.mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2525,7 +2524,7 @@ local function register_decorations() }, biomes = {"IcePlains"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_oak_classic.mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2537,7 +2536,7 @@ local function register_decorations() fill_ratio = 0.004, biomes = {"Jungle", "JungleM"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_oak_classic.mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2549,7 +2548,7 @@ local function register_decorations() fill_ratio = 0.0004, biomes = {"JungleEdge", "JungleEdgeM", "Savanna"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_oak_classic.mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2571,7 +2570,7 @@ local function register_decorations() }, biomes = {"Forest"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_oak_balloon.mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2592,7 +2591,7 @@ local function register_decorations() }, biomes = {"Swampland", "Swampland_shore"}, y_min = 0, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_oak_swamp.mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2609,7 +2608,7 @@ local function register_decorations() fill_ratio = 0.00125, biomes = {"Jungle"}, y_min = 4, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_jungle_tree_huge_"..i..".mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2621,7 +2620,7 @@ local function register_decorations() fill_ratio = 0.004, biomes = {"JungleM"}, y_min = 4, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_jungle_tree_huge_"..i..".mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2636,7 +2635,7 @@ local function register_decorations() fill_ratio = 0.045, biomes = {"Jungle"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_jungle_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2648,7 +2647,7 @@ local function register_decorations() fill_ratio = 0.0045, biomes = {"JungleEdge", "JungleEdgeM"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_jungle_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2661,7 +2660,7 @@ local function register_decorations() fill_ratio = 0.09, biomes = {"JungleM"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_jungle_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2686,7 +2685,7 @@ local function register_decorations() }, biomes = biomes, y_min = y, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/"..sprucename, flags = "place_center_x, place_center_z", }) @@ -2740,7 +2739,7 @@ local function register_decorations() }, biomes = {"Taiga", "ColdTaiga"}, y_min = 2, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_spruce_lollipop.mts", flags = "place_center_x, place_center_z", }) @@ -2760,7 +2759,7 @@ local function register_decorations() }, biomes = {"Taiga", "ColdTaiga"}, y_min = 3, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_spruce_matchstick.mts", flags = "place_center_x, place_center_z", }) @@ -2780,7 +2779,7 @@ local function register_decorations() }, biomes = {"IcePlains"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_spruce_5.mts", flags = "place_center_x, place_center_z", }) @@ -2794,7 +2793,7 @@ local function register_decorations() fill_ratio = 0.0002, biomes = {"Savanna", "SavannaM"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_acacia_"..a..".mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2816,7 +2815,7 @@ local function register_decorations() }, biomes = {"BirchForest"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_birch.mts", flags = "place_center_x, place_center_z", }) @@ -2834,7 +2833,7 @@ local function register_decorations() }, biomes = {"BirchForestM"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_birch_tall.mts", flags = "place_center_x, place_center_z", }) @@ -2853,7 +2852,7 @@ local function register_decorations() }, biomes = {"Forest", "FlowerForest"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_birch.mts", flags = "place_center_x, place_center_z", }) @@ -2873,7 +2872,7 @@ local function register_decorations() }, biomes = {"RoofedForest"}, y_min = 4, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_core.."/schematics/mcl_core_dark_oak.mts", flags = "place_center_x, place_center_z", rotation = "random", @@ -2895,7 +2894,7 @@ local function register_decorations() fill_ratio = ratio_mushroom_huge, biomes = { "RoofedForest" }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_mushrooms.."/schematics/mcl_mushrooms_huge_brown.mts", flags = "place_center_x, place_center_z", rotation = "0", @@ -2907,7 +2906,7 @@ local function register_decorations() fill_ratio = ratio_mushroom_giant, biomes = { "RoofedForest" }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_mushrooms.."/schematics/mcl_mushrooms_giant_brown.mts", flags = "place_center_x, place_center_z", rotation = "0", @@ -2920,7 +2919,7 @@ local function register_decorations() fill_ratio = ratio_mushroom_mycelium_huge, biomes = { "MushroomIsland", "MushroomIslandShore" }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_mushrooms.."/schematics/mcl_mushrooms_huge_brown.mts", flags = "place_center_x, place_center_z", rotation = "0", @@ -2932,7 +2931,7 @@ local function register_decorations() fill_ratio = ratio_mushroom_mycelium_giant, biomes = { "MushroomIsland", "MushroomIslandShore" }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_mushrooms.."/schematics/mcl_mushrooms_giant_brown.mts", flags = "place_center_x, place_center_z", rotation = "0", @@ -2946,7 +2945,7 @@ local function register_decorations() fill_ratio = ratio_mushroom_huge, biomes = { "RoofedForest" }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_mushrooms.."/schematics/mcl_mushrooms_huge_red.mts", flags = "place_center_x, place_center_z", rotation = "0", @@ -2958,7 +2957,7 @@ local function register_decorations() fill_ratio = ratio_mushroom_giant, biomes = { "RoofedForest" }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_mushrooms.."/schematics/mcl_mushrooms_giant_red.mts", flags = "place_center_x, place_center_z", rotation = "0", @@ -2971,7 +2970,7 @@ local function register_decorations() fill_ratio = ratio_mushroom_mycelium_huge, biomes = { "MushroomIsland", "MushroomIslandShore" }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_mushrooms.."/schematics/mcl_mushrooms_huge_red.mts", flags = "place_center_x, place_center_z", rotation = "0", @@ -2983,7 +2982,7 @@ local function register_decorations() fill_ratio = ratio_mushroom_mycelium_giant, biomes = { "MushroomIsland", "MushroomIslandShore" }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_mushrooms.."/schematics/mcl_mushrooms_giant_red.mts", flags = "place_center_x, place_center_z", rotation = "0", @@ -3004,7 +3003,7 @@ local function register_decorations() }, biomes = {"MegaTaiga", "MegaSpruceTaiga"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_structures.."/schematics/mcl_structures_boulder.mts", flags = "place_center_x, place_center_z", }) @@ -3024,7 +3023,7 @@ local function register_decorations() }, biomes = {"MegaTaiga", "MegaSpruceTaiga"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = mod_mcl_structures.."/schematics/mcl_structures_boulder_small.mts", flags = "place_center_x, place_center_z", }) @@ -3043,7 +3042,7 @@ local function register_decorations() persist = 0.6 }, y_min = 4, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, decoration = "mcl_core:cactus", biomes = {"Desert", "Mesa","Mesa_sandlevel", @@ -3067,7 +3066,7 @@ local function register_decorations() persist = 0.7 }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, decoration = "mcl_core:reeds", height = 1, height_max = 3, @@ -3088,7 +3087,7 @@ local function register_decorations() }, biomes = {"Swampland", "Swampland_shore"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, decoration = "mcl_core:reeds", height = 1, height_max = 3, @@ -3122,7 +3121,7 @@ local function register_decorations() persist = 0.6, }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, biomes = { biomes[b] }, }) end @@ -3157,7 +3156,7 @@ local function register_decorations() persist = 0.66, }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, biomes = biomes[b], }) end @@ -3206,7 +3205,7 @@ local function register_decorations() persist = 0.62, }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, flags = "", biomes = b, }) @@ -3234,7 +3233,7 @@ local function register_decorations() }, biomes = {"Jungle"}, y_min = 3, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = jungle_bush_schematic, flags = "place_center_x, place_center_z", }) @@ -3252,7 +3251,7 @@ local function register_decorations() }, biomes = {"JungleM"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = jungle_bush_schematic, flags = "place_center_x, place_center_z", }) @@ -3270,7 +3269,7 @@ local function register_decorations() }, biomes = {"JungleEdge", "JungleEdgeM"}, y_min = 3, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = jungle_bush_schematic, flags = "place_center_x, place_center_z", }) @@ -3293,7 +3292,7 @@ local function register_decorations() }, biomes = {"MegaTaiga", "MegaSpruceTaiga", "Taiga"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = { size = {x = 3, y = 3, z = 1}, data = { @@ -3326,7 +3325,7 @@ local function register_decorations() }, biomes = {"ColdTaiga"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = { size = {x = 3, y = 3, z = 1}, data = { @@ -3359,7 +3358,7 @@ local function register_decorations() }, biomes = {"BirchForest", "BirchForestM",}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = { size = {x = 3, y = 3, z = 1}, data = { @@ -3385,7 +3384,7 @@ local function register_decorations() fill_ratio = 0.005, biomes = {"Jungle", "JungleM"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = { size = {x = 3, y = 3, z = 1}, data = { @@ -3418,7 +3417,7 @@ local function register_decorations() }, biomes = {"Forest"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = { size = {x = 3, y = 3, z = 1}, data = { @@ -3491,7 +3490,7 @@ local function register_decorations() persist = 0.6 }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, decoration = "mcl_farming:melon", biomes = { "Jungle" }, }) @@ -3508,7 +3507,7 @@ local function register_decorations() persist = 0.6 }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, decoration = "mcl_farming:melon", biomes = { "JungleM" }, }) @@ -3525,7 +3524,7 @@ local function register_decorations() persist = 0.6 }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, decoration = "mcl_farming:melon", biomes = { "JungleEdge", "JungleEdgeM" }, }) @@ -3544,7 +3543,7 @@ local function register_decorations() persist = 0.6 }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, decoration = "mcl_farming:melon", biomes = { "JungleEdgeM" }, }) @@ -3566,7 +3565,7 @@ local function register_decorations() persist = 0.666 }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, }) -- Grasses and ferns @@ -3642,7 +3641,7 @@ local function register_decorations() persist = 0.666 }, flags = "force_placement", - y_min = mcl_vars.mg_lava_overworld_max + 5, + y_min = mcl_mapgen.overworld.lava_max + 5, y_max = -20, }) @@ -3661,7 +3660,7 @@ local function register_decorations() }, biomes = {"IcePlains"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = { size = { x=1, y=2, z=1 }, data = { @@ -3684,7 +3683,7 @@ local function register_decorations() }, biomes = {"ExtremeHills+_snowtop"}, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, schematic = { size = { x=1, y=2, z=1 }, data = { @@ -3709,7 +3708,7 @@ local function register_decorations() persist = 0.6 }, y_min = 4, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, biomes = {"Desert", "Mesa", "Mesa_sandlevel", "MesaPlateauF", "MesaPlateauF_sandlevel", "MesaPlateauF_grasstop","MesaBryce","Taiga", "MegaTaiga"}, decoration = "mcl_core:deadbush", height = 1, @@ -3727,7 +3726,7 @@ local function register_decorations() persist = 0.6 }, y_min = 4, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, biomes = {"MesaPlateauFM_grasstop"}, decoration = "mcl_core:deadbush", height = 1, @@ -3745,7 +3744,7 @@ local function register_decorations() persist = 0.6 }, y_min = 4, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, biomes = {"MesaPlateauFM","MesaPlateauFM_sandlevel"}, decoration = "mcl_core:deadbush", height = 1, @@ -3763,7 +3762,7 @@ local function register_decorations() persist = 0.6 }, y_min = 4, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, biomes = {"MesaPlateauFM", "MesaPlateauFM_sandlevel", "MesaPlateauFM_grasstop"}, decoration = "mcl_core:deadbush", height = 1, @@ -3777,8 +3776,8 @@ local function register_decorations() fill_ratio = 0.009, biomes = {"MushroomIsland", "MushroomIslandShore"}, noise_threshold = 2.0, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, decoration = "mcl_mushrooms:mushroom_red", }) minetest.register_decoration({ @@ -3787,8 +3786,8 @@ local function register_decorations() sidelen = 80, fill_ratio = 0.009, biomes = {"MushroomIsland", "MushroomIslandShore"}, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, decoration = "mcl_mushrooms:mushroom_brown", }) @@ -3799,8 +3798,8 @@ local function register_decorations() sidelen = 80, fill_ratio = 0.003, biomes = {"Taiga", "MegaTaiga", "MegaSpruceTaiga"}, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, decoration = "mcl_mushrooms:mushroom_red", }) minetest.register_decoration({ @@ -3809,8 +3808,8 @@ local function register_decorations() sidelen = 80, fill_ratio = 0.003, biomes = {"Taiga", "MegaTaiga", "MegaSpruceTaiga"}, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, decoration = "mcl_mushrooms:mushroom_brown", }) @@ -3833,7 +3832,7 @@ local function register_decorations() persist = 0.66, }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, decoration = mushrooms[m], spawn_by = { "mcl_core:tree", "mcl_core:sprucetree", "mcl_core:darktree", "mcl_core:birchtree" }, num_spawn_by = 1, @@ -3853,7 +3852,7 @@ local function register_decorations() persist = 0.6, }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, decoration = mushrooms[m], biomes = { "Swampland"}, spawn_by = { "mcl_core:tree", "mcl_core:sprucetree", "mcl_core:darktree", "mcl_core:birchtree" }, @@ -3878,7 +3877,7 @@ local function register_decorations() persist = 0.6 }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, biomes = biomes, decoration = "mcl_flowers:"..name, }) @@ -3897,7 +3896,7 @@ local function register_decorations() persist = 0.6, }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, biomes = {"FlowerForest"}, decoration = "mcl_flowers:"..name, }) @@ -3944,8 +3943,8 @@ local function register_dimension_decorations() octaves = 3, persist = 0.6 }, - y_min = mcl_vars.mg_end_min, - y_max = mcl_vars.mg_end_max, + y_min = mcl_mapgen.end_.min, + y_max = mcl_mapgen.end_.max, decoration = "mcl_end:chorus_flower", height = 1, biomes = { "End" }, @@ -3962,14 +3961,15 @@ end -- -- Detect mapgen to select functions -- -if mg_name ~= "singlenode" then + +if not mcl_mapgen.singlenode then if not superflat then - if mg_name ~= "v6" then + if not mcl_mapgen.v6 then register_biomes() register_biomelike_ores() end register_biome_ores() - if mg_name ~= "v6" then + if not mcl_mapgen.v6 then register_decorations() end else @@ -3990,21 +3990,16 @@ if mg_name ~= "singlenode" then -- Overworld decorations for v6 are handled in mcl_mapgen_core if deco_id_chorus_plant then - mcl_mapgen_core.register_generator("chorus_grow", nil, function(minp, maxp, blockseed) - local gennotify = minetest.get_mapgen_object("gennotify") - --local poslist = {} - local pr = PseudoRandom(blockseed + 14) - for _, pos in ipairs(gennotify["decoration#"..deco_id_chorus_plant] or {}) do - local x, y, z = pos.x, pos.y, pos.z - if x < -2 or x > 2 or z < -2 or z > 2 then - local realpos = { x = x, y = y + 1, z = z } - local node = minetest.get_node(realpos) - if node and node.name == "mcl_end:chorus_flower" then - mcl_end.grow_chorus_plant(realpos, node, pr) - end - end + mcl_mapgen.register_mapgen_block_lvm(function(vm_context) + vm_context.gennotify = vm_context.gennotify or minetest.get_mapgen_object("gennotify") + local gennotify = vm_context.gennotify + for _, pos in pairs(gennotify["decoration#"..deco_id_chorus_plant] or {}) do + local realpos = { x = pos.x, y = pos.y + 1, z = pos.z } + local pr = PseudoRandom(vm_context.blockseed) + minetest.after(1, mcl_end.grow_chorus_plant, realpos, false, pr) end - end) + return vm_context + end, mcl_mapgen.order.CHORUS) end end diff --git a/mods/MAPGEN/mcl_biomes/mod.conf b/mods/MAPGEN/mcl_biomes/mod.conf index 0c6095f3d..d389640a8 100644 --- a/mods/MAPGEN/mcl_biomes/mod.conf +++ b/mods/MAPGEN/mcl_biomes/mod.conf @@ -1,4 +1,4 @@ name = mcl_biomes author = maikerumine description = Adds the various biomes and biome-related things for non-v6 map generators. -depends = mcl_init, mcl_mapgen_core, mcl_core, mcl_worlds, mcl_farming, mcl_flowers, mcl_end, mcl_ocean +depends = mcl_mapgen, mcl_mapgen_core, mcl_core, mcl_worlds, mcl_farming, mcl_flowers, mcl_end, mcl_ocean diff --git a/mods/MAPGEN/mcl_debrisgen/init.lua b/mods/MAPGEN/mcl_debrisgen/init.lua index 4e80c2504..b2b630626 100644 --- a/mods/MAPGEN/mcl_debrisgen/init.lua +++ b/mods/MAPGEN/mcl_debrisgen/init.lua @@ -1,44 +1,33 @@ -local c_debris = minetest.get_content_id("mcl_nether:ancient_debris") -local c_netherrack = minetest.get_content_id("mcl_nether:netherrack") -local c_air = minetest.get_content_id("air") +local minetest_find_nodes_in_area = minetest.find_nodes_in_area +local minetest_get_node = minetest.get_node +local minetest_set_node = minetest.set_node +local debris_name = "mcl_nether:ancient_debris" +local netherrack_name = "mcl_nether:netherrack" +local air_name = "air" -local facedir = { - vector.new(0, 0, 1), - vector.new(0, 1, 0), - vector.new(1, 0, 0), - vector.new(0, 0, -1), - vector.new(0, -1, 0), - vector.new(-1, 0, 0), -} +local min, max = mcl_mapgen.nether.min, mcl_mapgen.nether.max -minetest.register_on_generated(function(minp, maxp) - if maxp.y < mcl_vars.mg_nether_min or minp.y > mcl_vars.mg_nether_max then - return - end - - local vm, emin, emax = minetest.get_mapgen_object("voxelmanip") - local data = vm:get_data() - local area = VoxelArea:new({MinEdge = emin, MaxEdge = emax}) - - for idx in area:iter(minp.x, math.max(minp.y, mcl_vars.mg_nether_min), minp.z, maxp.x, math.min(maxp.y, mcl_vars.mg_nether_max), maxp.z) do - if data[idx] == c_debris then - local pos = area:position(idx) - local exposed = false - for _, dir in pairs(facedir) do - if data[area:indexp(vector.add(pos, dir))] == c_air then - exposed = true - break - end - end - if exposed then - data[idx] = c_netherrack - end - end - end - - vm:set_data(data) - vm:calc_lighting() - vm:update_liquids() - vm:write_to_map() +mcl_mapgen.register_mapgen_block(function(minp, maxp) + local minp = minp + local minp_y = minp.y + if minp_y > max then return end + local maxp = maxp + local maxp_y = maxp.y + if maxp_y < min then return end + local nodes = minetest_find_nodes_in_area(minp, maxp, debris_name) + if nodes then + for _, pos in pairs(nodes) do + minetest.log("warning","debris found at "..minetest.pos_to_string(pos)) + local x, y, z = pos.x, pos.y, pos.z + if minetest_get_node({x = x-1, y = y, z = z}) == air_name + or minetest_get_node({x = x+1, y = y, z = z}) == air_name + or minetest_get_node({x = x, y = y-1, z = z}) == air_name + or minetest_get_node({x = x, y = y+1, z = z}) == air_name + or minetest_get_node({x = x, y = y, z = z-1}) == air_name + or minetest_get_node({x = x, y = y, z = z+1}) == air_name then + minetest_set_node(pos, netherrack_name) + minetest.log("warning","debris at "..minetest.pos_to_string(pos) .. " replaced to netherrack") + end + end + end end) - diff --git a/mods/MAPGEN/mcl_debrisgen/mod.conf b/mods/MAPGEN/mcl_debrisgen/mod.conf index cc5455208..9407fedc9 100644 --- a/mods/MAPGEN/mcl_debrisgen/mod.conf +++ b/mods/MAPGEN/mcl_debrisgen/mod.conf @@ -1,4 +1,4 @@ name = mcl_debrisgen author = Fleckenstein description = Make sure ancient debris is not generated exposed to air -depends = mcl_mapgen_core, mcl_nether +depends = mcl_mapgen, mcl_nether diff --git a/mods/MAPGEN/mcl_dungeons/init.lua b/mods/MAPGEN/mcl_dungeons/init.lua index 905e26396..c3e406ca1 100644 --- a/mods/MAPGEN/mcl_dungeons/init.lua +++ b/mods/MAPGEN/mcl_dungeons/init.lua @@ -2,21 +2,19 @@ mcl_dungeons = {} -local mg_name = minetest.get_mapgen_setting("mg_name") - -- Are dungeons disabled? -if mcl_vars.mg_dungeons == false or mg_name == "singlenode" then +if mcl_mapgen.dungeons == false or mcl_mapgen.singlenode == true then return end --lua locals --minetest +local minetest_find_nodes_in_area = minetest.find_nodes_in_area local registered_nodes = minetest.registered_nodes local swap_node = minetest.swap_node local set_node = minetest.set_node local dir_to_facedir = minetest.dir_to_facedir local get_meta = minetest.get_meta -local emerge_area = minetest.emerge_area --vector local vector_add = vector.add @@ -32,15 +30,15 @@ local math_max = math.max local math_ceil = math.ceil --custom mcl_vars -local get_node = mcl_vars.get_node +local get_node = mcl_mapgen.get_far_node -local min_y = math_max(mcl_vars.mg_overworld_min, mcl_vars.mg_bedrock_overworld_max) + 1 -local max_y = mcl_vars.mg_overworld_max - 1 +local min_y = math_max(mcl_mapgen.overworld.min, mcl_mapgen.overworld.bedrock_max) + 1 +local max_y = mcl_mapgen.overworld.max - 1 -- Calculate the number of dungeon spawn attempts -- In Minecraft, there 8 dungeon spawn attempts Minecraft chunk (16*256*16 = 65536 blocks). -- Minetest chunks don't have this size, so scale the number accordingly. -local attempts = math_ceil(((mcl_vars.chunksize * mcl_vars.MAP_BLOCKSIZE) ^ 3) / 8192) -- 63 = 80*80*80/8192 +local attempts = math_ceil((mcl_mapgen.CS_NODES ^ 3) / 8192) -- 63 = 80*80*80/8192 local dungeonsizes = { { x=5, y=4, z=5}, @@ -112,7 +110,7 @@ local loottable = } -- Bonus loot for v6 mapgen: Otherwise unobtainable saplings. -if mg_name == "v6" then +if mcl_mapgen.v6 then table.insert(loottable, { stacks_min = 1, stacks_max = 3, @@ -124,20 +122,28 @@ if mg_name == "v6" then }) end -local function ecb_spawn_dungeon(blockpos, action, calls_remaining, param) - if calls_remaining >= 1 then return end +--local function ecb_spawn_dungeon(blockpos, action, calls_remaining, param) +-- if calls_remaining >= 1 then return end +-- local p1, _, dim, pr = param.p1, param.p2, param.dim, param.pr +-- local check = not (param.dontcheck or false) +local m1, m2 = 0, 0 +local function spawn_dungeon(p1, p2, dim, pr, dontcheck) - local p1, _, dim, pr = param.p1, param.p2, param.dim, param.pr local x, y, z = p1.x, p1.y, p1.z - local check = not (param.dontcheck or false) + local check = not (dontcheck or false) -- Check floor and ceiling: Must be *completely* solid local y_floor = y local y_ceiling = y + dim.y + 1 - if check then for tx = x+1, x+dim.x do for tz = z+1, z+dim.z do - if not registered_nodes[get_node({x = tx, y = y_floor , z = tz}).name].walkable - or not registered_nodes[get_node({x = tx, y = y_ceiling, z = tz}).name].walkable then return false end - end end end + + if check then + local dim_x, dim_z = dim.x, dim.z + local size = dim_z*dim_x + if #minetest_find_nodes_in_area({x=x+1,y=y_floor,z=z+1}, {x=x+dim_z,y=y_floor,z=z+dim_z}, "group:walkabke") < size + or #minetest_find_nodes_in_area({x=x+1,y=y_floor,z=z+1}, {x=x+dim_z,y=y_floor,z=z+dim_z}, "group:walkabke") < size then + return + end + end -- Check for air openings (2 stacked air at ground level) in wall positions local openings_counter = 0 @@ -404,8 +410,7 @@ local function dungeons_nodes(minp, maxp, blockseed) local z = pr:next(minp.z, maxp.z-dim.z-1) local p1 = {x=x,y=y,z=z} local p2 = {x = x+dim.x+1, y = y+dim.y+1, z = z+dim.z+1} - minetest.log("verbose","[mcl_dungeons] size=" ..minetest.pos_to_string(dim) .. ", emerge from "..minetest.pos_to_string(p1) .. " to " .. minetest.pos_to_string(p2)) - emerge_area(p1, p2, ecb_spawn_dungeon, {p1=p1, p2=p2, dim=dim, pr=pr}) + spawn_dungeon(p1, p2, dim, pr) end end @@ -413,8 +418,7 @@ function mcl_dungeons.spawn_dungeon(p1, _, pr) if not p1 or not pr or not p1.x or not p1.y or not p1.z then return end local dim = dungeonsizes[pr:next(1, #dungeonsizes)] local p2 = {x = p1.x+dim.x+1, y = p1.y+dim.y+1, z = p1.z+dim.z+1} - minetest.log("verbose","[mcl_dungeons] size=" ..minetest.pos_to_string(dim) .. ", emerge from "..minetest.pos_to_string(p1) .. " to " .. minetest.pos_to_string(p2)) - emerge_area(p1, p2, ecb_spawn_dungeon, {p1=p1, p2=p2, dim=dim, pr=pr, dontcheck=true}) + spawn_dungeon(p1, p2, dim, pr, true) end -mcl_mapgen_core.register_generator("dungeons", nil, dungeons_nodes, 999999) +mcl_mapgen.register_mapgen(dungeons_nodes, mcl_mapgen.order.DUNGEONS) diff --git a/mods/MAPGEN/mcl_dungeons/mod.conf b/mods/MAPGEN/mcl_dungeons/mod.conf index fe02286fa..e7a7d921c 100644 --- a/mods/MAPGEN/mcl_dungeons/mod.conf +++ b/mods/MAPGEN/mcl_dungeons/mod.conf @@ -1,4 +1,4 @@ name = mcl_dungeons author = Wuzzy description = Generates random dungeons in the world -depends = mcl_init, mcl_core, mcl_chests, mcl_mobs, mcl_mobspawners, mcl_mapgen_core, mobs_mc +depends = mcl_mapgen, mcl_core, mcl_chests, mcl_mobs, mcl_mobspawners, mcl_mapgen_core, mobs_mc diff --git a/mods/MAPGEN/mcl_end_island/init.lua b/mods/MAPGEN/mcl_end_island/init.lua index 730176257..5a0bde2c7 100644 --- a/mods/MAPGEN/mcl_end_island/init.lua +++ b/mods/MAPGEN/mcl_end_island/init.lua @@ -10,25 +10,21 @@ local noisemap = PerlinNoiseMap({ local c_end_stone = minetest.get_content_id("mcl_end:end_stone") local y_offset = -2 -minetest.register_on_generated(function(minp, maxp) +mcl_mapgen.register_on_generated(function(vm_context) + local minp, maxp = vm_context.minp, vm_context.maxp if maxp.y < (-27025 + y_offset) or minp.y > (-27000 + y_offset + 4) or maxp.x < -75 or minp.x > 75 or maxp.z < -75 or minp.z > 75 then return end - - local vm, emin, emax = minetest.get_mapgen_object("voxelmanip") - local data = vm:get_data() - local area = VoxelArea:new({MinEdge = emin, MaxEdge = emax}) - + local data = vm_context.data + local area = vm_context.area + local write = false for idx in area:iter(math.max(minp.x, -75), math.max(minp.y, -27025 + y_offset + 4), math.max(minp.z, -75), math.min(maxp.x, 75), math.min(maxp.y, -27000 + y_offset), math.min(maxp.z, 75)) do local pos = area:position(idx) local y = 27025 + pos.y - y_offset if noisemap[pos.x + 75 + 1][y + 1][pos.z + 75 + 1] > (math.abs(1 - y / 25) ^ 2 + math.abs(pos.x / 75) ^ 2 + math.abs(pos.z / 75) ^ 2) then data[idx] = c_end_stone + write = true end end - - vm:set_data(data) - vm:calc_lighting() - vm:update_liquids() - vm:write_to_map() + vm_context.write = vm_context.write or write end) diff --git a/mods/MAPGEN/mcl_mapgen_core/clay.lua b/mods/MAPGEN/mcl_mapgen_core/clay.lua new file mode 100644 index 000000000..56e0e023f --- /dev/null +++ b/mods/MAPGEN/mcl_mapgen_core/clay.lua @@ -0,0 +1,63 @@ +local c_water = minetest.get_content_id("mcl_core:water_source") +local c_dirt = minetest.get_content_id("mcl_core:dirt") +local c_clay = minetest.get_content_id("mcl_core:clay") + +local perlin_clay + +local math_max = math.max +local math_min = math.min +local math_floor = math.floor +local math_abs = math.abs +local offset = math_floor(mcl_mapgen.BS / 2) +local minetest_get_item_group = minetest.get_item_group +local minetest_get_name_from_content_id = minetest.get_name_from_content_id + +mcl_mapgen.register_mapgen_block_lvm(function(c) + local minp, maxp, blockseed, voxelmanip_data, voxelmanip_area = c.minp, c.maxp, c.blockseed, c.data, c.area + local max_y = maxp.y + if max_y < -7 then return end + local min_y = minp.y + if min_y > 0 then return end + + c.vm = c.vm or mcl_mapgen.get_voxel_manip(c) + + local pr = PseudoRandom(blockseed) + + perlin_clay = perlin_clay or minetest.get_perlin({ + offset = 0.5, + scale = 0.2, + spread = {x = 5, y = 5, z = 5}, + seed = -316, + octaves = 1, + persist = 0.0 + }) + + for y = math_max(min_y, -8), math_min(max_y, 0) do + -- Assume X and Z lengths are equal + local x = minp.x + offset + pr:next(-2, 2) + local z = minp.z + offset + pr:next(-2, 2) + if perlin_clay:get_3d({x = x, y = y, z = z}) + pr:next(1, 20) > 19 then + -- Get position and shift it a bit randomly so the clay do not obviously appear in a grid + local water_pos = voxelmanip_area:index(x, y + 1, z) + local water_node = voxelmanip_data[water_pos] + if water_node == c_water or water_node == c_clay then + local surface_pos = voxelmanip_area:index(x, y, z) + local surface_node = voxelmanip_data[surface_pos] + if (surface_node == c_dirt or surface_node == c_clay or minetest_get_item_group(minetest_get_name_from_content_id(surface_node), "sand") == 1) then + local diamondsize = pr:next(1, 3) + for x1 = -diamondsize, diamondsize do + local abs_x1 = math_abs(x1) + for z1 = -(diamondsize - abs_x1), diamondsize - abs_x1 do + local ccpos = voxelmanip_area:index(x + x1, y, z + z1) + local claycandidate = voxelmanip_data[ccpos] + if voxelmanip_data[ccpos] == c_dirt or minetest_get_item_group(minetest_get_name_from_content_id(claycandidate), "sand") == 1 then + voxelmanip_data[ccpos] = c_clay + c.write = true + end + end + end + end + end + end + end +end) diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index 96995396f..8f4278357 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -1,13 +1,11 @@ mcl_mapgen_core = {} -local registered_generators = {} - -local lvm, nodes, param2 = 0, 0, 0 -local lvm_buffer = {} -- -- Aliases for map generator outputs -- +local mcl_mushrooms = minetest.get_modpath("mcl_mushrooms") + minetest.register_alias("mapgen_air", "air") minetest.register_alias("mapgen_stone", "mcl_core:stone") minetest.register_alias("mapgen_tree", "mcl_core:tree") @@ -28,7 +26,9 @@ minetest.register_alias("mapgen_clay", "mcl_core:clay") minetest.register_alias("mapgen_lava_source", "air") -- Built-in lava generator is too unpredictable, we generate lava on our own minetest.register_alias("mapgen_cobble", "mcl_core:cobble") minetest.register_alias("mapgen_mossycobble", "mcl_core:mossycobble") -minetest.register_alias("mapgen_junglegrass", "mcl_flowers:fern") +if minetest.get_modpath("mcl_flowers") then + minetest.register_alias("mapgen_junglegrass", "mcl_flowers:fern") +end minetest.register_alias("mapgen_stone_with_coal", "mcl_core:stone_with_coal") minetest.register_alias("mapgen_stone_with_iron", "mcl_core:stone_with_iron") minetest.register_alias("mapgen_desert_sand", "mcl_core:sand") @@ -43,19 +43,19 @@ minetest.register_alias("mapgen_snow", "mcl_core:snow") minetest.register_alias("mapgen_snowblock", "mcl_core:snowblock") minetest.register_alias("mapgen_ice", "mcl_core:ice") -minetest.register_alias("mapgen_stair_cobble", "mcl_stairs:stair_cobble") minetest.register_alias("mapgen_sandstonebrick", "mcl_core:sandstonesmooth") -minetest.register_alias("mapgen_stair_sandstonebrick", "mcl_stairs:stair_sandstone") -minetest.register_alias("mapgen_stair_sandstone_block", "mcl_stairs:stair_sandstone") -minetest.register_alias("mapgen_stair_desert_stone", "mcl_stairs:stair_sandstone") -local mg_name = minetest.get_mapgen_setting("mg_name") -local superflat = mg_name == "flat" and minetest.get_mapgen_setting("mcl_superflat_classic") == "true" +if minetest.get_modpath("mcl_stairs") then + minetest.register_alias("mapgen_stair_cobble", "mcl_stairs:stair_cobble") + minetest.register_alias("mapgen_stair_sandstonebrick", "mcl_stairs:stair_sandstone") + minetest.register_alias("mapgen_stair_sandstone_block", "mcl_stairs:stair_sandstone") + minetest.register_alias("mapgen_stair_desert_stone", "mcl_stairs:stair_sandstone") +end -local WITCH_HUT_HEIGHT = 3 -- Exact Y level to spawn witch huts at. This height refers to the height of the floor - --- End exit portal position -local END_EXIT_PORTAL_POS = vector.new(-3, -27003, -3) +local mg_name = mcl_mapgen.name +local superflat = mcl_mapgen.superflat +local v6 = mcl_mapgen.v6 +local singlenode = mcl_mapgen.singlenode -- Content IDs local c_bedrock = minetest.get_content_id("mcl_core:bedrock") @@ -69,21 +69,22 @@ local c_sand = minetest.get_content_id("mcl_core:sand") local c_void = minetest.get_content_id("mcl_core:void") local c_lava = minetest.get_content_id("mcl_core:lava_source") local c_water = minetest.get_content_id("mcl_core:water_source") -local c_soul_sand = minetest.get_content_id("mcl_nether:soul_sand") -local c_netherrack = minetest.get_content_id("mcl_nether:netherrack") -local c_nether_lava = minetest.get_content_id("mcl_nether:nether_lava_source") + +local c_nether = nil +if minetest.get_modpath("mcl_nether") then + c_nether = { + soul_sand = minetest.get_content_id("mcl_nether:soul_sand"), + netherrack = minetest.get_content_id("mcl_nether:netherrack"), + lava = minetest.get_content_id("mcl_nether:nether_lava_source") + } +end + --local c_end_stone = minetest.get_content_id("mcl_end:end_stone") local c_realm_barrier = minetest.get_content_id("mcl_core:realm_barrier") local c_top_snow = minetest.get_content_id("mcl_core:snow") local c_snow_block = minetest.get_content_id("mcl_core:snowblock") local c_clay = minetest.get_content_id("mcl_core:clay") -local c_leaves = minetest.get_content_id("mcl_core:leaves") -local c_jungleleaves = minetest.get_content_id("mcl_core:jungleleaves") --local c_jungletree = minetest.get_content_id("mcl_core:jungletree") -local c_cocoa_1 = minetest.get_content_id("mcl_cocoas:cocoa_1") -local c_cocoa_2 = minetest.get_content_id("mcl_cocoas:cocoa_2") -local c_cocoa_3 = minetest.get_content_id("mcl_cocoas:cocoa_3") -local c_vine = minetest.get_content_id("mcl_core:vine") local c_air = minetest.CONTENT_AIR -- @@ -101,8 +102,8 @@ for s=1, #specialstones do clust_scarcity = 15*15*15, clust_num_ores = 33, clust_size = 5, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, noise_params = { offset = 0, scale = 1, @@ -121,8 +122,8 @@ for s=1, #specialstones do clust_scarcity = 10*10*10, clust_num_ores = 58, clust_size = 7, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, noise_params = { offset = 0, scale = 1, @@ -146,8 +147,8 @@ minetest.register_ore({ clust_scarcity = 15*15*15, clust_num_ores = 33, clust_size = 4, - y_min = mcl_vars.mg_overworld_min, - y_max = mcl_vars.mg_overworld_max, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, noise_params = { offset = 0, scale = 1, @@ -168,7 +169,7 @@ minetest.register_ore({ clust_scarcity = 14*14*14, clust_num_ores = 33, clust_size = 5, - y_min = mcl_vars.mg_overworld_min, + y_min = mcl_mapgen.overworld.min, y_max = mcl_worlds.layer_to_y(111), noise_params = { offset = 0, @@ -195,7 +196,7 @@ if minetest.settings:get_bool("mcl_generate_ores", true) then clust_scarcity = 525*3, clust_num_ores = 5, clust_size = 3, - y_min = mcl_vars.mg_overworld_min, + y_min = mcl_mapgen.overworld.min, y_max = mcl_worlds.layer_to_y(50), }) minetest.register_ore({ @@ -205,7 +206,7 @@ if minetest.settings:get_bool("mcl_generate_ores", true) then clust_scarcity = 510*3, clust_num_ores = 8, clust_size = 3, - y_min = mcl_vars.mg_overworld_min, + y_min = mcl_mapgen.overworld.min, y_max = mcl_worlds.layer_to_y(50), }) minetest.register_ore({ @@ -215,7 +216,7 @@ if minetest.settings:get_bool("mcl_generate_ores", true) then clust_scarcity = 500*3, clust_num_ores = 12, clust_size = 3, - y_min = mcl_vars.mg_overworld_min, + y_min = mcl_mapgen.overworld.min, y_max = mcl_worlds.layer_to_y(50), }) @@ -293,7 +294,7 @@ if minetest.settings:get_bool("mcl_generate_ores", true) then clust_scarcity = 830, clust_num_ores = 5, clust_size = 3, - y_min = mcl_vars.mg_overworld_min, + y_min = mcl_mapgen.overworld.min, y_max = mcl_worlds.layer_to_y(39), }) minetest.register_ore({ @@ -319,7 +320,7 @@ if minetest.settings:get_bool("mcl_generate_ores", true) then clust_scarcity = 4775, clust_num_ores = 5, clust_size = 3, - y_min = mcl_vars.mg_overworld_min, + y_min = mcl_mapgen.overworld.min, y_max = mcl_worlds.layer_to_y(30), }) minetest.register_ore({ @@ -329,7 +330,7 @@ if minetest.settings:get_bool("mcl_generate_ores", true) then clust_scarcity = 6560, clust_num_ores = 7, clust_size = 3, - y_min = mcl_vars.mg_overworld_min, + y_min = mcl_mapgen.overworld.min, y_max = mcl_worlds.layer_to_y(30), }) @@ -357,7 +358,7 @@ if minetest.settings:get_bool("mcl_generate_ores", true) then clust_scarcity = 10000, clust_num_ores = 4, clust_size = 3, - y_min = mcl_vars.mg_overworld_min, + y_min = mcl_mapgen.overworld.min, y_max = mcl_worlds.layer_to_y(12), }) minetest.register_ore({ @@ -367,7 +368,7 @@ if minetest.settings:get_bool("mcl_generate_ores", true) then clust_scarcity = 5000, clust_num_ores = 2, clust_size = 2, - y_min = mcl_vars.mg_overworld_min, + y_min = mcl_mapgen.overworld.min, y_max = mcl_worlds.layer_to_y(12), }) minetest.register_ore({ @@ -377,7 +378,7 @@ if minetest.settings:get_bool("mcl_generate_ores", true) then clust_scarcity = 10000, clust_num_ores = 8, clust_size = 3, - y_min = mcl_vars.mg_overworld_min, + y_min = mcl_mapgen.overworld.min, y_max = mcl_worlds.layer_to_y(12), }) @@ -415,7 +416,7 @@ if minetest.settings:get_bool("mcl_generate_ores", true) then clust_scarcity = 500, clust_num_ores = 4, clust_size = 3, - y_min = mcl_vars.mg_overworld_min, + y_min = mcl_mapgen.overworld.min, y_max = mcl_worlds.layer_to_y(13), }) minetest.register_ore({ @@ -425,7 +426,7 @@ if minetest.settings:get_bool("mcl_generate_ores", true) then clust_scarcity = 800, clust_num_ores = 7, clust_size = 4, - y_min = mcl_vars.mg_overworld_min, + y_min = mcl_mapgen.overworld.min, y_max = mcl_worlds.layer_to_y(13), }) @@ -455,7 +456,7 @@ if minetest.settings:get_bool("mcl_generate_ores", true) then -- Emerald -- - if mg_name == "v6" then + if v6 then -- Generate everywhere in v6, but rarely. -- Common spawn @@ -466,7 +467,7 @@ if minetest.settings:get_bool("mcl_generate_ores", true) then clust_scarcity = 14340, clust_num_ores = 1, clust_size = 1, - y_min = mcl_vars.mg_overworld_min, + y_min = mcl_mapgen.overworld.min, y_max = mcl_worlds.layer_to_y(29), }) -- Rare spawn @@ -682,7 +683,7 @@ local function register_mgv6_decorations() persist = 0.6 }, y_min = 4, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, decoration = "mcl_core:cactus", height = 1, height_max = 3, @@ -702,7 +703,7 @@ local function register_mgv6_decorations() persist = 0.7 }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, decoration = "mcl_core:reeds", height = 1, height_max = 3, @@ -710,343 +711,332 @@ local function register_mgv6_decorations() num_spawn_by = 1, }) - -- Doubletall grass - minetest.register_decoration({ - deco_type = "schematic", - schematic = { - size = { x=1, y=3, z=1 }, - data = { - { name = "air", prob = 0 }, - { name = "mcl_flowers:double_grass", param1 = 255, }, - { name = "mcl_flowers:double_grass_top", param1 = 255, }, - }, - }, - place_on = {"group:grass_block_no_snow"}, - sidelen = 8, - noise_params = { - offset = -0.0025, - scale = 0.03, - spread = {x = 100, y = 100, z = 100}, - seed = 420, - octaves = 3, - persist = 0.0, - }, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - }) - - -- Large ferns - minetest.register_decoration({ - deco_type = "schematic", - schematic = { - size = { x=1, y=3, z=1 }, - data = { - { name = "air", prob = 0 }, - { name = "mcl_flowers:double_fern", param1=255, }, - { name = "mcl_flowers:double_fern_top", param1=255, }, - }, - }, - -- v6 hack: This makes sure large ferns only appear in jungles - spawn_by = { "mcl_core:jungletree", "mcl_flowers:fern" }, - num_spawn_by = 1, - place_on = {"group:grass_block_no_snow"}, - - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.01, - spread = {x = 250, y = 250, z = 250}, - seed = 333, - octaves = 2, - persist = 0.66, - }, - y_min = 1, - y_max = mcl_vars.mg_overworld_max, - }) - - -- Large flowers - local function register_large_flower(name, seed, offset) + if minetest.get_modpath("mcl_flowers") then + -- Doubletall grass minetest.register_decoration({ deco_type = "schematic", schematic = { size = { x=1, y=3, z=1 }, data = { { name = "air", prob = 0 }, - { name = "mcl_flowers:"..name, param1=255, }, - { name = "mcl_flowers:"..name.."_top", param1=255, }, + { name = "mcl_flowers:double_grass", param1 = 255, }, + { name = "mcl_flowers:double_grass_top", param1 = 255, }, }, }, place_on = {"group:grass_block_no_snow"}, + sidelen = 8, + noise_params = { + offset = -0.0025, + scale = 0.03, + spread = {x = 100, y = 100, z = 100}, + seed = 420, + octaves = 3, + persist = 0.0, + }, + y_min = 1, + y_max = mcl_mapgen.overworld.max, + }) + + -- Large ferns + minetest.register_decoration({ + deco_type = "schematic", + schematic = { + size = { x=1, y=3, z=1 }, + data = { + { name = "air", prob = 0 }, + { name = "mcl_flowers:double_fern", param1=255, }, + { name = "mcl_flowers:double_fern_top", param1=255, }, + }, + }, + -- v6 hack: This makes sure large ferns only appear in jungles + spawn_by = spawn_by_in_jungle, + num_spawn_by = 1, + place_on = {"group:grass_block_no_snow"}, sidelen = 16, noise_params = { - offset = offset, + offset = 0, scale = 0.01, - spread = {x = 300, y = 300, z = 300}, - seed = seed, - octaves = 5, - persist = 0.62, + spread = {x = 250, y = 250, z = 250}, + seed = 333, + octaves = 2, + persist = 0.66, }, y_min = 1, - y_max = mcl_vars.overworld_max, - flags = "", + y_max = mcl_mapgen.overworld.max, + }) + + -- Large flowers + local function register_large_flower(name, seed, offset) + minetest.register_decoration({ + deco_type = "schematic", + schematic = { + size = { x=1, y=3, z=1 }, + data = { + { name = "air", prob = 0 }, + { name = "mcl_flowers:"..name, param1=255, }, + { name = "mcl_flowers:"..name.."_top", param1=255, }, + }, + }, + place_on = {"group:grass_block_no_snow"}, + + sidelen = 16, + noise_params = { + offset = offset, + scale = 0.01, + spread = {x = 300, y = 300, z = 300}, + seed = seed, + octaves = 5, + persist = 0.62, + }, + y_min = 1, + y_max = mcl_mapgen.overworld.max, + flags = "", + }) + end + + register_large_flower("rose_bush", 9350, -0.008) + register_large_flower("peony", 10450, -0.008) + register_large_flower("lilac", 10600, -0.007) + register_large_flower("sunflower", 2940, -0.005) + + -- Lily pad + minetest.register_decoration({ + deco_type = "schematic", + schematic = { + size = { x=1, y=3, z=1 }, + data = { + { name = "mcl_core:water_source", prob = 0 }, + { name = "mcl_core:water_source" }, + { name = "mcl_flowers:waterlily", param1 = 255 }, + }, + }, + place_on = "mcl_core:dirt", + sidelen = 16, + noise_params = { + offset = -0.12, + scale = 0.3, + spread = {x = 200, y = 200, z = 200}, + seed = 503, + octaves = 6, + persist = 0.7, + }, + y_min = 0, + y_max = 0, + rotation = "random", }) end - register_large_flower("rose_bush", 9350, -0.008) - register_large_flower("peony", 10450, -0.008) - register_large_flower("lilac", 10600, -0.007) - register_large_flower("sunflower", 2940, -0.005) - - -- Lily pad - minetest.register_decoration({ - deco_type = "schematic", - schematic = { - size = { x=1, y=3, z=1 }, - data = { - { name = "mcl_core:water_source", prob = 0 }, - { name = "mcl_core:water_source" }, - { name = "mcl_flowers:waterlily", param1 = 255 }, + if minetest.get_modpath("mcl_farming") then + -- Pumpkin + minetest.register_decoration({ + deco_type = "simple", + decoration = "mcl_farming:pumpkin_face", + param2 = 0, + param2_max = 3, + place_on = {"group:grass_block_no_snow"}, + sidelen = 16, + noise_params = { + offset = -0.008, + scale = 0.00666, + spread = {x = 250, y = 250, z = 250}, + seed = 666, + octaves = 6, + persist = 0.666 }, - }, - place_on = "mcl_core:dirt", - sidelen = 16, - noise_params = { - offset = -0.12, - scale = 0.3, - spread = {x = 200, y = 200, z = 200}, - seed = 503, - octaves = 6, - persist = 0.7, - }, - y_min = 0, - y_max = 0, - rotation = "random", - }) + y_min = 1, + y_max = mcl_mapgen.overworld.max, + }) - -- Pumpkin - minetest.register_decoration({ - deco_type = "simple", - decoration = "mcl_farming:pumpkin_face", - param2 = 0, - param2_max = 3, - place_on = {"group:grass_block_no_snow"}, - sidelen = 16, - noise_params = { - offset = -0.008, - scale = 0.00666, - spread = {x = 250, y = 250, z = 250}, - seed = 666, - octaves = 6, - persist = 0.666 - }, - y_min = 1, - y_max = mcl_vars.overworld_max, - }) - - -- Melon - minetest.register_decoration({ - deco_type = "simple", - place_on = {"group:grass_block_no_snow"}, - sidelen = 16, - noise_params = { - offset = 0.002, - scale = 0.006, - spread = {x = 250, y = 250, z = 250}, - seed = 333, - octaves = 3, - persist = 0.6 - }, - -- Small trick to make sure melon spawn in jungles - spawn_by = { "mcl_core:jungletree", "mcl_flowers:fern" }, - num_spawn_by = 1, - y_min = 1, - y_max = 40, - decoration = "mcl_farming:melon", - }) + -- Melon + minetest.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow"}, + sidelen = 16, + noise_params = { + offset = 0.002, + scale = 0.006, + spread = {x = 250, y = 250, z = 250}, + seed = 333, + octaves = 3, + persist = 0.6 + }, + -- Small trick to make sure melon spawn in jungles + spawn_by = spawn_by_in_jungle, + num_spawn_by = 1, + y_min = 1, + y_max = 40, + decoration = "mcl_farming:melon", + }) + end -- Tall grass - minetest.register_decoration({ - deco_type = "simple", - place_on = {"group:grass_block_no_snow"}, - sidelen = 8, - noise_params = { - offset = 0.01, - scale = 0.3, - spread = {x = 100, y = 100, z = 100}, - seed = 420, - octaves = 3, - persist = 0.6 - }, - y_min = 1, - y_max = mcl_vars.overworld_max, - decoration = "mcl_flowers:tallgrass", - }) - minetest.register_decoration({ - deco_type = "simple", - place_on = {"group:grass_block_no_snow"}, - sidelen = 8, - noise_params = { - offset = 0.04, - scale = 0.03, - spread = {x = 100, y = 100, z = 100}, - seed = 420, - octaves = 3, - persist = 0.6 - }, - y_min = 1, - y_max = mcl_vars.overworld_max, - decoration = "mcl_flowers:tallgrass", - }) - - -- Seagrass and kelp - local materials = {"dirt","sand"} - for i=1, #materials do - local mat = materials[i] - + if minetest.get_modpath("mcl_flowers") then minetest.register_decoration({ deco_type = "simple", - spawn_by = {"group:water"}, - num_spawn_by = 1, - place_on = {"mcl_core:"..mat}, + place_on = {"group:grass_block_no_snow"}, sidelen = 8, noise_params = { - offset = 0.04, + offset = 0.01, scale = 0.3, spread = {x = 100, y = 100, z = 100}, - seed = 421, - octaves = 3, - persist = 0.6 - }, - flags = "force_placement", - place_offset_y = -1, - y_min = mcl_vars.overworld_min, - y_max = 0, - decoration = "mcl_ocean:seagrass_"..mat, - }) - minetest.register_decoration({ - deco_type = "simple", - spawn_by = {"group:water"}, - num_spawn_by = 1, - place_on = {"mcl_core:mat"}, - sidelen = 8, - noise_params = { - offset = 0.08, - scale = 0.03, - spread = {x = 100, y = 100, z = 100}, - seed = 421, - octaves = 3, - persist = 0.6 - }, - flags = "force_placement", - place_offset_y = -1, - y_min = mcl_vars.overworld_min, - y_max = -5, - decoration = "mcl_ocean:seagrass_"..mat, - }) - - minetest.register_decoration({ - deco_type = "simple", - spawn_by = {"group:water"}, - num_spawn_by = 1, - place_on = {"mcl_core:"..mat}, - sidelen = 16, - noise_params = { - offset = 0.01, - scale = 0.01, - spread = {x = 300, y = 300, z = 300}, - seed = 505, - octaves = 5, - persist = 0.62, - }, - flags = "force_placement", - place_offset_y = -1, - y_min = mcl_vars.overworld_min, - y_max = -6, - decoration = "mcl_ocean:kelp_"..mat, - param2 = 16, - param2_max = 96, - }) - minetest.register_decoration({ - deco_type = "simple", - spawn_by = {"group:water"}, - num_spawn_by = 1, - place_on = {"mcl_core:"..mat}, - sidelen = 16, - noise_params = { - offset = 0.01, - scale = 0.01, - spread = {x = 100, y = 100, z = 100}, - seed = 506, - octaves = 5, - persist = 0.62, - }, - flags = "force_placement", - place_offset_y = -1, - y_min = mcl_vars.overworld_min, - y_max = -15, - decoration = "mcl_ocean:kelp_"..mat, - param2 = 32, - param2_max = 160, - }) - - end - - -- Wet Sponge - -- TODO: Remove this when we got ocean monuments - minetest.register_decoration({ - deco_type = "simple", - decoration = "mcl_sponges:sponge_wet", - spawn_by = {"group:water"}, - num_spawn_by = 1, - place_on = {"mcl_core:dirt","mcl_core:sand"}, - sidelen = 16, - noise_params = { - offset = 0.00295, - scale = 0.006, - spread = {x = 250, y = 250, z = 250}, - seed = 999, - octaves = 3, - persist = 0.666 - }, - flags = "force_placement", - y_min = mcl_vars.mg_lava_overworld_max + 5, - y_max = -20, - }) - - -- Add a small amount of tall grass everywhere to avoid areas completely empty devoid of tall grass - minetest.register_decoration({ - deco_type = "simple", - place_on = {"group:grass_block_no_snow"}, - sidelen = 8, - fill_ratio = 0.004, - y_min = 1, - y_max = mcl_vars.overworld_max, - decoration = "mcl_flowers:tallgrass", - }) - - local mushrooms = {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown"} - local mseeds = { 7133, 8244 } - for m=1, #mushrooms do - -- Mushrooms next to trees - minetest.register_decoration({ - deco_type = "simple", - place_on = {"group:grass_block_no_snow", "mcl_core:dirt", "mcl_core:podzol", "mcl_core:mycelium", "mcl_core:stone", "mcl_core:andesite", "mcl_core:diorite", "mcl_core:granite"}, - sidelen = 16, - noise_params = { - offset = 0.04, - scale = 0.04, - spread = {x = 100, y = 100, z = 100}, - seed = mseeds[m], + seed = 420, octaves = 3, persist = 0.6 }, y_min = 1, - y_max = mcl_vars.mg_overworld_max, - decoration = mushrooms[m], - spawn_by = { "mcl_core:tree", "mcl_core:sprucetree", "mcl_core:darktree", "mcl_core:birchtree", }, - num_spawn_by = 1, + y_max = mcl_mapgen.overworld.max, + decoration = "mcl_flowers:tallgrass", }) + minetest.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow"}, + sidelen = 8, + noise_params = { + offset = 0.04, + scale = 0.03, + spread = {x = 100, y = 100, z = 100}, + seed = 420, + octaves = 3, + persist = 0.6 + }, + y_min = 1, + y_max = mcl_mapgen.overworld.max, + decoration = "mcl_flowers:tallgrass", + }) + end + + -- Seagrass and kelp + if minetest.get_modpath("mcl_ocean") then + local materials = {"dirt","sand"} + for i=1, #materials do + local mat = materials[i] + + minetest.register_decoration({ + deco_type = "simple", + spawn_by = {"group:water"}, + num_spawn_by = 1, + place_on = {"mcl_core:"..mat}, + sidelen = 8, + noise_params = { + offset = 0.04, + scale = 0.3, + spread = {x = 100, y = 100, z = 100}, + seed = 421, + octaves = 3, + persist = 0.6 + }, + flags = "force_placement", + place_offset_y = -1, + y_min = mcl_mapgen.overworld.min, + y_max = 0, + decoration = "mcl_ocean:seagrass_"..mat, + }) + minetest.register_decoration({ + deco_type = "simple", + spawn_by = {"group:water"}, + num_spawn_by = 1, + place_on = {"mcl_core:mat"}, + sidelen = 8, + noise_params = { + offset = 0.08, + scale = 0.03, + spread = {x = 100, y = 100, z = 100}, + seed = 421, + octaves = 3, + persist = 0.6 + }, + flags = "force_placement", + place_offset_y = -1, + y_min = mcl_mapgen.overworld.min, + y_max = -5, + decoration = "mcl_ocean:seagrass_"..mat, + }) + + minetest.register_decoration({ + deco_type = "simple", + spawn_by = {"group:water"}, + num_spawn_by = 1, + place_on = {"mcl_core:"..mat}, + sidelen = 16, + noise_params = { + offset = 0.01, + scale = 0.01, + spread = {x = 300, y = 300, z = 300}, + seed = 505, + octaves = 5, + persist = 0.62, + }, + flags = "force_placement", + place_offset_y = -1, + y_min = mcl_mapgen.overworld.min, + y_max = -6, + decoration = "mcl_ocean:kelp_"..mat, + param2 = 16, + param2_max = 96, + }) + minetest.register_decoration({ + deco_type = "simple", + spawn_by = {"group:water"}, + num_spawn_by = 1, + place_on = {"mcl_core:"..mat}, + sidelen = 16, + noise_params = { + offset = 0.01, + scale = 0.01, + spread = {x = 100, y = 100, z = 100}, + seed = 506, + octaves = 5, + persist = 0.62, + }, + flags = "force_placement", + place_offset_y = -1, + y_min = mcl_mapgen.overworld.min, + y_max = -15, + decoration = "mcl_ocean:kelp_"..mat, + param2 = 32, + param2_max = 160, + }) + end + end + + -- Add a small amount of tall grass everywhere to avoid areas completely empty devoid of tall grass + if minetest.get_modpath("mcl_flowers") then + minetest.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow"}, + sidelen = 8, + fill_ratio = 0.004, + y_min = 1, + y_max = mcl_mapgen.overworld.max, + decoration = "mcl_flowers:tallgrass", + }) + end + + if mcl_mushrooms then + local mushrooms = {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown"} + local mseeds = { 7133, 8244 } + for m=1, #mushrooms do + -- Mushrooms next to trees + minetest.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow", "mcl_core:dirt", "mcl_core:podzol", "mcl_core:mycelium", "mcl_core:stone", "mcl_core:andesite", "mcl_core:diorite", "mcl_core:granite"}, + sidelen = 16, + noise_params = { + offset = 0.04, + scale = 0.04, + spread = {x = 100, y = 100, z = 100}, + seed = mseeds[m], + octaves = 3, + persist = 0.6 + }, + y_min = 1, + y_max = mcl_mapgen.overworld.max, + decoration = mushrooms[m], + spawn_by = { "mcl_core:tree", "mcl_core:sprucetree", "mcl_core:darktree", "mcl_core:birchtree", }, + num_spawn_by = 1, + }) + end end -- Dead bushes @@ -1063,50 +1053,52 @@ local function register_mgv6_decorations() persist = 0.6 }, y_min = 4, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, decoration = "mcl_core:deadbush", }) - local function register_mgv6_flower(name, seed, offset, y_max) - if offset == nil then - offset = 0 + if minetest.get_modpath("mcl_flowers") then + local function register_mgv6_flower(name, seed, offset, y_max) + if offset == nil then + offset = 0 + end + if y_max == nil then + y_max = mcl_mapgen.overworld.max + end + minetest.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow"}, + sidelen = 16, + noise_params = { + offset = offset, + scale = 0.006, + spread = {x = 100, y = 100, z = 100}, + seed = seed, + octaves = 3, + persist = 0.6 + }, + y_min = 1, + y_max = y_max, + decoration = "mcl_flowers:"..name, + }) end - if y_max == nil then - y_max = mcl_vars.mg_overworld_max - end - minetest.register_decoration({ - deco_type = "simple", - place_on = {"group:grass_block_no_snow"}, - sidelen = 16, - noise_params = { - offset = offset, - scale = 0.006, - spread = {x = 100, y = 100, z = 100}, - seed = seed, - octaves = 3, - persist = 0.6 - }, - y_min = 1, - y_max = y_max, - decoration = "mcl_flowers:"..name, - }) - end - register_mgv6_flower("tulip_red", 436) - register_mgv6_flower("tulip_orange", 536) - register_mgv6_flower("tulip_pink", 636) - register_mgv6_flower("tulip_white", 736) - register_mgv6_flower("azure_bluet", 800) - register_mgv6_flower("dandelion", 8) - -- Allium is supposed to only appear in flower forest in MC. There are no flower forests in v6. - -- We compensate by making it slightly rarer in v6. - register_mgv6_flower("allium", 0, -0.001) - --[[ Blue orchid is supposed to appear in swamplands. There are no swamplands in v6. - We emulate swamplands by limiting the height to 5 levels above sea level, - which should be close to the water. ]] - register_mgv6_flower("blue_orchid", 64500, nil, mcl_worlds.layer_to_y(67)) - register_mgv6_flower("oxeye_daisy", 3490) - register_mgv6_flower("poppy", 9439) + register_mgv6_flower("tulip_red", 436) + register_mgv6_flower("tulip_orange", 536) + register_mgv6_flower("tulip_pink", 636) + register_mgv6_flower("tulip_white", 736) + register_mgv6_flower("azure_bluet", 800) + register_mgv6_flower("dandelion", 8) + -- Allium is supposed to only appear in flower forest in MC. There are no flower forests in v6. + -- We compensate by making it slightly rarer in v6. + register_mgv6_flower("allium", 0, -0.001) + --[[ Blue orchid is supposed to appear in swamplands. There are no swamplands in v6. + We emulate swamplands by limiting the height to 5 levels above sea level, + which should be close to the water. ]] + register_mgv6_flower("blue_orchid", 64500, nil, mcl_worlds.layer_to_y(67)) + register_mgv6_flower("oxeye_daisy", 3490) + register_mgv6_flower("poppy", 9439) + end -- Put top snow on snowy grass blocks. The v6 mapgen does not generate the top snow on its own. minetest.register_decoration({ @@ -1115,7 +1107,7 @@ local function register_mgv6_decorations() sidelen = 16, fill_ratio = 11.0, -- complete coverage y_min = 1, - y_max = mcl_vars.mg_overworld_max, + y_max = mcl_mapgen.overworld.max, decoration = "mcl_core:snow", }) @@ -1124,13 +1116,13 @@ end local mg_flags = minetest.settings:get_flags("mg_flags") -- Inform other mods of dungeon setting for MCL2-style dungeons -mcl_vars.mg_dungeons = mg_flags.dungeons and not superflat +mcl_vars.mg_dungeons = mcl_mapgen.dungeons -- Disable builtin dungeons, we provide our own dungeons mg_flags.dungeons = false -- Apply mapgen-specific mapgen code -if mg_name == "v6" then +if v6 then register_mgv6_decorations() elseif superflat then -- Enforce superflat-like mapgen: no caves, decor, lakes and hills @@ -1151,20 +1143,6 @@ if string.len(mg_flags_str) > 0 then end minetest.set_mapgen_setting("mg_flags", mg_flags_str, true) --- Helper function for converting a MC probability to MT, with --- regards to MapBlocks. --- Some MC generated structures are generated on per-chunk --- probability. --- The MC probability is 1/x per Minecraft chunk (16×16). - --- x: The MC probability is 1/x. --- minp, maxp: MapBlock limits --- returns: Probability (1/return_value) for a single MT mapblock -local function minecraft_chunk_probability(x, minp, maxp) - -- 256 is the MC chunk height - return x * (((maxp.x-minp.x+1)*(maxp.z-minp.z+1)) / 256) -end - -- Takes an index of a biomemap table (from minetest.get_mapgen_object), -- minp and maxp (from an on_generated callback) and returns the real world coordinates -- as X, Z. @@ -1177,76 +1155,6 @@ end return x, z end]] --- Takes x and z coordinates and minp and maxp of a generated chunk --- (in on_generated callback) and returns a biomemap index) --- Inverse function of biomemap_to_xz -local function xz_to_biomemap_index(x, z, minp, maxp) - local xwidth = maxp.x - minp.x + 1 - local zwidth = maxp.z - minp.z + 1 - local minix = x % xwidth - local miniz = z % zwidth - - return (minix + miniz * zwidth) + 1 -end - --- Perlin noise objects -local perlin_structures -local perlin_vines, perlin_vines_fine, perlin_vines_upwards, perlin_vines_length, perlin_vines_density -local perlin_clay - -local function generate_clay(minp, maxp, blockseed, voxelmanip_data, voxelmanip_area, lvm_used) - -- TODO: Make clay generation reproducible for same seed. - if maxp.y < -5 or minp.y > 0 then - return lvm_used - end - - local pr = PseudoRandom(blockseed) - - perlin_clay = perlin_clay or minetest.get_perlin({ - offset = 0.5, - scale = 0.2, - spread = {x = 5, y = 5, z = 5}, - seed = -316, - octaves = 1, - persist = 0.0 - }) - - for y=math.max(minp.y, 0), math.min(maxp.y, -8), -1 do - -- Assume X and Z lengths are equal - local divlen = 4 - local divs = (maxp.x-minp.x)/divlen+1; - for divx=0+1,divs-2 do - for divz=0+1,divs-2 do - -- Get position and shift it a bit randomly so the clay do not obviously appear in a grid - local cx = minp.x + math.floor((divx+0.5)*divlen) + pr:next(-1,1) - local cz = minp.z + math.floor((divz+0.5)*divlen) + pr:next(-1,1) - - local water_pos = voxelmanip_area:index(cx, y+1, cz) - local waternode = voxelmanip_data[water_pos] - local surface_pos = voxelmanip_area:index(cx, y, cz) - local surfacenode = voxelmanip_data[surface_pos] - - local genrnd = pr:next(1, 20) - if genrnd == 1 and perlin_clay:get_3d({x=cx,y=y,z=cz}) > 0 and waternode == c_water and - (surfacenode == c_dirt or minetest.get_item_group(minetest.get_name_from_content_id(surfacenode), "sand") == 1) then - local diamondsize = pr:next(1, 3) - for x1 = -diamondsize, diamondsize do - for z1 = -(diamondsize - math.abs(x1)), diamondsize - math.abs(x1) do - local ccpos = voxelmanip_area:index(cx+x1, y, cz+z1) - local claycandidate = voxelmanip_data[ccpos] - if voxelmanip_data[ccpos] == c_dirt or minetest.get_item_group(minetest.get_name_from_content_id(claycandidate), "sand") == 1 then - voxelmanip_data[ccpos] = c_clay - lvm_used = true - end - end - end - end - end - end - end - return lvm_used -end - local dragon_spawn_pos = false local dragon_spawned, portal_generated = false, false @@ -1272,7 +1180,7 @@ if portal_generated and not dragon_spawned then minetest.after(10, try_to_spawn_ender_dragon) end -local function generate_end_exit_portal(pos) +function mcl_mapgen_core.generate_end_exit_portal(pos) if dragon_spawn_pos then return false end dragon_spawn_pos = vector.add(pos, vector.new(3, 11, 3)) mcl_structures.call_struct(pos, "end_exit_portal", nil, nil, function() @@ -1286,472 +1194,15 @@ local function generate_end_exit_portal(pos) portal_generated = true end --- TODO: Try to use more efficient structure generating code -local function generate_structures(minp, maxp, blockseed, biomemap) - local chunk_has_desert_well = false - local chunk_has_desert_temple = false - local chunk_has_igloo = false - local struct_min, struct_max = -3, 111 --64 - - if maxp.y >= struct_min and minp.y <= struct_max then - -- Generate structures - local pr = PcgRandom(blockseed) - perlin_structures = perlin_structures or minetest.get_perlin(329, 3, 0.6, 100) - -- Assume X and Z lengths are equal - local divlen = 5 - for x0 = minp.x, maxp.x, divlen do for z0 = minp.z, maxp.z, divlen do - -- Determine amount from perlin noise - local amount = math.floor(perlin_structures:get_2d({x=x0, y=z0}) * 9) - -- Find random positions based on this random - local p, ground_y - for i=0, amount do - p = {x = pr:next(x0, x0+divlen-1), y = 0, z = pr:next(z0, z0+divlen-1)} - -- Find ground level - ground_y = nil - local nn - for y = struct_max, struct_min, -1 do - p.y = y - local checknode = minetest.get_node(p) - if checknode then - nn = checknode.name - local def = minetest.registered_nodes[nn] - if def and def.walkable then - ground_y = y - break - end - end - end - - if ground_y then - p.y = ground_y+1 - local nn0 = minetest.get_node(p).name - -- Check if the node can be replaced - if minetest.registered_nodes[nn0] and minetest.registered_nodes[nn0].buildable_to then - -- Desert temples and desert wells - if nn == "mcl_core:sand" or (nn == "mcl_core:sandstone") then - if not chunk_has_desert_temple and not chunk_has_desert_well and ground_y > 3 then - -- Spawn desert temple - -- TODO: Check surface - if pr:next(1,12000) == 1 then - mcl_structures.call_struct(p, "desert_temple", nil, pr) - chunk_has_desert_temple = true - end - end - if not chunk_has_desert_temple and not chunk_has_desert_well and ground_y > 3 then - local desert_well_prob = minecraft_chunk_probability(1000, minp, maxp) - - -- Spawn desert well - if pr:next(1, desert_well_prob) == 1 then - -- Check surface - local surface = minetest.find_nodes_in_area({x=p.x,y=p.y-1,z=p.z}, {x=p.x+5, y=p.y-1, z=p.z+5}, "mcl_core:sand") - if #surface >= 25 then - mcl_structures.call_struct(p, "desert_well", nil, pr) - chunk_has_desert_well = true - end - end - end - - -- Igloos - elseif not chunk_has_igloo and (nn == "mcl_core:snowblock" or nn == "mcl_core:snow" or (minetest.get_item_group(nn, "grass_block_snow") == 1)) then - if pr:next(1, 4400) == 1 then - -- Check surface - local floor = {x=p.x+9, y=p.y-1, z=p.z+9} - local surface = minetest.find_nodes_in_area({x=p.x,y=p.y-1,z=p.z}, floor, "mcl_core:snowblock") - local surface2 = minetest.find_nodes_in_area({x=p.x,y=p.y-1,z=p.z}, floor, "mcl_core:dirt_with_grass_snow") - if #surface + #surface2 >= 63 then - mcl_structures.call_struct(p, "igloo", nil, pr) - chunk_has_igloo = true - end - end - end - - -- Fossil - if nn == "mcl_core:sandstone" or nn == "mcl_core:sand" and not chunk_has_desert_temple and ground_y > 3 then - local fossil_prob = minecraft_chunk_probability(64, minp, maxp) - - if pr:next(1, fossil_prob) == 1 then - -- Spawn fossil below desert surface between layers 40 and 49 - local p1 = {x=p.x, y=pr:next(mcl_worlds.layer_to_y(40), mcl_worlds.layer_to_y(49)), z=p.z} - -- Very rough check of the environment (we expect to have enough stonelike nodes). - -- Fossils may still appear partially exposed in caves, but this is O.K. - local p2 = vector.add(p1, 4) - local nodes = minetest.find_nodes_in_area(p1, p2, {"mcl_core:sandstone", "mcl_core:stone", "mcl_core:diorite", "mcl_core:andesite", "mcl_core:granite", "mcl_core:stone_with_coal", "mcl_core:dirt", "mcl_core:gravel"}) - - if #nodes >= 100 then -- >= 80% - mcl_structures.call_struct(p1, "fossil", nil, pr) - end - end - end - - -- Witch hut - if ground_y <= 0 and nn == "mcl_core:dirt" then - local prob = minecraft_chunk_probability(48, minp, maxp) - if pr:next(1, prob) == 1 then - - local swampland = minetest.get_biome_id("Swampland") - local swampland_shore = minetest.get_biome_id("Swampland_shore") - - -- Where do witches live? - - local here_be_witches = false - if mg_name == "v6" then - -- v6: In Normal biome - if biomeinfo.get_v6_biome(p) == "Normal" then - here_be_witches = true - end - else - -- Other mapgens: In swampland biome - local bi = xz_to_biomemap_index(p.x, p.z, minp, maxp) - if biomemap[bi] == swampland or biomemap[bi] == swampland_shore then - here_be_witches = true - end - end - - if here_be_witches then - local r = tostring(pr:next(0, 3) * 90) -- "0", "90", "180" or 270" - local p1 = {x=p.x-1, y=WITCH_HUT_HEIGHT+2, z=p.z-1} - local size - if r == "0" or r == "180" then - size = {x=10, y=4, z=8} - else - size = {x=8, y=4, z=10} - end - local p2 = vector.add(p1, size) - - -- This checks free space at the “body” of the hut and a bit around. - -- ALL nodes must be free for the placement to succeed. - local free_nodes = minetest.find_nodes_in_area(p1, p2, {"air", "mcl_core:water_source", "mcl_flowers:waterlily"}) - if #free_nodes >= ((size.x+1)*(size.y+1)*(size.z+1)) then - local place = {x=p.x, y=WITCH_HUT_HEIGHT-1, z=p.z} - - -- FIXME: For some mysterious reason (black magic?) this - -- function does sometimes NOT spawn the witch hut. One can only see the - -- oak wood nodes in the water, but no hut. :-/ - mcl_structures.call_struct(place, "witch_hut", r, pr) - - -- TODO: Spawn witch in or around hut when the mob sucks less. - - local function place_tree_if_free(pos, prev_result) - local nn = minetest.get_node(pos).name - if nn == "mcl_flowers:waterlily" or nn == "mcl_core:water_source" or nn == "mcl_core:water_flowing" or nn == "air" then - minetest.set_node(pos, {name="mcl_core:tree", param2=0}) - return prev_result - else - return false - end - end - local offsets - if r == "0" then - offsets = { - {x=1, y=0, z=1}, - {x=1, y=0, z=5}, - {x=6, y=0, z=1}, - {x=6, y=0, z=5}, - } - elseif r == "180" then - offsets = { - {x=2, y=0, z=1}, - {x=2, y=0, z=5}, - {x=7, y=0, z=1}, - {x=7, y=0, z=5}, - } - elseif r == "270" then - offsets = { - {x=1, y=0, z=1}, - {x=5, y=0, z=1}, - {x=1, y=0, z=6}, - {x=5, y=0, z=6}, - } - elseif r == "90" then - offsets = { - {x=1, y=0, z=2}, - {x=5, y=0, z=2}, - {x=1, y=0, z=7}, - {x=5, y=0, z=7}, - } - end - for o=1, #offsets do - local ok = true - for y=place.y-1, place.y-64, -1 do - local tpos = vector.add(place, offsets[o]) - tpos.y = y - ok = place_tree_if_free(tpos, ok) - if not ok then - break - end - end - end - end - end - end - end - - -- Ice spikes in v6 - -- In other mapgens, ice spikes are generated as decorations. - if mg_name == "v6" and not chunk_has_igloo and nn == "mcl_core:snowblock" then - local spike = pr:next(1,58000) - if spike < 3 then - -- Check surface - local floor = {x=p.x+4, y=p.y-1, z=p.z+4} - local surface = minetest.find_nodes_in_area({x=p.x+1,y=p.y-1,z=p.z+1}, floor, {"mcl_core:snowblock"}) - -- Check for collision with spruce - local spruce_collisions = minetest.find_nodes_in_area({x=p.x+1,y=p.y+2,z=p.z+1}, {x=p.x+4, y=p.y+6, z=p.z+4}, {"mcl_core:sprucetree", "mcl_core:spruceleaves"}) - - if #surface >= 9 and #spruce_collisions == 0 then - mcl_structures.call_struct(p, "ice_spike_large", nil, pr) - end - elseif spike < 100 then - -- Check surface - local floor = {x=p.x+6, y=p.y-1, z=p.z+6} - local surface = minetest.find_nodes_in_area({x=p.x+1,y=p.y-1,z=p.z+1}, floor, {"mcl_core:snowblock", "mcl_core:dirt_with_grass_snow"}) - - -- Check for collision with spruce - local spruce_collisions = minetest.find_nodes_in_area({x=p.x+1,y=p.y+1,z=p.z+1}, {x=p.x+6, y=p.y+6, z=p.z+6}, {"mcl_core:sprucetree", "mcl_core:spruceleaves"}) - - if #surface >= 25 and #spruce_collisions == 0 then - mcl_structures.call_struct(p, "ice_spike_small", nil, pr) - end - end - end - end - end - - end - end end - -- End exit portal - elseif minp.y <= END_EXIT_PORTAL_POS.y and maxp.y >= END_EXIT_PORTAL_POS.y and - minp.x <= END_EXIT_PORTAL_POS.x and maxp.x >= END_EXIT_PORTAL_POS.x and - minp.z <= END_EXIT_PORTAL_POS.z and maxp.z >= END_EXIT_PORTAL_POS.z then - for y=maxp.y, minp.y, -1 do - local p = {x=END_EXIT_PORTAL_POS.x, y=y, z=END_EXIT_PORTAL_POS.z} - if minetest.get_node(p).name == "mcl_end:end_stone" then - generate_end_exit_portal(p) - return - end - end - generate_end_exit_portal(END_EXIT_PORTAL_POS) - end -end - --- Buffers for LuaVoxelManip --- local lvm_buffer = {} --- local lvm_buffer_param2 = {} - --- Generate tree decorations in the bounding box. This adds: --- * Cocoa at jungle trees --- * Jungle tree vines --- * Oak vines in swamplands -local function generate_tree_decorations(minp, maxp, seed, data, param2_data, area, biomemap, lvm_used, pr) - if maxp.y < 0 then - return lvm_used - end - - local oaktree, oakleaves, jungletree, jungleleaves = {}, {}, {}, {} - local swampland = minetest.get_biome_id("Swampland") - local swampland_shore = minetest.get_biome_id("Swampland_shore") - local jungle = minetest.get_biome_id("Jungle") - local jungle_shore = minetest.get_biome_id("Jungle_shore") - local jungle_m = minetest.get_biome_id("JungleM") - local jungle_m_shore = minetest.get_biome_id("JungleM_shore") - local jungle_edge = minetest.get_biome_id("JungleEdge") - local jungle_edge_shore = minetest.get_biome_id("JungleEdge_shore") - local jungle_edge_m = minetest.get_biome_id("JungleEdgeM") - local jungle_edge_m_shore = minetest.get_biome_id("JungleEdgeM_shore") - - -- Modifier for Jungle M biome: More vines and cocoas - local dense_vegetation = false - - if biomemap then - -- Biome map available: Check if the required biome (jungle or swampland) - -- is in this mapchunk. We are only interested in trees in the correct biome. - -- The nodes are added if the correct biome is *anywhere* in the mapchunk. - -- TODO: Strictly generate vines in the correct biomes only. - local swamp_biome_found, jungle_biome_found = false, false - for b=1, #biomemap do - local id = biomemap[b] - - if not swamp_biome_found and (id == swampland or id == swampland_shore) then - oaktree = minetest.find_nodes_in_area(minp, maxp, {"mcl_core:tree"}) - oakleaves = minetest.find_nodes_in_area(minp, maxp, {"mcl_core:leaves"}) - swamp_biome_found = true - end - if not jungle_biome_found and (id == jungle or id == jungle_shore or id == jungle_m or id == jungle_m_shore or id == jungle_edge or id == jungle_edge_shore or id == jungle_edge_m or id == jungle_edge_m_shore) then - jungletree = minetest.find_nodes_in_area(minp, maxp, {"mcl_core:jungletree"}) - jungleleaves = minetest.find_nodes_in_area(minp, maxp, {"mcl_core:jungleleaves"}) - jungle_biome_found = true - end - if not dense_vegetation and (id == jungle_m or id == jungle_m_shore) then - dense_vegetation = true - end - if swamp_biome_found and jungle_biome_found and dense_vegetation then - break - end - end - else - -- If there is no biome map, we just count all jungle things we can find. - -- Oak vines will not be generated. - jungletree = minetest.find_nodes_in_area(minp, maxp, {"mcl_core:jungletree"}) - jungleleaves = minetest.find_nodes_in_area(minp, maxp, {"mcl_core:jungleleaves"}) - end - - local pos, treepos, dir - - local cocoachance = 40 - if dense_vegetation then - cocoachance = 32 - end - - -- Pass 1: Generate cocoas at jungle trees - for n = 1, #jungletree do - - pos = table.copy(jungletree[n]) - treepos = table.copy(pos) - - if minetest.find_node_near(pos, 1, {"mcl_core:jungleleaves"}) then - - dir = pr:next(1, cocoachance) - - if dir == 1 then - pos.z = pos.z + 1 - elseif dir == 2 then - pos.z = pos.z - 1 - elseif dir == 3 then - pos.x = pos.x + 1 - elseif dir == 4 then - pos.x = pos.x -1 - end - - local p_pos = area:index(pos.x, pos.y, pos.z) - local l = minetest.get_node_light(pos) - - if dir < 5 - and data[p_pos] == c_air - and l and l > 12 then - local c = pr:next(1, 3) - if c == 1 then - data[p_pos] = c_cocoa_1 - elseif c == 2 then - data[p_pos] = c_cocoa_2 - else - data[p_pos] = c_cocoa_3 - end - param2_data[p_pos] = minetest.dir_to_facedir(vector.subtract(treepos, pos)) - lvm_used = true - end - - end - end - - -- Pass 2: Generate vines at jungle wood, jungle leaves in jungle and oak wood, oak leaves in swampland - perlin_vines = perlin_vines or minetest.get_perlin(555, 4, 0.6, 500) - perlin_vines_fine = perlin_vines_fine or minetest.get_perlin(43000, 3, 0.6, 1) - perlin_vines_length = perlin_vines_length or minetest.get_perlin(435, 4, 0.6, 75) - perlin_vines_upwards = perlin_vines_upwards or minetest.get_perlin(436, 3, 0.6, 10) - perlin_vines_density = perlin_vines_density or minetest.get_perlin(436, 3, 0.6, 500) - - -- Extra long vines in Jungle M - local maxvinelength = 7 - if dense_vegetation then - maxvinelength = 14 - end - local treething - for i=1, 4 do - if i==1 then - treething = jungletree - elseif i == 2 then - treething = jungleleaves - elseif i == 3 then - treething = oaktree - elseif i == 4 then - treething = oakleaves - end - - for n = 1, #treething do - pos = treething[n] - - treepos = table.copy(pos) - - local dirs = { - {x=1,y=0,z=0}, - {x=-1,y=0,z=0}, - {x=0,y=0,z=1}, - {x=0,y=0,z=-1}, - } - - for d = 1, #dirs do - local pos = vector.add(pos, dirs[d]) - local p_pos = area:index(pos.x, pos.y, pos.z) - - local vine_threshold = math.max(0.33333, perlin_vines_density:get_2d(pos)) - if dense_vegetation then - vine_threshold = vine_threshold * (2/3) - end - - if perlin_vines:get_2d(pos) > -1.0 and perlin_vines_fine:get_3d(pos) > vine_threshold and data[p_pos] == c_air then - - local rdir = {} - rdir.x = -dirs[d].x - rdir.y = dirs[d].y - rdir.z = -dirs[d].z - local param2 = minetest.dir_to_wallmounted(rdir) - - -- Determine growth direction - local grow_upwards = false - -- Only possible on the wood, not on the leaves - if i == 1 then - grow_upwards = perlin_vines_upwards:get_3d(pos) > 0.8 - end - if grow_upwards then - -- Grow vines up 1-4 nodes, even through jungleleaves. - -- This may give climbing access all the way to the top of the tree :-) - -- But this will be fairly rare. - local length = math.ceil(math.abs(perlin_vines_length:get_3d(pos)) * 4) - for l=0, length-1 do - local t_pos = area:index(treepos.x, treepos.y, treepos.z) - - if (data[p_pos] == c_air or data[p_pos] == c_jungleleaves or data[p_pos] == c_leaves) and mcl_core.supports_vines(minetest.get_name_from_content_id(data[t_pos])) then - data[p_pos] = c_vine - param2_data[p_pos] = param2 - lvm_used = true - - else - break - end - pos.y = pos.y + 1 - p_pos = area:index(pos.x, pos.y, pos.z) - treepos.y = treepos.y + 1 - end - else - -- Grow vines down, length between 1 and maxvinelength - local length = math.ceil(math.abs(perlin_vines_length:get_3d(pos)) * maxvinelength) - for l=0, length-1 do - if data[p_pos] == c_air then - data[p_pos] = c_vine - param2_data[p_pos] = param2 - lvm_used = true - - else - break - end - pos.y = pos.y - 1 - p_pos = area:index(pos.x, pos.y, pos.z) - end - end - end - end - - end - end - return lvm_used -end - -- Generate mushrooms in caves manually. -- Minetest's API does not support decorations in caves yet. :-( local function generate_underground_mushrooms(minp, maxp, seed) + if not mcl_mushrooms then return end + local pr_shroom = PseudoRandom(seed-24359) -- Generate rare underground mushrooms -- TODO: Make them appear in groups, use Perlin noise - local min, max = mcl_vars.mg_lava_overworld_max + 4, 0 + local min, max = mcl_mapgen.overworld.lava_max + 4, 0 if minp.y > max or maxp.y < min then return end @@ -1774,7 +1225,7 @@ local function generate_underground_mushrooms(minp, maxp, seed) end local nether_wart_chance -if mg_name == "v6" then +if v6 then nether_wart_chance = 85 else nether_wart_chance = 170 @@ -1782,9 +1233,13 @@ end -- Generate Nether decorations manually: Eternal fire, mushrooms, nether wart -- Minetest's API does not support decorations in caves yet. :-( local function generate_nether_decorations(minp, maxp, seed) + if c_nether == nil then + return + end + local pr_nether = PseudoRandom(seed+667) - if minp.y > mcl_vars.mg_nether_max or maxp.y < mcl_vars.mg_nether_min then + if minp.y > mcl_mapgen.nether.max or maxp.y < mcl_mapgen.nether.min then return end @@ -1824,17 +1279,19 @@ local function generate_nether_decorations(minp, maxp, seed) -- Mushrooms on netherrack -- Note: Spawned *after* the fire because of light level checks - special_deco(rack, function(bpos) - local l = minetest.get_node_light(bpos, 0.5) - if bpos.y > mcl_vars.mg_lava_nether_max + 6 and l and l <= 12 and pr_nether:next(1,1000) <= 4 then - -- TODO: Make mushrooms appear in groups, use Perlin noise - if pr_nether:next(1,2) == 1 then - minetest.set_node(bpos, {name = "mcl_mushrooms:mushroom_brown"}) - else - minetest.set_node(bpos, {name = "mcl_mushrooms:mushroom_red"}) + if mcl_mushrooms then + special_deco(rack, function(bpos) + local l = minetest.get_node_light(bpos, 0.5) + if bpos.y > mcl_mapgen.nether.lava_max + 6 and l and l <= 12 and pr_nether:next(1,1000) <= 4 then + -- TODO: Make mushrooms appear in groups, use Perlin noise + if pr_nether:next(1,2) == 1 then + minetest.set_node(bpos, {name = "mcl_mushrooms:mushroom_brown"}) + else + minetest.set_node(bpos, {name = "mcl_mushrooms:mushroom_red"}) + end end - end - end) + end) + end -- Nether wart on soul sand -- TODO: Spawn in Nether fortresses @@ -1846,105 +1303,19 @@ local function generate_nether_decorations(minp, maxp, seed) end -minetest.register_on_generated(function(minp, maxp, blockseed) - minetest.log("action", "[mcl_mapgen_core] Generating chunk " .. minetest.pos_to_string(minp) .. " ... " .. minetest.pos_to_string(maxp)) - local p1, p2 = {x=minp.x, y=minp.y, z=minp.z}, {x=maxp.x, y=maxp.y, z=maxp.z} - if lvm > 0 then - local lvm_used, shadow = false, false - local lb2 = {} -- param2 - local vm, emin, emax = minetest.get_mapgen_object("voxelmanip") - local e1, e2 = {x=emin.x, y=emin.y, z=emin.z}, {x=emax.x, y=emax.y, z=emax.z} - local data2 - local data = vm:get_data(lvm_buffer) - if param2 > 0 then - data2 = vm:get_param2_data(lb2) - end - local area = VoxelArea:new({MinEdge=e1, MaxEdge=e2}) - - for _, rec in pairs(registered_generators) do - if rec.vf then - local lvm_used0, shadow0 = rec.vf(vm, data, data2, e1, e2, area, p1, p2, blockseed) - if lvm_used0 then - lvm_used = true - end - if shadow0 then - shadow = true - end - end - end - - if lvm_used then - -- Write stuff - vm:set_data(data) - if param2 > 0 then - vm:set_param2_data(data2) - end - vm:calc_lighting(p1, p2, shadow) - vm:write_to_map() - vm:update_liquids() - end - end - - if nodes > 0 then - for _, rec in pairs(registered_generators) do - if rec.nf then - rec.nf(p1, p2, blockseed) - end - end - end - - mcl_vars.add_chunk(minp) -end) - -function minetest.register_on_generated(node_function) - mcl_mapgen_core.register_generator("mod_"..tostring(#registered_generators+1), nil, node_function) -end - -function mcl_mapgen_core.register_generator(id, lvm_function, node_function, priority, needs_param2) - if not id then return end - - local priority = priority or 5000 - - if lvm_function then lvm = lvm + 1 end - if lvm_function then nodes = nodes + 1 end - if needs_param2 then param2 = param2 + 1 end - - local new_record = { - i = priority, - vf = lvm_function, - nf = node_function, - needs_param2 = needs_param2, - } - - registered_generators[id] = new_record - table.sort(registered_generators, function(a, b) - return (a.i < b.i) or ((a.i == b.i) and a.vf and (b.vf == nil)) - end) -end - -function mcl_mapgen_core.unregister_generator(id) - if not registered_generators[id] then return end - local rec = registered_generators[id] - registered_generators[id] = nil - if rec.vf then lvm = lvm - 1 end - if rec.nf then nodes = nodes - 1 end - if rec.needs_param2 then param2 = param2 - 1 end - --if rec.needs_level0 then level0 = level0 - 1 end -end - -- Generate basic layer-based nodes: void, bedrock, realm barrier, lava seas, etc. -- Also perform some basic node replacements. local bedrock_check -if mcl_vars.mg_bedrock_is_rough then +if mcl_mapgen.bedrock_is_rough then function bedrock_check(pos, _, pr) local y = pos.y -- Bedrock layers with increasing levels of roughness, until a perfecly flat bedrock later at the bottom layer -- This code assumes a bedrock height of 5 layers. - local diff = mcl_vars.mg_bedrock_overworld_max - y -- Overworld bedrock - local ndiff1 = mcl_vars.mg_bedrock_nether_bottom_max - y -- Nether bedrock, bottom - local ndiff2 = mcl_vars.mg_bedrock_nether_top_max - y -- Nether bedrock, ceiling + local diff = mcl_mapgen.overworld.bedrock_max - y -- Overworld bedrock + local ndiff1 = mcl_mapgen.nether.bedrock_bottom_max - y -- Nether bedrock, bottom + local ndiff2 = mcl_mapgen.nether.bedrock_top_max - y -- Nether bedrock, ceiling local top if diff == 0 or ndiff1 == 0 or ndiff2 == 4 then @@ -2008,53 +1379,55 @@ local function set_layers(data, area, content_id, check, min, max, minp, maxp, l end -- Below the bedrock, generate air/void -local function basic(vm, data, data2, emin, emax, area, minp, maxp, blockseed) - local biomemap --ymin, ymax +local function basic_safe(vm_context) + local vm, data, emin, emax, area, minp, maxp, chunkseed, blockseed = vm_context.vm, vm_context.data, vm_context.emin, vm_context.emax, vm_context.area, vm_context.minp, vm_context.maxp, vm_context.chunkseed, vm_context.blockseed + vm_context.param2_data = vm_context.param2_data or vm:get_param2_data(vm_context.lvm_param2_buffer) + local param2_data = vm_context.param2_data + local lvm_used = false local pr = PseudoRandom(blockseed) -- The Void below the Nether: - lvm_used = set_layers(data, area, c_void , nil, mcl_vars.mapgen_edge_min , mcl_vars.mg_nether_min -1, minp, maxp, lvm_used, pr) + lvm_used = set_layers(data, area, c_void , nil, mcl_mapgen.EDGE_MIN , mcl_mapgen.nether.min -1, minp, maxp, lvm_used, pr) - -- [[ THE NETHER: mcl_vars.mg_nether_min mcl_vars.mg_nether_max ]] + -- [[ THE NETHER: mcl_mapgen.nether.min mcl_mapgen.nether.max ]] -- The Air on the Nether roof, https://git.minetest.land/MineClone2/MineClone2/issues/1186 - lvm_used = set_layers(data, area, c_air , nil, mcl_vars.mg_nether_max +1, mcl_vars.mg_nether_max + 128 , minp, maxp, lvm_used, pr) + lvm_used = set_layers(data, area, c_air , nil, mcl_mapgen.nether.max +1, mcl_mapgen.nether.max + 128 , minp, maxp, lvm_used, pr) -- The Void above the Nether below the End: - lvm_used = set_layers(data, area, c_void , nil, mcl_vars.mg_nether_max + 128 +1, mcl_vars.mg_end_min -1, minp, maxp, lvm_used, pr) + lvm_used = set_layers(data, area, c_void , nil, mcl_mapgen.nether.max + 128 +1, mcl_mapgen.end_.min -1, minp, maxp, lvm_used, pr) - -- [[ THE END: mcl_vars.mg_end_min mcl_vars.mg_end_max ]] + -- [[ THE END: mcl_mapgen.end_.min mcl_mapgen.end_.max ]] -- The Void above the End below the Realm barrier: - lvm_used = set_layers(data, area, c_void , nil, mcl_vars.mg_end_max +1, mcl_vars.mg_realm_barrier_overworld_end_min-1, minp, maxp, lvm_used, pr) + lvm_used = set_layers(data, area, c_void , nil, mcl_mapgen.end_.max +1, mcl_mapgen.realm_barrier_overworld_end_min-1, minp, maxp, lvm_used, pr) -- Realm barrier between the Overworld void and the End - lvm_used = set_layers(data, area, c_realm_barrier, nil, mcl_vars.mg_realm_barrier_overworld_end_min , mcl_vars.mg_realm_barrier_overworld_end_max , minp, maxp, lvm_used, pr) + lvm_used = set_layers(data, area, c_realm_barrier, nil, mcl_mapgen.realm_barrier_overworld_end_min , mcl_mapgen.realm_barrier_overworld_end_max , minp, maxp, lvm_used, pr) -- The Void above Realm barrier below the Overworld: - lvm_used = set_layers(data, area, c_void , nil, mcl_vars.mg_realm_barrier_overworld_end_max+1, mcl_vars.mg_overworld_min -1, minp, maxp, lvm_used, pr) + lvm_used = set_layers(data, area, c_void , nil, mcl_mapgen.realm_barrier_overworld_end_max+1, mcl_mapgen.overworld.min -1, minp, maxp, lvm_used, pr) - if mg_name ~= "singlenode" then + if not singlenode then -- Bedrock - lvm_used = set_layers(data, area, c_bedrock, bedrock_check, mcl_vars.mg_bedrock_overworld_min, mcl_vars.mg_bedrock_overworld_max, minp, maxp, lvm_used, pr) - lvm_used = set_layers(data, area, c_bedrock, bedrock_check, mcl_vars.mg_bedrock_nether_bottom_min, mcl_vars.mg_bedrock_nether_bottom_max, minp, maxp, lvm_used, pr) - lvm_used = set_layers(data, area, c_bedrock, bedrock_check, mcl_vars.mg_bedrock_nether_top_min, mcl_vars.mg_bedrock_nether_top_max, minp, maxp, lvm_used, pr) + lvm_used = set_layers(data, area, c_bedrock, bedrock_check, mcl_mapgen.overworld.bedrock_min, mcl_mapgen.overworld.bedrock_max, minp, maxp, lvm_used, pr) + lvm_used = set_layers(data, area, c_bedrock, bedrock_check, mcl_mapgen.nether.bedrock_bottom_min, mcl_mapgen.nether.bedrock_bottom_max, minp, maxp, lvm_used, pr) + lvm_used = set_layers(data, area, c_bedrock, bedrock_check, mcl_mapgen.nether.bedrock_top_min, mcl_mapgen.nether.bedrock_top_max, minp, maxp, lvm_used, pr) -- Flat Nether if mg_name == "flat" then - lvm_used = set_layers(data, area, c_air, nil, mcl_vars.mg_flat_nether_floor, mcl_vars.mg_flat_nether_ceiling, minp, maxp, lvm_used, pr) + lvm_used = set_layers(data, area, c_air, nil, mcl_mapgen.nether.flat_floor, mcl_mapgen.nether.flat_ceiling, minp, maxp, lvm_used, pr) end -- Big lava seas by replacing air below a certain height - if mcl_vars.mg_lava then - lvm_used = set_layers(data, area, c_lava, c_air, mcl_vars.mg_overworld_min, mcl_vars.mg_lava_overworld_max, emin, emax, lvm_used, pr) - lvm_used = set_layers(data, area, c_nether_lava, c_air, mcl_vars.mg_nether_min, mcl_vars.mg_lava_nether_max, emin, emax, lvm_used, pr) + if mcl_mapgen.lava then + lvm_used = set_layers(data, area, c_lava, c_air, mcl_mapgen.overworld.min, mcl_mapgen.overworld.lava_max, minp, maxp, lvm_used, pr) + if c_nether then + lvm_used = set_layers(data, area, c_nether.lava, c_air, mcl_mapgen.nether.min, mcl_mapgen.nether.lava_max, minp, maxp, lvm_used, pr) + end end - -- Clay, vines, cocoas - lvm_used = generate_clay(minp, maxp, blockseed, data, area, lvm_used) - - biomemap = minetest.get_mapgen_object("biomemap") - lvm_used = generate_tree_decorations(minp, maxp, blockseed, data, data2, area, biomemap, lvm_used, pr) + vm_context.biomemap = vm_context.biomemap or minetest.get_mapgen_object("biomemap") + local biomemap = vm_context.biomemap ----- Interactive block fixing section ----- ----- The section to perform basic block overrides of the core mapgen generated world. ----- @@ -2062,9 +1435,9 @@ local function basic(vm, data, data2, emin, emax, area, minp, maxp, blockseed) -- Snow and sand fixes. This code implements snow consistency -- and fixes floating sand and cut plants. -- A snowy grass block must be below a top snow or snow block at all times. - if minp.y <= mcl_vars.mg_overworld_max and maxp.y >= mcl_vars.mg_overworld_min then + if minp.y <= mcl_mapgen.overworld.max and maxp.y >= mcl_mapgen.overworld.min then -- v6 mapgen: - if mg_name == "v6" then + if v6 then --[[ Remove broken double plants caused by v6 weirdness. v6 might break the bottom part of double plants because of how it works. @@ -2113,8 +1486,8 @@ local function basic(vm, data, data2, emin, emax, area, minp, maxp, blockseed) if bn then local biome = minetest.registered_biomes[bn] if biome and biome._mcl_biome_type then - data2[p_pos] = biome._mcl_palette_index - lvm_used = true + param2_data[p_pos] = biome._mcl_palette_index + vm_context.write_param2 = true end end if data[p_pos] == c_dirt_with_grass_snow and p_pos_above and data[p_pos_above] ~= c_top_snow and data[p_pos_above] ~= c_snow_block then @@ -2128,26 +1501,31 @@ local function basic(vm, data, data2, emin, emax, area, minp, maxp, blockseed) -- Nether block fixes: -- * Replace water with Nether lava. -- * Replace stone, sand dirt in v6 so the Nether works in v6. - elseif emin.y <= mcl_vars.mg_nether_max and emax.y >= mcl_vars.mg_nether_min then - if mg_name == "v6" then - local nodes = minetest.find_nodes_in_area(emin, emax, {"mcl_core:water_source", "mcl_core:stone", "mcl_core:sand", "mcl_core:dirt"}) - for n=1, #nodes do - local p_pos = area:index(nodes[n].x, nodes[n].y, nodes[n].z) - if data[p_pos] == c_water then - data[p_pos] = c_nether_lava - lvm_used = true - elseif data[p_pos] == c_stone then - data[p_pos] = c_netherrack - lvm_used = true - elseif data[p_pos] == c_sand or data[p_pos] == c_dirt then - data[p_pos] = c_soul_sand - lvm_used = true + elseif minp.y <= mcl_mapgen.nether.max and maxp.y >= mcl_mapgen.nether.min then + -- elseif emin.y <= mcl_mapgen.nether.max and emax.y >= mcl_mapgen.nether.min then + if c_nether then + if v6 then + -- local nodes = minetest.find_nodes_in_area(emin, emax, {"mcl_core:water_source", "mcl_core:stone", "mcl_core:sand", "mcl_core:dirt"}) + local nodes = minetest.find_nodes_in_area(minp, maxp, {"mcl_core:water_source", "mcl_core:stone", "mcl_core:sand", "mcl_core:dirt"}) + for n=1, #nodes do + local p_pos = area:index(nodes[n].x, nodes[n].y, nodes[n].z) + if data[p_pos] == c_water then + data[p_pos] = c_nether.lava + lvm_used = true + elseif data[p_pos] == c_stone then + data[p_pos] = c_netherrack + lvm_used = true + elseif data[p_pos] == c_sand or data[p_pos] == c_dirt then + data[p_pos] = c_soul_sand + lvm_used = true + end + end + else + -- local nodes = minetest.find_nodes_in_area(emin, emax, {"group:water"}) + local nodes = minetest.find_nodes_in_area(minp, maxp, {"group:water"}) + for _, n in pairs(nodes) do + data[area:index(n.x, n.y, n.z)] = c_nether.lava end - end - else - local nodes = minetest.find_nodes_in_area(emin, emax, {"group:water"}) - for _, n in pairs(nodes) do - data[area:index(n.x, n.y, n.z)] = c_nether_lava end end @@ -2155,12 +1533,14 @@ local function basic(vm, data, data2, emin, emax, area, minp, maxp, blockseed) -- * Replace water with end stone or air (depending on height). -- * Remove stone, sand, dirt in v6 so our End map generator works in v6. -- * Generate spawn platform (End portal destination) - elseif minp.y <= mcl_vars.mg_end_max and maxp.y >= mcl_vars.mg_end_min then + elseif minp.y <= mcl_mapgen.end_.max and maxp.y >= mcl_mapgen.end_.min then local nodes - if mg_name == "v6" then - nodes = minetest.find_nodes_in_area(emin, emax, {"mcl_core:water_source", "mcl_core:stone", "mcl_core:sand", "mcl_core:dirt"}) + if v6 then + nodes = minetest.find_nodes_in_area(minp, maxp, {"mcl_core:water_source", "mcl_core:stone", "mcl_core:sand", "mcl_core:dirt"}) + -- nodes = minetest.find_nodes_in_area(emin, emax, {"mcl_core:water_source", "mcl_core:stone", "mcl_core:sand", "mcl_core:dirt"}) else - nodes = minetest.find_nodes_in_area(emin, emax, {"mcl_core:water_source"}) + nodes = minetest.find_nodes_in_area(minp, maxp, {"mcl_core:water_source"}) + -- nodes = minetest.find_nodes_in_area(emin, emax, {"mcl_core:water_source"}) end if #nodes > 0 then lvm_used = true @@ -2170,18 +1550,18 @@ local function basic(vm, data, data2, emin, emax, area, minp, maxp, blockseed) end -- Obsidian spawn platform - if minp.y <= mcl_vars.mg_end_platform_pos.y and maxp.y >= mcl_vars.mg_end_platform_pos.y and - minp.x <= mcl_vars.mg_end_platform_pos.x and maxp.x >= mcl_vars.mg_end_platform_pos.z and - minp.z <= mcl_vars.mg_end_platform_pos.z and maxp.z >= mcl_vars.mg_end_platform_pos.z then + if minp.y <= mcl_mapgen.end_.platform_pos.y and maxp.y >= mcl_mapgen.end_.platform_pos.y and + minp.x <= mcl_mapgen.end_.platform_pos.x and maxp.x >= mcl_mapgen.end_.platform_pos.z and + minp.z <= mcl_mapgen.end_.platform_pos.z and maxp.z >= mcl_mapgen.end_.platform_pos.z then - --local pos1 = {x = math.max(minp.x, mcl_vars.mg_end_platform_pos.x-2), y = math.max(minp.y, mcl_vars.mg_end_platform_pos.y), z = math.max(minp.z, mcl_vars.mg_end_platform_pos.z-2)} - --local pos2 = {x = math.min(maxp.x, mcl_vars.mg_end_platform_pos.x+2), y = math.min(maxp.y, mcl_vars.mg_end_platform_pos.y+2), z = math.min(maxp.z, mcl_vars.mg_end_platform_pos.z+2)} + --local pos1 = {x = math.max(minp.x, mcl_mapgen.end_.platform_pos.x-2), y = math.max(minp.y, mcl_mapgen.end_.platform_pos.y), z = math.max(minp.z, mcl_mapgen.end_.platform_pos.z-2)} + --local pos2 = {x = math.min(maxp.x, mcl_mapgen.end_.platform_pos.x+2), y = math.min(maxp.y, mcl_mapgen.end_.platform_pos.y+2), z = math.min(maxp.z, mcl_mapgen.end_.platform_pos.z+2)} - for x=math.max(minp.x, mcl_vars.mg_end_platform_pos.x-2), math.min(maxp.x, mcl_vars.mg_end_platform_pos.x+2) do - for z=math.max(minp.z, mcl_vars.mg_end_platform_pos.z-2), math.min(maxp.z, mcl_vars.mg_end_platform_pos.z+2) do - for y=math.max(minp.y, mcl_vars.mg_end_platform_pos.y), math.min(maxp.y, mcl_vars.mg_end_platform_pos.y+2) do + for x=math.max(minp.x, mcl_mapgen.end_.platform_pos.x-2), math.min(maxp.x, mcl_mapgen.end_.platform_pos.x+2) do + for z=math.max(minp.z, mcl_mapgen.end_.platform_pos.z-2), math.min(maxp.z, mcl_mapgen.end_.platform_pos.z+2) do + for y=math.max(minp.y, mcl_mapgen.end_.platform_pos.y), math.min(maxp.y, mcl_mapgen.end_.platform_pos.y+2) do local p_pos = area:index(x, y, z) - if y == mcl_vars.mg_end_platform_pos.y then + if y == mcl_mapgen.end_.platform_pos.y then data[p_pos] = c_obsidian else data[p_pos] = c_air @@ -2194,27 +1574,46 @@ local function basic(vm, data, data2, emin, emax, area, minp, maxp, blockseed) end end - -- Final hackery: Set sun light level in the End. - -- -26912 is at a mapchunk border. - local shadow = true - if minp.y >= -26912 and maxp.y <= mcl_vars.mg_end_max then - vm:set_lighting({day=15, night=15}) - lvm_used = true - end - if minp.y >= mcl_vars.mg_end_min and maxp.y <= -26911 then - shadow = false - lvm_used = true - end - if mg_name ~= "singlenode" then + if not singlenode then -- Generate special decorations generate_underground_mushrooms(minp, maxp, blockseed) generate_nether_decorations(minp, maxp, blockseed) - generate_structures(minp, maxp, blockseed, biomemap) end - return lvm_used, shadow + vm_context.write = vm_context.write or lvm_used end -mcl_mapgen_core.register_generator("main", basic, nil, 1, true) +mcl_mapgen.register_mapgen_block_lvm(basic_safe, 1) +local modpath = minetest.get_modpath(minetest.get_current_modname()) +dofile(modpath .. "/clay.lua") +dofile(modpath .. "/tree_decoration.lua") + +-- Nether Roof Light: +mcl_mapgen.register_mapgen_block_lvm(function(vm_context) + local minp = vm_context.minp + local miny = minp.y + if miny > mcl_mapgen.nether.max+127 then return end + local maxp = vm_context.maxp + local maxy = maxp.y + if maxy <= mcl_mapgen.nether.max then return end + local p1 = {x = minp.x, y = math.max(miny, mcl_mapgen.nether.max + 1), z = minp.z} + local p2 = {x = maxp.x, y = math.min(maxy, mcl_mapgen.nether.max + 127), z = maxp.z} + vm_context.vm:set_lighting({day=15, night=15}, p1, p2) + vm_context.write = true +end, 999999999) + +-- End Light: +mcl_mapgen.register_mapgen_block_lvm(function(vm_context) + local minp = vm_context.minp + local miny = minp.y + if miny > mcl_mapgen.end_.max then return end + local maxp = vm_context.maxp + local maxy = maxp.y + if maxy <= mcl_mapgen.end_.min then return end + local p1 = {x = minp.x, y = math.max(miny, mcl_mapgen.end_.min), z = minp.z} + local p2 = {x = maxp.x, y = math.min(maxy, mcl_mapgen.end_.max), z = maxp.z} + vm_context.vm:set_lighting({day=15, night=15}, p1, p2) + vm_context.write = true +end, 9999999999) diff --git a/mods/MAPGEN/mcl_mapgen_core/mod.conf b/mods/MAPGEN/mcl_mapgen_core/mod.conf index 9f7d9ebaa..11f51e252 100644 --- a/mods/MAPGEN/mcl_mapgen_core/mod.conf +++ b/mods/MAPGEN/mcl_mapgen_core/mod.conf @@ -1,5 +1,5 @@ name = mcl_mapgen_core author = Wuzzy description = The core of the MCL2 mapgen -depends = mcl_init, mcl_core, biomeinfo, mcl_worlds, mcl_cocoas, mcl_sponges, mcl_ocean, mcl_stairs, mcl_monster_eggs, mcl_structures -optional_depends = mclx_core +depends = mcl_mapgen, mcl_init, mcl_core, biomeinfo, mcl_worlds +optional_depends = mclx_core, mcl_cocoas, mcl_sponges, mcl_ocean, mcl_stairs, mcl_monster_eggs, mcl_structures, mcl_flowers, mcl_farming, mcl_mushrooms, mcl_nether diff --git a/mods/MAPGEN/mcl_mapgen_core/tree_decoration.lua b/mods/MAPGEN/mcl_mapgen_core/tree_decoration.lua new file mode 100644 index 000000000..5cdcd023e --- /dev/null +++ b/mods/MAPGEN/mcl_mapgen_core/tree_decoration.lua @@ -0,0 +1,251 @@ +-- Generate tree decorations in the bounding box. This adds: +-- * Cocoa at jungle trees +-- * Jungle tree vines +-- * Oak vines in swamplands + +local minetest_find_nodes_in_area = minetest.find_nodes_in_area +local minetest_find_node_near = minetest.find_node_near +local minetest_get_node_light = minetest.get_node_light +local minetest_dir_to_facedir = minetest.dir_to_facedir +local minetest_dir_to_wallmounted = minetest.dir_to_wallmounted +local table_copy = table.copy +local vector_subtract = vector.subtract +local vector_add = vector.add +local math_max = math.max +local math_ceil = math.ceil +local math_abs = math.abs + +local c_air = minetest.CONTENT_AIR +local c_cocoas +local c_jungleleaves = minetest.get_content_id("mcl_core:jungleleaves") +local c_leaves = minetest.get_content_id("mcl_core:leaves") +local c_vine = minetest.get_content_id("mcl_core:vine") + +if minetest.get_modpath("mcl_cocoas") then + c_cocoas = { + minetest.get_content_id("mcl_cocoas:cocoa_1"), + minetest.get_content_id("mcl_cocoas:cocoa_2"), + minetest.get_content_id("mcl_cocoas:cocoa_3"), + } +end + +local swampland +local swampland_shore +local jungle +local jungle_shore +local jungle_m +local jungle_m_shore +local jungle_edge +local jungle_edge_shore +local jungle_edge_m +local jungle_edge_m_shore + +local perlin_vines, perlin_vines_fine, perlin_vines_upwards, perlin_vines_length, perlin_vines_density + +local dirs = { + {x = 1, y = 0, z = 0}, + {x = -1, y = 0, z = 0}, + {x = 0, y = 0, z = 1}, + {x = 0, y = 0, z = -1}, +} + +local function generate_tree_decorations(vm_context) + local maxp = vm_context.maxp + if maxp.y < 0 then return end + local minp = vm_context.minp + + local data = vm_context.data + vm_context.param2_data = vm_context.param2_data or vm_context.vm:get_param2_data(vm_context.lvm_param2_buffer) + local param2_data = vm_context.param2_data + local area = vm_context.area + + local biomemap = vm_context.biomemap + + local pr = PseudoRandom(vm_context.chunkseed) + + local oaktree, oakleaves, jungletree, jungleleaves = {}, {}, {}, {} + + -- Modifier for Jungle M biome: More vines and cocoas + local dense_vegetation = false + + if biomemap then + swampland = swampland or minetest.get_biome_id("Swampland") + swampland_shore = swampland_shore or minetest.get_biome_id("Swampland_shore") + jungle = jungle or minetest.get_biome_id("Jungle") + jungle_shore = jungle_shore or minetest.get_biome_id("Jungle_shore") + jungle_m = jungle_m or minetest.get_biome_id("JungleM") + jungle_m_shore = jungle_m_shore or minetest.get_biome_id("JungleM_shore") + jungle_edge = jungle_edge or minetest.get_biome_id("JungleEdge") + jungle_edge_shore = jungle_edge_shore or minetest.get_biome_id("JungleEdge_shore") + jungle_edge_m = jungle_edge_m or minetest.get_biome_id("JungleEdgeM") + jungle_edge_m_shore = jungle_edge_m_shore or minetest.get_biome_id("JungleEdgeM_shore") + + -- Biome map available: Check if the required biome (jungle or swampland) + -- is in this mapchunk. We are only interested in trees in the correct biome. + -- The nodes are added if the correct biome is *anywhere* in the mapchunk. + -- TODO: Strictly generate vines in the correct biomes only. + local swamp_biome_found, jungle_biome_found = false, false + for b=1, #biomemap do + local id = biomemap[b] + + if not swamp_biome_found and (id == swampland or id == swampland_shore) then + oaktree = minetest_find_nodes_in_area(minp, maxp, {"mcl_core:tree"}) + oakleaves = minetest_find_nodes_in_area(minp, maxp, {"mcl_core:leaves"}) + swamp_biome_found = true + end + if not jungle_biome_found and (id == jungle or id == jungle_shore or id == jungle_m or id == jungle_m_shore or id == jungle_edge or id == jungle_edge_shore or id == jungle_edge_m or id == jungle_edge_m_shore) then + jungletree = minetest_find_nodes_in_area(minp, maxp, {"mcl_core:jungletree"}) + jungleleaves = minetest_find_nodes_in_area(minp, maxp, {"mcl_core:jungleleaves"}) + jungle_biome_found = true + end + if not dense_vegetation and (id == jungle_m or id == jungle_m_shore) then + dense_vegetation = true + end + if swamp_biome_found and jungle_biome_found and dense_vegetation then + break + end + end + else + -- If there is no biome map, we just count all jungle things we can find. + -- Oak vines will not be generated. + jungletree = minetest_find_nodes_in_area(minp, maxp, {"mcl_core:jungletree"}) + jungleleaves = minetest_find_nodes_in_area(minp, maxp, {"mcl_core:jungleleaves"}) + end + + local pos, treepos, dir + + if c_cocoas then + local cocoachance = 40 + if dense_vegetation then + cocoachance = 32 + end + + -- Pass 1: Generate cocoas at jungle trees + for n = 1, #jungletree do + + pos = table_copy(jungletree[n]) + treepos = table_copy(pos) + + if minetest_find_node_near(pos, 1, {"mcl_core:jungleleaves"}) then + + dir = pr:next(1, cocoachance) + + if dir == 1 then + pos.z = pos.z + 1 + elseif dir == 2 then + pos.z = pos.z - 1 + elseif dir == 3 then + pos.x = pos.x + 1 + elseif dir == 4 then + pos.x = pos.x -1 + end + + local p_pos = area:index(pos.x, pos.y, pos.z) + local l = minetest_get_node_light(pos) + + if dir < 5 + and data[p_pos] == c_air + and l and l > 12 then + local c = pr:next(1, 3) + data[p_pos] = c_cocoas[c] + vm_context.write = true + param2_data[p_pos] = minetest_dir_to_facedir(vector_subtract(treepos, pos)) + vm_context.write_param2 = true + end + end + end + end + + -- Pass 2: Generate vines at jungle wood, jungle leaves in jungle and oak wood, oak leaves in swampland + perlin_vines = perlin_vines or minetest.get_perlin(555, 4, 0.6, 500) + perlin_vines_fine = perlin_vines_fine or minetest.get_perlin(43000, 3, 0.6, 1) + perlin_vines_length = perlin_vines_length or minetest.get_perlin(435, 4, 0.6, 75) + perlin_vines_upwards = perlin_vines_upwards or minetest.get_perlin(436, 3, 0.6, 10) + perlin_vines_density = perlin_vines_density or minetest.get_perlin(436, 3, 0.6, 500) + + -- Extra long vines in Jungle M + local maxvinelength = 7 + if dense_vegetation then + maxvinelength = 14 + end + local treething + for i=1, 4 do + if i==1 then + treething = jungletree + elseif i == 2 then + treething = jungleleaves + elseif i == 3 then + treething = oaktree + elseif i == 4 then + treething = oakleaves + end + + for n = 1, #treething do + pos = treething[n] + + treepos = table_copy(pos) + + for d = 1, #dirs do + local pos = vector_add(pos, dirs[d]) + local p_pos = area:index(pos.x, pos.y, pos.z) + + local vine_threshold = math_max(0.33333, perlin_vines_density:get_2d(pos)) + if dense_vegetation then + vine_threshold = vine_threshold * (2/3) + end + + if perlin_vines:get_2d(pos) > -1.0 and perlin_vines_fine:get_3d(pos) > vine_threshold and data[p_pos] == c_air then + + local rdir = {} + rdir.x = -dirs[d].x + rdir.y = dirs[d].y + rdir.z = -dirs[d].z + local param2 = minetest_dir_to_wallmounted(rdir) + + -- Determine growth direction + local grow_upwards = false + -- Only possible on the wood, not on the leaves + if i == 1 then + grow_upwards = perlin_vines_upwards:get_3d(pos) > 0.8 + end + if grow_upwards then + -- Grow vines up 1-4 nodes, even through jungleleaves. + -- This may give climbing access all the way to the top of the tree :-) + -- But this will be fairly rare. + local length = math_ceil(math_abs(perlin_vines_length:get_3d(pos)) * 4) + for l=0, length-1 do + local t_pos = area:index(treepos.x, treepos.y, treepos.z) + + if (data[p_pos] == c_air or data[p_pos] == c_jungleleaves or data[p_pos] == c_leaves) and mcl_core.supports_vines(minetest.get_name_from_content_id(data[t_pos])) then + data[p_pos] = c_vine + param2_data[p_pos] = param2 + vm_context.write = true + else + break + end + pos.y = pos.y + 1 + p_pos = area:index(pos.x, pos.y, pos.z) + treepos.y = treepos.y + 1 + end + else + -- Grow vines down, length between 1 and maxvinelength + local length = math_ceil(math_abs(perlin_vines_length:get_3d(pos)) * maxvinelength) + for l=0, length-1 do + if data[p_pos] == c_air then + data[p_pos] = c_vine + param2_data[p_pos] = param2 + vm_context.write = true + else + break + end + pos.y = pos.y - 1 + p_pos = area:index(pos.x, pos.y, pos.z) + end + end + end + end + end + end +end + +mcl_mapgen.register_on_generated(generate_tree_decorations, 0) diff --git a/mods/MAPGEN/mcl_ocean_monument/init.lua b/mods/MAPGEN/mcl_ocean_monument/init.lua new file mode 100644 index 000000000..fffa6f6b0 --- /dev/null +++ b/mods/MAPGEN/mcl_ocean_monument/init.lua @@ -0,0 +1,97 @@ + +-- Check it: +-- seed 1, v7 mapgen +-- /teleport 14958,8,11370 + +local mcl_mapgen_get_far_node = mcl_mapgen.get_far_node +local minetest_log = minetest.log +local minetest_place_schematic = minetest.place_schematic +local minetest_pos_to_string = minetest.pos_to_string +local minetest_swap_node = minetest.swap_node + +local path = minetest.get_modpath("mcl_ocean_monument") .. "/schematics/ocean_monument.mts" + +local water = "mcl_core:water_source" +local air = "air" +local ice = "mcl_core:ice" + +local leg_materials = { + "mcl_ocean:prismarine_brick", + "mcl_ocean:prismarine", +} +local what_we_can_replace_by_legs = { + water, + air, + "mcl_core:water_flowing", + "mcl_core:stone", +} + +local leg_search_quick_index = {} +for _, v in pairs(leg_materials) do + leg_search_quick_index[v] = true +end + +local leg_replace_quick_index = {} +for _, v in pairs(what_we_can_replace_by_legs) do + leg_replace_quick_index[v] = true +end + +local y_wanted = mcl_mapgen.OFFSET_NODES -- supposed to be -32 +local y_bottom = mcl_mapgen.overworld.min -- -62 + +mcl_mapgen.register_mapgen(function(minp, maxp, seed) + local minp = minp + local y = minp.y + if y ~= y_wanted then return end + + local x, z = minp.x, minp.z + local pr = PseudoRandom(seed) + + -- scan the ocean - it should be the ocean: + for i = 1, pr:next(10, 100) do + local pos = {x = pr:next(15, 64) + x, y = pr:next(0, 25) - 25, z = pr:next(15, 64) + z} + local node_name = mcl_mapgen_get_far_node(pos).name + if node_name ~= water then return end + end + + -- scan nodes above water level - there should be the air: + for i = 1, pr:next(10, 100) do + local pos = {x = pr:next(0, 79) + x, y = 2, z = pr:next(0,79) + z} + local node_name = mcl_mapgen_get_far_node(pos).name + if node_name ~= air then return end + end + + -- scan ocean surface - allow only water and ice: + for i = 1, pr:next(10,100) do + local pos = {x=pr:next(0, 79)+x, y=1, z=pr:next(0,79)+z} + local node_name = mcl_mapgen_get_far_node(pos).name + if node_name ~= water and node_name ~= ice then return end + end + + -- random rotation: + local rotation = pr:next(0, 3) + local rotation_str = tostring(rotation * 90) + minetest_place_schematic(minp, path, rotation_str, nil, true) + + -- search prismarine legs at base level and continue them up to the bottom: + for x = x, maxp.x do + for z = z, maxp.z do + local pos = {x = x, y = y, z = z} + local node_name = mcl_mapgen_get_far_node(pos).name + if leg_search_quick_index[node_name] then + local node_leg = {name = node_name} + for y = y - 1, y_bottom, -1 do + pos.y = y + local next_name = mcl_mapgen_get_far_node(pos).name + if not leg_replace_quick_index[next_name] then + break + end + minetest_swap_node(pos, node_leg) + end + end + end + end + + minetest_log("action", "[mcl_ocean_monument] Placed at " .. minetest_pos_to_string(minp) .. ", " .. rotation_str .. " deg.") + +end, mcl_mapgen.order.OCEAN_MONUMENT) diff --git a/mods/MAPGEN/mcl_ocean_monument/mod.conf b/mods/MAPGEN/mcl_ocean_monument/mod.conf new file mode 100644 index 000000000..945a81166 --- /dev/null +++ b/mods/MAPGEN/mcl_ocean_monument/mod.conf @@ -0,0 +1,4 @@ +name = mcl_ocean_monument +author = TrashPanda +description = Adds Ocean Monument, https://git.minetest.land/MineClone2/MineClone2/issues/958#issuecomment-14102 +depends = mcl_mapgen, mcl_structures diff --git a/mods/MAPGEN/mcl_ocean_monument/schematics/ocean_monument.mts b/mods/MAPGEN/mcl_ocean_monument/schematics/ocean_monument.mts new file mode 100644 index 000000000..f94b808b5 Binary files /dev/null and b/mods/MAPGEN/mcl_ocean_monument/schematics/ocean_monument.mts differ diff --git a/mods/MAPGEN/mcl_strongholds/init.lua b/mods/MAPGEN/mcl_strongholds/init.lua deleted file mode 100644 index 083172a3c..000000000 --- a/mods/MAPGEN/mcl_strongholds/init.lua +++ /dev/null @@ -1,106 +0,0 @@ --- Generate strongholds. - --- A total of 128 strongholds are generated in rings around the world origin. --- This is the list of rings, starting with the innermost ring first. -local stronghold_rings = { - -- amount: Number of strongholds in ring. - -- min, max: Minimum and maximum distance from (X=0, Z=0). - { amount = 3, min = 1408, max = 2688 }, - { amount = 6, min = 4480, max = 5760 }, - { amount = 10, min = 7552, max = 8832 }, - { amount = 15, min = 10624, max = 11904 }, - { amount = 21, min = 13696, max = 14976 }, - { amount = 28, min = 16768, max = 18048 }, - { amount = 36, min = 19840, max = 21120 }, - { amount = 9, min = 22912, max = 24192 }, -} - -local strongholds = {} -local strongholds_inited = false - -local mg_name = minetest.get_mapgen_setting("mg_name") -local superflat = mg_name == "flat" and minetest.get_mapgen_setting("mcl_superflat_classic") == "true" - --- Determine the stronghold positions and store them into the strongholds table. --- The stronghold positions are based on the world seed. --- The actual position might be offset by a few blocks because it might be shifted --- to make sure the end portal room is completely within the boundaries of a mapchunk. -local function init_strongholds() - if strongholds_inited then - return - end - -- Don't generate strongholds in singlenode - if mg_name == "singlenode" then - strongholds_inited = true - return - end - local seed = tonumber(minetest.get_mapgen_setting("seed")) - local pr = PseudoRandom(seed) - for s=1, #stronghold_rings do - local ring = stronghold_rings[s] - - -- Get random angle - local angle = pr:next() - -- Scale angle to 0 .. 2*math.pi - angle = (angle / 32767) * (math.pi*2) - for a=1, ring.amount do - local dist = pr:next(ring.min, ring.max) - local y - if superflat then - y = mcl_vars.mg_bedrock_overworld_max + 3 - else - y = pr:next(mcl_vars.mg_bedrock_overworld_max+1, mcl_vars.mg_overworld_min+48) - end - local pos = { x = math.cos(angle) * dist, y = y, z = math.sin(angle) * dist } - pos = vector.round(pos) - table.insert(strongholds, { pos = pos, generated = false }) - - -- Rotate angle by (360 / amount) degrees. - -- This will cause the angles to be evenly distributed in the stronghold ring - angle = math.fmod(angle + ((math.pi*2) / ring.amount), math.pi*2) - end - end - - mcl_structures.register_structures("stronghold", table.copy(strongholds)) - - strongholds_inited = true -end - --- Stronghold generation for register_on_generated. -local function generate_strongholds(minp, maxp, blockseed) - local pr = PseudoRandom(blockseed) - for s=1, #strongholds do - if not strongholds[s].generated then - local pos = strongholds[s].pos - if minp.x <= pos.x and maxp.x >= pos.x and minp.z <= pos.z and maxp.z >= pos.z and minp.y <= pos.y and maxp.y >= pos.y then - -- Make sure the end portal room is completely within the current mapchunk - -- The original pos is changed intentionally. - if pos.x - 6 < minp.x then - pos.x = minp.x + 7 - end - if pos.x + 6 > maxp.x then - pos.x = maxp.x - 7 - end - if pos.y - 4 < minp.y then - pos.y = minp.y + 5 - end - if pos.y + 4 > maxp.y then - pos.y = maxp.y - 5 - end - if pos.z - 6 < minp.z then - pos.z = minp.z + 7 - end - if pos.z + 6 > maxp.z then - pos.z = maxp.z - 7 - end - - mcl_structures.call_struct(pos, "end_portal_shrine", nil, pr) - strongholds[s].generated = true - end - end - end -end - -init_strongholds() - -mcl_mapgen_core.register_generator("strongholds", nil, generate_strongholds, 999999) diff --git a/mods/MAPGEN/mcl_strongholds/mod.conf b/mods/MAPGEN/mcl_strongholds/mod.conf deleted file mode 100644 index 8edec9a51..000000000 --- a/mods/MAPGEN/mcl_strongholds/mod.conf +++ /dev/null @@ -1,4 +0,0 @@ -name = mcl_strongholds -author = Wuzzy -description = Generates strongholds with end portals in the Overworld -depends = mcl_init, mcl_structures, mcl_mapgen_core diff --git a/mods/MAPGEN/mcl_structures/desert_temple.lua b/mods/MAPGEN/mcl_structures/desert_temple.lua new file mode 100644 index 000000000..bb4c08b3a --- /dev/null +++ b/mods/MAPGEN/mcl_structures/desert_temple.lua @@ -0,0 +1,174 @@ +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +local chance_per_chunk = 11 +local noise_multiplier = 1 +local random_offset = 999 +local scanning_ratio = 0.00003 +local struct_threshold = chance_per_chunk - 1 + +local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level + +local node_list = {"mcl_core:sand", "mcl_core:sandstone", "mcl_core:redsand", "mcl_colorblocks:hardened_clay_orange"} + +local schematic_file = modpath .. "/schematics/mcl_structures_desert_temple.mts" + +local temple_schematic_lua = minetest.serialize_schematic(schematic_file, "lua", {lua_use_comments = false, lua_num_indent_spaces = 0}) .. " return schematic" +local temple_schematic = loadstring(temple_schematic_lua)() + +local red_temple_schematic_lua = minetest.serialize_schematic(schematic_file, "lua", {lua_use_comments = false, lua_num_indent_spaces = 0}) .. " return schematic" +red_temple_schematic_lua = red_temple_schematic_lua:gsub("mcl_colorblocks:hardened_clay_orange", "mcl_colorblocks:hardened_clay_red") +red_temple_schematic_lua = red_temple_schematic_lua:gsub("mcl_core:sand_stone", "mcl_colorblocks:hardened_clay_orange") +red_temple_schematic_lua = red_temple_schematic_lua:gsub("mcl_core:sand", "mcl_core:redsand") +red_temple_schematic_lua = red_temple_schematic_lua:gsub("mcl_stairs:stair_sandstone", "mcl_stairs:stair_redsandstone") +red_temple_schematic_lua = red_temple_schematic_lua:gsub("mcl_stairs:slab_sandstone", "mcl_stairs:slab_redsandstone") +red_temple_schematic_lua = red_temple_schematic_lua:gsub("mcl_colorblocks:hardened_clay_yellow", "mcl_colorblocks:hardened_clay_pink") +local red_temple_schematic = loadstring(red_temple_schematic_lua)() + +local function on_placed(p1, rotation, pr, size) + local p2 = {x = p1.x + size.x - 1, y = p1.y + size.y - 1, z = p1.z + size.z - 1} + -- Delete cacti leftovers: + local cactus_nodes = minetest.find_nodes_in_area_under_air({x = p1.x, y = p1.y + 11, z = p1.z}, {x = p2.x, y = p2.y - 2, z = p2.z}, "mcl_core:cactus", false) + for _, pos in pairs(cactus_nodes) do + local node_below = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}) + local nn = node_below.name + if nn == "mcl_core:sandstone" then + minetest.swap_node(pos, {name="air"}) + end + end + + -- Find chests. + local chests = minetest.find_nodes_in_area(p1, {x = p2.x, y = p1.y + 5, z = p2.z}, "mcl_chests:chest") + + -- Add desert temple loot into chests + for c=1, #chests do + local lootitems = mcl_loot.get_multi_loot({ + { + stacks_min = 2, + stacks_max = 4, + items = { + { itemstring = "mcl_mobitems:bone", weight = 25, amount_min = 4, amount_max=6 }, + { itemstring = "mcl_mobitems:rotten_flesh", weight = 25, amount_min = 3, amount_max=7 }, + { itemstring = "mcl_mobitems:spider_eye", weight = 25, amount_min = 1, amount_max=3 }, + { itemstring = "mcl_books:book", weight = 20, func = function(stack, pr) + mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) + end }, + { itemstring = "mcl_mobitems:saddle", weight = 20, }, + { itemstring = "mcl_core:apple_gold", weight = 20, }, + { itemstring = "mcl_core:gold_ingot", weight = 15, amount_min = 2, amount_max = 7 }, + { itemstring = "mcl_core:iron_ingot", weight = 15, amount_min = 1, amount_max = 5 }, + { itemstring = "mcl_core:emerald", weight = 15, amount_min = 1, amount_max = 3 }, + { itemstring = "", weight = 15, }, + { itemstring = "mobs_mc:iron_horse_armor", weight = 15, }, + { itemstring = "mobs_mc:gold_horse_armor", weight = 10, }, + { itemstring = "mobs_mc:diamond_horse_armor", weight = 5, }, + { itemstring = "mcl_core:diamond", weight = 5, amount_min = 1, amount_max = 3 }, + { itemstring = "mcl_core:apple_gold_enchanted", weight = 2, }, + } + }, + { + stacks_min = 4, + stacks_max = 4, + items = { + { itemstring = "mcl_mobitems:bone", weight = 10, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_mobitems:rotten_flesh", weight = 10, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_mobitems:gunpowder", weight = 10, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_core:sand", weight = 10, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_mobitems:string", weight = 10, amount_min = 1, amount_max = 8 }, + } + }}, pr) + mcl_structures.init_node_construct(chests[c]) + local meta = minetest.get_meta(chests[c]) + local inv = meta:get_inventory() + mcl_loot.fill_inventory(inv, "main", lootitems, pr) + end + + -- Initialize pressure plates and randomly remove up to 5 plates + local pplates = minetest.find_nodes_in_area(p1, {x = p2.x, y = p1.y + 5, z = p2.z}, "mesecons_pressureplates:pressure_plate_stone_off") + local pplates_remove = 5 + for p=1, #pplates do + if pplates_remove > 0 and pr:next(1, 100) >= 50 then + -- Remove plate + minetest.remove_node(pplates[p]) + pplates_remove = pplates_remove - 1 + else + -- Initialize plate + minetest.registered_nodes["mesecons_pressureplates:pressure_plate_stone_off"].on_construct(pplates[p]) + end + end +end + +local function place(pos, rotation, pr) + local pos_below = {x = pos.x, y = pos.y - 1, z = pos.z} + local pos_temple = {x = pos.x - 10, y = pos.y - 12, z = pos.z - 10} + local node_below = minetest.get_node(pos_below) + local nn = node_below.name + if string.find(nn, "red") then + mcl_structures.place_schematic({pos = pos_temple, schematic = red_temple_schematic, pr = pr, on_placed = on_placed}) + else + mcl_structures.place_schematic({pos = pos_temple, schematic = temple_schematic, pr = pr, on_placed = on_placed}) + end +end + +local function get_place_rank(pos) + local x, y, z = pos.x, pos.y - 1, pos.z + local p1 = {x = x - 8, y = y, z = z - 8} + local p2 = {x = x + 8, y = y, z = z + 8} + local best_pos_list_surface = minetest.find_nodes_in_area(p1, p2, node_list, false) + local other_pos_list_surface = minetest.find_nodes_in_area(p1, p2, "group:opaque", false) + p1 = {x = x - 4, y = y - 7, z = z - 4} + p2 = {x = x + 4, y = y - 3, z = z + 4} + local best_pos_list_underground = minetest.find_nodes_in_area(p1, p2, node_list, false) + local other_pos_list_underground = minetest.find_nodes_in_area(p1, p2, "group:opaque", false) + return 10 * (#best_pos_list_surface) + 2 * (#other_pos_list_surface) + 5 * (#best_pos_list_underground) + #other_pos_list_underground +end + +mcl_structures.register_structure({ + name = "desert_temple", + decoration = { + deco_type = "simple", + place_on = node_list, + flags = "all_floors", + fill_ratio = scanning_ratio, + y_min = 3, + y_max = mcl_mapgen.overworld.max, + height = 1, + biomes = not mcl_mapgen.v6 and { + "ColdTaiga_beach", + "ColdTaiga_beach_water", + "Desert", + "Desert_ocean", + "ExtremeHills_beach", + "FlowerForest_beach", + "Forest_beach", + "MesaBryce_sandlevel", + "MesaPlateauF_sandlevel", + "MesaPlateauFM_sandlevel", + "Savanna", + "Savanna_beach", + "StoneBeach", + "StoneBeach_ocean", + "Taiga_beach", + }, + }, + on_finished_chunk = function(minp, maxp, seed, vm_context, pos_list) + local pr = PseudoRandom(seed + random_offset) + local random_number = pr:next(1, chance_per_chunk) + local noise = mcl_structures_get_perlin_noise_level(minp) * noise_multiplier + if (random_number + noise) < struct_threshold then return end + local pos = pos_list[1] + if #pos_list > 1 then + local count = get_place_rank(pos) + for i = 2, #pos_list do + local pos_i = pos_list[i] + local count_i = get_place_rank(pos_i) + if count_i > count then + count = count_i + pos = pos_i + end + end + end + place(pos, nil, pr) + end, + place_function = place, +}) diff --git a/mods/MAPGEN/mcl_structures/desert_well.lua b/mods/MAPGEN/mcl_structures/desert_well.lua new file mode 100644 index 000000000..af57c8183 --- /dev/null +++ b/mods/MAPGEN/mcl_structures/desert_well.lua @@ -0,0 +1,93 @@ +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +local chance_per_chunk = 60 +local noise_multiplier = 1 +local random_offset = 999 +local scanning_ratio = 0.00001 +local struct_threshold = chance_per_chunk - 1 + +local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level + +local node_list = {"mcl_core:sand", "mcl_core:sandstone", "mcl_core:redsand", "mcl_colorblocks:hardened_clay_orange"} + +local schematic_file = modpath .. "/schematics/mcl_structures_desert_well.mts" + +local well_schematic_lua = minetest.serialize_schematic(schematic_file, "lua", {lua_use_comments = false, lua_num_indent_spaces = 0}) .. " return schematic" +local well_schematic = loadstring(well_schematic_lua)() + +local red_well_schematic_lua = minetest.serialize_schematic(schematic_file, "lua", {lua_use_comments = false, lua_num_indent_spaces = 0}) .. " return schematic" +red_well_schematic_lua = red_well_schematic_lua:gsub("mcl_core:sand", "mcl_core:redsand") +red_well_schematic_lua = red_well_schematic_lua:gsub("mcl_stairs:slab_sandstone", "mcl_stairs:slab_redsandstone") +local red_well_schematic = loadstring(red_well_schematic_lua)() + +local function place(pos, rotation, pr) + local pos_below = {x = pos.x, y = pos.y - 1, z = pos.z} + local pos_well = {x = pos.x, y = pos.y - 2, z = pos.z} + local node_below = minetest.get_node(pos_below) + local nn = node_below.name + if string.find(nn, "red") then + mcl_structures.place_schematic({pos = pos_well, rotaton = rotation, schematic = red_well_schematic, pr = pr}) + else + mcl_structures.place_schematic({pos = pos_well, rotaton = rotation, schematic = well_schematic, pr = pr}) + end +end + +local function get_place_rank(pos) + local x, y, z = pos.x, pos.y - 1, pos.z + local p1 = {x = x , y = y, z = z } + local p2 = {x = x + 5, y = y, z = z + 5} + local post_pos_list_surface = #minetest.find_nodes_in_area(p1, p2, node_list, false) + local other_pos_list_surface = #minetest.find_nodes_in_area(p1, p2, "group:opaque", false) + return post_pos_list_surface * 5 + other_pos_list_surface +end + +mcl_structures.register_structure({ + name = "desert_well", + decoration = { + deco_type = "simple", + place_on = node_list, + flags = "all_floors", + fill_ratio = scanning_ratio, + y_min = -5, + y_max = mcl_mapgen.overworld.max, + height = 1, + biomes = not mcl_mapgen.v6 and { + "ColdTaiga_beach", + "ColdTaiga_beach_water", + "Desert", + "Desert_ocean", + "ExtremeHills_beach", + "FlowerForest_beach", + "Forest_beach", + "MesaBryce_sandlevel", + "MesaPlateauF_sandlevel", + "MesaPlateauFM_sandlevel", + "Savanna", + "Savanna_beach", + "StoneBeach", + "StoneBeach_ocean", + "Taiga_beach", + }, + }, + on_finished_chunk = function(minp, maxp, seed, vm_context, pos_list) + local pr = PseudoRandom(seed + random_offset) + local random_number = pr:next(1, chance_per_chunk) + local noise = mcl_structures_get_perlin_noise_level(minp) * noise_multiplier + if (random_number + noise) < struct_threshold then return end + local pos = pos_list[1] + if #pos_list > 1 then + local count = get_place_rank(pos) + for i = 2, #pos_list do + local pos_i = pos_list[i] + local count_i = get_place_rank(pos_i) + if count_i > count then + count = count_i + pos = pos_i + end + end + end + place(pos, nil, pr) + end, + place_function = place, +}) diff --git a/mods/MAPGEN/mcl_structures/end_exit_portal.lua b/mods/MAPGEN/mcl_structures/end_exit_portal.lua new file mode 100644 index 000000000..a0a171ee7 --- /dev/null +++ b/mods/MAPGEN/mcl_structures/end_exit_portal.lua @@ -0,0 +1,52 @@ +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +local END_EXIT_PORTAL_POS_X = -3 +local END_EXIT_PORTAL_POS_Y = -27003 +local END_EXIT_PORTAL_POS_Z = -3 +local p0 = { + x = END_EXIT_PORTAL_POS_X, + y = END_EXIT_PORTAL_POS_Y, + z = END_EXIT_PORTAL_POS_Z, +} + +local schematic = modpath .. "/schematics/mcl_structures_end_exit_portal.mts" + +local function place(pos, rotation, pr) + mcl_structures.place_schematic({pos = pos, schematic = schematic, rotation = rotation, pr = pr}) +end + +mcl_mapgen.register_mapgen(function(minp, maxp, seed, vm_context) + local minp = minp + local y1 = minp.y + if y1 > END_EXIT_PORTAL_POS_Y then return end + local maxp = maxp + local y2 = maxp.y + if y2 < END_EXIT_PORTAL_POS_Y then return end + if minp.x > END_EXIT_PORTAL_POS_X then return end + if maxp.x < END_EXIT_PORTAL_POS_X then return end + if minp.z > END_EXIT_PORTAL_POS_Z then return end + if maxp.z < END_EXIT_PORTAL_POS_Z then return end + + local p = table.copy(p0) + + for y = y2, y1, -1 do + p.y = y + if minetest.get_node(p).name == "mcl_end:end_stone" then + place(p, "0", PseudoRandom(vm_context.chunkseed)) + return + end + end + + for y = y2, y1, -1 do + p.y = y + if minetest.get_node(p).name ~= "air" then + place(p, "0", PseudoRandom(vm_context.chunkseed)) + return + end + end + + place(p0, "0", PseudoRandom(vm_context.chunkseed)) +end) + +mcl_structures.register_structure({name = "end_exit_portal", place_function = place}) diff --git a/mods/MAPGEN/mcl_structures/fossil.lua b/mods/MAPGEN/mcl_structures/fossil.lua new file mode 100644 index 000000000..b26b7320a --- /dev/null +++ b/mods/MAPGEN/mcl_structures/fossil.lua @@ -0,0 +1,53 @@ +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +local chance_per_block = mcl_structures.from_16x16_to_block_inverted_chance(64) +local noise_multiplier = 2 +local random_offset = 5 +local struct_threshold = chance_per_block - 1 +local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level +local minetest_find_nodes_in_area = minetest.find_nodes_in_area +local min_y = mcl_worlds.layer_to_y(40) +local max_y = mcl_worlds.layer_to_y(49) +local fossils = { + "mcl_structures_fossil_skull_1.mts", -- 4×5×5 + "mcl_structures_fossil_skull_2.mts", -- 5×5×5 + "mcl_structures_fossil_skull_3.mts", -- 5×5×7 + "mcl_structures_fossil_skull_4.mts", -- 7×5×5 + "mcl_structures_fossil_spine_1.mts", -- 3×3×13 + "mcl_structures_fossil_spine_2.mts", -- 5×4×13 + "mcl_structures_fossil_spine_3.mts", -- 7×4×13 + "mcl_structures_fossil_spine_4.mts", -- 8×5×13 +} +local nodes_for_fossil = {"mcl_core:sandstone", "mcl_core:stone", "mcl_core:diorite", "mcl_core:andesite", "mcl_core:granite", "mcl_core:stone_with_coal", "mcl_core:dirt", "mcl_core:gravel"} + +function spawn_fossil(pos, rotation, pr, placer) + -- Generates one out of 8 possible fossil pieces + local def = { + pos = {x = pos.x, y = pos.y - 1, z = pos.z}, + schematic = modpath .. "/schematics/" .. fossils[pr:next(1, #fossils)], + rotation = rotation, + pr = pr, + } + mcl_structures.place_schematic(def) +end + +mcl_mapgen.register_mapgen_block(function(minp, maxp, seed) + local p1 = table.copy(minp) + local y1 = p1.y + if y1 > max_y then return end + local p2 = table.copy(maxp) + local y2 = p2.y + if y2 < min_y then return end + local pr = PseudoRandom(seed + random_offset) + local random_number = pr:next(1, chance_per_block) + p1.y = math.max(y1, min_y) + local noise = mcl_structures_get_perlin_noise_level(p1) * noise_multiplier + if (random_number + noise) < struct_threshold then return end + p2.y = math.min(y2, max_y) + local nodes = minetest_find_nodes_in_area(p1, p2, nodes_for_fossil, false) + if #nodes < 100 then return end + spawn_fossil(p1, nil, pr) +end, 1000) + +mcl_structures.register_structure({name = 'fossil', place_function = spawn_fossil}) diff --git a/mods/MAPGEN/mcl_structures/ice_spike_large.lua b/mods/MAPGEN/mcl_structures/ice_spike_large.lua new file mode 100644 index 000000000..b46f09465 --- /dev/null +++ b/mods/MAPGEN/mcl_structures/ice_spike_large.lua @@ -0,0 +1,66 @@ +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +local chance_per_chunk = 5 +local random_offset = 24435 +local struct_threshold = chance_per_chunk - 1 +local noise_params = { + offset = 0, + scale = 1, + spread = { + x = 1000, + y = 1000, + z = 1000, + }, + scale = 0.01, + seed = 29313, + octaves = 2, + persistence = 0.7, +} + +local node_list = {"mcl_core:snowblock", "mcl_core:dirt_with_grass_snow"} +local schematic = modpath.."/schematics/mcl_structures_ice_spike_large.mts" + +minetest_find_nodes_in_area = minetest.find_nodes_in_area + +local function place(pos, rotation, pr) + mcl_structures.place_schematic({pos = pos, schematic = schematic, rotation = rotation, pr = pr}) +end + +local function is_place_ok(p) + -- Check surface + local floor = {x=p.x+4, y=p.y-1, z=p.z+4} + local surface = #minetest_find_nodes_in_area({x=p.x+1,y=p.y-1,z=p.z+1}, floor, node_list, false) + if surface < 9 then return end + + -- Check for collision with spruce + local spruce_collisions = #minetest_find_nodes_in_area({x=p.x+1,y=p.y+2,z=p.z+1}, {x=p.x+4, y=p.y+6, z=p.z+4}, {"group:tree"}, false) + if spruce_collisions > 0 then return end + + return true +end + +local def = mcl_mapgen.v6 and { + decoration = { + deco_type = "simple", + place_on = node_list, + noise_params = noise_params, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, + height = 1, + }, + on_finished_chunk = mcl_mapgen.v6 and function(minp, maxp, seed, vm_context, pos_list) + local pr = PseudoRandom(seed + random_offset) + local random_number = pr:next(1, chance_per_chunk) + if random_number < struct_threshold then return end + for i = 1, #pos_list do + local pos = pos_list[i] + if is_place_ok(pos) then + place(pos, nil, pr) + end + end + end, +} or {} +def.name = "ice_spike_large" +def.place_function = place +mcl_structures.register_structure(def) diff --git a/mods/MAPGEN/mcl_structures/ice_spike_small.lua b/mods/MAPGEN/mcl_structures/ice_spike_small.lua new file mode 100644 index 000000000..801c5f66e --- /dev/null +++ b/mods/MAPGEN/mcl_structures/ice_spike_small.lua @@ -0,0 +1,65 @@ +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +local chance_per_chunk = 3 +local random_offset = 1264 +local struct_threshold = chance_per_chunk - 1 +local noise_params = { + offset = 0, + scale = 1, + spread = { + x = mcl_mapgen.CS, + y = mcl_mapgen.CS, + z = mcl_mapgen.CS, + }, + scale = 0.3, + seed = 32931, + octaves = 2, + persistence = 0.7, +} + +local node_list = {"mcl_core:snowblock", "mcl_core:dirt_with_grass_snow"} +local schematic = modpath.."/schematics/mcl_structures_ice_spike_small.mts" + +minetest_find_nodes_in_area = minetest.find_nodes_in_area + +local function place(pos, rotation, pr) + mcl_structures.place_schematic({pos = pos, schematic = schematic, rotation = rotation, pr = pr}) +end + +local function is_place_ok(p) + local floor = {x=p.x+6, y=p.y-1, z=p.z+6} + local surface = #minetest_find_nodes_in_area({x=p.x+1,y=p.y-1,z=p.z+1}, floor, node_list, false) + if surface < 25 then return end + + -- Check for collision with spruce + local spruce_collisions = #minetest_find_nodes_in_area({x=p.x+1,y=p.y+1,z=p.z+1}, {x=p.x+6, y=p.y+6, z=p.z+6}, {"group:tree"}, false) + if spruce_collisions > 0 then return end + + return true +end + +local def = mcl_mapgen.v6 and { + decoration = { + deco_type = "simple", + place_on = node_list, + noise_params = noise_params, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, + height = 1, + }, + on_finished_chunk = mcl_mapgen.v6 and function(minp, maxp, seed, vm_context, pos_list) + local pr = PseudoRandom(seed + random_offset) + local random_number = pr:next(1, chance_per_chunk) + if random_number < struct_threshold then return end + for i = 1, #pos_list do + local pos = pos_list[i] + if is_place_ok(pos) then + place(pos, nil, pr) + end + end + end, +} or {} +def.name = "ice_spike_small" +def.place_function = place +mcl_structures.register_structure(def) diff --git a/mods/MAPGEN/mcl_structures/igloo.lua b/mods/MAPGEN/mcl_structures/igloo.lua new file mode 100644 index 000000000..4f6c9574f --- /dev/null +++ b/mods/MAPGEN/mcl_structures/igloo.lua @@ -0,0 +1,195 @@ +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +-- local chance_per_chunk = mcl_structures.from_16x16_to_chunk_inverted_chance(4400) +local chance_per_chunk = 100 +local noise_multiplier = 1.4 +local random_offset = 555 +local struct_threshold = chance_per_chunk - 1 +local scanning_ratio = 0.0003 + +local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level + +local node_list = {"mcl_core:snowblock", "mcl_core:snow", "group:grass_block_snow"} + +local schematic_top = modpath.."/schematics/mcl_structures_igloo_top.mts" +local schematic_basement = modpath.."/schematics/mcl_structures_igloo_basement.mts" + +local brick = { + -- monster egg: + [false] = { + -- cracked: + [false] = "mcl_core:stonebrick", + [true ] = "mcl_core:stonebrickcracked", + }, + [true] = { + [false] = "mcl_monster_eggs:monster_egg_stonebrick", + [true ] = "mcl_monster_eggs:monster_egg_stonebrickcracked", + }, +} +local dirs = { + ["0"] = {x=-1, y=0, z= 0}, + ["90"] = {x= 0, y=0, z=-1}, + ["180"] = {x= 1, y=0, z= 0}, + ["270"] = {x= 0, y=0, z= 1}, +} +local tdirs = { + ["0"] = {x= 1, y=0, z= 0}, + ["90"] = {x= 0, y=0, z=-1}, + ["180"] = {x=-1, y=0, z= 0}, + ["270"] = {x= 0, y=0, z= 1} +} +local tposes = { + ["0"] = {x=7, y=-1, z=3}, + ["90"] = {x=3, y=-1, z=1}, + ["180"] = {x=1, y=-1, z=3}, + ["270"] = {x=3, y=-1, z=7}, +} +local chest_offsets = { + ["0"] = {x=5, y=1, z=5}, + ["90"] = {x=5, y=1, z=3}, + ["180"] = {x=3, y=1, z=1}, + ["270"] = {x=1, y=1, z=5}, +} + +local function on_placed(pos, rotation, pr, size) + local chest_offset = chest_offsets[rotation] + if not chest_offset then return end + local lootitems = mcl_loot.get_multi_loot({ + { + stacks_min = 1, + stacks_max = 1, + items = { + { itemstring = "mcl_core:apple_gold", weight = 1 }, + } + }, + { + stacks_min = 2, + stacks_max = 8, + items = { + { itemstring = "mcl_core:coal_lump", weight = 15, amount_min = 1, amount_max = 4 }, + { itemstring = "mcl_core:apple", weight = 15, amount_min = 1, amount_max = 3 }, + { itemstring = "mcl_farming:wheat_item", weight = 10, amount_min = 2, amount_max = 3 }, + { itemstring = "mcl_core:gold_nugget", weight = 10, amount_min = 1, amount_max = 3 }, + { itemstring = "mcl_mobitems:rotten_flesh", weight = 10 }, + { itemstring = "mcl_tools:axe_stone", weight = 2 }, + { itemstring = "mcl_core:emerald", weight = 1 }, + } + }}, pr) + + local chest_pos = vector.add(pos, chest_offset) + mcl_structures.init_node_construct(chest_pos) + local meta = minetest.get_meta(chest_pos) + local inv = meta:get_inventory() + mcl_loot.fill_inventory(inv, "main", lootitems, pr) +end + +local function on_placed_top(p1, rotation, pr, size) + local y = p1.y + 1 + local pos = {x = p1.x, y = y, z = p1.z} + local dim = mcl_mapgen[mcl_worlds.pos_to_dimension(pos)] + local bottom_of_dimension = (dim and dim.min or mcl_mapgen.EDGE_MIN) + 10 + local bottom_of_chunk = mcl_mapgen.get_chunk_beginning(y) + local buffer = y - math.max(bottom_of_chunk, bottom_of_dimension) + if buffer < 20 then return end + + local depth = pr:next(19, buffer) + local bpos = {x=pos.x, y=pos.y-depth, z=pos.z} + local dir = dirs[rotation] + if not dir then return end + local tdir = tdirs[rotation] + + -- Trapdoor position + local tpos = vector.add(pos, tposes[rotation]) + local ladder_param2 = minetest.dir_to_wallmounted(tdir) + + -- Check how deep we can actuall dig + local real_depth = 0 + for y = 1, depth - 5 do + local node = minetest.get_node({x=tpos.x,y=tpos.y-y,z=tpos.z}) + local def = minetest.registered_nodes[node.name] + if (not def) or (not def.walkable) or (def.liquidtype ~= "none") then + bpos.y = tpos.y-y+1 + break + end + real_depth = real_depth + 1 + end + if real_depth < 6 then return end + + -- Generate ladder to basement + for y=1, real_depth-1 do + minetest.set_node({x=tpos.x-1,y=tpos.y-y,z=tpos.z }, {name = brick[pr:next(1, 10) == 1][pr:next(1, 3) == 1]}) + minetest.set_node({x=tpos.x+1,y=tpos.y-y,z=tpos.z }, {name = brick[pr:next(1, 10) == 1][pr:next(1, 3) == 1]}) + minetest.set_node({x=tpos.x ,y=tpos.y-y,z=tpos.z-1}, {name = brick[pr:next(1, 10) == 1][pr:next(1, 3) == 1]}) + minetest.set_node({x=tpos.x ,y=tpos.y-y,z=tpos.z+1}, {name = brick[pr:next(1, 10) == 1][pr:next(1, 3) == 1]}) + minetest.set_node({x=tpos.x ,y=tpos.y-y,z=tpos.z }, {name="mcl_core:ladder", param2=ladder_param2}) + end + + -- Place basement + local def = { + pos = bpos, + schematic = schematic_basement, + rotation = rotation, + pr = pr, + on_placed = on_placed, + } + mcl_structures.place_schematic(def) + + minetest.after(5, function(tpos, dir) + minetest.swap_node(tpos, {name="mcl_doors:trapdoor", param2=20+minetest.dir_to_facedir(dir)}) -- TODO: more reliable param2 + end, tpos, dir) +end + +local function place(pos, rotation, pr) + local def = { + pos = {x = pos.x, y = pos.y - 1, z = pos.z}, + schematic = schematic_top, + rotation = rotation or tostring(pr:next(0,3)*90), + pr = pr, + on_placed = on_placed_top, + } + -- FIXME: This spawns bookshelf instead of furnace. Fix this! + -- Furnace does not work atm because apparently meta is not set. :-( + mcl_structures.place_schematic(def) +end + +local function get_place_rank(pos) + local x, y, z = pos.x, pos.y, pos.z + local p1 = {x = x , y = y, z = z } + local p2 = {x = x + 9, y = y, z = z + 9} + local best_pos_list_surface = #minetest.find_nodes_in_area(p1, p2, node_list, false) + local other_pos_list_surface = #minetest.find_nodes_in_area(p1, p2, "group:opaque", false) + return 10 * (best_pos_list_surface) + other_pos_list_surface - 640 +end + +mcl_structures.register_structure({ + name = "igloo", + decoration = { + deco_type = "simple", + place_on = node_list, + flags = "all_floors", + fill_ratio = scanning_ratio, + y_min = -33, + y_max = mcl_mapgen.overworld.max, + height = 1, + }, + on_finished_chunk = function(minp, maxp, seed, vm_context, pos_list) + local pr = PseudoRandom(seed + random_offset) + local random_number = pr:next(1, chance_per_chunk) + local noise = mcl_structures_get_perlin_noise_level(minp) * noise_multiplier + if (random_number + noise) < struct_threshold then return end + local pos + local count = -1 + for i = 1, #pos_list do + local pos_i = vector.subtract(pos_list[i], {x = 4, y = 1, z = 4}) + local count_i = get_place_rank(pos_i) + if count_i > count then + count = count_i + pos = pos_i + end + end + if count < 0 then return end + place(pos, nil, pr) + end, + place_function = place, +}) diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index ef5fa8cd2..64f6db937 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -2,46 +2,309 @@ local modname = minetest.get_current_modname() local S = minetest.get_translator(modname) local modpath = minetest.get_modpath(modname) -mcl_structures = {} +local name_prefix = "mcl_structures:" +mcl_structures = {} local rotations = { "0", "90", "180", "270" } +local registered_structures = {} +local use_process_mapgen_block_lvm = false +local use_process_mapgen_chunk = false +local on_finished_block_callbacks = {} +local on_finished_chunk_callbacks = {} -local function ecb_place(blockpos, action, calls_remaining, param) - if calls_remaining >= 1 then return end - minetest.place_schematic(param.pos, param.schematic, param.rotation, param.replacements, param.force_placement, param.flags) - if param.after_placement_callback and param.p1 and param.p2 then - param.after_placement_callback(param.p1, param.p2, param.size, param.rotation, param.pr, param.callback_param) +local noise_params = { + offset = 0, + scale = 1, + spread = { + x = mcl_mapgen.CS_NODES, + y = mcl_mapgen.CS_NODES, + z = mcl_mapgen.CS_NODES, + }, + seed = 329, + octaves = 1, + persistence = 0.6, +} + +local perlin_noise +local get_perlin_noise_level = function(minp) + perlin_noise = perlin_noise or minetest.get_perlin(noise_params) + return perlin_noise:get_3d(minp) +end +mcl_structures.get_perlin_noise_level = get_perlin_noise_level + +local spawnstruct_hint = S("Use /help spawnstruct to see a list of avaiable types.") + +local function dir_to_rotation(dir) + local ax, az = math.abs(dir.x), math.abs(dir.z) + if ax > az then + if dir.x < 0 then + return "270" + end + return "90" + end + if dir.z < 0 then + return "180" + end + return "0" +end + +local function spawnstruct_function(name, param) + local player = minetest.get_player_by_name(name) + if not player then return end + if param == "" then + minetest.chat_send_player(name, S("Error: No structure type given. Please use “/spawnstruct ”.")) + minetest.chat_send_player(name, spawnstruct_hint) + return + end + local struct = registered_structures[param] + if not struct then + struct = registered_structures[name_prefix .. param] + end + if not struct then + minetest.chat_send_player(name, S("Error: Unknown structure type. Please use “/spawnstruct ”.")) + minetest.chat_send_player(name, spawnstruct_hint) + return + end + local place = struct.place_function + if not place then return end + + local pos = player:get_pos() + if not pos then return end + local pr = PseudoRandom(math.floor(pos.x * 333 + pos.y * 19 - pos.z + 4)) + pos = vector.round(pos) + local dir = minetest.yaw_to_dir(player:get_look_horizontal()) + local rot = dir_to_rotation(dir) + place(pos, rot, pr, player) + minetest.chat_send_player(name, S("Structure placed.")) +end + +local function update_spawnstruct_chatcommand() + local spawnstruct_params = "" + for _, registered_structure in pairs(registered_structures) do + if spawnstruct_params ~= "" then + spawnstruct_params = spawnstruct_params .. " | " + end + spawnstruct_params = spawnstruct_params .. registered_structure.short_name + end + local def = { + params = spawnstruct_params, + description = S("Generate a pre-defined structure near your position."), + privs = {debug = true}, + func = spawnstruct_function, + } + local registered_chatcommands = minetest.registered_chatcommands + if registered_chatcommands["spawnstruct"] then + minetest.override_chatcommand("spawnstruct", def) + else + minetest.register_chatcommand("spawnstruct", def) end end -function mcl_structures.place_schematic(pos, schematic, rotation, replacements, force_placement, flags, after_placement_callback, pr, callback_param) - local s = loadstring(minetest.serialize_schematic(schematic, "lua", {lua_use_comments = false, lua_num_indent_spaces = 0}) .. " return schematic")() - if s and s.size then - local x, z = s.size.x, s.size.z - if rotation then - if rotation == "random" and pr then - rotation = rotations[pr:next(1,#rotations)] - end - if rotation == "random" then - x = math.max(x, z) - z = x - elseif rotation == "90" or rotation == "270" then - x, z = z, x +function process_mapgen_block_lvm(vm_context) + local nodes = minetest.find_nodes_in_area(vm_context.minp, vm_context.maxp, {"group:struct"}, true) + for node_name, pos_list in pairs(nodes) do + local lvm_callback = on_finished_block_callbacks[node_name] + if lvm_callback then + lvm_callback(vm_context, pos_list) + end + end +end + +function process_mapgen_chunk(minp, maxp, seed, vm_context) + local nodes = minetest.find_nodes_in_area(minp, maxp, {"group:struct"}, true) + for node_name, pos_list in pairs(nodes) do + local chunk_callback = on_finished_chunk_callbacks[node_name] + if chunk_callback then + chunk_callback(minp, maxp, seed, vm_context, pos_list) + end + end + for node_name, pos_list in pairs(nodes) do + for _, pos in pairs(pos_list) do + local node = minetest.get_node(pos) + if string.sub(node.name, 1, 15) == 'mcl_structures:' then + minetest.swap_node(pos, {name = 'air'}) end end - local p1 = {x=pos.x , y=pos.y , z=pos.z } - local p2 = {x=pos.x+x-1, y=pos.y+s.size.y-1, z=pos.z+z-1} - minetest.log("verbose", "[mcl_structures] size=" ..minetest.pos_to_string(s.size) .. ", rotation=" .. tostring(rotation) .. ", emerge from "..minetest.pos_to_string(p1) .. " to " .. minetest.pos_to_string(p2)) - local param = {pos=vector.new(pos), schematic=s, rotation=rotation, replacements=replacements, force_placement=force_placement, flags=flags, p1=p1, p2=p2, after_placement_callback = after_placement_callback, size=vector.new(s.size), pr=pr, callback_param=callback_param} - minetest.emerge_area(p1, p2, ecb_place, param) end end +-------------------------------------------------------------------------------------- +-- mcl_structures.register_structure(struct_def) +-- struct_def: +-- name - name, like 'desert_temple' +-- decoration - decoration definition, to use as structure seed (thanks cora for the idea) +-- on_finished_block - callback, if needed, to use with decorations: funcion(vm_context, pos_list) +-- on_finished_chunk - next callback if needed: funcion(minp, maxp, seed, vm_context, pos_list) +-- place_function - callback to place schematic by /spawnstruct debug command: function(pos, rotation, pr, placer) +-- on_placed - useful when you want to process the area after placement: function(pos, rotation, pr, size) +function mcl_structures.register_structure(def) + local short_name = def.name + local name = "mcl_structures:" .. short_name + local decoration = def.decoration + local on_finished_block = def.on_finished_block + local on_finished_chunk = def.on_finished_chunk + local place_function = def.place_function + if not name then + minetest.log('warning', 'Structure name is not passed for registration - ignoring') + return + end + if registered_structures[name] then + minetest.log('warning', 'Structure '..name..' is already registered - owerwriting') + end + local decoration_id + if decoration then + minetest.register_node(':' .. name, { + drawtype = "airlike", + sunlight_propagates = true, + pointable = false, + walkable = false, + diggable = false, + buildable_to = true, + groups = { + struct = 1, + not_in_creative_inventory = 1, + }, + }) + decoration_id = minetest.register_decoration({ + deco_type = decoration.deco_type, + place_on = decoration.place_on, + sidelen = decoration.sidelen, + fill_ratio = decoration.fill_ratio, + noise_params = decoration.noise_params, + biomes = decoration.biomes, + y_min = decoration.y_min, + y_max = decoration.y_max, + spawn_by = decoration.spawn_by, + num_spawn_by = decoration.num_spawn_by, + flags = decoration.flags, + decoration = name, + height = decoration.height, + height_max = decoration.height_max, + param2 = decoration.param2, + param2_max = decoration.param2_max, + place_offset_y = decoration.place_offset_y, + schematic = decoration.schematic, + replacements = decoration.replacements, + flags = decoration.flags, + rotation = decoration.rotation, + }) + end + registered_structures[name] = { + place_function = place_function, + on_finished_block = on_finished_block, + on_finished_chunk = on_finished_chunk, + decoration_id = decoration_id, + short_name = short_name, + } + update_spawnstruct_chatcommand() + if on_finished_block then + on_finished_block_callbacks[name] = on_finished_block + if not use_process_mapgen_block_lvm then + use_process_mapgen_block_lvm = true + mcl_mapgen.register_mapgen_block_lvm(process_mapgen_block_lvm, mcl_mapgen.order.BUILDINGS) + end + end + if on_finished_chunk then + on_finished_chunk_callbacks[name] = on_finished_chunk + if not use_process_mapgen_chunk then + use_process_mapgen_chunk = true + mcl_mapgen.register_mapgen(process_mapgen_chunk, mcl_mapgen.order.BUILDINGS) + end + end +end + +-- It doesN'T remove registered node and decoration! +function mcl_structures.unregister_structure(name) + if not registered_structures[name] then + minetest.log('warning','Structure '..name..' is not registered - skipping') + return + end + registered_structures[name] = nil +end + +local function ecb_place(blockpos, action, calls_remaining, param) + if calls_remaining >= 1 then return end + local pos = param.pos + local rotation = param.rotation + minetest.place_schematic(pos, param.schematic, rotation, param.replacements, param.force_placement, param.flags) + local on_placed = param.on_placed + if not on_placed then + return + end + on_placed(pos, rotation, param.pr, param.size) +end + +function mcl_structures.place_schematic(def) + local pos = def.pos + local schematic = def.schematic + local rotation = def.rotation + local pr = def.pr + local on_placed = def.on_placed -- on_placed(pos, rotation, pr, size) + local emerge = def.emerge + if not pos then + minetest.log('warning', '[mcl_structures] No pos. specified to place schematic') + return + end + if not schematic then + minetest.log('warning', '[mcl_structures] No schematic specified to place at ' .. minetest.pos_to_string(pos)) + return + end + if not rotation or rotation == 'random' then + if pr then + rotation = rotations[pr:next(1,#rotations)] + else + rotation = rotations[math.random(1,#rotations)] + end + end + + if not emerge and not on_placed then + minetest.place_schematic(pos, schematic, rotation, def.replacements, def.force_placement, def.flags) + return + end + + local serialized_schematic = minetest.serialize_schematic(schematic, "lua", {lua_use_comments = false, lua_num_indent_spaces = 0}) .. " return schematic" + local loaded_schematic = loadstring(serialized_schematic)() + if not loaded_schematic then + minetest.log('warning', '[mcl_structures] Schematic ' .. schematic .. ' load serialized string problem at ' .. minetest.pos_to_string(pos)) + return + end + local size = loaded_schematic.size + if not size then + minetest.log('warning', '[mcl_structures] Schematic ' .. schematic .. ' has no size at ' .. minetest.pos_to_string(pos)) + return + end + local size_x, size_y, size_z = size.x, size.y, size.z + if rotation == "90" or rotation == "270" then + size_x, size_z = size_z, size_x + end + local x, y, z = pos.x, pos.y, pos.z + local p1 = {x = x, y = y, z = z} + local p2 = {x = x + size_x - 1, y = y + size_y - 1, z = size_z - 1} + local ecb_param = { + pos = vector.new(pos), + schematic = loaded_schematic, + rotation = rotation, + replacements = replacements, + force_placement = force_placement, + flags = flags, + size = vector.new(size), + pr = pr, + on_placed = on_placed, + } + if not emerge then + ecb_place(p1, nil, 0, ecb_param) + return + end + minetest.log("verbose", "[mcl_structures] Emerge area " .. minetest.pos_to_string(p1) .. " - " .. minetest.pos_to_string(p2) + .. " of size " ..minetest.pos_to_string(size) .. " to place " .. schematic .. ", rotation " .. tostring(rotation)) + minetest.emerge_area(p1, p2, ecb_place, ecb_param) +end + function mcl_structures.get_struct(file) local localfile = modpath.."/schematics/"..file local file, errorload = io.open(localfile, "rb") @@ -58,7 +321,7 @@ end -- Call on_construct on pos. -- Useful to init chests from formspec. -local function init_node_construct(pos) +function mcl_structures.init_node_construct(pos) local node = minetest.get_node(pos) local def = minetest.registered_nodes[node.name] if def and def.on_construct then @@ -74,22 +337,10 @@ function mcl_structures.call_struct(pos, struct_style, rotation, pr, callback) if not rotation then rotation = "random" end - if struct_style == "desert_temple" then - return mcl_structures.generate_desert_temple(pos, rotation, pr) - elseif struct_style == "desert_well" then - return mcl_structures.generate_desert_well(pos, rotation) - elseif struct_style == "igloo" then - return mcl_structures.generate_igloo(pos, rotation, pr) - elseif struct_style == "witch_hut" then + if struct_style == "witch_hut" then return mcl_structures.generate_witch_hut(pos, rotation) - elseif struct_style == "ice_spike_small" then - return mcl_structures.generate_ice_spike_small(pos, rotation) - elseif struct_style == "ice_spike_large" then - return mcl_structures.generate_ice_spike_large(pos, rotation) elseif struct_style == "boulder" then return mcl_structures.generate_boulder(pos, rotation, pr) - elseif struct_style == "fossil" then - return mcl_structures.generate_fossil(pos, rotation, pr) elseif struct_style == "end_exit_portal" then return mcl_structures.generate_end_exit_portal(pos, rotation, pr, callback) elseif struct_style == "end_exit_portal_open" then @@ -119,170 +370,6 @@ function mcl_structures.generate_end_portal(pos, rotation, pr) end end -function mcl_structures.generate_desert_well(pos, rot) - local newpos = {x=pos.x,y=pos.y-2,z=pos.z} - local path = modpath.."/schematics/mcl_structures_desert_well.mts" - return mcl_structures.place_schematic(newpos, path, rot or "0", nil, true) -end - -function mcl_structures.generate_igloo(pos, rotation, pr) - -- Place igloo - local success, rotation = mcl_structures.generate_igloo_top(pos, pr) - -- Place igloo basement with 50% chance - local r = pr:next(1,2) - if r == 1 then - -- Select basement depth - local dim = mcl_worlds.pos_to_dimension(pos) - --local buffer = pos.y - (mcl_vars.mg_lava_overworld_max + 10) - local buffer - if dim == "nether" then - buffer = pos.y - (mcl_vars.mg_lava_nether_max + 10) - elseif dim == "end" then - buffer = pos.y - (mcl_vars.mg_end_min + 1) - elseif dim == "overworld" then - buffer = pos.y - (mcl_vars.mg_lava_overworld_max + 10) - else - return success - end - if buffer <= 19 then - return success - end - local depth = pr:next(19, buffer) - local bpos = {x=pos.x, y=pos.y-depth, z=pos.z} - -- trapdoor position - local tpos - local dir, tdir - if rotation == "0" then - dir = {x=-1, y=0, z=0} - tdir = {x=1, y=0, z=0} - tpos = {x=pos.x+7, y=pos.y-1, z=pos.z+3} - elseif rotation == "90" then - dir = {x=0, y=0, z=-1} - tdir = {x=0, y=0, z=-1} - tpos = {x=pos.x+3, y=pos.y-1, z=pos.z+1} - elseif rotation == "180" then - dir = {x=1, y=0, z=0} - tdir = {x=-1, y=0, z=0} - tpos = {x=pos.x+1, y=pos.y-1, z=pos.z+3} - elseif rotation == "270" then - dir = {x=0, y=0, z=1} - tdir = {x=0, y=0, z=1} - tpos = {x=pos.x+3, y=pos.y-1, z=pos.z+7} - else - return success - end - local function set_brick(pos) - local c = pr:next(1, 3) -- cracked chance - local m = pr:next(1, 10) -- chance for monster egg - local brick - if m == 1 then - if c == 1 then - brick = "mcl_monster_eggs:monster_egg_stonebrickcracked" - else - brick = "mcl_monster_eggs:monster_egg_stonebrick" - end - else - if c == 1 then - brick = "mcl_core:stonebrickcracked" - else - brick = "mcl_core:stonebrick" - end - end - minetest.set_node(pos, {name=brick}) - end - local ladder_param2 = minetest.dir_to_wallmounted(tdir) - local real_depth = 0 - -- Check how deep we can actuall dig - for y=1, depth-5 do - real_depth = real_depth + 1 - local node = minetest.get_node({x=tpos.x,y=tpos.y-y,z=tpos.z}) - local def = minetest.registered_nodes[node.name] - if (not def) or (not def.walkable) or (def.liquidtype ~= "none") or (not def.is_ground_content) then - bpos.y = tpos.y-y+1 - break - end - end - if real_depth <= 6 then - return success - end - -- Generate ladder to basement - for y=1, real_depth-1 do - set_brick({x=tpos.x-1,y=tpos.y-y,z=tpos.z }) - set_brick({x=tpos.x+1,y=tpos.y-y,z=tpos.z }) - set_brick({x=tpos.x ,y=tpos.y-y,z=tpos.z-1}) - set_brick({x=tpos.x ,y=tpos.y-y,z=tpos.z+1}) - minetest.set_node({x=tpos.x,y=tpos.y-y,z=tpos.z}, {name="mcl_core:ladder", param2=ladder_param2}) - end - -- Place basement - mcl_structures.generate_igloo_basement(bpos, rotation, pr) - -- Place hidden trapdoor - minetest.after(5, function(tpos, dir) - minetest.set_node(tpos, {name="mcl_doors:trapdoor", param2=20+minetest.dir_to_facedir(dir)}) -- TODO: more reliable param2 - end, tpos, dir) - end - return success -end - -function mcl_structures.generate_igloo_top(pos, pr) - -- FIXME: This spawns bookshelf instead of furnace. Fix this! - -- Furnace does ot work atm because apparently meta is not set. :-( - local newpos = {x=pos.x,y=pos.y-1,z=pos.z} - local path = modpath.."/schematics/mcl_structures_igloo_top.mts" - local rotation = tostring(pr:next(0,3)*90) - return mcl_structures.place_schematic(newpos, path, rotation, nil, true), rotation -end - -local function igloo_placement_callback(p1, p2, size, orientation, pr) - local chest_offset - if orientation == "0" then - chest_offset = {x=5, y=1, z=5} - elseif orientation == "90" then - chest_offset = {x=5, y=1, z=3} - elseif orientation == "180" then - chest_offset = {x=3, y=1, z=1} - elseif orientation == "270" then - chest_offset = {x=1, y=1, z=5} - else - return - end - --local size = {x=9,y=5,z=7} - local lootitems = mcl_loot.get_multi_loot({ - { - stacks_min = 1, - stacks_max = 1, - items = { - { itemstring = "mcl_core:apple_gold", weight = 1 }, - } - }, - { - stacks_min = 2, - stacks_max = 8, - items = { - { itemstring = "mcl_core:coal_lump", weight = 15, amount_min = 1, amount_max = 4 }, - { itemstring = "mcl_core:apple", weight = 15, amount_min = 1, amount_max = 3 }, - { itemstring = "mcl_farming:wheat_item", weight = 10, amount_min = 2, amount_max = 3 }, - { itemstring = "mcl_core:gold_nugget", weight = 10, amount_min = 1, amount_max = 3 }, - { itemstring = "mcl_mobitems:rotten_flesh", weight = 10 }, - { itemstring = "mcl_tools:axe_stone", weight = 2 }, - { itemstring = "mcl_core:emerald", weight = 1 }, - } - }}, pr) - - local chest_pos = vector.add(p1, chest_offset) - init_node_construct(chest_pos) - local meta = minetest.get_meta(chest_pos) - local inv = meta:get_inventory() - mcl_loot.fill_inventory(inv, "main", lootitems, pr) -end - -function mcl_structures.generate_igloo_basement(pos, orientation, pr) - -- TODO: Add brewing stand - -- TODO: Add monster eggs - -- TODO: Spawn villager and zombie villager - local path = modpath.."/schematics/mcl_structures_igloo_basement.mts" - mcl_structures.place_schematic(pos, path, orientation, nil, true, nil, igloo_placement_callback, pr) -end - function mcl_structures.generate_boulder(pos, rotation, pr) -- Choose between 2 boulder sizes (2×2×2 or 3×3×3) local r = pr:next(1, 10) @@ -302,7 +389,7 @@ local function hut_placement_callback(p1, p2, size, orientation, pr) if not p1 or not p2 then return end local legs = minetest.find_nodes_in_area(p1, p2, "mcl_core:tree") for i = 1, #legs do - while minetest.get_item_group(mcl_vars.get_node({x=legs[i].x, y=legs[i].y-1, z=legs[i].z}, true, 333333).name, "water") ~= 0 do + while minetest.get_item_group(mcl_mapgen.get_far_node({x=legs[i].x, y=legs[i].y-1, z=legs[i].z}, true, 333333).name, "water") ~= 0 do legs[i].y = legs[i].y - 1 minetest.swap_node(legs[i], {name = "mcl_core:tree", param2 = 2}) end @@ -314,34 +401,11 @@ function mcl_structures.generate_witch_hut(pos, rotation, pr) mcl_structures.place_schematic(pos, path, rotation, nil, true, nil, hut_placement_callback, pr) end -function mcl_structures.generate_ice_spike_small(pos, rotation) - local path = modpath.."/schematics/mcl_structures_ice_spike_small.mts" - return minetest.place_schematic(pos, path, rotation or "random", nil, false) -- don't serialize schematics for registered biome decorations, for MT 5.4.0 -end - function mcl_structures.generate_ice_spike_large(pos, rotation) local path = modpath.."/schematics/mcl_structures_ice_spike_large.mts" return minetest.place_schematic(pos, path, rotation or "random", nil, false) -- don't serialize schematics for registered biome decorations, for MT 5.4.0 end -function mcl_structures.generate_fossil(pos, rotation, pr) - -- Generates one out of 8 possible fossil pieces - local newpos = {x=pos.x,y=pos.y-1,z=pos.z} - local fossils = { - "mcl_structures_fossil_skull_1.mts", -- 4×5×5 - "mcl_structures_fossil_skull_2.mts", -- 5×5×5 - "mcl_structures_fossil_skull_3.mts", -- 5×5×7 - "mcl_structures_fossil_skull_4.mts", -- 7×5×5 - "mcl_structures_fossil_spine_1.mts", -- 3×3×13 - "mcl_structures_fossil_spine_2.mts", -- 5×4×13 - "mcl_structures_fossil_spine_3.mts", -- 7×4×13 - "mcl_structures_fossil_spine_4.mts", -- 8×5×13 - } - local r = pr:next(1, #fossils) - local path = modpath.."/schematics/"..fossils[r] - return mcl_structures.place_schematic(newpos, path, rotation or "random", nil, true) -end - function mcl_structures.generate_end_exit_portal(pos, rot, pr, callback) local path = modpath.."/schematics/mcl_structures_end_exit_portal.mts" return mcl_structures.place_schematic(pos, path, rot or "0", {["mcl_portals:portal_end"] = "air"}, true, nil, callback) @@ -357,277 +421,15 @@ function mcl_structures.generate_end_gateway_portal(pos, rot) return mcl_structures.place_schematic(pos, path, rot or "0", nil, true) end -local function shrine_placement_callback(p1, p2, size, rotation, pr) - -- Find and setup spawner with silverfish - local spawners = minetest.find_nodes_in_area(p1, p2, "mcl_mobspawners:spawner") - for s=1, #spawners do - --local meta = minetest.get_meta(spawners[s]) - mcl_mobspawners.setup_spawner(spawners[s], "mobs_mc:silverfish") - end +local chunk_square = mcl_mapgen.CS_NODES * mcl_mapgen.CS_NODES +local block_square = mcl_mapgen.BS * mcl_mapgen.BS - -- Shuffle stone brick types - local bricks = minetest.find_nodes_in_area(p1, p2, "mcl_core:stonebrick") - for b=1, #bricks do - local r_bricktype = pr:next(1, 100) - local r_infested = pr:next(1, 100) - local bricktype - if r_infested <= 5 then - if r_bricktype <= 30 then -- 30% - bricktype = "mcl_monster_eggs:monster_egg_stonebrickmossy" - elseif r_bricktype <= 50 then -- 20% - bricktype = "mcl_monster_eggs:monster_egg_stonebrickcracked" - else -- 50% - bricktype = "mcl_monster_eggs:monster_egg_stonebrick" - end - else - if r_bricktype <= 30 then -- 30% - bricktype = "mcl_core:stonebrickmossy" - elseif r_bricktype <= 50 then -- 20% - bricktype = "mcl_core:stonebrickcracked" - end - -- 50% stonebrick (no change necessary) - end - if bricktype then - minetest.set_node(bricks[b], { name = bricktype }) - end - end - - -- Also replace stairs - local stairs = minetest.find_nodes_in_area(p1, p2, {"mcl_stairs:stair_stonebrick", "mcl_stairs:stair_stonebrick_outer", "mcl_stairs:stair_stonebrick_inner"}) - for s=1, #stairs do - local stair = minetest.get_node(stairs[s]) - local r_type = pr:next(1, 100) - if r_type <= 30 then -- 30% mossy - if stair.name == "mcl_stairs:stair_stonebrick" then - stair.name = "mcl_stairs:stair_stonebrickmossy" - elseif stair.name == "mcl_stairs:stair_stonebrick_outer" then - stair.name = "mcl_stairs:stair_stonebrickmossy_outer" - elseif stair.name == "mcl_stairs:stair_stonebrick_inner" then - stair.name = "mcl_stairs:stair_stonebrickmossy_inner" - end - minetest.set_node(stairs[s], stair) - elseif r_type <= 50 then -- 20% cracky - if stair.name == "mcl_stairs:stair_stonebrick" then - stair.name = "mcl_stairs:stair_stonebrickcracked" - elseif stair.name == "mcl_stairs:stair_stonebrick_outer" then - stair.name = "mcl_stairs:stair_stonebrickcracked_outer" - elseif stair.name == "mcl_stairs:stair_stonebrick_inner" then - stair.name = "mcl_stairs:stair_stonebrickcracked_inner" - end - minetest.set_node(stairs[s], stair) - end - -- 50% no change - end - - -- Randomly add ender eyes into end portal frames, but never fill the entire frame - local frames = minetest.find_nodes_in_area(p1, p2, "mcl_portals:end_portal_frame") - local eyes = 0 - for f=1, #frames do - local r_eye = pr:next(1, 10) - if r_eye == 1 then - eyes = eyes + 1 - if eyes < #frames then - local frame_node = minetest.get_node(frames[f]) - frame_node.name = "mcl_portals:end_portal_frame_eye" - minetest.set_node(frames[f], frame_node) - end - end - end +function mcl_structures.from_16x16_to_chunk_inverted_chance(x) + return math.floor(x * 256 / chunk_square + 0.5) end -function mcl_structures.generate_end_portal_shrine(pos, rotation, pr) - local offset = {x=6, y=4, z=6} - --local size = {x=13, y=8, z=13} - local newpos = { x = pos.x - offset.x, y = pos.y, z = pos.z - offset.z } - - local path = modpath.."/schematics/mcl_structures_end_portal_room_simple.mts" - mcl_structures.place_schematic(newpos, path, rotation or "0", nil, true, nil, shrine_placement_callback, pr) +function mcl_structures.from_16x16_to_block_inverted_chance(x) + return math.floor(x * 256 / block_square + 0.5) end -local function temple_placement_callback(p1, p2, size, rotation, pr) - - -- Delete cacti leftovers: - local cactus_nodes = minetest.find_nodes_in_area_under_air(p1, p2, "mcl_core:cactus") - if cactus_nodes and #cactus_nodes > 0 then - for _, pos in pairs(cactus_nodes) do - local node_below = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}) - if node_below and node_below.name == "mcl_core:sandstone" then - minetest.swap_node(pos, {name="air"}) - end - end - end - - -- Find chests. - -- FIXME: Searching this large area just for the chets is not efficient. Need a better way to find the chests; - -- probably let's just infer it from newpos because the schematic always the same. - local chests = minetest.find_nodes_in_area(p1, p2, "mcl_chests:chest") - - -- Add desert temple loot into chests - for c=1, #chests do - local lootitems = mcl_loot.get_multi_loot({ - { - stacks_min = 2, - stacks_max = 4, - items = { - { itemstring = "mcl_mobitems:bone", weight = 25, amount_min = 4, amount_max=6 }, - { itemstring = "mcl_mobitems:rotten_flesh", weight = 25, amount_min = 3, amount_max=7 }, - { itemstring = "mcl_mobitems:spider_eye", weight = 25, amount_min = 1, amount_max=3 }, - { itemstring = "mcl_books:book", weight = 20, func = function(stack, pr) - mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) - end }, - { itemstring = "mcl_mobitems:saddle", weight = 20, }, - { itemstring = "mcl_core:apple_gold", weight = 20, }, - { itemstring = "mcl_core:gold_ingot", weight = 15, amount_min = 2, amount_max = 7 }, - { itemstring = "mcl_core:iron_ingot", weight = 15, amount_min = 1, amount_max = 5 }, - { itemstring = "mcl_core:emerald", weight = 15, amount_min = 1, amount_max = 3 }, - { itemstring = "", weight = 15, }, - { itemstring = "mobs_mc:iron_horse_armor", weight = 15, }, - { itemstring = "mobs_mc:gold_horse_armor", weight = 10, }, - { itemstring = "mobs_mc:diamond_horse_armor", weight = 5, }, - { itemstring = "mcl_core:diamond", weight = 5, amount_min = 1, amount_max = 3 }, - { itemstring = "mcl_core:apple_gold_enchanted", weight = 2, }, - } - }, - { - stacks_min = 4, - stacks_max = 4, - items = { - { itemstring = "mcl_mobitems:bone", weight = 10, amount_min = 1, amount_max = 8 }, - { itemstring = "mcl_mobitems:rotten_flesh", weight = 10, amount_min = 1, amount_max = 8 }, - { itemstring = "mcl_mobitems:gunpowder", weight = 10, amount_min = 1, amount_max = 8 }, - { itemstring = "mcl_core:sand", weight = 10, amount_min = 1, amount_max = 8 }, - { itemstring = "mcl_mobitems:string", weight = 10, amount_min = 1, amount_max = 8 }, - } - }}, pr) - init_node_construct(chests[c]) - local meta = minetest.get_meta(chests[c]) - local inv = meta:get_inventory() - mcl_loot.fill_inventory(inv, "main", lootitems, pr) - end - - -- Initialize pressure plates and randomly remove up to 5 plates - local pplates = minetest.find_nodes_in_area(p1, p2, "mesecons_pressureplates:pressure_plate_stone_off") - local pplates_remove = 5 - for p=1, #pplates do - if pplates_remove > 0 and pr:next(1, 100) >= 50 then - -- Remove plate - minetest.remove_node(pplates[p]) - pplates_remove = pplates_remove - 1 - else - -- Initialize plate - minetest.registered_nodes["mesecons_pressureplates:pressure_plate_stone_off"].on_construct(pplates[p]) - end - end -end - -function mcl_structures.generate_desert_temple(pos, rotation, pr) - -- No Generating for the temple ... Why using it ? No Change - local path = modpath.."/schematics/mcl_structures_desert_temple.mts" - local newpos = {x=pos.x,y=pos.y-12,z=pos.z} - --local size = {x=22, y=24, z=22} - if newpos == nil then - return - end - mcl_structures.place_schematic(newpos, path, rotation or "random", nil, true, nil, temple_placement_callback, pr) -end - -local registered_structures = {} - ---[[ Returns a table of structure of the specified type. -Currently the only valid parameter is "stronghold". -Format of return value: -{ - { pos = , generated= }, -- first structure - { pos = , generated= }, -- second structure - -- and so on -} - -TODO: Implement this function for all other structure types as well. -]] -function mcl_structures.get_registered_structures(structure_type) - if registered_structures[structure_type] then - return table.copy(registered_structures[structure_type]) - else - return {} - end -end - --- Register a structures table for the given type. The table format is the same as for --- mcl_structures.get_registered_structures. -function mcl_structures.register_structures(structure_type, structures) - registered_structures[structure_type] = structures -end - -local function dir_to_rotation(dir) - local ax, az = math.abs(dir.x), math.abs(dir.z) - if ax > az then - if dir.x < 0 then - return "270" - end - return "90" - end - if dir.z < 0 then - return "180" - end - return "0" -end - --- Debug command -minetest.register_chatcommand("spawnstruct", { - params = "desert_temple | desert_well | igloo | witch_hut | boulder | ice_spike_small | ice_spike_large | fossil | end_exit_portal | end_exit_portal_open | end_gateway_portal | end_portal_shrine | end_portal | nether_portal | dungeon", - description = S("Generate a pre-defined structure near your position."), - privs = {debug = true}, - func = function(name, param) - local player = minetest.get_player_by_name(name) - if not player then return end - local pos = player:get_pos() - if not pos then return end - pos = vector.round(pos) - local dir = minetest.yaw_to_dir(player:get_look_horizontal()) - local rot = dir_to_rotation(dir) - local pr = PseudoRandom(pos.x+pos.y+pos.z) - local errord = false - local message = S("Structure placed.") - if param == "desert_temple" then - mcl_structures.generate_desert_temple(pos, rot, pr) - elseif param == "desert_well" then - mcl_structures.generate_desert_well(pos, rot) - elseif param == "igloo" then - mcl_structures.generate_igloo(pos, rot, pr) - elseif param == "witch_hut" then - mcl_structures.generate_witch_hut(pos, rot, pr) - elseif param == "boulder" then - mcl_structures.generate_boulder(pos, rot, pr) - elseif param == "fossil" then - mcl_structures.generate_fossil(pos, rot, pr) - elseif param == "ice_spike_small" then - mcl_structures.generate_ice_spike_small(pos, rot, pr) - elseif param == "ice_spike_large" then - mcl_structures.generate_ice_spike_large(pos, rot, pr) - elseif param == "end_exit_portal" then - mcl_structures.generate_end_exit_portal(pos, rot, pr) - elseif param == "end_exit_portal_open" then - mcl_structures.generate_end_exit_portal_open(pos, rot, pr) - elseif param == "end_gateway_portal" then - mcl_structures.generate_end_gateway_portal(pos, rot, pr) - elseif param == "end_portal_shrine" then - mcl_structures.generate_end_portal_shrine(pos, rot, pr) - elseif param == "dungeon" and mcl_dungeons and mcl_dungeons.spawn_dungeon then - mcl_dungeons.spawn_dungeon(pos, rot, pr) - elseif param == "end_portal" then - mcl_structures.generate_end_portal(pos, rot, pr) - elseif param == "nether_portal" and mcl_portals and mcl_portals.spawn_nether_portal then - mcl_portals.spawn_nether_portal(pos, rot, pr, name) - elseif param == "" then - message = S("Error: No structure type given. Please use “/spawnstruct ”.") - errord = true - else - message = S("Error: Unknown structure type. Please use “/spawnstruct ”.") - errord = true - end - minetest.chat_send_player(name, message) - if errord then - minetest.chat_send_player(name, S("Use /help spawnstruct to see a list of avaiable types.")) - end - end -}) +dofile(modpath .. "/structures.lua") diff --git a/mods/MAPGEN/mcl_structures/jungle_temple.lua b/mods/MAPGEN/mcl_structures/jungle_temple.lua new file mode 100644 index 000000000..635f35670 --- /dev/null +++ b/mods/MAPGEN/mcl_structures/jungle_temple.lua @@ -0,0 +1,203 @@ +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +local chance_per_chunk = 9 +local noise_multiplier = 1.3 +local random_offset = 132 +local struct_threshold = chance_per_chunk - 1 +local scanning_ratio = 0.0003 + +local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level + +local node_list = {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:stone", "mcl_core:granite", "mcl_core:gravel", "mcl_core:diorite"} + +local schematic_file = modpath .. "/schematics/mcl_structures_jungle_temple.mts" + +local temple_schematic_lua = minetest.serialize_schematic(schematic_file, "lua", {lua_use_comments = false, lua_num_indent_spaces = 0}) .. " return schematic" +local temple_schematic = loadstring(temple_schematic_lua)() +local size = temple_schematic.size +local sx = size.x +local sy = size.y +local sz = size.z +local offset = vector.round(vector.divide(size, 2)) +offset.y = 5 + +local ox = offset.x +local oy = offset.y +local oz = offset.z +local corner_x = sx - 3 +local corner_z = sz - 3 +local air_offset_x = ox - 6 +local air_offset_z = oz - 6 + +local function is_air(pos) + local node = minetest.get_node(pos) + return node.name == "air" +end + +local stair_support_node = { + {name = "mcl_core:cobble"}, + {name = "mcl_core:mossycobble"}, + {name = "mcl_core:stonebrick"}, + {name = "mcl_core:stonebrickmossy"}, + {name = "mcl_core:stonebrickcracked"}, +} + +local function on_placed(p1, rotation, pr, size) + local p2 + if rotation == "90" or rotation == "270" then + p2 = {x = p1.x + sz - 1, y = p1.y + sy - 1, z = p1.z + sx - 1} + else + p2 = {x = p1.x + sx - 1, y = p1.y + sy - 1, z = p1.z + sz - 1} + end + + -- Support stairs + local y = p1.y + 5 + local bottom = mcl_mapgen.get_chunk_beginning(y) + local stair_list = minetest.find_nodes_in_area({x = p1.x, y = y, z = p1.z}, {x = p2.x, y = y, z = p2.z}, {"mcl_stairs:stair_cobble"}, false) + for i = 1, #stair_list do + local pos = stair_list[i] + pos.y = y - 1 + while is_air(pos) and pos.y > bottom do + minetest.swap_node(pos, stair_support_node[pr:next(1, #stair_support_node)]) + pos.y = pos.y - 1 + end + end + + -- Initialize some nodes + local chest_node = "mcl_chests:trapped_chest_small" + local lever_node = "mesecons_walllever:wall_lever_off" + local nodes = minetest.find_nodes_in_area(p1, {x = p2.x, y = p1.y + 5, z = p2.z}, {chest_node, lever_node}, true) + + local levers = nodes[lever_node] + for _, pos in pairs(levers) do + mcl_structures.init_node_construct(pos) + end + + -- Add loot into chests TODO: fix items + local chests = nodes[chest_node] + for c=1, #chests do + local lootitems = mcl_loot.get_multi_loot({ + { + stacks_min = 2, + stacks_max = 4, + items = { + { itemstring = "mcl_mobitems:bone", weight = 25, amount_min = 4, amount_max=6 }, + { itemstring = "mcl_mobitems:rotten_flesh", weight = 25, amount_min = 3, amount_max=7 }, + { itemstring = "mcl_mobitems:spider_eye", weight = 25, amount_min = 1, amount_max=3 }, + { itemstring = "mcl_books:book", weight = 20, func = function(stack, pr) + mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) + end }, + { itemstring = "mcl_mobitems:saddle", weight = 20, }, + { itemstring = "mcl_core:apple_gold", weight = 20, }, + { itemstring = "mcl_core:gold_ingot", weight = 15, amount_min = 2, amount_max = 7 }, + { itemstring = "mcl_core:iron_ingot", weight = 15, amount_min = 1, amount_max = 5 }, + { itemstring = "mcl_core:emerald", weight = 15, amount_min = 1, amount_max = 3 }, + { itemstring = "", weight = 15, }, + { itemstring = "mobs_mc:iron_horse_armor", weight = 15, }, + { itemstring = "mobs_mc:gold_horse_armor", weight = 10, }, + { itemstring = "mobs_mc:diamond_horse_armor", weight = 5, }, + { itemstring = "mcl_core:diamond", weight = 5, amount_min = 1, amount_max = 3 }, + { itemstring = "mcl_core:apple_gold_enchanted", weight = 2, }, + } + }, + { + stacks_min = 4, + stacks_max = 4, + items = { + { itemstring = "mcl_mobitems:bone", weight = 10, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_mobitems:rotten_flesh", weight = 10, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_mobitems:gunpowder", weight = 10, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_core:sand", weight = 10, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_mobitems:string", weight = 10, amount_min = 1, amount_max = 8 }, + } + }}, pr) + mcl_structures.init_node_construct(chests[c]) + local meta = minetest.get_meta(chests[c]) + local inv = meta:get_inventory() + mcl_loot.fill_inventory(inv, "main", lootitems, pr) + end +end + +local function place(pos, rotation, pr) + mcl_structures.place_schematic({pos = pos, schematic = temple_schematic, pr = pr, on_placed = on_placed}) +end + +local mcl_mapgen_clamp_to_chunk = mcl_mapgen.clamp_to_chunk +local function process_pos(pos) + return { + x = mcl_mapgen_clamp_to_chunk(pos.x - ox, sx), + y = mcl_mapgen_clamp_to_chunk(pos.y - oy, sy), + z = mcl_mapgen_clamp_to_chunk(pos.z - oz, sz), + } +end + +local function get_place_rank(pos) + local x1 = pos.x + 1 + local x2 = x1 + corner_x + local z1 = pos.z + 1 + local z2 = z1 + corner_z + local y2 = pos.y + 1 + local y1 = y2 - 2 + if is_air({x = x1, y = y1, z = z1}) then return -1 end + if is_air({x = x2, y = y1, z = z1}) then return -1 end + if is_air({x = x1, y = y1, z = z2}) then return -1 end + if is_air({x = x2, y = y1, z = z2}) then return -1 end + + local p1 = {x = x1 + air_offset_x, y = y2, z = z1 + air_offset_z} + local p2 = {x = x2 - air_offset_x, y = y2, z = z2 + air_offset_z} + local pos_counter_air = #minetest.find_nodes_in_area(p1, p2, {"air", "group:buildable_to", "group:deco_block"}, false) + local pos_counter_air = pos_counter_air - 2 * (#minetest.find_nodes_in_area(p1, p2, {"group:tree"}, false)) + + local p1 = {x = x1 + 1, y = y1, z = z1 + 1} + local p2 = {x = x2 - 1, y = y1, z = z2 - 1} + local pos_counter_ground = #minetest.find_nodes_in_area(p1, p2, node_list, false) + return pos_counter_ground + pos_counter_air +end + +mcl_structures.register_structure({ + name = "jungle_temple", + decoration = { + deco_type = "simple", + place_on = node_list, + flags = "all_floors", + fill_ratio = scanning_ratio, + y_min = -13, + y_max = mcl_mapgen.overworld.max, + height = 1, + biomes = + mcl_mapgen.v6 and { + "Jungle" + } or { + "Jungle", + "JungleEdge", + "JungleEdgeM", + "JungleEdgeM_ocean", + "JungleEdge_ocean", + "JungleM", + "JungleM_ocean", + "JungleM_shore", + "Jungle_ocean", + "Jungle_shore", + }, + }, + on_finished_chunk = function(minp, maxp, seed, vm_context, pos_list) + local pr = PseudoRandom(seed + random_offset) + local random_number = pr:next(1, chance_per_chunk) + local noise = mcl_structures_get_perlin_noise_level(minp) * noise_multiplier + if (random_number + noise) < struct_threshold then return end + local pos + local count = -1 + for i = 1, #pos_list do + local pos_i = process_pos(pos_list[i]) + local count_i = get_place_rank(pos_i) + if count_i > count then + count = count_i + pos = pos_i + end + end + if count < 0 then return end + place(pos, nil, pr) + end, + place_function = place, +}) diff --git a/mods/MAPGEN/mcl_structures/mod.conf b/mods/MAPGEN/mcl_structures/mod.conf index 3150c7cec..1e34960a8 100644 --- a/mods/MAPGEN/mcl_structures/mod.conf +++ b/mods/MAPGEN/mcl_structures/mod.conf @@ -1,4 +1,4 @@ name = mcl_structures -author = Wuzzy -description = Structures for MCL2 -depends = mcl_loot +author = Wuzzy, kay27, cora +description = Structures for MineClone 2/5 +depends = mcl_loot, mcl_mapgen, mcl_worlds diff --git a/mods/MAPGEN/mcl_structures/nice_jungle_temple.lua b/mods/MAPGEN/mcl_structures/nice_jungle_temple.lua new file mode 100644 index 000000000..dd8df05d3 --- /dev/null +++ b/mods/MAPGEN/mcl_structures/nice_jungle_temple.lua @@ -0,0 +1,209 @@ +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +local chance_per_chunk = 15 +local noise_multiplier = 1 +local random_offset = 133 +local struct_threshold = chance_per_chunk - 1 +local scanning_ratio = 0.00021 +local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level + +local node_list = {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:stone", "mcl_core:granite", "mcl_core:gravel", "mcl_core:diorite"} + +local schematic_file = modpath .. "/schematics/mcl_structures_nice_jungle_temple.mts" + +local temple_schematic_lua = minetest.serialize_schematic(schematic_file, "lua", {lua_use_comments = false, lua_num_indent_spaces = 0}) .. " return schematic" +local temple_schematic = loadstring(temple_schematic_lua)() +local size = temple_schematic.size +local sx = size.x +local sy = size.y +local sz = size.z +local offset = vector.round(vector.divide(size, 2)) +offset.y = 5 + +local ox = offset.x +local oy = offset.y +local oz = offset.z +local corner_x = sx - 3 +local corner_z = sz - 3 +local air_offset_x = ox - 6 +local air_offset_z = oz - 6 + +local function is_air(pos) + local node = minetest.get_node(pos) + return node.name == "air" +end + +local stair_support_node = { + {name = "mcl_core:cobble"}, + {name = "mcl_core:mossycobble"}, + {name = "mcl_core:stonebrick"}, + {name = "mcl_core:stonebrickmossy"}, + {name = "mcl_core:stonebrickcracked"}, +} + +local nodes_to_be_supported = { + "mcl_stairs:stair_cobble", + "mcl_stairs:stair_stonebrickmossy", + "mcl_stairs:stair_stonebrickcracked", +} + +local function on_placed(p1, rotation, pr, size) + local p2 + if rotation == "90" or rotation == "270" then + p2 = {x = p1.x + sz - 1, y = p1.y + sy - 1, z = p1.z + sx - 1} + else + p2 = {x = p1.x + sx - 1, y = p1.y + sy - 1, z = p1.z + sz - 1} + end + + -- Support stairs + local y = p1.y + 5 + local bottom = mcl_mapgen.get_chunk_beginning(y) + local stair_list = minetest.find_nodes_in_area({x = p1.x, y = y, z = p1.z}, {x = p2.x, y = y, z = p2.z}, nodes_to_be_supported, false) + for i = 1, #stair_list do + local pos = stair_list[i] + pos.y = y - 1 + while is_air(pos) and pos.y > bottom do + minetest.swap_node(pos, stair_support_node[pr:next(1, #stair_support_node)]) + pos.y = pos.y - 1 + end + end + + -- Initialize some nodes + local chest_node = "mcl_chests:trapped_chest_small" + local lever_node = "mesecons_walllever:wall_lever_off" + local nodes = minetest.find_nodes_in_area(p1, {x = p2.x, y = p1.y + 5, z = p2.z}, {chest_node, lever_node}, true) + + local levers = nodes[lever_node] + for _, pos in pairs(levers) do + mcl_structures.init_node_construct(pos) + end + + -- Add loot into chests TODO: fix items + local chests = nodes[chest_node] + for c=1, #chests do + local lootitems = mcl_loot.get_multi_loot({ + { + stacks_min = 2, + stacks_max = 4, + items = { + { itemstring = "mcl_mobitems:bone", weight = 25, amount_min = 4, amount_max=6 }, + { itemstring = "mcl_mobitems:rotten_flesh", weight = 25, amount_min = 3, amount_max=7 }, + { itemstring = "mcl_mobitems:spider_eye", weight = 25, amount_min = 1, amount_max=3 }, + { itemstring = "mcl_books:book", weight = 20, func = function(stack, pr) + mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) + end }, + { itemstring = "mcl_mobitems:saddle", weight = 20, }, + { itemstring = "mcl_core:apple_gold", weight = 20, }, + { itemstring = "mcl_core:gold_ingot", weight = 15, amount_min = 2, amount_max = 7 }, + { itemstring = "mcl_core:iron_ingot", weight = 15, amount_min = 1, amount_max = 5 }, + { itemstring = "mcl_core:emerald", weight = 15, amount_min = 1, amount_max = 3 }, + { itemstring = "", weight = 15, }, + { itemstring = "mobs_mc:iron_horse_armor", weight = 15, }, + { itemstring = "mobs_mc:gold_horse_armor", weight = 10, }, + { itemstring = "mobs_mc:diamond_horse_armor", weight = 5, }, + { itemstring = "mcl_core:diamond", weight = 5, amount_min = 1, amount_max = 3 }, + { itemstring = "mcl_core:apple_gold_enchanted", weight = 2, }, + } + }, + { + stacks_min = 4, + stacks_max = 4, + items = { + { itemstring = "mcl_mobitems:bone", weight = 10, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_mobitems:rotten_flesh", weight = 10, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_mobitems:gunpowder", weight = 10, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_core:sand", weight = 10, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_mobitems:string", weight = 10, amount_min = 1, amount_max = 8 }, + } + }}, pr) + mcl_structures.init_node_construct(chests[c]) + local meta = minetest.get_meta(chests[c]) + local inv = meta:get_inventory() + mcl_loot.fill_inventory(inv, "main", lootitems, pr) + end + +end + +local function place(pos, rotation, pr) + mcl_structures.place_schematic({pos = pos, schematic = temple_schematic, pr = pr, on_placed = on_placed}) +end + +local mcl_mapgen_clamp_to_chunk = mcl_mapgen.clamp_to_chunk +local function process_pos(pos) + return { + x = mcl_mapgen_clamp_to_chunk(pos.x - ox, sx), + y = mcl_mapgen_clamp_to_chunk(pos.y - oy, sy), + z = mcl_mapgen_clamp_to_chunk(pos.z - oz, sz), + } +end + +local function get_place_rank(pos) + local x1 = pos.x + 1 + local x2 = x1 + corner_x + local z1 = pos.z + 1 + local z2 = z1 + corner_z + local y2 = pos.y + 1 + local y1 = y2 - 2 + if is_air({x = x1, y = y1, z = z1}) then return -1 end + if is_air({x = x2, y = y1, z = z1}) then return -1 end + if is_air({x = x1, y = y1, z = z2}) then return -1 end + if is_air({x = x2, y = y1, z = z2}) then return -1 end + + local p1 = {x = x1 + air_offset_x, y = y2, z = z1 + air_offset_z} + local p2 = {x = x2 - air_offset_x, y = y2, z = z2 + air_offset_z} + local pos_counter_air = #minetest.find_nodes_in_area(p1, p2, {"air", "group:buildable_to", "group:deco_block"}, false) + local pos_counter_air = pos_counter_air - 2 * (#minetest.find_nodes_in_area(p1, p2, {"group:tree"}, false)) + + local p1 = {x = x1 + 1, y = y1, z = z1 + 1} + local p2 = {x = x2 - 1, y = y1, z = z2 - 1} + local pos_counter_ground = #minetest.find_nodes_in_area(p1, p2, node_list, false) + return pos_counter_ground + pos_counter_air +end + +mcl_structures.register_structure({ + name = "nice_jungle_temple", + decoration = { + deco_type = "simple", + place_on = node_list, + flags = "all_floors", + fill_ratio = scanning_ratio, + y_min = -20, + y_max = mcl_mapgen.overworld.max, + height = 1, + biomes = + mcl_mapgen.v6 and { + "Jungle" + } or { + "Jungle", + "JungleEdge", + "JungleEdgeM", + "JungleEdgeM_ocean", + "JungleEdge_ocean", + "JungleM", + "JungleM_ocean", + "JungleM_shore", + "Jungle_ocean", + "Jungle_shore", + }, + }, + on_finished_chunk = function(minp, maxp, seed, vm_context, pos_list) + local pr = PseudoRandom(seed + random_offset) + local random_number = pr:next(1, chance_per_chunk) + local noise = mcl_structures_get_perlin_noise_level(minp) * noise_multiplier + if (random_number + noise) < struct_threshold then return end + local pos + local count = -1 + for i = 1, #pos_list do + local pos_i = process_pos(pos_list[i]) + local count_i = get_place_rank(pos_i) + if count_i > count then + count = count_i + pos = pos_i + end + end + if count < 0 then return end + place(pos, nil, pr) + end, + place_function = place, +}) diff --git a/mods/MAPGEN/mcl_structures/noise_indicator.lua b/mods/MAPGEN/mcl_structures/noise_indicator.lua new file mode 100644 index 000000000..7cc130358 --- /dev/null +++ b/mods/MAPGEN/mcl_structures/noise_indicator.lua @@ -0,0 +1,60 @@ +local step = 1 +local chunk_borders = false + +local levels = { + [-9] = "black", + [-8] = "brown", + [-7] = "brown", + [-6] = "gray", + [-5] = "gray", + [-4] = "red", + [-3] = "orange", + [-2] = "purple", + [-1] = "magenta", + [0] = "pink", + [1] = "yellow", + [2] = "green", + [3] = "lime", + [4] = "blue", + [5] = "cyan", + [6] = "light_blue", + [7] = "silver", + [8] = "silver", + [9] = "white", +} + +local math_min, math_max = math.min, math.max +local math_floor, math_ceil = math.floor, math.ceil + +local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level + +local noise_offset_x_and_z = math_floor(mcl_mapgen.CS_NODES/2) + +mcl_mapgen.register_mapgen(function(minp, maxp, seed, vm_context) + local y0 = minp.y + for x0 = minp.x, maxp.x, step do + for z0 = minp.z, maxp.z, step do + local current_noise_level = mcl_structures_get_perlin_noise_level({x = x0 - noise_offset_x_and_z, y = y0, z = z0 - noise_offset_x_and_z}) + local amount + if current_noise_level < 0 then + amount = math_max(math_ceil(current_noise_level * 9), -9) + else + amount = math_min(math_floor(current_noise_level * 9), 9) + end + local y0 = maxp.y - 9 + amount + minetest.set_node({x=x0, y=y0, z=z0}, {name = "mcl_core:glass_"..levels[amount]}) + end + end + if chunk_borders then + for x0 = minp.x, maxp.x, step do + for y0 = minp.y, maxp.y, step do + minetest.set_node({x=x0, y=y0, z=maxp.z}, {name = "mcl_core:glass"}) + end + end + for z0 = minp.z, maxp.z, step do + for y0 = minp.y, maxp.y, step do + minetest.set_node({x=maxp.x, y=y0, z=z0}, {name = "mcl_core:glass"}) + end + end + end +end, -1) diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_jungle_temple.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_jungle_temple.mts new file mode 100644 index 000000000..ec98a83ea Binary files /dev/null and b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_jungle_temple.mts differ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_nice_jungle_temple.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_nice_jungle_temple.mts new file mode 100644 index 000000000..8a9babb9b Binary files /dev/null and b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_nice_jungle_temple.mts differ diff --git a/mods/MAPGEN/mcl_structures/stronghold.lua b/mods/MAPGEN/mcl_structures/stronghold.lua new file mode 100644 index 000000000..3493173d5 --- /dev/null +++ b/mods/MAPGEN/mcl_structures/stronghold.lua @@ -0,0 +1,184 @@ +-- Generate strongholds. + +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +-- A total of 128 strongholds are generated in rings around the world origin. +-- This is the list of rings, starting with the innermost ring first. +local stronghold_rings = { + -- amount: Number of strongholds in ring. + -- min, max: Minimum and maximum distance from (X=0, Z=0). + { amount = 3, min = 1408, max = 2688 }, + { amount = 6, min = 4480, max = 5760 }, + { amount = 10, min = 7552, max = 8832 }, + { amount = 15, min = 10624, max = 11904 }, + { amount = 21, min = 13696, max = 14976 }, + { amount = 28, min = 16768, max = 18048 }, + { amount = 36, min = 19840, max = 21120 }, + { amount = 9, min = 22912, max = 24192 }, +} + +local strongholds = {} +local strongholds_inited = false + +local superflat = mcl_mapgen.superflat + +local size = {x = 13, y = 8, z = 13} +local offset = vector.round(vector.divide(size, 2)) + +local function place(pos, rotation, pr) + local p1 = { x = pos.x - offset.x, y = pos.y - offset.y, z = pos.z - offset.z } + local p2 = vector.add(p1, vector.subtract(size, 1)) + + local path = modpath.."/schematics/mcl_structures_end_portal_room_simple.mts" + + mcl_structures.place_schematic({ + pos = p1, + schematic = path, + rotation = rotation or "0", + pr = pr, + }) + -- Find and setup spawner with silverfish + local spawners = minetest.find_nodes_in_area(p1, p2, "mcl_mobspawners:spawner") + for s=1, #spawners do + mcl_mobspawners.setup_spawner(spawners[s], "mobs_mc:silverfish") + end + + -- Shuffle stone brick types + local bricks = minetest.find_nodes_in_area(p1, p2, "mcl_core:stonebrick") + for b=1, #bricks do + local r_bricktype = pr:next(1, 100) + local r_infested = pr:next(1, 100) + local bricktype + if r_infested <= 5 then + if r_bricktype <= 30 then -- 30% + bricktype = "mcl_monster_eggs:monster_egg_stonebrickmossy" + elseif r_bricktype <= 50 then -- 20% + bricktype = "mcl_monster_eggs:monster_egg_stonebrickcracked" + else -- 50% + bricktype = "mcl_monster_eggs:monster_egg_stonebrick" + end + else + if r_bricktype <= 30 then -- 30% + bricktype = "mcl_core:stonebrickmossy" + elseif r_bricktype <= 50 then -- 20% + bricktype = "mcl_core:stonebrickcracked" + end + -- 50% stonebrick (no change necessary) + end + if bricktype then + minetest.set_node(bricks[b], { name = bricktype }) + end + end + + -- Also replace stairs + local stairs = minetest.find_nodes_in_area(p1, p2, {"mcl_stairs:stair_stonebrick", "mcl_stairs:stair_stonebrick_outer", "mcl_stairs:stair_stonebrick_inner"}) + for s=1, #stairs do + local stair = minetest.get_node(stairs[s]) + local r_type = pr:next(1, 100) + if r_type <= 30 then -- 30% mossy + if stair.name == "mcl_stairs:stair_stonebrick" then + stair.name = "mcl_stairs:stair_stonebrickmossy" + elseif stair.name == "mcl_stairs:stair_stonebrick_outer" then + stair.name = "mcl_stairs:stair_stonebrickmossy_outer" + elseif stair.name == "mcl_stairs:stair_stonebrick_inner" then + stair.name = "mcl_stairs:stair_stonebrickmossy_inner" + end + minetest.set_node(stairs[s], stair) + elseif r_type <= 50 then -- 20% cracky + if stair.name == "mcl_stairs:stair_stonebrick" then + stair.name = "mcl_stairs:stair_stonebrickcracked" + elseif stair.name == "mcl_stairs:stair_stonebrick_outer" then + stair.name = "mcl_stairs:stair_stonebrickcracked_outer" + elseif stair.name == "mcl_stairs:stair_stonebrick_inner" then + stair.name = "mcl_stairs:stair_stonebrickcracked_inner" + end + minetest.set_node(stairs[s], stair) + end + -- 50% no change + end + + -- Randomly add ender eyes into end portal frames, but never fill the entire frame + local frames = minetest.find_nodes_in_area(p1, p2, "mcl_portals:end_portal_frame") + local eyes = 0 + for f=1, #frames do + local r_eye = pr:next(1, 10) + if r_eye == 1 then + eyes = eyes + 1 + if eyes < #frames then + local frame_node = minetest.get_node(frames[f]) + frame_node.name = "mcl_portals:end_portal_frame_eye" + minetest.set_node(frames[f], frame_node) + end + end + end +end + + +-- Determine the stronghold positions and store them into the strongholds table. +-- The stronghold positions are based on the world seed. +-- The actual position might be offset by a few blocks because it might be shifted +-- to make sure the end portal room is completely within the boundaries of a mapchunk. +local function init_strongholds() + if strongholds_inited then + return + end + -- Don't generate strongholds in singlenode + if mcl_mapgen.singlenode then + strongholds_inited = true + return + end + local pr = PseudoRandom(mcl_mapgen.seed) + for s=1, #stronghold_rings do + local ring = stronghold_rings[s] + + -- Get random angle + local angle = pr:next() + -- Scale angle to 0 .. 2*math.pi + angle = (angle / 32767) * (math.pi*2) + for a=1, ring.amount do + local dist = pr:next(ring.min, ring.max) + local y + if superflat then + y = mcl_mapgen.overworld.bedrock_max + offset.y + else + y = pr:next(mcl_mapgen.overworld.bedrock_max+1+offset.y, mcl_mapgen.overworld.bedrock_min+48+offset.y) + end + local pos = { + x = mcl_mapgen.clamp_to_chunk(math.floor(math.cos(angle) * dist) - offset.x, size.x) + offset.x, + y = mcl_mapgen.clamp_to_chunk(y - offset.y, size.y) + offset.y, + z = mcl_mapgen.clamp_to_chunk(math.floor(math.sin(angle) * dist) - offset.z, size.z) + offset.z, + } + table.insert(strongholds, { pos = pos, generated = false }) + + -- Rotate angle by (360 / amount) degrees. + -- This will cause the angles to be evenly distributed in the stronghold ring + angle = math.fmod(angle + ((math.pi*2) / ring.amount), math.pi*2) + end + end + + mcl_structures.strongholds = strongholds + + mcl_structures.register_structure({ + name = "stronghold", + place_function = place, + }) + + strongholds_inited = true +end + +init_strongholds() + +-- Stronghold generation for register_on_generated. +mcl_mapgen.register_mapgen(function(minp, maxp, blockseed) + local pr = PseudoRandom(blockseed) + for s=1, #strongholds do + if not strongholds[s].generated then + local pos = strongholds[s].pos + if minp.x <= pos.x and maxp.x >= pos.x and minp.z <= pos.z and maxp.z >= pos.z and minp.y <= pos.y and maxp.y >= pos.y then + place(pos, nil, pr) + strongholds[s].generated = true + end + end + end +end, mcl_mapgen.order.STRONGHOLDS) diff --git a/mods/MAPGEN/mcl_structures/structures.lua b/mods/MAPGEN/mcl_structures/structures.lua new file mode 100644 index 000000000..fd6b21b26 --- /dev/null +++ b/mods/MAPGEN/mcl_structures/structures.lua @@ -0,0 +1,17 @@ +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +if not mcl_mapgen.singlenode then + dofile(modpath .. "/desert_temple.lua") + dofile(modpath .. "/desert_well.lua") + dofile(modpath .. "/end_exit_portal.lua") + dofile(modpath .. "/fossil.lua") + dofile(modpath .. "/igloo.lua") + dofile(modpath .. "/ice_spike_small.lua") + dofile(modpath .. "/ice_spike_large.lua") + dofile(modpath .. "/jungle_temple.lua") + dofile(modpath .. "/nice_jungle_temple.lua") + -- dofile(modpath .. "/noise_indicator.lua") + dofile(modpath .. "/stronghold.lua") + dofile(modpath .. "/witch_hut.lua") +end diff --git a/mods/MAPGEN/mcl_structures/witch_hut.lua b/mods/MAPGEN/mcl_structures/witch_hut.lua new file mode 100644 index 000000000..f6dc6ec9b --- /dev/null +++ b/mods/MAPGEN/mcl_structures/witch_hut.lua @@ -0,0 +1,136 @@ +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +local chance_per_chunk = 3 +local noise_multiplier = -0.9 +local random_offset = 8 +local scanning_ratio = 0.01 +local struct_threshold = chance_per_chunk - 1 + +local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level + +local schematic_file = modpath .. "/schematics/mcl_structures_witch_hut.mts" + +local witch_hut_schematic_lua = minetest.serialize_schematic(schematic_file, "lua", {lua_use_comments = false, lua_num_indent_spaces = 0}) .. " return schematic" +local witch_hut_schematic = loadstring(witch_hut_schematic_lua)() + +local node_list = {"mcl_core:dirt_with_grass", "mcl_core:dirt"} + +local WITCH_HUT_HEIGHT = 2 -- Exact Y level to spawn witch huts at. This height refers to the height of the floor + +local witch_hut_offsets = { + ["0"] = { + {x=1, y=0, z=1}, {x=1, y=0, z=5}, {x=6, y=0, z=1}, {x=6, y=0, z=5}, + }, + ["180"] = { + {x=2, y=0, z=1}, {x=2, y=0, z=5}, {x=7, y=0, z=1}, {x=7, y=0, z=5}, + }, + ["270"] = { + {x=1, y=0, z=1}, {x=5, y=0, z=1}, {x=1, y=0, z=6}, {x=5, y=0, z=6}, + }, + ["90"] = { + {x=1, y=0, z=2}, {x=5, y=0, z=2}, {x=1, y=0, z=7}, {x=5, y=0, z=7}, + }, +} + +local function on_placed(place, rotation, pr, size) + local offsets = witch_hut_offsets[rotation] + if not offsets then return end + for _, offset in pairs(offsets) do + local tpos = vector.add(place, offset) + for y = place.y - 1, mcl_mapgen.get_chunk_beginning(place.y - 1), -1 do + tpos.y = y + local nn = minetest.get_node(tpos).name + if not nn then break end + local node = minetest.registered_nodes[nn] + local groups = node.groups + if nn == "mcl_flowers:waterlily" or nn == "mcl_core:water_source" or nn == "mcl_core:water_flowing" or nn == "air" or groups.deco_block then + minetest.swap_node(tpos, {name="mcl_core:tree"}) + else + break + end + end + end +end + + +local function place(pos, rotation, pr) + mcl_structures.place_schematic({pos = pos, rotaton = rotation, schematic = witch_hut_schematic, pr = pr, on_placed = on_placed}) +end + +local function get_place_rank(pos) + local x, y, z = pos.x, pos.y, pos.z + local p1 = {x = x + 1, y = y + 1, z = z + 1} + local p2 = {x = x + 4, y = y + 4, z = z + 4} + local counter = #minetest.find_nodes_in_area(p1, p2, {"air", "group:buildable_to", "group:deco_block"}, false) + return counter +end + +local function tune_pos(pos) + local pos = table.copy(pos) + local y = pos.y - 1 + if y >= WITCH_HUT_HEIGHT - 5 and y <= WITCH_HUT_HEIGHT + 5 then + pos.y = WITCH_HUT_HEIGHT + return pos + end + local x = pos.x + local z = pos.z + local p1 = {x = x - 3, y = y , z = z - 3} + local p2 = {x = x + 3, y = y + 2, z = z + 3} + local water_list = minetest.find_nodes_in_area(p1, p2, {"group:water"}, false) + if not water_list or #water_list < 1 then + pos.y = y + return pos + end + local top = -1 + for _, pos in pairs(water_list) do + if pos.y > top then + top = pos.y + end + end + pos.y = top + return pos +end + +mcl_structures.register_structure({ + name = "witch_hut", + decoration = { + deco_type = "simple", + place_on = node_list, + spawn_by = {"mcl_core:water_source", "group:frosted_ice"}, + num_spawn_by = 1, + -- flags = "all_floors", + fill_ratio = scanning_ratio, + y_min = mcl_mapgen.overworld.min, + y_max = mcl_mapgen.overworld.max, + height = 1, + biomes = mcl_mapgen.v6 and { + "Normal", + } or { + "Swampland", + "Swampland_shore", + "Swampland_ocean", + "Swampland_deep_ocean", + }, + }, + on_finished_chunk = function(minp, maxp, seed, vm_context, pos_list) + local pr = PseudoRandom(seed + random_offset) + local random_number = pr:next(1, chance_per_chunk) + local noise = mcl_structures_get_perlin_noise_level(minp) * noise_multiplier + if (random_number + noise) < struct_threshold then return end + local pos = tune_pos(pos_list[1]) + if #pos_list > 1 then + local count = get_place_rank(pos) + for i = 2, #pos_list do + local pos_i = pos_list[i] + local count_i = get_place_rank(pos_i) + if count_i > count then + count = count_i + pos = pos_i + end + end + end + place(pos, nil, pr) + end, + place_function = place, +}) diff --git a/mods/MAPGEN/mcl_villages/buildings.lua b/mods/MAPGEN/mcl_villages/buildings.lua index a69029063..7c70e1d3b 100644 --- a/mods/MAPGEN/mcl_villages/buildings.lua +++ b/mods/MAPGEN/mcl_villages/buildings.lua @@ -88,7 +88,7 @@ function settlements.create_site_plan(maxp, minp, pr) -- find center_surface of chunk local center_surface , surface_material = settlements.find_surface(center, true) local chunks = {} - chunks[mcl_vars.get_chunk_number(center)] = true + chunks[mcl_mapgen.get_chunk_number(center)] = true -- go build settlement around center if not center_surface then return false end @@ -124,7 +124,7 @@ function settlements.create_site_plan(maxp, minp, pr) ptx = settlements.round(ptx, 0) ptz = settlements.round(ptz, 0) local pos1 = { x=ptx, y=center_surface.y+50, z=ptz} - local chunk_number = mcl_vars.get_chunk_number(pos1) + local chunk_number = mcl_mapgen.get_chunk_number(pos1) local pos_surface, surface_material if chunks[chunk_number] then pos_surface, surface_material = settlements.find_surface(pos1) @@ -268,15 +268,13 @@ function settlements.place_schematics(settlement_info, pr) local schematic = loadstring(schem_lua)() -- build foundation for the building an make room above -- place schematic - mcl_structures.place_schematic( - pos, - schematic, - rotation, - nil, - true, - nil, - init_nodes, - pr - ) + mcl_structures.place_schematic({ + pos = pos, + schematic = schematic, + rotation = rotation, + force_placement = true, + on_place = init_nodes, + pr = pr, + }) end end diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index 7e460990e..47ca91f2e 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -1,6 +1,8 @@ settlements = {} settlements.modpath = minetest.get_modpath(minetest.get_current_modname()) +local minetest_get_spawn_level = minetest.get_spawn_level + dofile(settlements.modpath.."/const.lua") dofile(settlements.modpath.."/utils.lua") dofile(settlements.modpath.."/foundation.lua") @@ -53,6 +55,7 @@ end -- on map generation, try to build a settlement -- local function build_a_settlement(minp, maxp, blockseed) + minetest.log("action","[mcl_villages] Building village at mapchunk " .. minetest.pos_to_string(minp) .. "..." .. minetest.pos_to_string(maxp) .. ", blockseed = " .. tostring(blockseed)) local pr = PseudoRandom(blockseed) -- fill settlement_info with buildings and their data @@ -69,29 +72,38 @@ local function build_a_settlement(minp, maxp, blockseed) settlements.place_schematics(settlement_info, pr) end -local function ecb_village(blockpos, action, calls_remaining, param) - if calls_remaining >= 1 then return end - local minp, maxp, blockseed = param.minp, param.maxp, param.blockseed - build_a_settlement(minp, maxp, blockseed) -end - -- Disable natural generation in singlenode. local mg_name = minetest.get_mapgen_setting("mg_name") if mg_name ~= "singlenode" then - mcl_mapgen_core.register_generator("villages", nil, function(minp, maxp, blockseed) + mcl_mapgen.register_mapgen(function(minp, maxp, blockseed) + -- local str1 = (maxp.y >= 0 and blockseed % 77 == 17) and "YES" or "no" + -- minetest.log("action","[mcl_villages] " .. str1 .. ": minp=" .. minetest.pos_to_string(minp) .. ", maxp=" .. minetest.pos_to_string(maxp) .. ", blockseed=" .. tostring(blockseed)) -- don't build settlement underground if maxp.y < 0 then return end -- randomly try to build settlements if blockseed % 77 ~= 17 then return end - -- needed for manual and automated settlement building + -- don't build settlements on (too) uneven terrain - --local heightmap = minetest.get_mapgen_object("heightmap") - local height_difference = settlements.evaluate_heightmap() + + -- lame and quick replacement of `heightmap` by kay27 - we maybe need to restore `heightmap` analysis if there will be a way for the engine to avoid cavegen conflicts: + -------------------------------------------------------------------------- + local height_difference, min, max + local pr1=PseudoRandom(blockseed) + for i=1,pr1:next(5,10) do + local x = pr1:next(0, 40) + minp.x + 19 + local z = pr1:next(0, 40) + minp.z + 19 + local y = minetest_get_spawn_level(x, z) + if not y then return end + if y < (min or y+1) then min = y end + if y > (max or y-1) then max = y end + end + height_difference = max - min + 1 + -------------------------------------------------------------------------- + if height_difference > max_height_difference then return end - local param={minp=vector.new(minp), maxp=vector.new(maxp), blockseed=blockseed} - minetest.emerge_area(minp, maxp, ecb_village, param) - end) + build_a_settlement(minp, maxp, blockseed) + end, mcl_mapgen.order.VILLAGES) end -- manually place villages if minetest.is_creative_enabled("") then diff --git a/mods/MAPGEN/mcl_villages/utils.lua b/mods/MAPGEN/mcl_villages/utils.lua index 993de11c4..1d94ead0c 100644 --- a/mods/MAPGEN/mcl_villages/utils.lua +++ b/mods/MAPGEN/mcl_villages/utils.lua @@ -1,4 +1,4 @@ -local get_node = mcl_vars.get_node +local get_node = mcl_mapgen.get_far_node ------------------------------------------------------------------------------- -- function to copy tables @@ -207,44 +207,6 @@ function shuffle(tbl, pr) return table end ------------------------------------------------------------------------------- --- evaluate heightmap -------------------------------------------------------------------------------- -function settlements.evaluate_heightmap() - local heightmap = minetest.get_mapgen_object("heightmap") - -- max height and min height, initialize with impossible values for easier first time setting - local max_y = -50000 - local min_y = 50000 - -- only evaluate the center square of heightmap 40 x 40 - local square_start = 1621 - local square_end = 1661 - for j = 1 , 40, 1 do - for i = square_start, square_end, 1 do - -- skip buggy heightmaps, return high value - if heightmap[i] == -31000 or heightmap[i] == 31000 then - return max_height_difference + 1 - end - if heightmap[i] < min_y then - min_y = heightmap[i] - end - if heightmap[i] > max_y then - max_y = heightmap[i] - end - end - -- set next line - square_start = square_start + 80 - square_end = square_end + 80 - end - -- return the difference between highest and lowest pos in chunk - local height_diff = max_y - min_y - -- filter buggy heightmaps - if height_diff <= 1 then - return max_height_difference + 1 - end - -- debug info - settlements.debug("heightdiff ".. height_diff) - return height_diff -end -------------------------------------------------------------------------------- -- Set array to list -- https://stackoverflow.com/questions/656199/search-for-an-item-in-a-lua-list ------------------------------------------------------------------------------- diff --git a/mods/MAPGEN/tsm_railcorridors/init.lua b/mods/MAPGEN/tsm_railcorridors/init.lua index 65a7d6a69..654a05672 100644 --- a/mods/MAPGEN/tsm_railcorridors/init.lua +++ b/mods/MAPGEN/tsm_railcorridors/init.lua @@ -19,8 +19,7 @@ end local probability_railcaves_in_mapchunk = P(0.33333) setting = tonumber(minetest.settings:get("tsm_railcorridors_probability_railcaves_in_mapchunk")) -- Extra check to prevent mod griefing in singlenode, mcimported worlds. -local mg_name = minetest.get_mapgen_setting("mg_name") -if mg_name == "singlenode" then +if mcl_mapgen.singlenode then probability_railcaves_in_mapchunk = P(0) elseif setting then probability_railcaves_in_mapchunk = P(setting) @@ -96,10 +95,10 @@ end -- Max. and min. heights between rail corridors are generated local height_min -if mcl_vars.mg_lava then - height_min = mcl_vars.mg_lava_overworld_max + 2 +if mcl_mapgen.lava then + height_min = mcl_mapgen.overworld.lava_max + 2 else - height_min = mcl_vars.mg_bedrock_overworld_max + 2 + height_min = mcl_mapgen.overworld.bedrock_max + 2 end local height_max = mcl_worlds.layer_to_y(60) @@ -1093,7 +1092,7 @@ local function create_corridor_system(main_cave_coords) end -- The rail corridor algorithm starts here -mcl_mapgen_core.register_generator("railcorridors", nil, function(minp, maxp, blockseed, _pr) +mcl_mapgen.register_mapgen(function(minp, maxp, blockseed) -- We re-init the randomizer for every mapchunk as we start generating in the middle of each mapchunk. -- We can't use the mapgen seed as this would make the algorithm depending on the order the mapchunk generate. InitRandomizer(blockseed) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index a989c8071..e6063da75 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -175,12 +175,6 @@ minetest.register_globalstep(function(dtime) and (fly_node == "air" or fly_node == "ignore") if elytra.active then - if player_velocity.x < (player_velocity_old.x - 10) or player_velocity.x > (player_velocity_old.x + 10) and fly_node ~= "ignore" then - mcl_util.deal_damage(player, math.abs(player_velocity_old.x) * 0.2, {type = "fly_into_wall"}) - end - if player_velocity.z < (player_velocity_old.z - 10) or player_velocity.z > (player_velocity_old.z + 10) and fly_node ~= "ignore" then - mcl_util.deal_damage(player, math.abs(player_velocity_old.z) * 0.2, {type = "fly_into_wall"}) - end mcl_player.player_set_animation(player, "fly") if player_velocity.y < -1.5 then player:add_velocity({x=0, y=0.17, z=0}) diff --git a/mods/PLAYER/mcl_spawn/init.lua b/mods/PLAYER/mcl_spawn/init.lua index 801e7ffd0..de4db5094 100644 --- a/mods/PLAYER/mcl_spawn/init.lua +++ b/mods/PLAYER/mcl_spawn/init.lua @@ -81,7 +81,7 @@ local dir_step = storage:get_int("mcl_spawn_dir_step") or 0 local dir_ind = storage:get_int("mcl_spawn_dir_ind") or 1 local emerge_pos1, emerge_pos2 -local spawn_limit = mcl_vars.mapgen_edge_max +local spawn_limit = mcl_mapgen.EDGE_MAX --Functions diff --git a/mods/PLAYER/mcl_spawn/mod.conf b/mods/PLAYER/mcl_spawn/mod.conf index 954f831db..2c7953fe7 100644 --- a/mods/PLAYER/mcl_spawn/mod.conf +++ b/mods/PLAYER/mcl_spawn/mod.conf @@ -1,4 +1,4 @@ name = mcl_spawn author = Wuzzy description = Set and get the player's respawn position -depends = mcl_init +depends = mcl_mapgen