document.getElementById("id_logic_version").innerHTML = "Logic version: 2018.11.26.4";
var canvas = document.getElementById("id_canvas");
canvas.addEventListener("touchstart", on_touch_start);
canvas.addEventListener("touchmove", on_touch_move);
var canvas_bounding_rect = canvas.getBoundingClientRect();

//------------------------------------
function on_touch_start(e)
{
	for (var i = 0; i < e.changedTouches.length; i++){
		var context = canvas.getContext("2d");
		context.beginPath();
		context.arc(e.changedTouches[i].pageX - canvas_bounding_rect.left,
					e.changedTouches[i].pageY - canvas_bounding_rect.top,
					10,
					0, 2 * Math.PI);
		context.stroke();
	}
}
//------------------------------------
function on_touch_move(e)
{
	e.preventDefault();
	
	for (var i = 0; i < e.changedTouches.length; i++){
		var context = canvas.getContext("2d");
		context.beginPath();
		context.arc(e.changedTouches[i].pageX - canvas_bounding_rect.left,
					e.changedTouches[i].pageY - canvas_bounding_rect.top,
					10,
					0, 2 * Math.PI);
		context.stroke();
	}
	
}
@@ -80,9 +80,9 @@
 .26.
-4
+5
 %22;%0Av
@@ -299,16 +299,45 @@
 ect();%0A%0A
+var last_pos = %7Bx: 0, y: 0%7D;%0A
 //------
@@ -691,16 +691,100 @@
 roke();%0A
+%09%09last_pos.x = e.changedTouches%5Bi%5D.pageX;%0A%09%09last_pos.y = e.changedTouches%5Bi%5D.pageY;%0A
 %09%7D%0A%7D%0A//-
@@ -978,32 +978,267 @@
 xt.beginPath();%0A
+%09%09context.moveTo(last_pos.x - canvas_bounding_rect.left, last_pos.y - canvas_bounding_rect.top);%0A%09%09context.lineTo(e.changedTouches%5Bi%5D.pageX - canvas_bounding_rect.left,%0A%09%09%09%09%09e.changedTouches%5Bi%5D.pageY - canvas_bounding_rect.top);%0A%09%09%09%09%09%0A
 %09%09context.arc(e.
@@ -1372,32 +1372,32 @@
 , 2 * Math.PI);%0A
-
 %09%09context.stroke
@@ -1400,14 +1400,100 @@
 roke();%0A
+%09%09last_pos.x = e.changedTouches%5Bi%5D.pageX;%0A%09%09last_pos.y = e.changedTouches%5Bi%5D.pageY;%09%09%0A
 %09%7D%0A%09%0A%7D

Update touch.js