// Main canvas and context references
var canvas;
var ctx;
var canvas2;
var ctx2;
var canvas3;
var ctx3;
var canvas4;
var ctx4;
var canvas5;
var ctx5;

// Frames per second
var fps = 60.0;

// Animations
var animations = [ new animate(), new animate2(), new animate_M2(), new animate_M3(), new animate_M3_4(), new animate_M3_3(), new animate_M4(), new animate_M4_2(), new animate_M4_3(), new animate_M4_4(), new animate_M4_5(), new animate_M4_6(), new animate_M4_7(), new animate_M4_8(), new animate_M4_9(), new animate_M4_10(), new animate_M4_11(), new animate_M5(), new animate_M5_2(), new animate_M5_3(), new animate_M5_4(), new animate_M5_5() ];

function animate() {

  // Control and anchor points
  this.points = [
                [ [53.4, 45.4], [62.1, 45.3], [70.8, 45.3], [79.8, 45.2] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [0, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(2.00, 0.00, 1, false, 1, quintEaseOut, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function animate2() {

  // Control and anchor points
  this.points = [
                [ [1.5, 13.9], [11.1, 13.9], [20.8, 13.9], [30.8, 13.9] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [0, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(2.00, 0.00, -1, false, 1, quintEaseIn, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function animate_M2() {

  // Control and anchor points
  this.points = [
                [ [31.3, 30.9], [50.9, 30.9], [70.5, 30.8], [90.7, 30.8] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [0, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(2.00, 0.00, 1, false, 1, quintEaseOut, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function animate_M3() {

      // Control and anchor points
      this.points = [
                    [ [76.9, 43.5], [89.5, 43.5], [102.0, 43.4], [115.0, 43.4] ]
                    ];

      // Linear motion index
      this.linear = [
                    [0, 0.00, 0.00], [0, 1.00, 1.00]
                    ];

      // Segment T boundaries
      this.segmentT = [1.00];

      this.lastValue = -1.0;
      this.x = 0;
      this.y = 0;
      this.orientation = 0.0;
      this.pathClock = new clock(2.00, 0.50, 1, false, 1, quintEaseOut, this.linear.length - 1, 1.00, 0.0000);

      // Update function
      this.update = updatePath;
    }

    function animate_M3_4() {

      // Control and anchor points
      this.points = [
                    [ [19.3, 47.9], [29.9, 47.9], [40.5, 47.9], [51.4, 47.9] ]
                    ];

      // Linear motion index
      this.linear = [
                    [0, 0.00, 0.00], [0, 1.00, 1.00]
                    ];

      // Segment T boundaries
      this.segmentT = [1.00];

      this.lastValue = -1.0;
      this.x = 0;
      this.y = 0;
      this.orientation = 0.0;
      this.pathClock = new clock(2.00, 0.00, -1, false, 1, quintEaseIn, this.linear.length - 1, 1.00, 0.0000);

      // Update function
      this.update = updatePath;
    }

    function animate_M3_3() {

      // Control and anchor points
      this.points = [
                    [ [19.3, 19.0], [29.9, 19.0], [40.5, 19.0], [51.4, 19.0] ]
                    ];

      // Linear motion index
      this.linear = [
                    [0, 0.00, 0.00], [0, 1.00, 1.00]
                    ];

      // Segment T boundaries
      this.segmentT = [1.00];

      this.lastValue = -1.0;
      this.x = 0;
      this.y = 0;
      this.orientation = 0.0;
      this.pathClock = new clock(2.00, 0.00, -1, false, 1, quintEaseIn, this.linear.length - 1, 1.00, 0.0000);

      // Update function
      this.update = updatePath;
    }


function animate_M4() {

  // Control and anchor points
  this.points = [
                [ [45.3, 38.5], [45.4, 58.0], [45.5, 77.5], [45.5, 97.6] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [0, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(3.00, 0.00, -1, false, 1, quintEaseIn, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function animate_M4_2() {

  // Control and anchor points
  this.points = [
                [ [91.6, 56.6], [88.5, 54.4], [84.9, 53.1], [81.1, 53.0] ],
                [ [81.1, 53.0], [69.5, 52.8], [60.1, 64.1], [60.1, 78.1] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [1, 0.02, 0.25], [1, 0.37, 0.50], [1, 0.70, 0.75], 
                [1, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [0.24, 1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(1.20, 0.00, -1, false, 1, quintEaseIn, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function animate_M4_3() {

  // Control and anchor points
  this.points = [
                [ [92.6, 30.1], [88.6, 25.2], [84.0, 22.3], [79.0, 22.3] ],
                [ [79.0, 22.3], [64.1, 22.0], [52.0, 46.9], [52.0, 77.9] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [1, 0.01, 0.20], [1, 0.35, 0.40], [1, 0.60, 0.60], 
                [1, 0.81, 0.80], [1, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [0.19, 1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(1.50, 0.00, -1, false, 1, quintEaseIn, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function animate_M4_4() {

  // Control and anchor points
  this.points = [
                [ [0.4, 45.3], [3.3, 42.1], [6.8, 40.2], [10.5, 40.2] ],
                [ [10.5, 40.2], [21.5, 40.2], [30.5, 57.1], [30.5, 77.9] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [0, 1.00, 0.20], [1, 0.33, 0.40], [1, 0.59, 0.60], 
                [1, 0.81, 0.80], [1, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [0.20, 1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(1.00, 0.00, -1, false, 1, quintEaseIn, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function animate_M4_5() {

  // Control and anchor points
  this.points = [
                [ [1.9, 69.3], [3.9, 66.3], [7.6, 64.3], [11.9, 64.3] ],
                [ [11.9, 64.3], [18.2, 64.3], [23.4, 68.7], [23.4, 74.2] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [1, 0.14, 0.50], [1, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [0.41, 1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(1.40, 0.40, -1, false, 1, quintEaseIn, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function animate_M4_6() {

  // Control and anchor points
  this.points = [
                [ [0.4, 33.1], [4.2, 28.6], [8.7, 26.0], [13.4, 26.0] ],
                [ [13.4, 26.0], [27.7, 26.0], [39.3, 49.3], [39.3, 77.9] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [0, 0.84, 0.17], [1, 0.24, 0.33], [1, 0.48, 0.50], 
                [1, 0.67, 0.67], [1, 0.84, 0.83], [1, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [0.20, 1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(1.00, 0.00, -1, false, 1, quintEaseIn, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function animate_M4_7() {

  // Control and anchor points
  this.points = [
                [ [90.6, 69.3], [88.8, 65.3], [84.4, 64.3], [79.3, 64.3] ],
                [ [79.3, 64.3], [72.5, 64.3], [67.0, 68.7], [67.0, 74.2] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [1, 0.11, 0.50], [1, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [0.43, 1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(1.00, 0.40, -1, false, 1, quintEaseIn, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function animate_M4_8() {

  // Control and anchor points
  this.points = [
                [ [4.1, 55.7], [7.2, 53.4], [10.8, 52.0], [14.6, 52.0] ],
                [ [14.6, 52.0], [26.2, 51.8], [35.6, 63.5], [35.6, 78.1] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [1, 0.02, 0.25], [1, 0.38, 0.50], [1, 0.71, 0.75], 
                [1, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [0.23, 1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(1.00, 0.00, -1, false, 1, quintEaseIn, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function animate_M4_9() {

  // Control and anchor points
  this.points = [
                [ [86.5, 45.3], [83.6, 42.1], [80.1, 40.2], [76.4, 40.2] ],
                [ [76.4, 40.2], [65.4, 40.2], [56.4, 57.1], [56.4, 77.9] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [0, 1.00, 0.20], [1, 0.33, 0.40], [1, 0.59, 0.60], 
                [1, 0.81, 0.80], [1, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [0.20, 1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(1.00, 0.00, -1, false, 1, quintEaseIn, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function animate_M4_10() {

  // Control and anchor points
  this.points = [
                [ [85.4, 68.4], [83.7, 60.4], [79.7, 58.2], [75.1, 58.2] ],
                [ [75.1, 58.2], [68.9, 58.2], [64.0, 67.3], [64.0, 78.4] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [1, 0.24, 0.50], [1, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [0.39, 1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(1.00, 0.40, -1, false, 1, quintEaseIn, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function animate_M4_11() {

  // Control and anchor points
  this.points = [
                [ [6.0, 68.4], [7.6, 60.4], [11.6, 58.2], [16.2, 58.2] ],
                [ [16.2, 58.2], [22.4, 58.2], [27.4, 67.3], [27.4, 78.4] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [1, 0.24, 0.50], [1, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [0.39, 1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(1.00, 0.40, -1, false, 1, quintEaseIn, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function animate_M5() {

  // Control and anchor points
  this.points = [
                [ [58.1, 10.0], [54.8, 10.0], [51.5, 10.0], [48.1, 10.0] ],
                [ [48.1, 10.0], [48.1, 7.1], [48.1, 4.1], [48.1, 1.1] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [0, 0.94, 0.50], [1, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [0.53, 1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(2.00, 0.00, 1, false, 1, linear, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function animate_M5_2() {

  // Control and anchor points
  this.points = [
                [ [55.3, 66.5], [55.3, 55.8], [55.3, 45.0], [55.3, 34.0] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [0, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(2.00, 0.00, 1, false, 1, quintEaseOut, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function animate_M5_3() {

  // Control and anchor points
  this.points = [
                [ [55.3, 66.5], [55.3, 52.3], [55.3, 38.0], [55.3, 23.4] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [0, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(2.00, 1.00, 1, false, 1, quintEaseOut, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function animate_M5_4() {

  // Control and anchor points
  this.points = [
                [ [0.5, 18.3], [0.5, 15.6], [0.5, 12.8], [0.5, 10.0] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [0, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(1.00, 1.00, 1, false, 1, linear, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function animate_M5_5() {

  // Control and anchor points
  this.points = [
                [ [16.5, 16.3], [16.5, 13.5], [16.5, 10.8], [16.5, 7.9] ]
                ];

  // Linear motion index
  this.linear = [
                [0, 0.00, 0.00], [0, 1.00, 1.00]
                ];

  // Segment T boundaries
  this.segmentT = [1.00];

  this.lastValue = -1.0;
  this.x = 0;
  this.y = 0;
  this.orientation = 0.0;
  this.pathClock = new clock(1.00, 1.00, 1, false, 1, linear, this.linear.length - 1, 1.00, 0.0000);

  // Update function
  this.update = updatePath;
}

function init() {

  // Set main canvas and context references
  canvas = document.getElementById("menu-1");
  canvas2 = document.getElementById("menu-2");
  canvas3 = document.getElementById("menu-3");
  canvas4 = document.getElementById("menu-4");
  canvas5 = document.getElementById("menu-5");
  ctx = canvas.getContext("2d");
  ctx2 = canvas2.getContext("2d");
  ctx3 = canvas3.getContext("2d");
  ctx4 = canvas4.getContext("2d");
  ctx5 = canvas5.getContext("2d");
  
  // Initialize animations
  stars.alphaClock = new clock(0.50, 1.00, 1, false, 1, quintEaseIn, 1.0, 1.00, 0.0000);
  stars2.alphaClock = new clock(0.50, 1.40, 1, false, 1, quintEaseIn, 1.0, 1.00, 0.0000);
  stars3.alphaClock = new clock(0.50, 1.20, 1, false, 1, quintEaseIn, 1.0, 1.00, 0.0000);
  module_M3_3.rotateClock = new clock(5.00, 0.00, 1, false, 0, linear, 2.0 * Math.PI, 1.00, 0.0000);
  
  // Set animation timer
  setInterval(drawFrame, (1000 / fps));
}

function updateAnimations() {

  // Update animation clocks
  updateAllClocks();

  // Update animation paths  
  var animationCount = animations.length;
  for (var i = 0; i < animationCount; i++) {
    animations[i].update();
  }
}

function drawFrame() {

  // Update animations
  updateAnimations();

  // Clear canvas
  ctx.clearRect(0, 0, canvas.width, canvas.height);

  ctx.save();
      
  ctx.beginPath();
  ctx.moveTo(0.0, 25.1);
  ctx.lineTo(0.0, 0.0);
  ctx.lineTo(31.7, 0.0);
  ctx.lineTo(0.0, 25.1);
  ctx.closePath();
  
  ctx.clip();
  
  ctx.translate(animations[1].x, animations[1].y);
  module2(ctx);
  ctx.restore();

  ctx.save();
      
  ctx.beginPath();
  ctx.moveTo(83.2, 60.0);
  ctx.lineTo(55.8, 60.0);
  ctx.lineTo(55.8, 30.5);
  ctx.lineTo(83.2, 30.5);
  ctx.lineTo(83.2, 60.0);
  ctx.closePath();
  
  ctx.clip();
  
  ctx.translate(animations[0].x, animations[0].y);

  module(ctx);
  ctx.restore();

  draw(ctx);
  
  // Update animations
  updateAnimations();
  
  // Clear canvas
  ctx2.clearRect(0, 0, canvas2.width, canvas2.height);

  ctx2.save();
  
  ctx2.beginPath();
  ctx2.moveTo(30.3, 0.0);
  ctx2.lineTo(62.7, 26.0);
  ctx2.lineTo(61.1, 27.9);
  ctx2.lineTo(55.6, 27.9);
  ctx2.lineTo(55.6, 60.8);
  ctx2.lineTo(90.7, 60.8);
  ctx2.lineTo(90.7, 0.0);
  ctx2.lineTo(30.3, 0.0);
  ctx2.closePath();
  
  ctx2.clip();
  
  ctx2.translate(animations[2].x, animations[2].y);
  module_M2(ctx2);
  ctx2.restore();

  draw_M2(ctx2);

 // Update animations
  updateAnimations();

  // Clear canvas
  ctx3.clearRect(0, 0, canvas3.width, canvas3.height);
	
  ctx3.save();
  ctx3.beginPath();
  ctx3.moveTo(55.5, 0.0);
  ctx3.lineTo(0.0, 0.0);
  ctx3.lineTo(0.0, 74.3);
  ctx3.lineTo(31.2, 74.3);
  ctx3.lineTo(31.2, 33.4);
  ctx3.lineTo(55.5, 14.0);
  ctx3.lineTo(55.5, 0.0);
  ctx3.closePath();
  ctx3.clip();
  
  ctx3.translate(animations[4].x, animations[4].y);
  module_M3_4(ctx3);
  ctx3.restore();
  
  ctx3.save();
  ctx3.beginPath();
  ctx3.moveTo(55.5, 0.0);
  ctx3.lineTo(0.0, 0.0);
  ctx3.lineTo(0.0, 74.3);
  ctx3.lineTo(31.2, 74.3);
  ctx3.lineTo(31.2, 33.4);
  ctx3.lineTo(55.5, 14.0);
  ctx3.lineTo(55.5, 0.0);
  ctx3.closePath();
  ctx3.clip();
  
  ctx3.translate(animations[5].x, animations[5].y);
  ctx3.rotate(module_M3_3.rotateClock.value);
  module_M3_3(ctx3);
  ctx3.restore();

  ctx3.save();
  ctx3.beginPath();
  ctx3.moveTo(54.5, 13.0);
  ctx3.lineTo(86.8, 39.0);
  ctx3.lineTo(85.3, 40.9);
  ctx3.lineTo(79.8, 40.9);
  ctx3.lineTo(79.8, 73.8);
  ctx3.lineTo(115.9, 73.8);
  ctx3.lineTo(115.9, 13.0);
  ctx3.lineTo(54.5, 13.0);
  ctx3.closePath();
  ctx3.clip();
  
  ctx3.translate(animations[3].x, animations[3].y);
  module_M3(ctx3);
  ctx3.restore();

  draw_M3(ctx3);
  
  // Update animations
  updateAnimations();

  // Clear canvas4
  ctx4.clearRect(0, 0, canvas4.width, canvas4.height);

  draw_M4(ctx4);
  
  ctx4.save();
  ctx4.beginPath();
  ctx4.moveTo(7.0, 71.4);
  ctx4.lineTo(7.0, 0.1);
  ctx4.lineTo(83.0, 0.0);
  ctx4.lineTo(83.1, 71.3);
  ctx4.lineTo(7.0, 71.4);
  ctx4.closePath();
  
  ctx4.clip();

  ctx4.save();
  ctx4.translate(animations[6].x, animations[6].y);
  house(ctx4);
  ctx4.restore();

  ctx4.save();
  ctx4.translate(50.3, 4.5);
  ctx4.globalAlpha = stars.alphaClock.value;
  stars(ctx4);
  ctx4.restore();

  ctx4.save();
  ctx4.translate(15.2, 40.5);
  ctx4.globalAlpha = stars2.alphaClock.value;
  stars2(ctx4);
  ctx4.restore();

  ctx4.save();
  ctx4.translate(75.0, 61.8);
  ctx4.globalAlpha = stars3.alphaClock.value;
  stars3(ctx4);
  ctx4.restore();

  ctx4.save();
  ctx4.translate(animations[7].x, animations[7].y);
  module_M4(ctx4);
  ctx4.restore();

  ctx4.save();
  ctx4.translate(animations[8].x, animations[8].y);
  module_M4_2(ctx4);
  ctx4.restore();

  ctx4.save();
  ctx4.translate(animations[9].x, animations[9].y);
  module_M4_3(ctx4);
  ctx4.restore();

  ctx4.save();
  ctx4.translate(animations[10].x, animations[10].y);
  module_M4_4(ctx4);
  ctx4.restore();

  ctx4.save();
  ctx4.translate(animations[11].x, animations[11].y);
  module_M4_5(ctx4);
  ctx4.restore();

  ctx4.save();
  ctx4.translate(animations[12].x, animations[12].y);
  module_M4_6(ctx4);
  ctx4.restore();

  ctx4.save();
  ctx4.translate(animations[13].x, animations[13].y);
  module_M4_7(ctx4);
  ctx4.restore();

  ctx4.save();
  ctx4.translate(animations[14].x, animations[14].y);
  module_M4_8(ctx4);
  ctx4.restore();

  ctx4.save();
  ctx4.translate(animations[15].x, animations[15].y);
  module_M4_9(ctx4);
  ctx4.restore();

  ctx4.save();
  ctx4.translate(animations[16].x, animations[16].y);
  module_M4_10(ctx4);
  ctx4.restore();

  draw_M4(ctx4);
  
  // Update animations
  updateAnimations();

  // Clear canvas
  ctx5.clearRect(0, 0, canvas5.width, canvas5.height);

  ctx5.save();
  ctx5.translate(animations[21].x, animations[21].y);
  module_M5_5(ctx5);
  ctx5.restore();

  ctx5.save();
  ctx5.translate(animations[20].x, animations[20].y);
  module_M5_4(ctx5);
  ctx5.restore();

  ctx5.save();
  ctx5.translate(animations[19].x, animations[19].y);
  module_M5_3(ctx5);
  ctx5.restore();

  ctx5.save();
  ctx5.translate(animations[18].x, animations[18].y);
  module_M5_2(ctx5);
  ctx5.restore();

  ctx5.save();
  ctx5.translate(animations[17].x, animations[17].y);
  module_M5(ctx5);
  ctx5.restore();

  draw_M5(ctx5);

}

function module2(ctx) {

      // module2/Group
      ctx.save();

      // module2/Group/Path
      ctx.save();
      ctx.beginPath();
      ctx.moveTo(0.0, 12.5);
      ctx.lineTo(0.0, -12.5);
      ctx.lineTo(31.3, -12.5);
      ctx.lineTo(31.5, 12.5);
      ctx.lineTo(0.0, 12.5);
      ctx.closePath();
      ctx.lineWidth = 2.0;
      ctx.strokeStyle = "rgb(190, 30, 45)";
      ctx.stroke();
      ctx.restore();
      ctx.restore();
    }

    function module(ctx) {

      // module/Path
      ctx.save();
      ctx.beginPath();
      ctx.moveTo(-0.0, 14.3);
      ctx.lineTo(-27.4, 14.3);
      ctx.lineTo(-27.3, -14.3);
      ctx.lineTo(0.0, -14.3);
      ctx.lineTo(-0.0, 14.3);
      ctx.closePath();
      ctx.lineWidth = 2.0;
      ctx.strokeStyle = "rgb(190, 30, 45)";
      ctx.stroke();
      ctx.restore();
    }

    function draw(ctx) {

      // layer1/Group
      ctx.save();

      // layer1/Group/Compound Path
      ctx.save();
      ctx.beginPath();

      // layer1/Group/Compound Path/Path
      ctx.moveTo(50.9, 15.6);
      ctx.lineTo(50.9, 0.8);
      ctx.lineTo(39.5, 0.8);
      ctx.lineTo(39.5, 6.5);
      ctx.lineTo(31.3, 0.0);
      ctx.lineTo(0.0, 25.0);
      ctx.lineTo(1.5, 26.9);
      ctx.lineTo(31.3, 3.1);
      ctx.lineTo(61.1, 26.9);
      ctx.lineTo(62.7, 25.0);
      ctx.lineTo(50.9, 15.6);
      ctx.closePath();

      // layer1/Group/Compound Path/Path
      ctx.moveTo(42.0, 3.3);
      ctx.lineTo(48.4, 3.3);
      ctx.lineTo(48.4, 13.6);
      ctx.lineTo(42.0, 8.5);
      ctx.lineTo(42.0, 3.3);
      ctx.closePath();
      ctx.fillStyle = "rgb(46, 48, 146)";
      ctx.fill();

      // layer1/Group/Compound Path
      ctx.beginPath();

      // layer1/Group/Compound Path/Path
      ctx.moveTo(7.0, 26.0);
      ctx.lineTo(7.0, 59.8);
      ctx.lineTo(55.6, 59.8);
      ctx.lineTo(55.6, 26.0);
      ctx.lineTo(31.7, 6.6);
      ctx.lineTo(7.0, 26.0);
      ctx.closePath();

      // layer1/Group/Compound Path/Path
      ctx.moveTo(53.2, 57.3);
      ctx.lineTo(9.5, 57.3);
      ctx.lineTo(9.5, 27.2);
      ctx.lineTo(31.7, 9.7);
      ctx.lineTo(53.2, 27.1);
      ctx.lineTo(53.2, 57.3);
      ctx.closePath();
      ctx.fill();

      // layer1/Group
      ctx.restore();

      // layer1/Group/Compound Path
      ctx.save();
      ctx.beginPath();

      // layer1/Group/Compound Path/Path
      ctx.moveTo(36.0, 35.6);
      ctx.lineTo(36.0, 57.3);
      ctx.lineTo(27.1, 57.3);
      ctx.lineTo(27.1, 35.6);
      ctx.lineTo(36.0, 35.6);

      // layer1/Group/Compound Path/Path
      ctx.moveTo(38.5, 33.2);
      ctx.lineTo(24.6, 33.2);
      ctx.lineTo(24.6, 59.8);
      ctx.lineTo(38.5, 59.8);
      ctx.lineTo(38.5, 33.2);
      ctx.lineTo(38.5, 33.2);
      ctx.closePath();
      ctx.fillStyle = "rgb(46, 48, 146)";
      ctx.fill();
      ctx.restore();
      ctx.restore();
    }
    
/* MENU 2 */

function module_M2(ctx2) {

      // module/Group
      ctx2.save();

      // module/Group/Path
      ctx2.save();
      ctx2.beginPath();
      ctx2.moveTo(-59.4, -29.9);
      ctx2.lineTo(-33.1, -29.9);
      ctx2.lineTo(0.0, -0.8);
      ctx2.lineTo(-8.9, -0.8);
      ctx2.lineTo(-8.9, 29.8);
      ctx2.lineTo(-35.1, 29.9);
      ctx2.lineTo(-35.1, -3.9);
      ctx2.lineTo(-59.4, -23.3);
      ctx2.lineTo(-59.4, -29.9);
      ctx2.closePath();
      ctx2.lineWidth = 2.0;
      ctx2.strokeStyle = "rgb(190, 30, 45)";
      ctx2.stroke();
      ctx2.restore();
      ctx2.restore();
    }

    function draw_M2(ctx2) {

      // layer7/
      ctx2.save();
      ctx2.restore();

      // layer1/Group
      ctx2.save();

      // layer1/Group/Compound Path
      ctx2.save();
      ctx2.beginPath();

      // layer1/Group/Compound Path/Path
      ctx2.moveTo(50.9, 16.6);
      ctx2.lineTo(50.9, 1.8);
      ctx2.lineTo(39.5, 1.8);
      ctx2.lineTo(39.5, 7.5);
      ctx2.lineTo(31.3, 1.0);
      ctx2.lineTo(0.0, 26.0);
      ctx2.lineTo(1.5, 27.9);
      ctx2.lineTo(31.3, 4.1);
      ctx2.lineTo(61.1, 27.9);
      ctx2.lineTo(62.7, 26.0);
      ctx2.lineTo(50.9, 16.6);
      ctx2.closePath();

      // layer1/Group/Compound Path/Path
      ctx2.moveTo(42.0, 4.3);
      ctx2.lineTo(48.4, 4.3);
      ctx2.lineTo(48.4, 14.6);
      ctx2.lineTo(42.0, 9.5);
      ctx2.lineTo(42.0, 4.3);
      ctx2.closePath();
      ctx2.fillStyle = "rgb(46, 48, 146)";
      ctx2.fill();

      // layer1/Group/Compound Path
      ctx2.beginPath();

      // layer1/Group/Compound Path/Path
      ctx2.moveTo(7.0, 27.0);
      ctx2.lineTo(7.0, 60.8);
      ctx2.lineTo(55.6, 60.8);
      ctx2.lineTo(55.6, 27.0);
      ctx2.lineTo(31.7, 7.6);
      ctx2.lineTo(7.0, 27.0);
      ctx2.closePath();

      // layer1/Group/Compound Path/Path
      ctx2.moveTo(53.2, 58.3);
      ctx2.lineTo(9.5, 58.3);
      ctx2.lineTo(9.5, 28.2);
      ctx2.lineTo(31.7, 10.7);
      ctx2.lineTo(53.2, 28.1);
      ctx2.lineTo(53.2, 58.3);
      ctx2.closePath();
      ctx2.fill();

      // layer1/Group
      ctx2.restore();

      // layer1/Group/Compound Path
      ctx2.save();
      ctx2.beginPath();

      // layer1/Group/Compound Path/Path
      ctx2.moveTo(36.0, 36.6);
      ctx2.lineTo(36.0, 58.3);
      ctx2.lineTo(27.1, 58.3);
      ctx2.lineTo(27.1, 36.6);
      ctx2.lineTo(36.0, 36.6);

      // layer1/Group/Compound Path/Path
      ctx2.moveTo(38.5, 34.2);
      ctx2.lineTo(24.6, 34.2);
      ctx2.lineTo(24.6, 60.8);
      ctx2.lineTo(38.5, 60.8);
      ctx2.lineTo(38.5, 34.2);
      ctx2.lineTo(38.5, 34.2);
      ctx2.closePath();
      ctx2.fillStyle = "rgb(46, 48, 146)";
      ctx2.fill();
      ctx2.restore();
      ctx2.restore();

    }

function module_M3_4(ctx3) {

      // module4/Path
      ctx3.save();
      ctx3.beginPath();
      ctx3.moveTo(13.5, 24.5);
      ctx3.lineTo(3.1, -24.4);
      ctx3.lineTo(-2.1, -24.5);
      ctx3.lineTo(-13.4, 24.5);
      ctx3.lineTo(13.5, 24.5);
      ctx3.closePath();
      ctx3.lineWidth = 2.0;
      ctx3.strokeStyle = "rgb(190, 30, 45)";
      ctx3.stroke();
      ctx3.restore();
    }

    function module_M3_3(ctx3) {

      // module3/Group
      ctx3.save();

      // module3/Group/Path
      ctx3.save();
      ctx3.beginPath();
      ctx3.moveTo(4.1, 0.0);
      ctx3.bezierCurveTo(4.1, 0.9, 3.8, 1.7, 3.3, 2.3);
      ctx3.lineTo(14.8, 10.4);
      ctx3.bezierCurveTo(16.9, 7.5, 18.2, 3.9, 18.2, 0.0);
      ctx3.bezierCurveTo(18.2, -3.8, 17.0, -7.3, 15.1, -10.2);
      ctx3.lineTo(3.4, -2.3);
      ctx3.bezierCurveTo(3.8, -1.6, 4.1, -0.8, 4.1, 0.0);
      ctx3.closePath();
      ctx3.fillStyle = "rgb(255, 255, 255)";
      ctx3.fill();
      ctx3.lineWidth = 2.0;
      ctx3.strokeStyle = "rgb(190, 30, 45)";
      ctx3.stroke();

      // module3/Group/Path
      ctx3.beginPath();
      ctx3.moveTo(0.0, -18.2);
      ctx3.bezierCurveTo(-3.8, -18.2, -7.2, -17.0, -10.1, -15.1);
      ctx3.lineTo(-2.3, -3.4);
      ctx3.bezierCurveTo(-1.6, -3.8, -0.8, -4.1, 0.0, -4.1);
      ctx3.bezierCurveTo(0.9, -4.1, 1.7, -3.8, 2.3, -3.3);
      ctx3.lineTo(10.4, -14.8);
      ctx3.bezierCurveTo(7.5, -16.9, 3.9, -18.2, 0.0, -18.2);
      ctx3.closePath();
      ctx3.fill();
      ctx3.stroke();

      // module3/Group/Path
      ctx3.beginPath();
      ctx3.moveTo(-4.1, 0.0);
      ctx3.bezierCurveTo(-4.1, -0.9, -3.8, -1.6, -3.4, -2.3);
      ctx3.lineTo(-14.9, -10.4);
      ctx3.bezierCurveTo(-16.9, -7.4, -18.2, -3.9, -18.2, 0.0);
      ctx3.bezierCurveTo(-18.2, 3.8, -17.0, 7.3, -15.0, 10.2);
      ctx3.lineTo(-3.3, 2.3);
      ctx3.bezierCurveTo(-3.8, 1.7, -4.1, 0.9, -4.1, 0.0);
      ctx3.closePath();
      ctx3.fill();
      ctx3.stroke();

      // module3/Group/Path
      ctx3.beginPath();
      ctx3.moveTo(0.0, 18.2);
      ctx3.bezierCurveTo(3.8, 18.2, 7.2, 17.0, 10.1, 15.1);
      ctx3.lineTo(2.3, 3.4);
      ctx3.bezierCurveTo(1.6, 3.8, 0.8, 4.1, 0.0, 4.1);
      ctx3.bezierCurveTo(-0.9, 4.1, -1.7, 3.8, -2.3, 3.3);
      ctx3.lineTo(-10.4, 14.8);
      ctx3.bezierCurveTo(-7.5, 16.9, -3.9, 18.2, 0.0, 18.2);
      ctx3.closePath();
      ctx3.fill();
      ctx3.stroke();
      ctx3.restore();
      ctx3.restore();
    }

    function module_M3(ctx3) {

      // module/Path
      ctx3.save();
      ctx3.beginPath();
      ctx3.moveTo(-29.5, 28.5);
      ctx3.lineTo(-1.0, 28.5);
      ctx3.lineTo(-1.0, -28.5);
      ctx3.lineTo(-8.2, -28.5);
      ctx3.lineTo(-8.2, -20.5);
      ctx3.lineTo(-15.3, -20.5);
      ctx3.lineTo(-15.3, -28.5);
      ctx3.lineTo(-22.4, -28.5);
      ctx3.lineTo(-22.4, -20.2);
      ctx3.lineTo(-29.5, -20.2);
      ctx3.lineTo(-29.5, -28.5);
      ctx3.lineTo(-37.0, -28.5);
      ctx3.lineTo(-36.9, 28.5);
      ctx3.lineTo(-29.5, 28.5);
      ctx3.closePath();
      ctx3.lineWidth = 2.0;
      ctx3.strokeStyle = "rgb(190, 30, 45)";
      ctx3.stroke();
      ctx3.restore();
    }

    function draw_M3(ctx3) {

      // layer1/Group
      ctx3.save();

      // layer1/Group/Compound Path
      ctx3.save();
      ctx3.beginPath();

      // layer1/Group/Compound Path/Path
      ctx3.moveTo(75.1, 29.6);
      ctx3.lineTo(75.1, 14.8);
      ctx3.lineTo(63.7, 14.8);
      ctx3.lineTo(63.7, 20.5);
      ctx3.lineTo(55.5, 14.0);
      ctx3.lineTo(24.2, 39.0);
      ctx3.lineTo(25.7, 40.9);
      ctx3.lineTo(55.5, 17.1);
      ctx3.lineTo(85.3, 40.9);
      ctx3.lineTo(86.8, 39.0);
      ctx3.lineTo(75.1, 29.6);
      ctx3.closePath();

      // layer1/Group/Compound Path/Path
      ctx3.moveTo(66.1, 17.3);
      ctx3.lineTo(72.6, 17.3);
      ctx3.lineTo(72.6, 27.6);
      ctx3.lineTo(66.1, 22.5);
      ctx3.lineTo(66.1, 17.3);
      ctx3.closePath();
      ctx3.fillStyle = "rgb(46, 48, 146)";
      ctx3.fill();

      // layer1/Group/Compound Path
      ctx3.beginPath();

      // layer1/Group/Compound Path/Path
      ctx3.moveTo(31.2, 40.0);
      ctx3.lineTo(31.2, 73.8);
      ctx3.lineTo(79.8, 73.8);
      ctx3.lineTo(79.8, 40.0);
      ctx3.lineTo(55.9, 20.6);
      ctx3.lineTo(31.2, 40.0);
      ctx3.closePath();

      // layer1/Group/Compound Path/Path
      ctx3.moveTo(77.4, 71.3);
      ctx3.lineTo(33.7, 71.3);
      ctx3.lineTo(33.7, 41.2);
      ctx3.lineTo(55.9, 23.7);
      ctx3.lineTo(77.4, 41.1);
      ctx3.lineTo(77.4, 71.3);
      ctx3.closePath();
      ctx3.fill();

      // layer1/Group
      ctx3.restore();

      // layer1/Group/Compound Path
      ctx3.save();
      ctx3.beginPath();

      // layer1/Group/Compound Path/Path
      ctx3.moveTo(60.2, 49.6);
      ctx3.lineTo(60.2, 71.3);
      ctx3.lineTo(51.3, 71.3);
      ctx3.lineTo(51.3, 49.6);
      ctx3.lineTo(60.2, 49.6);

      // layer1/Group/Compound Path/Path
      ctx3.moveTo(62.6, 47.2);
      ctx3.lineTo(48.8, 47.2);
      ctx3.lineTo(48.8, 73.8);
      ctx3.lineTo(62.6, 73.8);
      ctx3.lineTo(62.6, 47.2);
      ctx3.lineTo(62.6, 47.2);
      ctx3.closePath();
      ctx3.fillStyle = "rgb(46, 48, 146)";
      ctx3.fill();
      ctx3.restore();
      ctx3.restore();

    }



function draw_M4(ctx4) {

  // static/
  ctx4.save();
  ctx4.restore();
}

function house(ctx4) {

  // house/Group
  ctx4.save();

  // house/Group/Compound Path
  ctx4.save();
  ctx4.beginPath();

  // house/Group/Compound Path/Path
  ctx4.moveTo(19.5, -14.3);
  ctx4.lineTo(19.5, -29.0);
  ctx4.lineTo(8.2, -29.0);
  ctx4.lineTo(8.2, -23.3);
  ctx4.lineTo(0.0, -29.9);
  ctx4.lineTo(-31.3, -4.9);
  ctx4.lineTo(-29.8, -3.0);
  ctx4.lineTo(0.0, -26.7);
  ctx4.lineTo(29.8, -3.0);
  ctx4.lineTo(31.3, -4.9);
  ctx4.lineTo(19.5, -14.3);
  ctx4.closePath();

  // house/Group/Compound Path/Path
  ctx4.moveTo(10.6, -26.6);
  ctx4.lineTo(17.1, -26.6);
  ctx4.lineTo(17.1, -16.2);
  ctx4.lineTo(10.6, -21.4);
  ctx4.lineTo(10.6, -26.6);
  ctx4.closePath();
  ctx4.fillStyle = "rgb(190, 30, 45)";
  ctx4.fill();

  // house/Group/Compound Path
  ctx4.beginPath();

  // house/Group/Compound Path/Path
  ctx4.moveTo(-24.3, -3.9);
  ctx4.lineTo(-24.3, 29.9);
  ctx4.lineTo(24.3, 29.9);
  ctx4.lineTo(24.3, -3.9);
  ctx4.lineTo(0.4, -23.3);
  ctx4.lineTo(-24.3, -3.9);
  ctx4.closePath();

  // house/Group/Compound Path/Path
  ctx4.moveTo(21.8, 27.4);
  ctx4.lineTo(-21.8, 27.4);
  ctx4.lineTo(-21.8, -2.7);
  ctx4.lineTo(0.4, -20.1);
  ctx4.lineTo(21.8, -2.7);
  ctx4.lineTo(21.8, 27.4);
  ctx4.closePath();
  ctx4.fill();

  // house/Group
  ctx4.restore();

  // house/Group/Compound Path
  ctx4.save();
  ctx4.beginPath();

  // house/Group/Compound Path/Path
  ctx4.moveTo(-3.9, 1.1);
  ctx4.bezierCurveTo(-3.0, 0.5, -1.9, 0.2, -0.5, 0.2);
  ctx4.bezierCurveTo(1.2, 0.2, 2.7, 0.6, 3.9, 1.4);
  ctx4.bezierCurveTo(5.0, 2.3, 5.6, 3.5, 5.6, 5.2);
  ctx4.bezierCurveTo(5.6, 6.2, 5.4, 7.1, 4.9, 7.8);
  ctx4.bezierCurveTo(4.6, 8.2, 4.0, 8.7, 3.2, 9.4);
  ctx4.lineTo(2.3, 10.0);
  ctx4.bezierCurveTo(1.9, 10.4, 1.6, 10.8, 1.4, 11.3);
  ctx4.bezierCurveTo(1.3, 11.5, 1.3, 12.0, 1.3, 12.6);
  ctx4.lineTo(-1.9, 12.6);
  ctx4.bezierCurveTo(-1.9, 11.3, -1.7, 10.4, -1.5, 9.9);
  ctx4.bezierCurveTo(-1.3, 9.4, -0.8, 8.8, 0.0, 8.2);
  ctx4.lineTo(0.9, 7.5);
  ctx4.bezierCurveTo(1.2, 7.3, 1.4, 7.0, 1.6, 6.8);
  ctx4.bezierCurveTo(1.9, 6.4, 2.0, 5.9, 2.0, 5.4);
  ctx4.bezierCurveTo(2.0, 4.8, 1.9, 4.2, 1.5, 3.8);
  ctx4.bezierCurveTo(1.2, 3.3, 0.5, 3.0, -0.4, 3.0);
  ctx4.bezierCurveTo(-1.3, 3.0, -1.9, 3.3, -2.3, 3.9);
  ctx4.bezierCurveTo(-2.7, 4.5, -2.9, 5.2, -2.9, 5.8);
  ctx4.lineTo(-6.3, 5.8);
  ctx4.bezierCurveTo(-6.2, 3.6, -5.4, 2.0, -3.9, 1.1);
  ctx4.closePath();

  // house/Group/Compound Path/Path
  ctx4.moveTo(-2.0, 14.2);
  ctx4.lineTo(1.5, 14.2);
  ctx4.lineTo(1.5, 17.6);
  ctx4.lineTo(-2.0, 17.6);
  ctx4.lineTo(-2.0, 14.2);
  ctx4.closePath();
  ctx4.fillStyle = "rgb(41, 58, 138)";
  ctx4.fill();
  ctx4.restore();
  ctx4.restore();
}

function stars(ctx4) {

  var alpha = ctx4.globalAlpha;

  // stars/Group
  ctx4.save();
  ctx4.globalAlpha = alpha * 0.00;

  // stars/Group/Path
  ctx4.save();
  ctx4.globalAlpha = alpha * 1.00;
  ctx4.beginPath();
  ctx4.moveTo(-3.5, 0.0);
  ctx4.lineTo(3.5, 0.0);
  ctx4.strokeStyle = "rgb(190, 30, 45)";
  ctx4.stroke();

  // stars/Group/Path
  ctx4.beginPath();
  ctx4.moveTo(-0.0, 3.5);
  ctx4.lineTo(-0.0, -3.5);
  ctx4.stroke();

  // stars/Group/Path
  ctx4.beginPath();
  ctx4.moveTo(-2.5, 2.5);
  ctx4.lineTo(2.5, -2.5);
  ctx4.stroke();

  // stars/Group/Path
  ctx4.beginPath();
  ctx4.moveTo(2.5, 2.5);
  ctx4.lineTo(-2.5, -2.5);
  ctx4.stroke();
  ctx4.restore();
  ctx4.restore();
}

function stars2(ctx4) {

  var alpha = ctx4.globalAlpha;

  // stars2/Group
  ctx4.save();
  ctx4.globalAlpha = alpha * 0.00;

  // stars2/Group/Path
  ctx4.save();
  ctx4.globalAlpha = alpha * 1.00;
  ctx4.beginPath();
  ctx4.moveTo(-3.5, 0.0);
  ctx4.lineTo(3.5, 0.0);
  ctx4.strokeStyle = "rgb(190, 30, 45)";
  ctx4.stroke();

  // stars2/Group/Path
  ctx4.beginPath();
  ctx4.moveTo(-0.0, 3.5);
  ctx4.lineTo(-0.0, -3.5);
  ctx4.stroke();

  // stars2/Group/Path
  ctx4.beginPath();
  ctx4.moveTo(-2.5, 2.5);
  ctx4.lineTo(2.5, -2.5);
  ctx4.stroke();

  // stars2/Group/Path
  ctx4.beginPath();
  ctx4.moveTo(2.5, 2.5);
  ctx4.lineTo(-2.5, -2.5);
  ctx4.stroke();
  ctx4.restore();
  ctx4.restore();
}

function stars3(ctx4) {

  var alpha = ctx4.globalAlpha;

  // stars3/Group
  ctx4.save();
  ctx4.globalAlpha = alpha * 0.00;

  // stars3/Group/Path
  ctx4.save();
  ctx4.globalAlpha = alpha * 1.00;
  ctx4.beginPath();
  ctx4.moveTo(-3.5, 0.0);
  ctx4.lineTo(3.5, 0.0);
  ctx4.strokeStyle = "rgb(190, 30, 45)";
  ctx4.stroke();

  // stars3/Group/Path
  ctx4.beginPath();
  ctx4.moveTo(-0.0, 3.5);
  ctx4.lineTo(-0.0, -3.5);
  ctx4.stroke();

  // stars3/Group/Path
  ctx4.beginPath();
  ctx4.moveTo(-2.5, 2.5);
  ctx4.lineTo(2.5, -2.5);
  ctx4.stroke();

  // stars3/Group/Path
  ctx4.beginPath();
  ctx4.moveTo(2.5, 2.5);
  ctx4.lineTo(-2.5, -2.5);
  ctx4.stroke();
  ctx4.restore();
  ctx4.restore();
}

function module_M4(ctx4) {

  // module/Path
  ctx4.save();
  ctx4.beginPath();
  ctx4.moveTo(0.0, 1.7);
  ctx4.bezierCurveTo(-0.9, 1.7, -1.7, 0.9, -1.7, 0.0);
  ctx4.bezierCurveTo(-1.7, -0.9, -0.9, -1.7, 0.0, -1.7);
  ctx4.bezierCurveTo(0.9, -1.7, 1.7, -0.9, 1.7, 0.0);
  ctx4.bezierCurveTo(1.7, 0.9, 0.9, 1.7, 0.0, 1.7);
  ctx4.closePath();
  ctx4.fillStyle = "rgb(42, 56, 143)";
  ctx4.fill();
  ctx4.restore();
}

function module_M4_2(ctx4) {

  // module2/Path
  ctx4.save();
  ctx4.beginPath();
  ctx4.moveTo(0.0, 1.7);
  ctx4.bezierCurveTo(-0.9, 1.7, -1.7, 0.9, -1.7, 0.0);
  ctx4.bezierCurveTo(-1.7, -0.9, -0.9, -1.7, 0.0, -1.7);
  ctx4.bezierCurveTo(0.9, -1.7, 1.7, -0.9, 1.7, 0.0);
  ctx4.bezierCurveTo(1.7, 0.9, 0.9, 1.7, 0.0, 1.7);
  ctx4.closePath();
  ctx4.fillStyle = "rgb(42, 56, 143)";
  ctx4.fill();
  ctx4.restore();
}

function module_M4_3(ctx4) {

  // module3/Path
  ctx4.save();
  ctx4.beginPath();
  ctx4.moveTo(0.0, 1.7);
  ctx4.bezierCurveTo(-0.9, 1.7, -1.7, 0.9, -1.7, 0.0);
  ctx4.bezierCurveTo(-1.7, -0.9, -0.9, -1.7, 0.0, -1.7);
  ctx4.bezierCurveTo(0.9, -1.7, 1.7, -0.9, 1.7, 0.0);
  ctx4.bezierCurveTo(1.7, 0.9, 0.9, 1.7, 0.0, 1.7);
  ctx4.closePath();
  ctx4.fillStyle = "rgb(42, 56, 143)";
  ctx4.fill();
  ctx4.restore();
}

function module_M4_4(ctx4) {

  // module4/Path
  ctx4.save();
  ctx4.beginPath();
  ctx4.moveTo(0.0, 1.7);
  ctx4.bezierCurveTo(-0.9, 1.7, -1.7, 0.9, -1.7, 0.0);
  ctx4.bezierCurveTo(-1.7, -0.9, -0.9, -1.7, 0.0, -1.7);
  ctx4.bezierCurveTo(0.9, -1.7, 1.7, -0.9, 1.7, 0.0);
  ctx4.bezierCurveTo(1.7, 0.9, 0.9, 1.7, 0.0, 1.7);
  ctx4.closePath();
  ctx4.fillStyle = "rgb(42, 56, 143)";
  ctx4.fill();
  ctx4.restore();
}

function module_M4_5(ctx4) {

  // module5/Path
  ctx4.save();
  ctx4.beginPath();
  ctx4.moveTo(-0.0, 1.7);
  ctx4.bezierCurveTo(0.9, 1.7, 1.7, 0.9, 1.7, 0.0);
  ctx4.bezierCurveTo(1.7, -0.9, 0.9, -1.7, -0.0, -1.7);
  ctx4.bezierCurveTo(-0.9, -1.7, -1.7, -0.9, -1.7, 0.0);
  ctx4.bezierCurveTo(-1.7, 0.9, -0.9, 1.7, -0.0, 1.7);
  ctx4.closePath();
  ctx4.fillStyle = "rgb(42, 56, 143)";
  ctx4.fill();
  ctx4.restore();
}

function module_M4_6(ctx4) {

  // module6/Path
  ctx4.save();
  ctx4.beginPath();
  ctx4.moveTo(0.0, 1.7);
  ctx4.bezierCurveTo(-0.9, 1.7, -1.7, 0.9, -1.7, 0.0);
  ctx4.bezierCurveTo(-1.7, -0.9, -0.9, -1.7, 0.0, -1.7);
  ctx4.bezierCurveTo(0.9, -1.7, 1.7, -0.9, 1.7, 0.0);
  ctx4.bezierCurveTo(1.7, 0.9, 0.9, 1.7, 0.0, 1.7);
  ctx4.closePath();
  ctx4.fillStyle = "rgb(42, 56, 143)";
  ctx4.fill();
  ctx4.restore();
}

function module_M4_7(ctx4) {

  // module7/Path
  ctx4.save();
  ctx4.beginPath();
  ctx4.moveTo(0.0, 1.7);
  ctx4.bezierCurveTo(-0.9, 1.7, -1.7, 0.9, -1.7, 0.0);
  ctx4.bezierCurveTo(-1.7, -0.9, -0.9, -1.7, 0.0, -1.7);
  ctx4.bezierCurveTo(0.9, -1.7, 1.7, -0.9, 1.7, 0.0);
  ctx4.bezierCurveTo(1.7, 0.9, 0.9, 1.7, 0.0, 1.7);
  ctx4.closePath();
  ctx4.fillStyle = "rgb(42, 56, 143)";
  ctx4.fill();
  ctx4.restore();
}

function module_M4_8(ctx4) {

  // module8/Path
  ctx4.save();
  ctx4.beginPath();
  ctx4.moveTo(0.0, 1.7);
  ctx4.bezierCurveTo(-0.9, 1.7, -1.7, 0.9, -1.7, 0.0);
  ctx4.bezierCurveTo(-1.7, -0.9, -0.9, -1.7, 0.0, -1.7);
  ctx4.bezierCurveTo(0.9, -1.7, 1.7, -0.9, 1.7, 0.0);
  ctx4.bezierCurveTo(1.7, 0.9, 0.9, 1.7, 0.0, 1.7);
  ctx4.closePath();
  ctx4.fillStyle = "rgb(42, 56, 143)";
  ctx4.fill();
  ctx4.restore();
}

function module_M4_9(ctx4) {

  // module9/Path
  ctx4.save();
  ctx4.beginPath();
  ctx4.moveTo(0.0, 1.7);
  ctx4.bezierCurveTo(-0.9, 1.7, -1.7, 0.9, -1.7, 0.0);
  ctx4.bezierCurveTo(-1.7, -0.9, -0.9, -1.7, 0.0, -1.7);
  ctx4.bezierCurveTo(0.9, -1.7, 1.7, -0.9, 1.7, 0.0);
  ctx4.bezierCurveTo(1.7, 0.9, 0.9, 1.7, 0.0, 1.7);
  ctx4.closePath();
  ctx4.fillStyle = "rgb(42, 56, 143)";
  ctx4.fill();
  ctx4.restore();
}

function module_M4_10(ctx4) {

  // module10/Path
  ctx4.save();
  ctx4.beginPath();
  ctx4.moveTo(0.0, 1.7);
  ctx4.bezierCurveTo(-0.9, 1.7, -1.7, 0.9, -1.7, 0.0);
  ctx4.bezierCurveTo(-1.7, -0.9, -0.9, -1.7, 0.0, -1.7);
  ctx4.bezierCurveTo(0.9, -1.7, 1.7, -0.9, 1.7, 0.0);
  ctx4.bezierCurveTo(1.7, 0.9, 0.9, 1.7, 0.0, 1.7);
  ctx4.closePath();
  ctx4.fillStyle = "rgb(42, 56, 143)";
  ctx4.fill();
  ctx4.restore();
}

function draw_M4(ctx4) {

  // ground/Path
  ctx4.save();
  ctx4.beginPath();
  ctx4.moveTo(7.0, 69.7);
  ctx4.lineTo(83.1, 69.7);
  ctx4.lineWidth = 3.0;
  ctx4.strokeStyle = "rgb(42, 56, 143)";
  ctx4.stroke();
  ctx4.restore();
}

function module_M5_5(ctx5) {

  // module_M5_5/Group
  ctx5.save();

  // module_M5_5/Group/Compound Path
  ctx5.save();
  ctx5.beginPath();

  // module_M5_5/Group/Compound Path/Path
  ctx5.moveTo(1.0, 12.9);
  ctx5.lineTo(0.0, 12.9);
  ctx5.lineTo(0.0, 0.0);
  ctx5.lineTo(12.9, 0.0);
  ctx5.lineTo(12.9, 1.0);
  ctx5.bezierCurveTo(12.9, 7.5, 7.5, 12.9, 1.0, 12.9);
  ctx5.closePath();

  // module_M5_5/Group/Compound Path/Path
  ctx5.moveTo(2.0, 2.0);
  ctx5.lineTo(2.0, 10.8);
  ctx5.bezierCurveTo(6.6, 10.3, 10.3, 6.6, 10.8, 2.0);
  ctx5.lineTo(2.0, 2.0);
  ctx5.closePath();
  ctx5.fillStyle = "rgb(46, 48, 146)";
  ctx5.fill();
  ctx5.restore();
  ctx5.restore();
}

function module_M5_4(ctx5) {

  // module_M5_4/Path
  ctx5.save();
  ctx5.beginPath();
  ctx5.moveTo(2.3, 0.0);
  ctx5.lineTo(0.0, 0.0);
  ctx5.lineTo(0.0, -8.3);
  ctx5.lineTo(2.3, -8.3);
  ctx5.lineTo(2.3, 0.0);
  ctx5.closePath();
  ctx5.fillStyle = "rgb(46, 48, 146)";
  ctx5.fill();
  ctx5.restore();
}

function module_M5_3(ctx5) {

  // module_M5_3/Group
  ctx5.save();

  // module_M5_3/Group/Compound Path
  ctx5.save();
  ctx5.beginPath();

  // module_M5_3/Group/Compound Path/Path
  ctx5.moveTo(24.2, 43.1);
  ctx5.lineTo(-24.2, 43.1);
  ctx5.lineTo(-24.2, 25.7);
  ctx5.lineTo(-19.9, 25.7);
  ctx5.lineTo(-19.9, 19.7);
  ctx5.lineTo(-15.7, 19.7);
  ctx5.lineTo(-15.7, 6.7);
  ctx5.lineTo(-7.3, 6.7);
  ctx5.lineTo(-7.3, 16.5);
  ctx5.lineTo(-2.3, 16.5);
  ctx5.lineTo(-2.3, 20.6);
  ctx5.lineTo(0.5, 20.6);
  ctx5.lineTo(0.5, 10.6);
  ctx5.lineTo(9.9, 10.6);
  ctx5.lineTo(9.9, 13.7);
  ctx5.lineTo(13.6, 13.7);
  ctx5.lineTo(13.6, 0.0);
  ctx5.lineTo(21.5, 0.0);
  ctx5.lineTo(21.5, 2.1);
  ctx5.lineTo(24.2, 2.1);
  ctx5.lineTo(24.2, 43.1);
  ctx5.closePath();

  // module_M5_3/Group/Compound Path/Path
  ctx5.moveTo(-21.8, 40.8);
  ctx5.lineTo(21.8, 40.8);
  ctx5.lineTo(21.8, 4.4);
  ctx5.lineTo(19.2, 4.4);
  ctx5.lineTo(19.2, 2.3);
  ctx5.lineTo(15.9, 2.3);
  ctx5.lineTo(15.9, 16.0);
  ctx5.lineTo(7.6, 16.0);
  ctx5.lineTo(7.6, 12.9);
  ctx5.lineTo(2.8, 12.9);
  ctx5.lineTo(2.8, 22.9);
  ctx5.lineTo(-4.6, 22.9);
  ctx5.lineTo(-4.6, 18.8);
  ctx5.lineTo(-9.6, 18.8);
  ctx5.lineTo(-9.6, 9.0);
  ctx5.lineTo(-13.4, 9.0);
  ctx5.lineTo(-13.4, 22.0);
  ctx5.lineTo(-17.6, 22.0);
  ctx5.lineTo(-17.6, 28.0);
  ctx5.lineTo(-21.8, 28.0);
  ctx5.lineTo(-21.8, 40.8);
  ctx5.closePath();
  ctx5.fillStyle = "rgb(190, 30, 45)";
  ctx5.fill();
  ctx5.restore();
  ctx5.restore();
}

function module_M5_2(ctx5) {

  // module_M5_2/Group
  ctx5.save();

  // module_M5_2/Group/Compound Path
  ctx5.save();
  ctx5.beginPath();

  // module_M5_2/Group/Compound Path/Path
  ctx5.moveTo(24.2, 32.5);
  ctx5.lineTo(-24.2, 32.5);
  ctx5.lineTo(-24.2, 26.0);
  ctx5.lineTo(-17.4, 26.0);
  ctx5.lineTo(-17.4, 21.0);
  ctx5.lineTo(-10.1, 21.0);
  ctx5.lineTo(-10.1, 24.1);
  ctx5.lineTo(-2.6, 24.1);
  ctx5.lineTo(-2.6, 26.6);
  ctx5.lineTo(3.1, 26.6);
  ctx5.lineTo(3.1, 19.2);
  ctx5.lineTo(6.5, 19.2);
  ctx5.lineTo(6.5, 14.2);
  ctx5.lineTo(10.5, 14.2);
  ctx5.lineTo(10.5, 9.9);
  ctx5.lineTo(17.0, 9.9);
  ctx5.lineTo(17.0, 0.0);
  ctx5.lineTo(24.2, 0.0);
  ctx5.lineTo(24.2, 32.5);
  ctx5.closePath();

  // module_M5_2/Group/Compound Path/Path
  ctx5.moveTo(-21.8, 30.2);
  ctx5.lineTo(21.8, 30.2);
  ctx5.lineTo(21.8, 2.3);
  ctx5.lineTo(19.3, 2.3);
  ctx5.lineTo(19.3, 12.2);
  ctx5.lineTo(12.8, 12.2);
  ctx5.lineTo(12.8, 16.5);
  ctx5.lineTo(8.8, 16.5);
  ctx5.lineTo(8.8, 21.5);
  ctx5.lineTo(5.4, 21.5);
  ctx5.lineTo(5.4, 28.9);
  ctx5.lineTo(-5.0, 28.9);
  ctx5.lineTo(-5.0, 26.4);
  ctx5.lineTo(-12.4, 26.4);
  ctx5.lineTo(-12.4, 23.3);
  ctx5.lineTo(-15.1, 23.3);
  ctx5.lineTo(-15.1, 28.3);
  ctx5.lineTo(-21.8, 28.3);
  ctx5.lineTo(-21.8, 30.2);
  ctx5.closePath();
  ctx5.fillStyle = "rgb(190, 30, 45)";
  ctx5.fill();
  ctx5.restore();
  ctx5.restore();
}

function module_M5(ctx5) {

  // module/Compound Path
  ctx5.save();
  ctx5.beginPath();

  // module/Compound Path/Path
  ctx5.moveTo(-5.0, 28.7);
  ctx5.lineTo(-5.0, 8.3);
  ctx5.lineTo(-5.0, 7.2);
  ctx5.lineTo(-5.0, 0.0);
  ctx5.lineTo(-57.6, 0.0);
  ctx5.lineTo(-57.6, 8.3);
  ctx5.lineTo(-7.4, 8.3);
  ctx5.lineTo(-7.4, 29.8);
  ctx5.lineTo(-7.3, 30.9);
  ctx5.lineTo(-6.2, 30.9);
  ctx5.bezierCurveTo(-4.1, 30.9, -2.3, 32.7, -2.3, 34.8);
  ctx5.bezierCurveTo(-2.3, 36.9, -4.1, 38.7, -6.2, 38.7);
  ctx5.bezierCurveTo(-8.3, 38.7, -10.1, 36.9, -10.1, 34.8);
  ctx5.lineTo(-12.4, 34.8);
  ctx5.bezierCurveTo(-12.4, 38.2, -9.6, 41.0, -6.2, 41.0);
  ctx5.bezierCurveTo(-2.8, 41.0, 0.0, 38.2, 0.0, 34.8);
  ctx5.bezierCurveTo(0.0, 31.8, -2.2, 29.2, -5.0, 28.7);
  ctx5.closePath();

  // module/Compound Path/Path
  ctx5.moveTo(-55.3, 2.3);
  ctx5.lineTo(-7.4, 2.3);
  ctx5.lineTo(-7.4, 6.0);
  ctx5.lineTo(-55.3, 6.0);
  ctx5.lineTo(-55.3, 2.3);
  ctx5.closePath();
  ctx5.fillStyle = "rgb(46, 48, 146)";
  ctx5.fill();
  ctx5.restore();
}

function draw_M5(ctx5) {

  // layer1/Group
  ctx5.save();

  // layer1/Group/Compound Path
  ctx5.save();
  ctx5.beginPath();

  // layer1/Group/Compound Path/Path
  ctx5.moveTo(18.8, 66.5);
  ctx5.lineTo(10.5, 66.5);
  ctx5.lineTo(10.5, 0.0);
  ctx5.lineTo(18.8, 0.0);
  ctx5.lineTo(18.8, 66.5);
  ctx5.closePath();

  // layer1/Group/Compound Path/Path
  ctx5.moveTo(12.8, 64.2);
  ctx5.lineTo(16.5, 64.2);
  ctx5.lineTo(16.5, 2.3);
  ctx5.lineTo(12.8, 2.3);
  ctx5.lineTo(12.8, 64.2);
  ctx5.closePath();
  ctx5.fillStyle = "rgb(46, 48, 146)";
  ctx5.fill();

  // layer1/Path
  ctx5.restore();
  ctx5.beginPath();
  ctx5.moveTo(79.5, 64.2);
  ctx5.lineTo(31.2, 64.2);
  ctx5.lineTo(31.2, 66.5);
  ctx5.lineTo(79.5, 66.5);
  ctx5.lineTo(79.5, 64.2);
  ctx5.closePath();
  ctx5.fillStyle = "rgb(190, 30, 45)";
  ctx5.fill();
  ctx5.restore();

}


