From f198c25db235f3b9385d498e847d87300a1a3e1a Mon Sep 17 00:00:00 2001 From: crabman77 Date: Mon, 12 Oct 2015 21:55:06 +0200 Subject: [PATCH] remove spears, improve and fix bug in throwing mod --- mods/throwing/build_arrow.lua | 13 +- mods/throwing/defaults.lua | 5 - mods/throwing/dig_arrow.lua | 29 ++-- mods/throwing/fire_arrow.lua | 17 ++- mods/throwing/functions.lua | 25 ++-- mods/throwing/init.lua | 1 - mods/throwing/shell_arrow.lua | 6 +- mods/throwing/spears.lua | 136 ------------------ mods/throwing/standard_arrows.lua | 21 ++- mods/throwing/teleport_arrow.lua | 6 +- mods/throwing/textures/throwing_spear_box.png | Bin 174 -> 0 bytes .../textures/throwing_spear_diamond.png | Bin 442 -> 0 bytes .../textures/throwing_spear_mithril.png | Bin 426 -> 0 bytes .../textures/throwing_spear_obsidian.png | Bin 391 -> 0 bytes .../textures/throwing_spear_steel.png | Bin 431 -> 0 bytes .../textures/throwing_spear_stone.png | Bin 431 -> 0 bytes mods/throwing/throwing.conf | 6 - mods/throwing/torch_arrow.lua | 39 +++-- 18 files changed, 103 insertions(+), 201 deletions(-) delete mode 100644 mods/throwing/spears.lua delete mode 100755 mods/throwing/textures/throwing_spear_box.png delete mode 100755 mods/throwing/textures/throwing_spear_diamond.png delete mode 100755 mods/throwing/textures/throwing_spear_mithril.png delete mode 100755 mods/throwing/textures/throwing_spear_obsidian.png delete mode 100755 mods/throwing/textures/throwing_spear_steel.png delete mode 100755 mods/throwing/textures/throwing_spear_stone.png diff --git a/mods/throwing/build_arrow.lua b/mods/throwing/build_arrow.lua index 6fd664ec..1c246e1e 100755 --- a/mods/throwing/build_arrow.lua +++ b/mods/throwing/build_arrow.lua @@ -69,9 +69,18 @@ THROWING_ARROW_ENTITY.on_step = function(self, dtime) end end - if node.name ~= "air" and not string.find(node.name, "water_") and not string.find(node.name, 'grass') and not string.find(node.name, 'flowers:') and not string.find(node.name, 'farming:') and not string.find(node.name, 'fire:') then + if node.name ~= "air" + and not string.find(node.name, "water_") + and not (string.find(node.name, 'grass') and not string.find(node.name, 'dirt')) + and not (string.find(node.name, 'farming:') and not string.find(node.name, 'soil')) + and not string.find(node.name, 'flowers:') + and not string.find(node.name, 'fire:') then if node.name ~= "ignore" and self.inventory and self.stack then - if not minetest.is_protected(self.lastpos, "") and not string.find(node.name, "water_") and not string.find(node.name, "lava") and not string.find(node.name, "torch") and self.stack:get_definition().type == "node" and self.stack:get_name() ~= "default:torch" then + if not minetest.is_protected(self.lastpos, "") + and not string.find(node.name, "lava") + and not string.find(node.name, "torch") + and self.stack:get_definition().type == "node" + and self.stack:get_name() ~= "default:torch" then minetest.place_node(self.lastpos, {name=self.stack:get_name()}) else minetest.add_item(self.lastpos, {name=self.stack:get_name()}) diff --git a/mods/throwing/defaults.lua b/mods/throwing/defaults.lua index 994765e1..90518fa3 100755 --- a/mods/throwing/defaults.lua +++ b/mods/throwing/defaults.lua @@ -23,8 +23,3 @@ DISABLE_STEEL_ARROW = false DISABLE_DIAMOND_ARROW = false DISABLE_OBSIDIAN_ARROW = false -DISABLE_STONE_SPEAR = false -DISABLE_STEEL_SPEAR = false -DISABLE_DIAMOND_SPEAR = false -DISABLE_OBSIDIAN_SPEAR = false -DISABLE_MITHRIL_SPEAR = false diff --git a/mods/throwing/dig_arrow.lua b/mods/throwing/dig_arrow.lua index beeed38f..dd202572 100755 --- a/mods/throwing/dig_arrow.lua +++ b/mods/throwing/dig_arrow.lua @@ -49,19 +49,30 @@ THROWING_ARROW_ENTITY.on_step = function(self, dtime) local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 1) for k, obj in pairs(objs) do if throwing_is_player(self.player, obj) or throwing_is_entity(obj) then - local damage = 1.5 - obj:punch(self.object, 1.0, { - full_punch_interval=1.0, + if throwing_touch(pos, objpos) then + local puncher = self.object + if self.player and minetest.get_player_by_name(self.player) then + puncher = minetest.get_player_by_name(self.player) + end + local damage = 1.5 + obj:punch(puncher, 1.0, { + full_punch_interval=1.0, damage_groups={fleshy=damage}, - }, nil) - if math.random(0,100) % 2 == 0 then -- 50% of chance to drop //MFF (Mg|07/27/15) - minetest.add_item(pos, "throwing:arrow_dig") + }, nil) + if math.random(0,100) % 2 == 0 then -- 50% of chance to drop //MFF (Mg|07/27/15) + minetest.add_item(pos, "throwing:arrow_dig") + end + self.object:remove() + return end - self.object:remove() - return end end - if node.name ~= "air" and not string.find(node.name, "water_") and not string.find(node.name, 'grass') and not string.find(node.name, 'flowers:') and not string.find(node.name, 'farming:') and not string.find(node.name, 'fire:') then + if node.name ~= "air" + and not string.find(node.name, "water_") + and not (string.find(node.name, 'grass') and not string.find(node.name, 'dirt')) + and not (string.find(node.name, 'farming:') and not string.find(node.name, 'soil')) + and not string.find(node.name, 'flowers:') + and not string.find(node.name, 'fire:') then if node.name ~= "ignore" and minetest.get_item_group(node.name, "unbreakable") == 0 and not minetest.is_protected(pos, self.player) and node.diggable ~= false then diff --git a/mods/throwing/fire_arrow.lua b/mods/throwing/fire_arrow.lua index f8497d79..d7b57aa5 100755 --- a/mods/throwing/fire_arrow.lua +++ b/mods/throwing/fire_arrow.lua @@ -48,10 +48,13 @@ THROWING_ARROW_ENTITY.on_step = function(self, dtime) for k, obj in pairs(objs) do local objpos = obj:getpos() if throwing_is_player(self.player, obj) or throwing_is_entity(obj) then - if (pos.x - objpos.x < 0.5 and pos.x - objpos.x > -0.5) and (pos.z - objpos.z < 0.5 and pos.z - objpos.z > -0.5) then - + if throwing_touch(pos, objpos) then + local puncher = self.object + if self.player and minetest.get_player_by_name(self.player) then + puncher = minetest.get_player_by_name(self.player) + end local damage = 4 - obj:punch(self.object, 1.0, { + obj:punch(puncher, 1.0, { full_punch_interval=1.0, damage_groups={fleshy=damage}, }, nil) @@ -64,7 +67,13 @@ THROWING_ARROW_ENTITY.on_step = function(self, dtime) end end - if node.name ~= "air" and node.name ~= "throwing:light" and node.name ~= "fire:basic_flame" and not string.find(node.name, 'grass') and not string.find(node.name, 'flowers:') and not string.find(node.name, 'farming:') and not string.find(node.name, 'fire:') then + if node.name ~= "air" + and node.name ~= "throwing:light" + and node.name ~= "fire:basic_flame" + and not (string.find(node.name, 'grass') and not string.find(node.name, 'dirt')) + and not (string.find(node.name, 'farming:') and not string.find(node.name, 'soil')) + and not string.find(node.name, 'flowers:') + and not string.find(node.name, 'fire:') then if node.name ~= "ignore" then minetest.set_node(self.lastpos, {name="fire:basic_flame"}) end diff --git a/mods/throwing/functions.lua b/mods/throwing/functions.lua index a38988d7..5d97bf8b 100755 --- a/mods/throwing/functions.lua +++ b/mods/throwing/functions.lua @@ -45,6 +45,15 @@ function throwing_get_trajectoire(self, newpos) return coord end +function throwing_touch(pos, objpos) + local rx = pos.x - objpos.x + local ry = pos.y - (objpos.y+1) + local rz = pos.z - objpos.z + if (ry < 1 and ry > -1) and (rx < 0.4 and rx > -0.4) and (rz < 0.4 and rz > -0.4) then + return true + end + return false +end function throwing_shoot_arrow (itemstack, player, stiffness, is_cross) if not player then return end @@ -179,19 +188,3 @@ function throwing_register_bow (name, desc, scale, stiffness, reload_time, tough }) end --- Spears - -function throwing_shoot_spear (itemstack, player) - local spear = itemstack:get_name() .. '_entity' - local playerpos = player:getpos() - local obj = minetest.add_entity({x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, spear) - local dir = player:get_look_dir() - obj:setvelocity({x=dir.x*14, y=dir.y*14, z=dir.z*14}) - obj:setacceleration({x=-dir.x*1, y=-9.8, z=-dir.z*1}) - obj:setyaw(player:get_look_yaw()+math.pi) - obj:get_luaentity().wear = itemstack:get_wear() - obj:get_luaentity().player = player:get_player_name() - obj:get_luaentity().lastpos = {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z} - minetest.sound_play("throwing_bow_sound", {pos=playerpos}) - return true -end diff --git a/mods/throwing/init.lua b/mods/throwing/init.lua index 32b52cb1..ca43f8f3 100755 --- a/mods/throwing/init.lua +++ b/mods/throwing/init.lua @@ -32,7 +32,6 @@ dofile(minetest.get_modpath("throwing").."/crafts.lua") dofile(minetest.get_modpath("throwing").."/standard_arrows.lua") -dofile(minetest.get_modpath("throwing").."/spears.lua") if minetest.get_modpath('fire') and minetest.get_modpath('bucket') and not DISABLE_FIRE_ARROW then dofile(minetest.get_modpath("throwing").."/fire_arrow.lua") diff --git a/mods/throwing/shell_arrow.lua b/mods/throwing/shell_arrow.lua index ef9a82d6..80b4db5c 100755 --- a/mods/throwing/shell_arrow.lua +++ b/mods/throwing/shell_arrow.lua @@ -90,7 +90,11 @@ THROWING_ARROW_ENTITY.on_step = function(self, dtime) end end - if node.name ~= "air" and not string.find(node.name, 'grass') and not string.find(node.name, 'flowers:') and not string.find(node.name, 'farming:') and not string.find(node.name, 'fire:') then + if node.name ~= "air" + and not (string.find(node.name, 'grass') and not string.find(node.name, 'dirt')) + and not (string.find(node.name, 'farming:') and not string.find(node.name, 'soil')) + and not string.find(node.name, 'flowers:') + and not string.find(node.name, 'fire:') then boom(self.lastpos) self.object:remove() return diff --git a/mods/throwing/spears.lua b/mods/throwing/spears.lua deleted file mode 100644 index d2d274ff..00000000 --- a/mods/throwing/spears.lua +++ /dev/null @@ -1,136 +0,0 @@ -function throwing_register_spear_standard (kind, desc, eq, toughness, craft) - minetest.register_tool("throwing:spear_" .. kind, { - description = desc .. " spear", - inventory_image = "throwing_spear_" .. kind .. ".png", - wield_scale= {x=2,y=1.5,z=1.5}; - on_use = function(itemstack, user, pointed_thing) - if pointed_thing.type == "object" then - local damage = eq --((eq + 20)^1.2)/10 --MFF crabman(28/09/2015) damage valeur equal eq - pointed_thing.ref:punch(user, 1.0, { - full_punch_interval=1.0, - damage_groups={fleshy=damage}, - }, nil) - if not minetest.setting_getbool("creative_mode") then - itemstack:add_wear(65535/toughness) - end - else - throwing_shoot_spear(itemstack, user) - if not minetest.setting_getbool("creative_mode") then - itemstack:take_item() - end - end - return itemstack - end, - }) - - minetest.register_node("throwing:spear_" .. kind .. "_box", { - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - -- Shaft - {-60/16, -2/16, 2/16, 4, 1/16, -1/16}, - --Spitze - {-4, -1/16, 1/16, -62/16, 0, 0}, - {-62/16, -1.5/16, 1.5/16, -60/16, 0.5/16, -0.5/16}, - } - }, - tiles = {"throwing_spear_box.png"}, - groups = {not_in_creative_inventory=1}, - }) - - local THROWING_SPEAR_ENTITY={ - physical = false, - visual = "wielditem", - visual_size = {x=0.1, y=0.1}, - textures = {"throwing:spear_" .. kind .. "_box"}, - lastpos={}, - collisionbox = {0,0,0,0,0,0}, - player = "", - wear = 0, - } - - THROWING_SPEAR_ENTITY.on_step = function(self, dtime) - if not self.wear then - self.object:remove() - return - end - local newpos = self.object:getpos() - if self.lastpos.x ~= nil then - for _, pos in pairs(throwing_get_trajectoire(self, newpos)) do - local node = minetest.get_node(pos) - local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) - for k, obj in pairs(objs) do - local objpos = obj:getpos() - if throwing_is_player(self.player, obj) or throwing_is_entity(obj) then - if (pos.x - objpos.x < 0.5 and pos.x - objpos.x > -0.5) and (pos.z - objpos.z < 0.5 and pos.z - objpos.z > -0.5) then - --local speed = vector.length(self.object:getvelocity()) --MFF crabman(28/09/2015) damage valeur equal eq - local damage = eq --((speed + eq +5)^1.2)/10 --MFF crabman(28/09/2015) damage valeur equal eq - obj:punch(self.object, 1.0, { - full_punch_interval=1.0, - damage_groups={fleshy=damage}, - }, nil) - minetest.add_item(self.lastpos, {name='throwing:spear_' .. kind, count=1, wear=self.wear+65535/toughness, metadata=""}) - --if math.random() < toughness then - --minetest.add_item(self.lastpos, 'throwing:spear_' .. kind) - --else - --minetest.add_item(self.lastpos, 'default:stick') - --end - self.object:remove() - return - end - end - end - if node.name ~= "air" and not string.find(node.name, 'water_') and not string.find(node.name, 'grass') and not string.find(node.name, 'flowers:') and not string.find(node.name, 'farming:') and not string.find(node.name, 'fire:') then - minetest.add_item(self.lastpos, {name='throwing:spear_' .. kind, count=1, wear=self.wear+65535/toughness, metadata=""}) - --if math.random() < toughness then - --minetest.add_item(self.lastpos, 'throwing:spear_' .. kind) - --else - --minetest.add_item(self.lastpos, 'default:stick') - --end - self.object:remove() - return - end - self.lastpos={x=pos.x, y=pos.y, z=pos.z} - end - end - self.lastpos={x=newpos.x, y=newpos.y, z=newpos.z} - end - - minetest.register_entity("throwing:spear_" .. kind .. "_entity", THROWING_SPEAR_ENTITY) - - minetest.register_craft({ - output = 'throwing:spear_' .. kind, - recipe = { - {'group:wood', 'group:wood', craft}, - } - }) - - minetest.register_craft({ - output = 'throwing:spear_' .. kind, - recipe = { - {craft, 'group:wood', 'group:wood'}, - } - }) -end - -if not DISABLE_STONE_SPEAR then - throwing_register_spear_standard ('stone', 'Stone (Hunter)', 3, 25, 'group:stone') --MFF crabman(28/09/2015) damage and wear -end - -if not DISABLE_STEEL_SPEAR then - throwing_register_spear_standard ('steel', 'Steel (Hunter)', 4, 30, 'default:steel_ingot') --MFF crabman(28/09/2015) damage and wear -end - -if not DISABLE_DIAMOND_SPEAR then - throwing_register_spear_standard ('diamond', 'Diamond (Hunter)', 7, 50, 'default:diamond') --MFF crabman(28/09/2015) damage and wear -end - -if not DISABLE_OBSIDIAN_SPEAR then - throwing_register_spear_standard ('obsidian', 'Obsidian (Hunter)', 5, 40, 'default:obsidian') --MFF crabman(28/09/2015) damage and wear -end - -if not DISABLE_MITHRIL_SPEAR then - throwing_register_spear_standard ('mithril', 'Mithril (Hunter)', 8, 200, 'moreores:mithril_ingot') --MFF crabman(28/09/2015) damage and wear -end - diff --git a/mods/throwing/standard_arrows.lua b/mods/throwing/standard_arrows.lua index c4d728d1..28fdfed6 100755 --- a/mods/throwing/standard_arrows.lua +++ b/mods/throwing/standard_arrows.lua @@ -50,11 +50,15 @@ function throwing_register_arrow_standard (kind, desc, eq, toughness, craft) for k, obj in pairs(objs) do local objpos = obj:getpos() if throwing_is_player(self.player, obj) or throwing_is_entity(obj) then - if (pos.x - objpos.x < 0.5 and pos.x - objpos.x > -0.5) and (pos.z - objpos.z < 0.5 and pos.z - objpos.z > -0.5) then - obj:punch(self.object, 1.0, { - full_punch_interval=1.0, - damage_groups={fleshy=eq}, - }, nil) + if throwing_touch(pos, objpos) then + local puncher = self.object + if self.player and minetest.get_player_by_name(self.player) then + puncher = minetest.get_player_by_name(self.player) + end + obj:punch(puncher, 1.0, { + full_punch_interval=1.0, + damage_groups={fleshy=eq}, + }, nil) if math.random() < toughness then if math.random(0,100) % 2 == 0 then minetest.add_item(self.lastpos, 'throwing:arrow_' .. kind) @@ -67,7 +71,12 @@ function throwing_register_arrow_standard (kind, desc, eq, toughness, craft) end end end - if node.name ~= "air" and not string.find(node.name, 'water_') and not string.find(node.name, 'grass') and not string.find(node.name, 'flowers:') and not string.find(node.name, 'farming:') and not string.find(node.name, 'fire:') then + if node.name ~= "air" + and not string.find(node.name, 'water_') + and not (string.find(node.name, 'grass') and not string.find(node.name, 'dirt')) + and not (string.find(node.name, 'farming:') and not string.find(node.name, 'soil')) + and not string.find(node.name, 'flowers:') + and not string.find(node.name, 'fire:') then if math.random() < toughness then minetest.add_item(self.lastpos, 'throwing:arrow_' .. kind) else diff --git a/mods/throwing/teleport_arrow.lua b/mods/throwing/teleport_arrow.lua index c1c9801f..adb6ed13 100755 --- a/mods/throwing/teleport_arrow.lua +++ b/mods/throwing/teleport_arrow.lua @@ -58,7 +58,11 @@ THROWING_ARROW_ENTITY.on_step = function(self, dtime) end end - if node.name ~= "air" and not string.find(node.name, 'grass') and not string.find(node.name, 'flowers:') and not string.find(node.name, 'farming:') and not string.find(node.name, 'fire:') then + if node.name ~= "air" + and not (string.find(node.name, 'grass') and not string.find(node.name, 'dirt')) + and not (string.find(node.name, 'farming:') and not string.find(node.name, 'soil')) + and not string.find(node.name, 'flowers:') + and not string.find(node.name, 'fire:') then if self.player ~= "" then local player = minetest.get_player_by_name(self.player) if player then diff --git a/mods/throwing/textures/throwing_spear_box.png b/mods/throwing/textures/throwing_spear_box.png deleted file mode 100755 index ac2c014da00c37c4d96921a1b6d8688d75b9ff7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_mK8X6#Yg$qp1`FY)wsWxvlUDj;hvH)r)zppdnvi(^Q{;kOqy@-is!968W%$$-0g zW4$P6V?vMqJ@dw=91IP+x24&oI)uxgn0SlfZ==;a_HU;43=9X@*R5q;RQEK#8)yuJ Mr>mdKI;Vst0G6sXi2wiq diff --git a/mods/throwing/textures/throwing_spear_diamond.png b/mods/throwing/textures/throwing_spear_diamond.png deleted file mode 100755 index 820fa43a3a668d2612bd9ed68af4ed44afafec75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmV;r0Y(0aP)MM{LI9ZC?yFiC7=U>2MZG$iU320B={nl0 zsz}(ZaMBW)ADFa+%^OlmB6o{PN!X%cLrWAsWI{_=-_W5XypP#X61ME?D=Sg@M^je9 zhH7PBiD184Ux|=2p_fGPVWX&o#8g~JLTud1DLUT9# kQ^KHJX^B;A$8!mQZ`ePyh&7M6C;$Ke07*qoM6N<$f;tkgkN^Mx diff --git a/mods/throwing/textures/throwing_spear_mithril.png b/mods/throwing/textures/throwing_spear_mithril.png deleted file mode 100755 index d0ac2a381c259c7d5ba26a5581fb1c46e00e3971..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 426 zcmV;b0agBqP)K9h{3pUqkQ#x^z&7Cg3J? z60=Gt1BG&(5+!JpT<(AV#{`lepXBcTf5rXMa8fT169D!6I>$$8u3Rb+czc|(jrKGf zH^+N`v_vYfjrQDj+8p8^!d2i+pg!(D0dR#C*Ij0l4edh`t*D z;vv$9k4HlQJ{N(>gaA;p#m?I*PypfAFP&DLTr=VV*&6g(UL31>&Gt%S>-&`QF2 zvr$$;qAM;XA=Yjcm5`hZ3Q34}y?GKoCZm5P6rSpmgwNUVtc1dIWhJgL9j6iie`__b UfHR{tzW@LL07*qoM6N<$f;Y#fng9R* diff --git a/mods/throwing/textures/throwing_spear_obsidian.png b/mods/throwing/textures/throwing_spear_obsidian.png deleted file mode 100755 index 922555026c49f68f6a10595299ee9ea8dcef5440..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7lu5BI0h%hje(&+5zYdS z$YKTtZeb8+WSBKa0w~B{;_2(kexFlDl)-v(E8AuU21XH27srr@!$+^%^D#P#9RK)! zl1G?|veGO;QTBk>G6xt%`V{;Y6fjNA_Aud^o3{9X?2&DYlrHu-DG9ClYy8>Aet%8c zy?1A%rv$laroM`rz3W<<(JM(7_da`meglThp7Wh67QGN>knk6u_kvI6kT7rT!=k+# z@4tCcmSFM1E<5fEw@FFs)gs;lHWpPvstiEES-Bq~DtFIRxB0EqvHgSJ>Kqk8`DRtY zc;}@86B~s(<|nQb+}ISOl+?b%NrkJR(ZlAZnbK94*&SDkqC0%PZf-pBM>O3v;^*|u z3Tx(OWD16z|7ybVdV6$G%VcXi&O?#Qg~cCkx!>JfaPR9srw$vtMFL6<8Z8nJq@6@Q ia4PauxL#SM`flU?ozsQuP96sa8H1;*pUXO@geCyuN|5dV diff --git a/mods/throwing/textures/throwing_spear_steel.png b/mods/throwing/textures/throwing_spear_steel.png deleted file mode 100755 index 1a6f9169db0677c1b065fd946b08222ed5b4a80b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 431 zcmV;g0Z{&lP)7Wixz)f%x zGX+GDRw$I~WGJC+lFR+i|Cm7XAR6GuOU&zR0YLYr zLUgDBh=)iXJ{0?zLgA_YlJGej{wksHTxp3*Ovi}? Zz&GnDvCJ(UxP1Ts002ovPDHLkV1gScvx@)# diff --git a/mods/throwing/textures/throwing_spear_stone.png b/mods/throwing/textures/throwing_spear_stone.png deleted file mode 100755 index a2145a34c74609c51ff1d1bad6ef5b9826bebdf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 431 zcmV;g0Z{&lP)D&*jc*tEwYIC0DT0Xp>I;?1GqR?2NUR4aFPb< zB2ESha-B>|Xq)76|MNd4ko@>0clZCR$#`r48bJWSRr>=#O&_1}QJOQC3d7I<+zk|) zWJkLdWcL81B{G3cvg5kf<&b_7FC%XPjmzd1fJ6En;_VgUWn@kYq5*!q#LQze*@PS6<>A({UyN Z@C9m1u5U+ScEkVx002ovPDHLkV1oG%tt