From 5d11a34b04da7ea4f677cfca17e8397d3730540f Mon Sep 17 00:00:00 2001 From: PilzAdam Date: Sun, 11 Nov 2012 11:47:53 +0100 Subject: [PATCH] Add farming mod --- mods/default/nodes.lua | 2 +- mods/farming/README.txt | 57 ++ mods/farming/depends.txt | 2 + mods/farming/init.lua | 492 ++++++++++++++++++ mods/farming/textures/farming_bread.png | Bin 0 -> 559 bytes mods/farming/textures/farming_cotton_1.png | Bin 0 -> 145 bytes mods/farming/textures/farming_cotton_2.png | Bin 0 -> 183 bytes mods/farming/textures/farming_cotton_3.png | Bin 0 -> 230 bytes mods/farming/textures/farming_cotton_4.png | Bin 0 -> 285 bytes mods/farming/textures/farming_cotton_5.png | Bin 0 -> 347 bytes mods/farming/textures/farming_cotton_6.png | Bin 0 -> 506 bytes mods/farming/textures/farming_cotton_7.png | Bin 0 -> 512 bytes mods/farming/textures/farming_cotton_8.png | Bin 0 -> 468 bytes mods/farming/textures/farming_cotton_seed.png | Bin 0 -> 485 bytes mods/farming/textures/farming_flour.png | Bin 0 -> 459 bytes mods/farming/textures/farming_soil.png | Bin 0 -> 883 bytes mods/farming/textures/farming_soil_wet.png | Bin 0 -> 823 bytes .../textures/farming_soil_wet_side.png | Bin 0 -> 889 bytes mods/farming/textures/farming_string.png | Bin 0 -> 367 bytes .../textures/farming_tool_bronzehoe.png | Bin 0 -> 334 bytes .../textures/farming_tool_steelhoe.png | Bin 0 -> 331 bytes .../textures/farming_tool_stonehoe.png | Bin 0 -> 362 bytes .../farming/textures/farming_tool_woodhoe.png | Bin 0 -> 285 bytes mods/farming/textures/farming_wheat.png | Bin 0 -> 658 bytes mods/farming/textures/farming_wheat_1.png | Bin 0 -> 159 bytes mods/farming/textures/farming_wheat_2.png | Bin 0 -> 209 bytes mods/farming/textures/farming_wheat_3.png | Bin 0 -> 261 bytes mods/farming/textures/farming_wheat_4.png | Bin 0 -> 304 bytes mods/farming/textures/farming_wheat_5.png | Bin 0 -> 454 bytes mods/farming/textures/farming_wheat_6.png | Bin 0 -> 607 bytes mods/farming/textures/farming_wheat_7.png | Bin 0 -> 676 bytes mods/farming/textures/farming_wheat_8.png | Bin 0 -> 811 bytes mods/farming/textures/farming_wheat_seed.png | Bin 0 -> 467 bytes 33 files changed, 552 insertions(+), 1 deletion(-) create mode 100644 mods/farming/README.txt create mode 100644 mods/farming/depends.txt create mode 100644 mods/farming/init.lua create mode 100644 mods/farming/textures/farming_bread.png create mode 100644 mods/farming/textures/farming_cotton_1.png create mode 100644 mods/farming/textures/farming_cotton_2.png create mode 100644 mods/farming/textures/farming_cotton_3.png create mode 100644 mods/farming/textures/farming_cotton_4.png create mode 100644 mods/farming/textures/farming_cotton_5.png create mode 100644 mods/farming/textures/farming_cotton_6.png create mode 100644 mods/farming/textures/farming_cotton_7.png create mode 100644 mods/farming/textures/farming_cotton_8.png create mode 100644 mods/farming/textures/farming_cotton_seed.png create mode 100644 mods/farming/textures/farming_flour.png create mode 100644 mods/farming/textures/farming_soil.png create mode 100644 mods/farming/textures/farming_soil_wet.png create mode 100644 mods/farming/textures/farming_soil_wet_side.png create mode 100644 mods/farming/textures/farming_string.png create mode 100644 mods/farming/textures/farming_tool_bronzehoe.png create mode 100644 mods/farming/textures/farming_tool_steelhoe.png create mode 100644 mods/farming/textures/farming_tool_stonehoe.png create mode 100644 mods/farming/textures/farming_tool_woodhoe.png create mode 100644 mods/farming/textures/farming_wheat.png create mode 100644 mods/farming/textures/farming_wheat_1.png create mode 100644 mods/farming/textures/farming_wheat_2.png create mode 100644 mods/farming/textures/farming_wheat_3.png create mode 100644 mods/farming/textures/farming_wheat_4.png create mode 100644 mods/farming/textures/farming_wheat_5.png create mode 100644 mods/farming/textures/farming_wheat_6.png create mode 100644 mods/farming/textures/farming_wheat_7.png create mode 100644 mods/farming/textures/farming_wheat_8.png create mode 100644 mods/farming/textures/farming_wheat_seed.png diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index e2f81aa..3a0cf49 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1125,7 +1125,7 @@ minetest.register_node("default:apple", { fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2} }, groups = {fleshy=3,dig_immediate=3,flammable=2,leafdecay=1,leafdecay_drop=1}, - on_use = minetest.item_eat(4), + on_use = minetest.item_eat(1), sounds = default.node_sound_defaults(), after_place_node = function(pos, placer, itemstack) if placer:is_player() then diff --git a/mods/farming/README.txt b/mods/farming/README.txt new file mode 100644 index 0000000..b92e0be --- /dev/null +++ b/mods/farming/README.txt @@ -0,0 +1,57 @@ +Minetest 0.4 mod: farming +========================= + +License of source code: +----------------------- +Copyright (C) 2012-2013 PilzAdam + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. + +License of media (textures): +---------------------------- +Created by PilzAdam (License: WTFPL): + farming_bread.png + farming_soil.png + farming_soil_wet.png + farming_soil_wet_side.png + farming_string.png + +Created by Calinou (License: CC BY-SA): + farming_tool_bronzehoe.png + farming_tool_steelhoe.png + farming_tool_stonehoe.png + farming_tool_woodhoe.png + +Created by VanessaE (License: WTFPL): + farming_cotton_seed.png + farming_wheat_seed.png + farming_flour.png + farming_wheat.png + farming_wheat_1.png + farming_wheat_2.png + farming_wheat_3.png + farming_wheat_4.png + farming_wheat_5.png + farming_wheat_5.png + farming_wheat_7.png + farming_wheat_8.png + farming_cotton_1.png + farming_cotton_2.png + farming_cotton_3.png + farming_cotton_4.png + farming_cotton_5.png + farming_cotton_6.png + farming_cotton_7.png + farming_cotton_8.png diff --git a/mods/farming/depends.txt b/mods/farming/depends.txt new file mode 100644 index 0000000..470ec30 --- /dev/null +++ b/mods/farming/depends.txt @@ -0,0 +1,2 @@ +default +wool diff --git a/mods/farming/init.lua b/mods/farming/init.lua new file mode 100644 index 0000000..1fc22a8 --- /dev/null +++ b/mods/farming/init.lua @@ -0,0 +1,492 @@ +-- Minetest 0.4 mod: farming +-- See README.txt for licensing and other information. + +-- +-- Soil +-- +minetest.register_node("farming:soil", { + description = "Soil", + tiles = {"farming_soil.png", "default_dirt.png"}, + drop = "default:dirt", + is_ground_content = true, + groups = {crumbly=3, not_in_creative_inventory=1, soil=2}, + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("farming:soil_wet", { + description = "Wet Soil", + tiles = {"farming_soil_wet.png", "farming_soil_wet_side.png"}, + drop = "default:dirt", + is_ground_content = true, + groups = {crumbly=3, not_in_creative_inventory=1, soil=3}, + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_abm({ + nodenames = {"farming:soil", "farming:soil_wet"}, + interval = 15, + chance = 4, + action = function(pos, node) + pos.y = pos.y+1 + local nn = minetest.env:get_node(pos).name + pos.y = pos.y-1 + if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].walkable then + minetest.env:set_node(pos, {name="default:dirt"}) + end + -- check if there is water nearby + if minetest.env:find_node_near(pos, 3, {"group:water"}) then + -- if it is dry soil turn it into wet soil + if node.name == "farming:soil" then + minetest.env:set_node(pos, {name="farming:soil_wet"}) + end + else + -- turn it back into dirt if it is already dry + if node.name == "farming:soil" then + -- only turn it back if there is no plant on top of it + if minetest.get_item_group(nn, "plant") == 0 then + minetest.env:set_node(pos, {name="default:dirt"}) + end + + -- if its wet turn it back into dry soil + elseif node.name == "farming:soil_wet" then + minetest.env:set_node(pos, {name="farming:soil"}) + end + end + end, +}) + +-- +-- Hoes +-- +-- turns nodes with group soil=1 into soil; drop seeds if plowing grass +local function hoe_on_use(itemstack, user, pointed_thing, uses) + local pt = pointed_thing + -- check if pointing at a node + if not pt then + return + end + if pt.type ~= "node" then + return + end + + local under = minetest.env:get_node(pt.under) + local p = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z} + local above = minetest.env:get_node(p) + + -- return if any of the nodes is not registered + if not minetest.registered_nodes[under.name] then + return + end + if not minetest.registered_nodes[above.name] then + return + end + + -- check if the node above the pointed thing is air + if above.name ~= "air" then + return + end + + -- check if pointing at dirt + if minetest.get_item_group(under.name, "soil") ~= 1 then + return + end + + -- turn the node into soil, wear out item and play sound + minetest.env:set_node(pt.under, {name="farming:soil"}) + minetest.sound_play("default_dig_crumbly", { + pos = pt.under, + gain = 0.5, + }) + itemstack:add_wear(65535/(uses-1)) + return itemstack +end + +minetest.register_tool("farming:hoe_wood", { + description = "Wooden Hoe", + inventory_image = "farming_tool_woodhoe.png", + + on_use = function(itemstack, user, pointed_thing) + return hoe_on_use(itemstack, user, pointed_thing, 30) + end, +}) + +minetest.register_tool("farming:hoe_stone", { + description = "Stone Hoe", + inventory_image = "farming_tool_stonehoe.png", + + on_use = function(itemstack, user, pointed_thing) + return hoe_on_use(itemstack, user, pointed_thing, 90) + end, +}) + +minetest.register_tool("farming:hoe_steel", { + description = "Steel Hoe", + inventory_image = "farming_tool_steelhoe.png", + + on_use = function(itemstack, user, pointed_thing) + return hoe_on_use(itemstack, user, pointed_thing, 200) + end, +}) + +minetest.register_tool("farming:hoe_bronze", { + description = "Bronze Hoe", + inventory_image = "farming_tool_bronzehoe.png", + + on_use = function(itemstack, user, pointed_thing) + return hoe_on_use(itemstack, user, pointed_thing, 220) + end, +}) + +minetest.register_craft({ + output = "farming:hoe_wood", + recipe = { + {"group:wood", "group:wood"}, + {"", "default:stick"}, + {"", "default:stick"}, + } +}) + +minetest.register_craft({ + output = "farming:hoe_stone", + recipe = { + {"group:stone", "group:stone"}, + {"", "default:stick"}, + {"", "default:stick"}, + } +}) + +minetest.register_craft({ + output = "farming:hoe_steel", + recipe = { + {"default:steel_ingot", "default:steel_ingot"}, + {"", "default:stick"}, + {"", "default:stick"}, + } +}) + +minetest.register_craft({ + output = "farming:hoe_bronze", + recipe = { + {"default:bronze_ingot", "default:bronze_ingot"}, + {"", "default:stick"}, + {"", "default:stick"}, + } +}) + +-- +-- Override grass for drops +-- +minetest.register_node(":default:grass_1", { + description = "Grass", + drawtype = "plantlike", + tiles = {"default_grass_1.png"}, + -- use a bigger inventory image + inventory_image = "default_grass_3.png", + wield_image = "default_grass_3.png", + paramtype = "light", + walkable = false, + buildable_to = true, + drop = { + max_items = 1, + items = { + {items = {'farming:seed'},rarity = 20}, + {items = {'default:grass_1'}}, + } + }, + groups = {snappy=3,flammable=3,flora=1,attached_node=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + }, + on_place = function(itemstack, placer, pointed_thing) + -- place a random grass node + local stack = ItemStack("default:grass_"..math.random(1,5)) + local ret = minetest.item_place(stack, placer, pointed_thing) + return ItemStack("default:grass_1 "..itemstack:get_count()-(1-ret:get_count())) + end, +}) + +for i=2,5 do + minetest.register_node(":default:grass_"..i, { + description = "Grass", + drawtype = "plantlike", + tiles = {"default_grass_"..i..".png"}, + inventory_image = "default_grass_"..i..".png", + wield_image = "default_grass_"..i..".png", + paramtype = "light", + walkable = false, + buildable_to = true, + is_ground_content = true, + drop = { + max_items = 1, + items = { + {items = {'farming:seed_wheat'},rarity = 20}, + {items = {'default:grass_1'}}, + } + }, + groups = {snappy=3,flammable=3,flora=1,attached_node=1,not_in_creative_inventory=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + }, + }) +end + +minetest.register_node(":default:junglegrass", { + description = "Jungle Grass", + drawtype = "plantlike", + visual_scale = 1.3, + tiles = {"default_junglegrass.png"}, + inventory_image = "default_junglegrass.png", + wield_image = "default_junglegrass.png", + paramtype = "light", + walkable = false, + buildable_to = true, + is_ground_content = true, + drop = { + max_items = 1, + items = { + {items = {'farming:seed_cotton'},rarity = 20}, + {items = {'default:junglegrass'}}, + } + }, + groups = {snappy=3,flammable=2,flora=1,attached_node=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + }, +}) + +-- +-- Place seeds +-- +local function place_seed(itemstack, placer, pointed_thing, plantname) + local pt = pointed_thing + -- check if pointing at a node + if not pt then + return + end + if pt.type ~= "node" then + return + end + + local under = minetest.env:get_node(pt.under) + local above = minetest.env:get_node(pt.above) + + -- return if any of the nodes is not registered + if not minetest.registered_nodes[under.name] then + return + end + if not minetest.registered_nodes[above.name] then + return + end + + -- check if pointing at the top of the node + if pt.above.y ~= pt.under.y+1 then + return + end + + -- check if you can replace the node above the pointed node + if not minetest.registered_nodes[above.name].buildable_to then + return + end + + -- check if pointing at soil + if minetest.get_item_group(under.name, "soil") <= 1 then + return + end + + -- add the node and remove 1 item from the itemstack + minetest.env:add_node(pt.above, {name=plantname}) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack +end + +-- +-- Wheat +-- +minetest.register_craftitem("farming:seed_wheat", { + description = "Wheat Seed", + inventory_image = "farming_wheat_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return place_seed(itemstack, placer, pointed_thing, "farming:wheat_1") + end, +}) + +minetest.register_craftitem("farming:wheat", { + description = "Wheat", + inventory_image = "farming_wheat.png", +}) + +minetest.register_craftitem("farming:flour", { + description = "Flour", + inventory_image = "farming_flour.png", +}) + +minetest.register_craftitem("farming:bread", { + description = "Bread", + inventory_image = "farming_bread.png", + on_use = minetest.item_eat(4), +}) + +minetest.register_craft({ + type = "shapeless", + output = "farming:flour", + recipe = {"farming:wheat", "farming:wheat", "farming:wheat", "farming:wheat"} +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 15, + output = "farming:bread", + recipe = "farming:flour" +}) + +for i=1,8 do + local drop = { + items = { + {items = {'farming:wheat'},rarity=9-i}, + {items = {'farming:wheat'},rarity=18-i*2}, + {items = {'farming:seed_wheat'},rarity=9-i}, + {items = {'farming:seed_wheat'},rarity=18-i*2}, + } + } + minetest.register_node("farming:wheat_"..i, { + drawtype = "plantlike", + tiles = {"farming_wheat_"..i..".png"}, + paramtype = "light", + walkable = false, + buildable_to = true, + is_ground_content = true, + drop = drop, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + }, + groups = {snappy=3,flammable=2,plant=1,wheat=i,not_in_creative_inventory=1,attached_node=1}, + sounds = default.node_sound_leaves_defaults(), + }) +end + +minetest.register_abm({ + nodenames = {"group:wheat"}, + neighbors = {"group:soil"}, + interval = 90, + chance = 2, + action = function(pos, node) + -- return if already full grown + if minetest.get_item_group(node.name, "wheat") == 8 then + return + end + + -- check if on wet soil + pos.y = pos.y-1 + local n = minetest.env:get_node(pos) + if minetest.get_item_group(n.name, "soil") < 3 then + return + end + pos.y = pos.y+1 + + -- check light + if not minetest.env:get_node_light(pos) then + return + end + if minetest.env:get_node_light(pos) < 13 then + return + end + + -- grow + local height = minetest.get_item_group(node.name, "wheat") + 1 + minetest.env:set_node(pos, {name="farming:wheat_"..height}) + end +}) + +-- +-- Cotton +-- +minetest.register_craftitem("farming:seed_cotton", { + description = "Cotton Seed", + inventory_image = "farming_cotton_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return place_seed(itemstack, placer, pointed_thing, "farming:cotton_1") + end, +}) + +minetest.register_craftitem("farming:string", { + description = "String", + inventory_image = "farming_string.png", +}) + +minetest.register_craft({ + output = "wool:white", + recipe = { + {"farming:string", "farming:string"}, + {"farming:string", "farming:string"}, + } +}) + +for i=1,8 do + local drop = { + items = { + {items = {'farming:string'},rarity=9-i}, + {items = {'farming:string'},rarity=18-i*2}, + {items = {'farming:string'},rarity=27-i*3}, + {items = {'farming:seed_cotton'},rarity=9-i}, + {items = {'farming:seed_cotton'},rarity=18-i*2}, + {items = {'farming:seed_cotton'},rarity=27-i*3}, + } + } + minetest.register_node("farming:cotton_"..i, { + drawtype = "plantlike", + tiles = {"farming_cotton_"..i..".png"}, + paramtype = "light", + walkable = false, + buildable_to = true, + is_ground_content = true, + drop = drop, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + }, + groups = {snappy=3,flammable=2,plant=1,cotton=i,not_in_creative_inventory=1,attached_node=1}, + sounds = default.node_sound_leaves_defaults(), + }) +end + +minetest.register_abm({ + nodenames = {"group:cotton"}, + neighbors = {"group:soil"}, + interval = 80, + chance = 2, + action = function(pos, node) + -- return if already full grown + if minetest.get_item_group(node.name, "cotton") == 8 then + return + end + + -- check if on wet soil + pos.y = pos.y-1 + local n = minetest.env:get_node(pos) + if minetest.get_item_group(n.name, "soil") < 3 then + return + end + pos.y = pos.y+1 + + -- check light + if not minetest.env:get_node_light(pos) then + return + end + if minetest.env:get_node_light(pos) < 13 then + return + end + + -- grow + local height = minetest.get_item_group(node.name, "cotton") + 1 + minetest.env:set_node(pos, {name="farming:cotton_"..height}) + end +}) diff --git a/mods/farming/textures/farming_bread.png b/mods/farming/textures/farming_bread.png new file mode 100644 index 0000000000000000000000000000000000000000..e508cc7f1d9d6de091a4cd55f086a46777883d65 GIT binary patch literal 559 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7I14-?iy0XBmVq#1`<<2f z3=9nHC7!;n?02}iL}i7R*WUJHU|`@Vag8W(&d<$F%`0K}c4pds1_s7mo-U3d7N@UH zKARPsD9|?F(muDyZ=czfV^Lm?-AAoo1bt-M!*spL`{3S3=eBb5UXd<%%_<^tH)4s% z^nW2!W(m)p_3Zr@mFK_r6$%O}K04NFF}tzxxop}q*&pwn>%#X`?_Bn_hQ(p2P-DaQ zD4UAR)%7A7aok?>JybGT{T;utJ`%{{KBe*9XBXq~);{@tmrnIKd~UnJpU=S@=%bwS z*2hUmH(0E%|E<`4x4uPREc81P54tS!2xb6I!S z7x!sLRhAk{UOHXGCMJ@o>ic%@^TQF#?uNg8kSiuPk4t=-kW}em$Nh&tu&BN2bdAWA zaM|s{r}%k7_l{@Ty-o7MEOVN-&I(vB&9|@Yg>2-f!jn4+dc3`tUrp6(xmCF%L!nhb zVb&*RQ#Qp|73+7xR_;>Tq3p+;*=L9^;612%LBMRYrsUf@`?a3f*51E$oYmGx_RpM2 zVhWlatzTs%oHy9T?v_Yke0ozq{Kn3`E9ZYYzk+rBgF*`%4HgY8t`Eld@66j|>{eBk z?R<59lhb;c2ON=?SWHq^D6h-ko_2Qo_a9y#uFt!do9Fuf$;^Gs&iRMtNOAP2F)%PN Nc)I$ztaD0e0suGH=O_Pea2yi5{LEgr_JWU-kF=#>U2j2czEE u+m-t4P~nrSKJ()7vQP6nJ2}_8GF-Q14?Aztb&-LAfx*+&&t;ucLK6UAzA3o? literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_2.png b/mods/farming/textures/farming_cotton_2.png new file mode 100644 index 0000000000000000000000000000000000000000..403a2416da12be35dbcdef68b454afe511e90e78 GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7I14-?iy0WWg+Z8+Vb&Z8 z1_lQ95>H=O_Pea2yi5{LE?e(*MGh zsfW~le1BihR=q;;n%brR{_%C^JSH(7KWCTt=g(VnW)R>u7LL2V>A@t6@~5neH&6Xj gA10QzhmCzopr070TWz5oCK literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_3.png b/mods/farming/textures/farming_cotton_3.png new file mode 100644 index 0000000000000000000000000000000000000000..eaec6d06cba3d3732580a69b19b261dfa4c6faad GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7I14-?iy0WWg+Z8+Vb&Z8 z1_lQ95>H=O_Pea2yi5{LE->O+&N?;C&j=;-+H g{FnUqn74xApTE*(U)jQw3=9kmp00i_>zopr0JT9?`2YX_ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_4.png b/mods/farming/textures/farming_cotton_4.png new file mode 100644 index 0000000000000000000000000000000000000000..38404b3dd6d5b0aa5f5af686bdd5e3948bbfc699 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7I14-?iy0WWg+Z8+Vb&Z8 z1_lQ95>H=O_Pea2yiAgluU(nTz`(G_)5S5w;&gI?1nXhW8xkk}sJqJx_k4W)-JVT8 zT69m_4XIQAj%OZNx%#|>ecjK_;LXjQcmCVg|9e=*$jr=qxIeyLLZ;{GKVt&}gB>%p z59Ah`P5uA>>+Sru$J6H<34NKob>Elz;9O6Uu8+cF6;W{`}_So zF46@>pHq*$x34>#eDtc*M|*Z_Za?ONUnehy{QLj^|9{Dd$QhDl^LL#0*utHV@c(6d nPyD{WNk9HQHos@U%H=O_Pea2yi8JD_gmE&7#Mzex;TbdoPHZ*>(AsUP;1@(+I>w=>k|h%DUXDS z5_;lKduBK!9bW&Gy@8dLH?CzRM+v?BH_MXxC5MLi`ZaP1< zW_jh$!|k<4*S>0H%zJIQ{D+~Adc`cBv`0@o9=+2#&rqPT_pe{{=6?U&`7)-H-sL_m zz7fvWJ;hpf*V?2-3*)Sw-`%@Jn33VFU08PSdl5&|)B5Y*Gch!IP3vq3+#_&~(f{M@ z3$reU+0B>pZua(+I6o~ZKFf=F_9w}(>|-A)^H|vDwZ{cK`og+K)U@c?mhWe6>|?~& zI6eHOQ+4=63diA>cW$|xC5h;_xIenSCEj6e!2OC1hkr9LFfe$!`njxgN@xNAWg?8_ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_6.png b/mods/farming/textures/farming_cotton_6.png new file mode 100644 index 0000000000000000000000000000000000000000..8b2b3deb18d531aa86e4238b26ff57f67eac6a7c GIT binary patch literal 506 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7I14-?iy0WWg+Z8+Vb&Z8 z1_lQ95>H=O_Pea2yi8JD_gmE&7#L@Ix;TbdoW2|MUb{I_#P)k-++*%e#m`l(P9JZn z%{J(XYMC1J&of>`Ud40LpNOFn(spuK*vi_u);9cw)lr+KVmPtTSWo@n&DqWZ|CV~VMz^H*-Z8#nv@ zwGEda1eOakH{4JCa6ZYudherJ$Ka2hjc0B!F_`roTH?vL|8#<;QQ~Gser`pDTW_>F z&dVvJy2anKTGqtsTM-=+RdD2Nns@J`#(Qbs$}B|YOMic6b>fkwRQvfWk_?O1_is4& zo`a!nm$cJh-`uD?k%Nn8oBz5MXO=LPKh;2R;TD&qx>WznFV{C#+W`YWB524CUIyMNj=)N-PxPw}dMDtj~j2b)sel+@5DQC9{A1_n=8 KKbLh*2~7a;0NqUh literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_7.png b/mods/farming/textures/farming_cotton_7.png new file mode 100644 index 0000000000000000000000000000000000000000..43ae43b71a20b534031d9af8c0c3f0bb830db40b GIT binary patch literal 512 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7I14-?iy0WWg+Z8+Vb&Z8 z1_lQ95>H=O_Pea2yi8JD_gmE&7#Qb!x;TbdoW2`;+ABIxB(}Qxa{za%gSYe~6Glao zlf4@?V*-0_9pmE)w_4x)&tbpb;<81?(kleds4P9EZs!o_GG)fIdsiLLWClsuFR0%3 zEqU!${@)D$<0m}n+I^z^)qC&tzOjrCKD%F6SvLK%#hqL}Q31i7yRFP4Jd5`Jx~sBk z>aGZ7E{1}b+1l@vJozkkWp4d1;G_S1p;kf6Y=(eS$5v{!<*ffHtfaKJu}JY`(#NX{ z);>C7JgumZsbO;8ru{$fhMY<`zIA8Fi%0XcSsQxa2EVMZd$y_Y)m{nDd-whx3VkzC zaML#Ziyv!0i?uN@?CIoiYZkjE?ast7-)@Sb9N(g-mD~(EH#pr>y^G&z)$cBdnLTlGbc~I>@wd4pQx-O`3M$BK_^@H=O_Pea2yiC%yH@0qMU|=lvba4!^IDIzQTc0^m#I}5y{`x$Zrj>mrQyoiH zUAt@AuHHNEX1l{}QswOsrKd@*CB9Q`%**|y+ugC<{;cK=1;*tG z^=grqSHMN(cE)HgCSbMZZNoLKGiVc%KFVdQ&MBb@0GAZag#Z8m literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_seed.png b/mods/farming/textures/farming_cotton_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..1507d45d24d58c6e8944ff1e456568c7d76ba60e GIT binary patch literal 485 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7I14-?iy0WWg+Z8+Vb&Z8 z1_lQ95>H=O_Pea2JdApbEgoqM42&(FE{-7!*0u|0o&`J!)*f{iZT&Py&_ zN}1q&;l`xsde{FB&fd}4&H*kd0#2+!fn1%AsY}{gyOcbqt>~OJ|7C8+_g62CW%gWt zUvByRUh(;z4$}qqSu1bc(^CCot{J1kBirZy4d-`nS|504e%|Da<^{L?wiXG7|9;KF zFx`4}$fa#=EPh+jjGFxzs zcfo{Oaib5`xh`kf_Vnq>=>%^$p>pT~zhuROBWIYD!&fD2ifDD(=gRzK_l?E>-#O^m zv`e!v@H}rQ%)XR2Wg+=nbJ04XWxLf!tK6+`9>XaH=O_Pea2yiDRHc|T_{Ffe9$x;TbdoPImeaor;W0hjou$2TNICL}c9C}4Y6 z&&t=(z`I)Eh*Duv(xh)XZog)&pJ{o(<8#^FRqOOtKA5lm`|_u<-KtAPqOx6DHtA%} zYCHV!!)&|%r8{EuR<3)!YV73SeXstN-Lz}nQXmB}kl*Aq{+POr>ds*h9OsOeBJckdw{_0d3+rD+$A`Jn-Wtod|qmz23q;_7D zdT*P1`_Y`k)&1Y))|&cWo)EkKx{6XncKx+U&wCzs1a(O$hlU#RFdsI!@ZI+FPZ>eQ z)0^Jw&hcA5CFqdlaf`l`NVj>)?qpzKkSuYHC~?lu%}vcK zVQ?-=O)N=GQ7F$W$xv|j^bH7aQ!7dh5#B zeJau0ySA}twJa-YFj?!=WPec7K4pLRVoz(QRRY4d6Oy;AiJWcb`}WAsjGW`|PcyD+ zd0@A%&B@^vGpC{Yd5?z&%CzE=J!wCMJ=0HE2kA-c)f`A($r@^ zbW$c}ykR;NYO?h0ZVka64Lx_^dw)z9ENQvBR!ll>uBXlO7gsfZTj!qBQ@Rka#c|*7 zPYX95O`5r6N#waQb%mbvGh*Hh-?o|0^qt-zr}g#zDUVln|ry^tpR$szkGZ5 zI7C}U_U}30Sr1L$E$E$)eYj>~g2|l}Nv4j5O)S5w_8rOSH5Crazc)Eu%7Ev1v7Q=t z&$SYBTe}$l7kO18x*d-!^ZxQ3F8Ed7yL8go`m=N5To}HvE3Qh|_|W`Bm?gtE-J07L zv-LY4vGOi=5~!Hs#X3nPS;FuCSJ4ee76s}i|MuhDB&v4S^2Oc7_8gkKP3`VwJhEU- z6Wn5Ut)k-ka{C?6HqX^#SbzVU=Vg(f4?oV^$n6>?Rkl6qN1g22hsU4qf3Uk$hkMFW ziMXRCS*-i)UKs9@dtB{1@BbIB-?tCDFF8Hs^XUoK>*qa=bKSxuE|@5COksgQmS3m8 q+?}UKPYV|%TfFOkv8Co8oBFpvMLxA{`xqD)7(8A5T-G@yGywo;&xo!7 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_soil_wet.png b/mods/farming/textures/farming_soil_wet.png new file mode 100644 index 0000000000000000000000000000000000000000..e5e6eec4cf7f255b43a244df2f8f0e509727c6ed GIT binary patch literal 823 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Je|!WrxynClfY zFfecyctjR6FmMZlFeAgPIT8#E4D2PIzOL+dxY-3XOhcY;Tgt$|AX(xXQR1ARo12-f}$Tu;HwnR$Q^6S#(0y;om1&SNA$< zvRtk_q>%BDqfwOaa>l`n_VWv55B}3o$+;dGqgVO$+Z6X|X0_*r5*nHU_qQ$yb=u@- zn#s1?dH#=2vtEaC9caEQ7apG7qHOWo;&{{ru{)bsk_AOKh)r;K;ca)6jiI`@s&t0h z1&zZ6FE-CmmvNVJ4crv1e@N^{g)m=j=K>B!jfCpmrS|=8T*n*f2YNPVO1r$`{jh^kA zFhi|;ign{7=Os5eMP`Qxt3SB^q3+;|X`=t9TlShTq)$8+IBCP$6JKNvyLR`5d!MZd zEhyVx@4&}-#vTW{VVX@%I3Z4FYvEBOr7K+=aP5#)E dc;jLGg5~-_J(zs<8fGm-I` z1B=&7j->)CmffgW-q~sXEBz1aKcmI>ZkSwL=E%Hu>r_8x=uR^d@^quqkrpDTV@ z%=lV6bq$ABTb%vF+|}O4xX!MXy84vK)9T5WucE*CrApQ*2Yj$KxW=(>YfOpLvf|_F zTe}O(Yh(ZBROKan;46cM^LGN;VvQ8LuniD!U?( z;nh?jhO1tUkBa){*Ht?|VCK5_Z?9GQ`&&6zre)^k3q^Dn_f1b14+%f5a&ktA#j**f zFYyUKb1=;Q@#llxqAqo%C!6i~%eQC5#$4Ll8NjN1D8a(j#bHW+ZS}>YQQlTE7rBLd zf&)V5{jEC}`kpQJPUiaS+AbeECZGSdBAn~UVNOr0XWhs7XPilA+2=mtmmEcw_lx0<(PVar7h^I(A)XVTuhGqJdL zH^HhoX2Qbh($ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_string.png b/mods/farming/textures/farming_string.png new file mode 100644 index 0000000000000000000000000000000000000000..f417ec44a39858d300e423a6d33e7a8623a77be0 GIT binary patch literal 367 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N| z?e4+=20xv5*E29Ma29w(7Bet#3xhBt!>l~}c$_{9aX-p@SAz`!7z z84^+AoS&PUnpXnW?_89cSdyBeP@Y+mq2TW68<3)x%Fe*RaLm)iF~s8Z)k)TUEd~NE zw~Lwc-g6&NJ+N@DbUPpC#GaIy0(*UrEoMwhJao6~*43v$|6TsE&M7`3ankbgcia73 z*GpL|IQM+t{av;1P-^6gKT}UGW>aj5T{K0B;Z|zb7N7fm*yPxSZMyEof)j5iTNOpUe$T%u%&<@Sz}I*GS?U;Go;tGs$gJz$AisLL L`njxgN@xNA*65B` literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tool_bronzehoe.png b/mods/farming/textures/farming_tool_bronzehoe.png new file mode 100644 index 0000000000000000000000000000000000000000..8c608a0e60cf7dfcf835c16237acecb1e0f5adbb GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7BevL9RXp+soH$f3=9nHC7!;n>~~p3c@>$KOJ#wKx$WuV7-DfcIbnf-!6AwN z>KcFCCu&q2@R-DCU~sto;r=!b=H|VPOo43=r!+_&Ily3ere0H-*`D3_@T0@!0bdLr z8Yv`mGcP{O#CA+NUqXT}uHpa~96ovS!IC3C=WB>7Fgt7ViTFOB|2IM91(QU_*3h5& zCk~$Y@X}n_dH-$xV|Cl*k5n=)`}y+na-QGsYSZ`p{$>5R*ZhNo@|!mi(Nq7w_?McH zkYF)^;b28|lbglYf) literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tool_steelhoe.png b/mods/farming/textures/farming_tool_steelhoe.png new file mode 100644 index 0000000000000000000000000000000000000000..37aa26847bdff818571eccb0ee17b4da5827c40d GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7BevL9RXp+soH$f3=9nHC7!;n?02}?goQL#Y`Sa7z`$_B)5S5w;`GuWTfQa( ziCS0oSu=J#U`SMWz$(ErnR~Xhc)`c4xChpa-NEYm3VAme%kI2N5?;aBwQuFi)4zZ2 z6Z;|TBR^|dVC9POWkj&wTLBW&88)$o!u>?ys_WrggJGwWUFTDNH$|Ff??B zO;p%5-N`{r46k-=^EZ2cR_t8JrjswlHcvh)R@JjK_ftx@Nx{^gG06&xD!01ZpPchV f|IeI12c?ZYl6@>ym47iXFfe$!`njxgN@xNAb7p_l literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tool_stonehoe.png b/mods/farming/textures/farming_tool_stonehoe.png new file mode 100644 index 0000000000000000000000000000000000000000..3f5ab61279665e2e661b57ec2007a3cde2fcecbe GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7BevL9RXp+soH$f3=9nHC7!;n?02}?goO-t-*e4pU|{&}>Eak-aeC?Gy?KWW zL|X0Lc}iYf@CaPmXIj_rZiB%S)`(38o1P_ZGA>o%KQN_nDgOmQSI-GnOIC@jjBeyC zKiDDC!D&0WzGPqV`gOejrxBiEQc%3?ThIyhYZ{eAoG?DLb2``K;( zUJ%VG=lgrn<%|2|s1?b^(^F3-Z52Gde(Q==r+m)vS(weW`;Z%71zopr06HR)=l}o! literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tool_woodhoe.png b/mods/farming/textures/farming_tool_woodhoe.png new file mode 100644 index 0000000000000000000000000000000000000000..2a059f613c566f1391db88bcb22e765d64af241b GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7BevL9RXp+soH$f3=9nHC7!;n?02}?goP{*G5tNwz`(G|)5S5w;&gJt0s(_V z5;OC5{a0n(DFFiW_WwU-P&*$@X212r@Hg41UKX;17|7@>GON#@Uh* g5)vo2NpdkL9I;pa{g>?^0|Nttr>mdKI;Vst0P}BXuK)l5 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat.png b/mods/farming/textures/farming_wheat.png new file mode 100644 index 0000000000000000000000000000000000000000..76c74cbf85d6079d3492e22daa070f61a4e0672d GIT binary patch literal 658 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5z3 zJUv|;LoEE4PCD%`94K;Z|Lxl|{cbPhztknTmh%MDBBvH!Zj*^GoO&-V<(~eJJ%?i< z%i6@pe&Kq)1y6%|xOqEO-IN14O{Xm2JZR?Cx-awj&DV3i4G!&4ocHA1*)x{Ur+=<3 zZurmhsr>(=*M(}HBDs!|J&bpqJtv(%v*Fz3$BW)w{=*V1(sl3Q?)qQf80Re7%76Kc zLCy-9MK9C#9$jGckE4Ccu3Tf&i}sFT_x(36OG|#>)K$T!RnXCvsr-L4*M6nddpHj^ z^sG&C-l`)l?fre`+koat8KsOqt63vAO?c6>An5YK6Cz8y+Wvjk49cHzBU9qf?CIVq zCv;S1a$m5v@zq+ITN6{$Trit|=_X^&qeWGdT7T?jej()}<>0=x;)2~; zhcewHwsBeVOH=O_Pea2yi7tYEWDx&3=DRjE{-7H=O_Pea2yi7tYEWDx&3=9RHE{-7sU8LPEli-_PZlnVFdnzmKnfz_q)qH=O_Pea2yiCHy%(l%83=B&=T^vI!PA4Zwur6*8OL(o^UVdMI?Tn?&&-smwjg8IS ztVtJ^#}~BDU0wTd-OMev66c;hN_3X^@c6d=6oUs2T-oW@cvQ!(VI@|JVQh!!7>*r|hA)BC~Jy%F4>j47{$!+}pk~%x7R=VDNPH Kb6Mw<&;$UV%VIMC literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_4.png b/mods/farming/textures/farming_wheat_4.png new file mode 100644 index 0000000000000000000000000000000000000000..3903715e1e77f44005db9bbc92d9f3fc9722968a GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7I14-?iy0WWg+Z8+Vb&Z8 z1_lQ95>H=O_Pea2yiCHy%(l%83=HQzT^vI!PQRUan(v^4NZbCG8c~mCbvzdmj63h; za_Eqk6!$%kty^A1@ED(RI^s9y>ipuL`oCRf>i8!#@o_$l`s z`+TPxDG%Ru81tI!4ywBFGK|sU$jZnmK~i^es@b;RlJhGoj#?>JykB9d!No=G-#z%m z8N_Z+4Dx!o!}aa^qH8{>`zLgV6sT^kIw{j?{aWYr11@>Tz$rCrbSoJc7#KWV{an^L HB{Ts51fhCk literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_5.png b/mods/farming/textures/farming_wheat_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3dc98f7c6a9c1aa92d1f57838991f4aac65e3d47 GIT binary patch literal 454 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7I14-?iy0WWg+Z8+Vb&Z8 z1_lQ95>H=O_Pea2ygZx&k6xBDFfgWix;TbdoPImWU!OTp-G`ZarGFNrNGHva;d3%G{oP2lBU->icsCYvxvLm@7QR$z}e6 zuJ3^Hjd$#jba=*ROVoGBA91AbP0 Hl+XkK-Uqyo literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_6.png b/mods/farming/textures/farming_wheat_6.png new file mode 100644 index 0000000000000000000000000000000000000000..75cf64867f7029a6e402cdd223fc8d82e2260404 GIT binary patch literal 607 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7I14-?iy0WWg+Z8+Vb&Z8 z1_lQ95>H=O_Pea2ygXc;uXmhfU|{^`>Eak-ar*A0)7~M0GRN(o->H6{=_e`lWq~V; z?jkY4Ei1MOE}rDJ^QEJR2&dYWdcjs*pJtAl2M#Hg$}Fso>w7Oa3x zH}iLP;Vf$|!7Xps)IBfQcmMs*y7S`y)|=YaMW@-{omhWxhqO6&x82NN77UNqTdPbg zu&nvi_)ECpQS5RNZ^f!t&f!aTEH?Di%C!8OZ9khT39NJ}UYV2bzWT(uOOI?8Gv_ir*rg|>AXglSOQ%JuhRoR?7Qk@yK*77LIL3-~&Fk1Qe16>C&N|D> zqyD@mW5n0fPuQc@=Ett?d#thLu?0iLyv;BBU0Y7et`B(^81`zCVb?y<8`CL7?ntj~6+j!c7ByNeWwA7_8zrXI$;@Nic&?l+0;%*`9wnuKcma%rB z-P{8$Z4dXU{WRQuX7`I- O3=E#GelF{r5}E)|A`c$` literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_7.png b/mods/farming/textures/farming_wheat_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b12686dd642b3310afd6403598d55a300674e858 GIT binary patch literal 676 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7I14-?iy0WWg+Z8+Vb&Z8 z1_lQ95>H=O_Pea2ygXc;uXmhfU|@3gba4!^IDK}~dGC-wk>mE?&sCpaer^h{pl+AT zFXl~R7w;Kyc&j;fiR~;(oTU0!+$n;?)kB!msf#B|(J{p}#HHJzi(_TLg`neeKA!FW z{%r5%M~{~5o_6=H?e}WC=hf$IKg7?~U;q2*;mdJ9!~ZUye%&>nU+4cVmu%r#v)@iO z@2_69;r#kvtkV)gu$ z5jt!K-nI0~OQcV`R#Q_J$~RvkAS%10`1FDznbll3iWm&+^An~mjl8cB{&=Uad_!xi z{0rTONA{L6o~U;F@h5P3$Bd6Avho3Ob-WG9%kx%0UFynEw@!?A!Q$$m&KY%!PlRax zR+POvnM=X=j$YishIF}QN3^AKHyw0MZwqD$(3&atn3J7hX~@;0r9y=tPiWQTHJGksdoCE zRnqGP3Kph&`7RIMG)cE;NvVtP^591|#KLa!cV6Ee(f90V#d4Ow6E7}EX4>31@aU2n zLtk=_8O hDV#Nl{+p)Rvz`2vzFp$jCI$uu22WQ%mvv4FO#q|tD?H=O_Pea2ygc0h-gHDWFfg6+ba4!^INdwxbbd&w$Z`AU<@djDyUf^op}jxj z(J6Mlh#eO?q=PpWvc+WNct}n6O6vI|Diz$*%iX&+b zaG-UwyKk+=lg7XKCy(aGn@44TldTA6u&aH4^U1_^d7s^TnM!}&*(iHNh0oxbSmV>F zd<=z8f<(&dp8hc`{(ht2RW+BO?$tzh|6Gz30F*-C|6Y!#U@mppit(y+meCp;P-?TViS(Yz54ez|Mb%M|11gj z8#6UmN6(A-^Rt{`-MTVPrsGW(UDx(YM#f!yE2`0OFYKhayu1;^+iP45@$+r=Bp-YH z*f>afhvxE>wWZ1D7yHXjKX_y_dtBXD?~|XH8ouqiTDJJEI?tO+=IZeV`(t+T97y(; zpC0@5iPeFA`@fA*v$CZa+&LNU`L0^G$gnhOP2S;R_niMf+j%F8t1?VATcNXk(bl%5 zJC|Ktde6_%qIl8HxqTl_p4q_|5$)gUJUb+E+KP#`8)G|c%r5t6Y$?=yYE+owIPKXy z^XAUOwTnv`+`e6#kh^X1VdoY5r<>2HeJ;6q=S0Jwx5AUAeAUzU+814MaZS0=ubIy} zkL{`1|6@|-+A>RvN-w+L35Rsnmjrz8;}vYTOI9{bTYlVEUw3AG{h>Rh?jGsJhl}UV zwO_fa>(@GghHAI$7ha0o@}|A-wLk4~Iih&_?Q+#Zhrke-s?@-9b1ZT;t!*+WI%(Xy z!)gC~VK%!{f)5`&(fnxBe(XwSrxU-RWA=;hMbFaJd_qGj8V|cI?-%DhyONc&rr)Ay z;?bLJH)HuPMqR$SWx4+G T(p3oz3=9mOu6{1-oD!MH=O_Pea2Jc=fnNmKVRFfbN*x;TbdoL(E`>&+A>V*7q?;S!HKH< z@>(qMm4@)v*YcuUS9omxsH_v^!qREr;j#5iyo83bm8J3aqYsXIv&U3~zrR=h?&+Lj zeS`Ep(@kcDK0oZPJAE3%*-twbMxG41t+Xe0X~r{#%@YKD$n0Xy7&9uvYx$ zo;15TvH>YG8#{i=@yxb=Z``71&{%Ju!i#^YOmeC%1Bb7vWo>Ws?VkJC9B>faum Wr=rQSYb^r<1B0ilpUXO@geCxtZ^K6b literal 0 HcmV?d00001