Compare commits
	
		
			8 Commits
		
	
	
		
			2018-11-09
			...
			20200603-1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 31a938693a | ||
|  | 45c89704f0 | ||
|  | 8d3a0e92de | ||
|  | db78e3dcdb | ||
|  | da1deecb4c | ||
|  | df30ce9477 | ||
|  | b2defa0eec | ||
|  | 4880b5c0c3 | 
							
								
								
									
										76
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						| @@ -2,6 +2,13 @@ | |||||||
| -- by Vanessa Dannenberg | -- by Vanessa Dannenberg | ||||||
|  |  | ||||||
| led_marquee = {} | led_marquee = {} | ||||||
|  | led_marquee.scheduled_messages = {} | ||||||
|  |  | ||||||
|  | led_marquee.message_minimum_time   = tonumber(minetest.settings:get("led_marquee_message_minimum_time"))   or 0.5 | ||||||
|  |  | ||||||
|  | led_marquee.message_schedule_dtime = tonumber(minetest.settings:get("led_marquee_message_schedule_dtime")) or 0.2 | ||||||
|  | led_marquee.message_schedule_size  = tonumber(minetest.settings:get("led_marquee_message_schedule_size"))  or 10 | ||||||
|  | led_marquee.relay_timer = 0 | ||||||
|  |  | ||||||
| local S | local S | ||||||
| if minetest.get_modpath("intllib") then | if minetest.get_modpath("intllib") then | ||||||
| @@ -128,7 +135,12 @@ local make_iso = function(s) | |||||||
| 	local s2 = "" | 	local s2 = "" | ||||||
| 	while i <= string.len(s) do | 	while i <= string.len(s) do | ||||||
| 		if string.byte(s,i) > 159 then | 		if string.byte(s,i) > 159 then | ||||||
| 			s2 = s2..string.char(get_iso(string.sub(s, i, i+1))) | 			local ciso = get_iso(string.sub(s, i, i+1)) | ||||||
|  | 			if ciso >= 0 and ciso < 256 then | ||||||
|  | 				s2 = s2..string.char(ciso) | ||||||
|  | 			else | ||||||
|  | 				s2 = s2..string.char(127) | ||||||
|  | 			end | ||||||
| 			i = i + 2 | 			i = i + 2 | ||||||
| 		else | 		else | ||||||
| 			s2 = s2..string.sub(s, i, i) | 			s2 = s2..string.sub(s, i, i) | ||||||
| @@ -143,7 +155,7 @@ end | |||||||
| led_marquee.set_timer = function(pos, timeout) | led_marquee.set_timer = function(pos, timeout) | ||||||
| 	local timer = minetest.get_node_timer(pos) | 	local timer = minetest.get_node_timer(pos) | ||||||
| 	timer:stop() | 	timer:stop() | ||||||
| 	if not timeout or timeout < 0.2 or timeout > 5 then return false end | 	if not timeout or timeout < led_marquee.message_minimum_time or timeout > 5 then return false end | ||||||
|  |  | ||||||
| 	if timeout > 0 then | 	if timeout > 0 then | ||||||
| 		local meta = minetest.get_meta(pos) | 		local meta = minetest.get_meta(pos) | ||||||
| @@ -184,7 +196,7 @@ led_marquee.scroll_text = function(pos, elapsed, skip) | |||||||
| 			break | 			break | ||||||
| 		end | 		end | ||||||
| 	end | 	end | ||||||
| 	led_marquee.display_msg(pos, channel, "/"..colorchar..string.sub(msg, f)..string.rep(" ", skip + 1)) | 	led_marquee.schedule_msg(pos, channel, "/"..colorchar..string.sub(msg, f)..string.rep(" ", skip + 1)) | ||||||
|  |  | ||||||
| 	meta:set_int("index", f) | 	meta:set_int("index", f) | ||||||
| 	if not elapsed or elapsed < 0.2 then return false end | 	if not elapsed or elapsed < 0.2 then return false end | ||||||
| @@ -213,6 +225,27 @@ led_marquee.decode_color = function(msg) | |||||||
|  |  | ||||||
| end | end | ||||||
|  |  | ||||||
|  | minetest.register_globalstep(function(dtime) | ||||||
|  | 	if dtime <= led_marquee.message_schedule_dtime | ||||||
|  | 	  and (#led_marquee.scheduled_messages) > 0 then | ||||||
|  | 		led_marquee.display_msg( | ||||||
|  | 			led_marquee.scheduled_messages[1].pos, | ||||||
|  | 			led_marquee.scheduled_messages[1].channel, | ||||||
|  | 			led_marquee.scheduled_messages[1].msg | ||||||
|  | 		) | ||||||
|  | 	end | ||||||
|  | 	table.remove(led_marquee.scheduled_messages, 1) | ||||||
|  | end) | ||||||
|  |  | ||||||
|  | led_marquee.schedule_msg = function(pos, channel, msg) | ||||||
|  | 	local idx = #led_marquee.scheduled_messages | ||||||
|  | 	led_marquee.scheduled_messages[idx+1] = { pos=pos, channel=channel, msg=msg } | ||||||
|  |  | ||||||
|  | 	if idx >= led_marquee.message_schedule_size then | ||||||
|  | 		table.remove(led_marquee.scheduled_messages, 1) | ||||||
|  | 	end | ||||||
|  | end | ||||||
|  |  | ||||||
| led_marquee.display_msg = function(pos, channel, msg) | led_marquee.display_msg = function(pos, channel, msg) | ||||||
| 	msg = string.sub(msg, 1, 6144).." " | 	msg = string.sub(msg, 1, 6144).." " | ||||||
| 	if string.sub(msg,1,1) == string.char(255) then -- treat it as incoming UTF-8 | 	if string.sub(msg,1,1) == string.char(255) then -- treat it as incoming UTF-8 | ||||||
| @@ -312,13 +345,13 @@ local on_digiline_receive_string = function(pos, node, channel, msg) | |||||||
| 				led_marquee.set_timer(pos, 0) | 				led_marquee.set_timer(pos, 0) | ||||||
| 				msg = string.rep(" ", 2048) | 				msg = string.rep(" ", 2048) | ||||||
| 				meta:set_string("last_msg", msg) | 				meta:set_string("last_msg", msg) | ||||||
| 				led_marquee.display_msg(pos, channel, msg) | 				led_marquee.schedule_msg(pos, channel, msg) | ||||||
| 				meta:set_int("index", 1) | 				meta:set_int("index", 1) | ||||||
| 			elseif msg == "allon" then | 			elseif msg == "allon" then | ||||||
| 				led_marquee.set_timer(pos, 0) | 				led_marquee.set_timer(pos, 0) | ||||||
| 				msg = string.rep(string.char(144), 2048) | 				msg = string.rep(string.char(144), 2048) | ||||||
| 				meta:set_string("last_msg", msg) | 				meta:set_string("last_msg", msg) | ||||||
| 				led_marquee.display_msg(pos, channel, msg) | 				led_marquee.schedule_msg(pos, channel, msg) | ||||||
| 				meta:set_int("index", 1) | 				meta:set_int("index", 1) | ||||||
| 			elseif msg == "start_scroll" then | 			elseif msg == "start_scroll" then | ||||||
| 				local timeout = meta:get_int("timeout") | 				local timeout = meta:get_int("timeout") | ||||||
| @@ -328,7 +361,7 @@ local on_digiline_receive_string = function(pos, node, channel, msg) | |||||||
| 				return | 				return | ||||||
| 			elseif string.sub(msg, 1, 12) == "scroll_speed" then | 			elseif string.sub(msg, 1, 12) == "scroll_speed" then | ||||||
| 				local timeout = tonumber(string.sub(msg, 13)) | 				local timeout = tonumber(string.sub(msg, 13)) | ||||||
| 				led_marquee.set_timer(pos, timeout) | 				led_marquee.set_timer(pos, math.max(timeout, led_marquee.message_minimum_time)) | ||||||
| 			elseif string.sub(msg, 1, 11) == "scroll_step" then | 			elseif string.sub(msg, 1, 11) == "scroll_step" then | ||||||
| 				local skip = tonumber(string.sub(msg, 12)) | 				local skip = tonumber(string.sub(msg, 12)) | ||||||
| 				led_marquee.scroll_text(pos, nil, skip) | 				led_marquee.scroll_text(pos, nil, skip) | ||||||
| @@ -343,7 +376,7 @@ local on_digiline_receive_string = function(pos, node, channel, msg) | |||||||
| 				led_marquee.set_timer(pos, 0) | 				led_marquee.set_timer(pos, 0) | ||||||
| 				local last_msg = meta:get_string("last_msg") | 				local last_msg = meta:get_string("last_msg") | ||||||
| 				meta:set_string("last_msg", msg) | 				meta:set_string("last_msg", msg) | ||||||
| 				led_marquee.display_msg(pos, channel, msg) | 				led_marquee.schedule_msg(pos, channel, msg) | ||||||
| 				if last_msg ~= msg then | 				if last_msg ~= msg then | ||||||
| 					meta:set_int("index", 1) | 					meta:set_int("index", 1) | ||||||
| 				end | 				end | ||||||
| @@ -358,7 +391,7 @@ local on_digiline_receive_string = function(pos, node, channel, msg) | |||||||
| 		end | 		end | ||||||
| 	elseif msg and type(msg) == "number" then | 	elseif msg and type(msg) == "number" then | ||||||
| 		meta:set_string("last_msg", tostring(msg)) | 		meta:set_string("last_msg", tostring(msg)) | ||||||
| 		led_marquee.display_msg(pos, channel, tostring(msg)) | 		led_marquee.schedule_msg(pos, channel, tostring(msg)) | ||||||
| 		meta:set_int("index", 1) | 		meta:set_int("index", 1) | ||||||
| 	end | 	end | ||||||
| end | end | ||||||
| @@ -369,23 +402,17 @@ for i = 31, 255 do | |||||||
| 	local groups = { cracky = 2, not_in_creative_inventory = 1} | 	local groups = { cracky = 2, not_in_creative_inventory = 1} | ||||||
| 	local light = LIGHT_MAX-2 | 	local light = LIGHT_MAX-2 | ||||||
| 	local description = S("LED marquee panel ("..i..")") | 	local description = S("LED marquee panel ("..i..")") | ||||||
| 	local tiles = { | 	local leds = "led_marquee_char_"..i..".png^[mask:led_marquee_leds_on.png" | ||||||
| 				{ name="led_marquee_base.png", color="white"}, |  | ||||||
| 				{ name="led_marquee_leds_off.png", color="white"}, |  | ||||||
| 				"led_marquee_char_"..i..".png", |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 	if i == 31 then | 	if i == 31 then | ||||||
| 		tiles = { | 		leds ={ | ||||||
| 			{ name="led_marquee_base.png", color="white"}, | 			name = "led_marquee_char_31.png^[mask:led_marquee_leds_on_cursor.png", | ||||||
| 			{ name="led_marquee_leds_off.png", color="white"}, |  | ||||||
| 				{ |  | ||||||
| 				name = "led_marquee_char_31.png", |  | ||||||
| 			animation = {type = "vertical_frames", aspect_w = 32, aspect_h = 32, length = 0.75} | 			animation = {type = "vertical_frames", aspect_w = 32, aspect_h = 32, length = 0.75} | ||||||
| 		} | 		} | ||||||
| 		} |  | ||||||
| 	end | 	end | ||||||
|  |  | ||||||
|  | 	local wimage | ||||||
|  |  | ||||||
| 	if i == 32 then | 	if i == 32 then | ||||||
| 		groups = {cracky = 2} | 		groups = {cracky = 2} | ||||||
| 		light = nil | 		light = nil | ||||||
| @@ -397,7 +424,11 @@ for i = 31, 255 do | |||||||
| 		description = description, | 		description = description, | ||||||
| 		drawtype = "mesh", | 		drawtype = "mesh", | ||||||
| 		mesh = "led_marquee.obj", | 		mesh = "led_marquee.obj", | ||||||
| 		tiles = tiles, | 		tiles = { | ||||||
|  | 			{ name = "led_marquee_base.png", color = "white" }, | ||||||
|  | 			{ name = "led_marquee_leds_off.png", color = "white" } | ||||||
|  | 		}, | ||||||
|  | 		overlay_tiles = { "", leds }, | ||||||
| 		inventory_image = wimage, | 		inventory_image = wimage, | ||||||
| 		wield_image = wimage, | 		wield_image = wimage, | ||||||
| 		palette="led_marquee_palette.png", | 		palette="led_marquee_palette.png", | ||||||
| @@ -412,6 +443,11 @@ for i = 31, 255 do | |||||||
| 			reset_meta(pos) | 			reset_meta(pos) | ||||||
| 		end, | 		end, | ||||||
| 		on_receive_fields = function(pos, formname, fields, sender) | 		on_receive_fields = function(pos, formname, fields, sender) | ||||||
|  | 			local name = sender:get_player_name() | ||||||
|  | 			if minetest.is_protected(pos, name) and not minetest.check_player_privs(name, {protection_bypass=true}) then | ||||||
|  | 				minetest.record_protection_violation(pos, name) | ||||||
|  | 				return | ||||||
|  | 			end | ||||||
| 			if (fields.channel) then | 			if (fields.channel) then | ||||||
| 				minetest.get_meta(pos):set_string("channel", fields.channel) | 				minetest.get_meta(pos):set_string("channel", fields.channel) | ||||||
| 			end | 			end | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								mod.conf
									
									
									
									
									
								
							
							
						
						| @@ -1 +1,2 @@ | |||||||
| name = led_marquee | name = led_marquee | ||||||
|  | min_minetest_version = 5.2.0 | ||||||
|   | |||||||
| @@ -21,10 +21,6 @@ v -0.500000 -0.453125 0.468750 | |||||||
| v -0.500000 -0.453125 -0.468750 | v -0.500000 -0.453125 -0.468750 | ||||||
| v -0.500000 -0.437500 -0.484375 | v -0.500000 -0.437500 -0.484375 | ||||||
| v -0.500000 -0.437500 -0.500000 | v -0.500000 -0.437500 -0.500000 | ||||||
| v 0.500000 -0.449125 -0.468750 |  | ||||||
| v -0.500000 -0.449125 -0.468750 |  | ||||||
| v -0.500000 -0.449125 0.468750 |  | ||||||
| v 0.500000 -0.449125 0.468750 |  | ||||||
| vt 0.681855 0.961799 | vt 0.681855 0.961799 | ||||||
| vt 0.723891 0.992824 | vt 0.723891 0.992824 | ||||||
| vt 0.723891 0.000000 | vt 0.723891 0.000000 | ||||||
| @@ -69,10 +65,6 @@ vt 0.000000 0.000000 | |||||||
| vt 1.000000 0.000000 | vt 1.000000 0.000000 | ||||||
| vt 1.000000 1.000000 | vt 1.000000 1.000000 | ||||||
| vt 0.000000 1.000000 | vt 0.000000 1.000000 | ||||||
| vt 0.000000 0.000000 |  | ||||||
| vt 1.000000 0.000000 |  | ||||||
| vt 1.000000 1.000000 |  | ||||||
| vt 0.000000 1.000000 |  | ||||||
| vn 1.0000 0.0000 0.0000 | vn 1.0000 0.0000 0.0000 | ||||||
| vn 0.0000 -1.0000 -0.0000 | vn 0.0000 -1.0000 -0.0000 | ||||||
| vn -1.0000 0.0000 0.0000 | vn -1.0000 0.0000 0.0000 | ||||||
| @@ -106,7 +98,5 @@ f 7/26/8 6/38/8 19/19/8 | |||||||
| f 19/19/6 6/38/6 5/20/6 | f 19/19/6 6/38/6 5/20/6 | ||||||
| f 15/22/6 10/39/6 9/23/6 | f 15/22/6 10/39/6 9/23/6 | ||||||
| f 8/25/7 17/40/7 16/24/7 | f 8/25/7 17/40/7 16/24/7 | ||||||
| g Cube_Cube_LEDs_Cube_Cube_LEDs_leds_off | g Cube_Cube_LEDs_Cube_Cube_LEDs_base_led_marquee_leds_off.png | ||||||
| f 1/41/6 2/42/6 3/43/6 4/44/6 | f 1/41/6 2/42/6 3/43/6 4/44/6 | ||||||
| g Cube_Cube_LEDs_Cube_Cube_LEDs_leds_on |  | ||||||
| f 21/45/6 22/46/6 23/47/6 24/48/6 |  | ||||||
|   | |||||||
| Before Width: | Height: | Size: 419 B After Width: | Height: | Size: 208 B | 
| Before Width: | Height: | Size: 460 B After Width: | Height: | Size: 89 B | 
| Before Width: | Height: | Size: 495 B After Width: | Height: | Size: 94 B | 
| Before Width: | Height: | Size: 485 B After Width: | Height: | Size: 98 B | 
| Before Width: | Height: | Size: 493 B After Width: | Height: | Size: 92 B | 
| Before Width: | Height: | Size: 437 B After Width: | Height: | Size: 86 B | 
| Before Width: | Height: | Size: 449 B After Width: | Height: | Size: 90 B | 
| Before Width: | Height: | Size: 451 B After Width: | Height: | Size: 88 B | 
| Before Width: | Height: | Size: 298 B After Width: | Height: | Size: 89 B | 
| Before Width: | Height: | Size: 420 B After Width: | Height: | Size: 85 B | 
| Before Width: | Height: | Size: 594 B After Width: | Height: | Size: 91 B | 
| Before Width: | Height: | Size: 424 B After Width: | Height: | Size: 82 B | 
| Before Width: | Height: | Size: 429 B After Width: | Height: | Size: 85 B | 
| Before Width: | Height: | Size: 472 B After Width: | Height: | Size: 87 B | 
| Before Width: | Height: | Size: 492 B After Width: | Height: | Size: 91 B | 
| Before Width: | Height: | Size: 441 B After Width: | Height: | Size: 84 B | 
| Before Width: | Height: | Size: 450 B After Width: | Height: | Size: 89 B | 
| Before Width: | Height: | Size: 454 B After Width: | Height: | Size: 89 B | 
| Before Width: | Height: | Size: 416 B After Width: | Height: | Size: 81 B | 
| Before Width: | Height: | Size: 460 B After Width: | Height: | Size: 87 B | 
| Before Width: | Height: | Size: 486 B After Width: | Height: | Size: 93 B | 
| Before Width: | Height: | Size: 473 B After Width: | Height: | Size: 93 B | 
| Before Width: | Height: | Size: 344 B After Width: | Height: | Size: 86 B | 
| Before Width: | Height: | Size: 453 B After Width: | Height: | Size: 86 B | 
| Before Width: | Height: | Size: 445 B After Width: | Height: | Size: 88 B | 
| Before Width: | Height: | Size: 371 B After Width: | Height: | Size: 79 B | 
| Before Width: | Height: | Size: 447 B After Width: | Height: | Size: 88 B | 
| Before Width: | Height: | Size: 400 B After Width: | Height: | Size: 81 B | 
| Before Width: | Height: | Size: 568 B After Width: | Height: | Size: 93 B | 
| Before Width: | Height: | Size: 348 B After Width: | Height: | Size: 94 B | 
| Before Width: | Height: | Size: 338 B After Width: | Height: | Size: 89 B | 
| Before Width: | Height: | Size: 210 B After Width: | Height: | Size: 76 B | 
| Before Width: | Height: | Size: 279 B After Width: | Height: | Size: 79 B | 
| Before Width: | Height: | Size: 262 B After Width: | Height: | Size: 78 B | 
| Before Width: | Height: | Size: 274 B After Width: | Height: | Size: 78 B | 
| Before Width: | Height: | Size: 276 B After Width: | Height: | Size: 83 B | 
| Before Width: | Height: | Size: 268 B After Width: | Height: | Size: 84 B | 
| Before Width: | Height: | Size: 302 B After Width: | Height: | Size: 83 B | 
| Before Width: | Height: | Size: 268 B After Width: | Height: | Size: 81 B | 
| Before Width: | Height: | Size: 451 B After Width: | Height: | Size: 84 B | 
| Before Width: | Height: | Size: 272 B After Width: | Height: | Size: 83 B | 
| Before Width: | Height: | Size: 306 B After Width: | Height: | Size: 84 B | 
| Before Width: | Height: | Size: 305 B After Width: | Height: | Size: 84 B | 
| Before Width: | Height: | Size: 302 B After Width: | Height: | Size: 81 B | 
| Before Width: | Height: | Size: 342 B After Width: | Height: | Size: 84 B | 
| Before Width: | Height: | Size: 268 B After Width: | Height: | Size: 75 B | 
| Before Width: | Height: | Size: 336 B After Width: | Height: | Size: 95 B | 
| Before Width: | Height: | Size: 318 B After Width: | Height: | Size: 92 B | 
| Before Width: | Height: | Size: 314 B After Width: | Height: | Size: 88 B | 
| Before Width: | Height: | Size: 309 B After Width: | Height: | Size: 88 B | 
| Before Width: | Height: | Size: 323 B After Width: | Height: | Size: 91 B | 
| Before Width: | Height: | Size: 316 B After Width: | Height: | Size: 90 B | 
| Before Width: | Height: | Size: 359 B After Width: | Height: | Size: 96 B | 
| Before Width: | Height: | Size: 352 B After Width: | Height: | Size: 95 B | 
| Before Width: | Height: | Size: 244 B After Width: | Height: | Size: 83 B | 
| Before Width: | Height: | Size: 325 B After Width: | Height: | Size: 95 B | 
| Before Width: | Height: | Size: 362 B After Width: | Height: | Size: 102 B | 
| Before Width: | Height: | Size: 379 B After Width: | Height: | Size: 99 B | 
| Before Width: | Height: | Size: 494 B After Width: | Height: | Size: 102 B | 
| Before Width: | Height: | Size: 518 B After Width: | Height: | Size: 105 B | 
| Before Width: | Height: | Size: 500 B After Width: | Height: | Size: 101 B | 
| Before Width: | Height: | Size: 96 B After Width: | Height: | Size: 71 B | 
| Before Width: | Height: | Size: 336 B After Width: | Height: | Size: 88 B | 
| Before Width: | Height: | Size: 367 B After Width: | Height: | Size: 95 B | 
| Before Width: | Height: | Size: 399 B After Width: | Height: | Size: 102 B | 
| Before Width: | Height: | Size: 369 B After Width: | Height: | Size: 88 B | 
| Before Width: | Height: | Size: 332 B After Width: | Height: | Size: 91 B | 
| Before Width: | Height: | Size: 266 B After Width: | Height: | Size: 82 B | 
| Before Width: | Height: | Size: 396 B After Width: | Height: | Size: 97 B | 
| Before Width: | Height: | Size: 203 B After Width: | Height: | Size: 77 B | 
| Before Width: | Height: | Size: 438 B After Width: | Height: | Size: 101 B | 
| Before Width: | Height: | Size: 363 B After Width: | Height: | Size: 93 B | 
| Before Width: | Height: | Size: 293 B After Width: | Height: | Size: 83 B | 
| Before Width: | Height: | Size: 230 B After Width: | Height: | Size: 81 B | 
| Before Width: | Height: | Size: 203 B After Width: | Height: | Size: 77 B | 
| Before Width: | Height: | Size: 461 B After Width: | Height: | Size: 101 B | 
| Before Width: | Height: | Size: 203 B After Width: | Height: | Size: 79 B | 
| Before Width: | Height: | Size: 280 B After Width: | Height: | Size: 88 B | 
| Before Width: | Height: | Size: 297 B After Width: | Height: | Size: 91 B | 
| Before Width: | Height: | Size: 319 B After Width: | Height: | Size: 90 B | 
| Before Width: | Height: | Size: 291 B After Width: | Height: | Size: 90 B | 
| Before Width: | Height: | Size: 250 B After Width: | Height: | Size: 82 B | 
| Before Width: | Height: | Size: 307 B After Width: | Height: | Size: 85 B | 
| Before Width: | Height: | Size: 343 B After Width: | Height: | Size: 85 B | 
| Before Width: | Height: | Size: 216 B After Width: | Height: | Size: 76 B | 
| Before Width: | Height: | Size: 227 B After Width: | Height: | Size: 78 B | 
| Before Width: | Height: | Size: 304 B After Width: | Height: | Size: 90 B | 
| Before Width: | Height: | Size: 345 B After Width: | Height: | Size: 96 B | 
| Before Width: | Height: | Size: 317 B After Width: | Height: | Size: 83 B | 
| Before Width: | Height: | Size: 465 B After Width: | Height: | Size: 106 B | 
| Before Width: | Height: | Size: 435 B After Width: | Height: | Size: 102 B | 
| Before Width: | Height: | Size: 478 B After Width: | Height: | Size: 103 B | 
| Before Width: | Height: | Size: 348 B After Width: | Height: | Size: 97 B | 
| Before Width: | Height: | Size: 408 B After Width: | Height: | Size: 99 B | 
| Before Width: | Height: | Size: 402 B After Width: | Height: | Size: 100 B | 
| Before Width: | Height: | Size: 426 B After Width: | Height: | Size: 99 B | 
| Before Width: | Height: | Size: 413 B After Width: | Height: | Size: 98 B |