Create a Maze class that can store the logical layout of a maze. It should contain a 2D array of either Square or char. (For the purposes of this problem, it doesn't matter. If you had an easy time with Square, just use that---we'll be using that more later. If not, char is fine.) (Remember, a 2D array is just like a 1D array, except that you always provide two indices.) Maze should have a constructor that can read from a Scanner. The format will be that the first line contains the dimensions of the maze (width and height), and subsequent lines each contain one row of the maze, with each character representing one square of the maze. BE CAREFUL about the interactions between line- and chunk-based scanning! Also, write a toString method that makes a String representation of this Maze in the same format as the input. (This will be handy in testing your code...) A simple example of the input/output format: 7 4 ####### #...#o# #*#...# ####### A more complex example: 12 10 ############ #.#........# #.#.######.# #.#....#...# #.###.*#.#.# #...####.#.# #.#.#..#.#.# #.#.#.##.#.# #o#......#.# ############