(defconst $@I=<((Jline 10)
(defconst $@I=<((Jclm 20)

(defconst $@$*4i(J
  (list '("  _--- $@!"(J" " =======&" "|n  n   |" "o=     / ")
	'("  _--- $@!"(J" " =======&" "| n  n  |" "  o=   / ")
	'("  _--- $@!"(J" " ======='" "|  n  n |" " \\   o / ")
	'("  _--- $@!"(J" "@======= " "|   n  n|" " \\    =o ")
	'("  _--- $@!"(J" " ======='" "|  n  - |" " \\   o / ")))

(defconst $@$*$8$.(J
  '("         "
    "  _---_  " " /     \\ " "|       |" " \\ ^  ^/  " "     0   "))


(defconst $@$*<j$F(J
  (list '("     " " %%  " "%  % " "    %")
	'("     " "%%%  " "   % " "    %")
	'("%    " "%    " " %%  " "   % ")
	'("  %  " " %   " " %   " "  %% ")
	'(" %   " "%    " " %%  " "   % ")
	'("   % " "  %  " "  %  " "   % ")
	'("    %" "   % " "   % " "   % ")
	'("   % " "    %" "    %" "    %")
	'("%%   " "  %% " "    %" "    %")
	'(" %%  " "%  % " "    %" "    %")))

(defconst $@GH(J
  (list '("~~~ ~~~ ~~ ~~~ ~~~~ ~~~")
	'("~~ ~~~ ~~ ~ ~~~ ~~~~ ~~")
	'("~ ~~~ ~~ ~ ~ ~~~ ~~~~ ~")
	'(" ~~~ ~~~ ~~ ~~ ~~~ ~~~~")))

(defconst $@4d(J
  '("   _     " "  / \\-_  " " /     \\ " "        \\" "        |"))


(defun get-nth (n l)
  (nth (mod n (length l)) l))

(defun $@$*4i$NI=<((J (n line)
  (move-to-window-line (+ $@I=<((Jline line))
  (move-to-column-force (+ $@I=<((Jclm 15))
  (picture-insert-rectangle (get-nth n $@$*4i(J)))

(defun $@$*$8$.$NI=<((J (line)
  (move-to-window-line (+ $@I=<((Jline line))
  (move-to-column-force (+ $@I=<((Jclm 15))
  (picture-insert-rectangle $@$*$8$.(J))
  
(defun $@:8<j!J!)!K$NI=<((J (n)
  (move-to-window-line $@I=<((Jline)
  (move-to-column-force (+ $@I=<((Jclm 24))
  (picture-insert-rectangle (get-nth n $@$*<j$F(J)))

(defun $@1&<j!J!)!K$NI=<((J (n)
  (move-to-window-line $@I=<((Jline)
  (move-to-column-force (+ $@I=<((Jclm 8))
  (picture-insert-rectangle (get-nth n $@$*<j$F(J)))

(defun $@GH$NI=<((J (n)
  (let* ((line (+ $@I=<((Jline 4))
	 (end-line (+ 4 line)))
    (while (< line end-line)
      (move-to-window-line line)
      (move-to-column-force (+ $@I=<((Jclm 7))
      (picture-insert-rectangle (get-nth n $@GH(J))
      (setq n (1+ n))
      (setq line (1+ line)))))

(defun $@4d$NI=<((J ()
  (move-to-window-line (+ $@I=<((Jline 3))
  (move-to-column-force $@I=<((Jclm)
  (picture-insert-rectangle $@4d(J))			  

(defun $@%?%3(J ()
  (let (($@%?%3(J-buffer (get-buffer-create "$@%?%3$@$h!<!<$s(J"))
	n line)
    (save-excursion
      (load-library "picture")
      (set-buffer $@%?%3(J-buffer)
      (insert (make-string 20 ?\n))
      (switch-to-buffer $@%?%3(J-buffer)

      (setq n 3)
      (while (> n 0)
	($@$*4i$NI=<((J 0 n)
	($@1&<j!J!)!K$NI=<((J 0)
	($@:8<j!J!)!K$NI=<((J 5)
	($@GH$NI=<((J 0)
	($@4d$NI=<((J)
	(sit-for 1)
	(setq n (1- n)))

      (rename-buffer "$@%?%3MY$j!<!<!<!*!*(J")
      (set-buffer-modified-p (buffer-modified-p))
      (setq n 0 inhibit-quit t)
      (while (< n 100)
	(if (= n 30)
	    (progn (rename-buffer "$@K0$-$?$i(J C-g $@$7$F$M!*(J")
		         (set-buffer-modified-p (buffer-modified-p))))
	($@GH$NI=<((J n)
	($@$*4i$NI=<((J n 0)
	($@1&<j!J!)!K$NI=<((J n)
	($@:8<j!J!)!K$NI=<((J (+ n 5))
	($@4d$NI=<((J)
	(if (sit-for 0)
	    (setq n (1+ n))
	  (setq quit-flag t))
	(if quit-flag
	    (setq quit-flag nil n 100)))
      (setq inhibit-quit nil)

      (rename-buffer "$@$*$=$^$D$G$7$?!<!<(J")
      (set-buffer-modified-p (buffer-modified-p))
      ($@$*$8$.$NI=<((J -1)
      (sit-for 1)
      ($@GH$NI=<((J 0)
      ($@4d$NI=<((J)
      (sit-for 1)
      (setq n 0)
      (while (< n 3)
	($@$*$8$.$NI=<((J n)
	($@1&<j!J!)!K$NI=<((J n)
	($@:8<j!J!)!K$NI=<((J (+ n 5))
	($@GH$NI=<((J 0)
	($@4d$NI=<((J)
	(sit-for 1)
	(setq n (1+ n)))

      (sit-for 1)
      (kill-buffer $@%?%3(J-buffer))))

($@%?%3(J)
