Voting

Please vote for your favorite entry in this semester's 61A Recursion Exposition contest. The winner should exemplify the principles of elegance, beauty, and abstraction that are prized in the Berkeley computer science curriculum. As an academic community, we should strive to recognize and reward merit and achievement.

Next

Feather Weight

Eligible entries contain at most 256 tokens of Scheme, not including comments or delimiters.

PKB


Many pokeballs, 
you might as well just flaunt them 
like this. yes yes yes!

PKB

Tokens: 131
(define (pok radius angle)
  (if (< radius 50) penup (begin (penup) 
    (goto (* radius (cos (modulo angle 360))) (* radius (sin (modulo angle 360))))
    (pendown)
    (pokeball (* radius (cos (modulo angle 360))) (* radius (sin (modulo angle 360))))
    (pok (- radius 4) (+ angle 0.2))
    )))


(define (draw)
  (begin
    (penup)
    (pok 500 0)
  )
)

(define (pokeball x y)
    (penup)
    (setposition x y)
    (pendown)
    (begin_fill)
    (speed 500)
    (draw_ball 50 "black")
    (setposition (- x 8) y)
    (draw_ball 40 "white")
    (draw_half_ball 40 "red")
    (setposition (- x 25) y)
    (left 180)
    (draw_ball 20 "black")
    (setposition  (- x 30) y)
    (draw_ball 15 "white")
    (setposition  (- x 35) y)
    (draw_ball 10 "black")
    (end_fill)
    (penup)
  )

(define (draw_ball length filled_color)
    (begin
      (color filled_color)
      (begin_fill)
        (circle length 360)
        (end_fill)))

(define (draw_half_ball length filled_color)
    (begin
      (color filled_color)
      (begin_fill)
        (circle length 180)
        (end_fill)))

; Please leave this last line alone.  You may add additional procedures above
; this line.
(draw)
Next

Recursive Marvin [Ferus Type]


If Warhol gets fame,
Then can we at least get points
For this masterpiece?

Recursive Marvin [Ferus Type]

Tokens: 59
(define (row x y count)
    (cond
        ((> count 7)
            nil
        )
        (else
            (goto x y)
            (stamp)
            (row (+ x 207) y (+ count 1))
        )
    )
)

(define (stagger x y count)
    (cond
        ((> count 6)
            nil
        )
        (else
            (row x y 0)
            (stagger (- x 125) (- y 110) (+ count 1))
        )
    )
)

(define (draw)
  (penup)

  (addshape 'marvin.gif)
  (stagger -350 378 0)


  (exitonclick))

; Please leave this last line alone.  You may add additional procedures above
; this line.
(draw)
Next

Rainbow


Spectrums of colors
Pixelated rainbow squares
I am ROYGBIV :^)

Rainbow

Tokens: 226
(define (square size x y color)
	(pixelsize size)
	(pixel x y color)
)

(define (draw)
(square 100 0 0 "#78281F")
(square 100 0 1 "#943126")
(square 100 0 2 "#B03A2E")
(square 100 0 3 "#C0392B")
(square 100 0 4 "#F1948A")
(square 100 0 5 "#FADBD8")

(square 100 1 0 "#7E5109")
(square 100 1 1 "#9C640C")
(square 100 1 2 "#B9770E")
(square 100 1 3 "#F39C12")
(square 100 1 4 "#F8C471")
(square 100 1 5 "#FDEBD0")

(square 100 2 0 "#7D6608")
(square 100 2 1 "#9A7D0A")
(square 100 2 2 "#B7950B")
(square 100 2 3 "#F1C40F")
(square 100 2 4 "#F7DC6F")
(square 100 2 5 "#FCF3CF")

(square 100 3 0 "#0E6251")
(square 100 3 1 "#117864")
(square 100 3 2 "#148F77")
(square 100 3 3 "#1ABC9C")
(square 100 3 4 "#76D7C4")
(square 100 3 5 "#D1F2EB")

(square 100 4 0 "#0B5345")
(square 100 4 1 "#0E6655")
(square 100 4 2 "#117A65")
(square 100 4 3 "#16A085")
(square 100 4 4 "#73C6B6")
(square 100 4 5 "#D0ECE7")

(square 100 5 0 "#154360")
(square 100 5 1 "#1A5276")
(square 100 5 2 "#1F618D")
(square 100 5 3 "#2980B9")
(square 100 5 4 "#7FB3D5")
(square 100 5 5 "#D4E6F1")

(square 100 6 0 "#4A235A")
(square 100 6 1 "#5B2C6F")
(square 100 6 2 "#6C3483")
(square 100 6 3 "#8E44AD")
(square 100 6 4 "#BB8FCE")
(square 100 6 5 "#E8DAEF")

)

; Please leave this last line alone.  You may add additional procedures above
; this line.
(draw)
Next

Tail-recursive Gyarados


The Ouroboros
One time he fought Chuck Norris
Then went for-loopy

Tail-recursive Gyarados

Tokens: 253
(define (draw)
	(speed 0)
	(ht)
	(pu)
	(goto -500 -370)
	(color "#AAAAAA" "#222222")
	(write "::::-----------.---------.--.--......--.--------............................................................................................................`..``.....````.....`....`.`..`......................................................`.....`.......`````````````````````````````.``..``````.`..`````````````````.`..````.``````````````````````.``````.`...````.`.`.`..```.``.``.``.``.````.````````.`.....`.``````.......`.`..```.``````.````````...```..````.`..`.``````..`````..`.`````.............-.\n:::--:-------------.------...-...--..-----------..-..............................................................................`...``..............`..`.```.`...``...````.`..`.....```.```................................``..`......``.````...`.......``..``.``````````````````````````````````````.``.`````````````````.`.``````````````````````````````````````````````````````````.`````````````````````````````````````...`...`.`.``.````````````````````.```.`........`.`````.`````.````````..............--\n------------------....---....-.......---..--...............................................................................`...`......`........``..`.`````````....```````````..`...`.```.```....```..```.`.`.............``````````...```````````````..`````````````````````````````````````````````..`````````````````````.```````````````````...`````````````````````````.````````````.```````````````````````````````````````````.```.```..````````````````..``.```.`.......`````..``````````..``.``..`..........\n------------------..---....-...-.................................................................................................`....````..`..``.`....`.```..```.``````````.`.....``````.`...`````.``........``````....```.```````````````````````..``````..``````````````````````````````````.```````````````````````````````````````````````.`.....```````````````````````````````````````````````````````````````````````````````.`.``...``````````````````````````.````..````.````````````.``..`.``````........\n--:-------------------.---.-...--.............................................................................................```.`....`..`.``.....`.....`````````````````.`.```..`````````....``````````..`.`.``````````````````````````````...........````.`````````````````````````````````````````````````````````````````````````````````......`..````````````````````````````````````````````````````````````````````````````````````````````````````````.```````.````.`..``.````````````````````..`.`........\n-------------.-----...-----..-..................................................................................................``.....`..`.``````.`.......`````.````````.`.`.`````````````````````````````````````````````````````````````````````...`````````````````````````````````````````````````````````````````````````````````````````.`.`````````````````````````````````````````````````````````````````````````````.`````````````````````````.``````.``````````..`.....``````````````````.`......`......\n----------.----.--.....--.-................................................................................................`.`````````````.```````.........`.```````````````.```````````````````````````````````````````````````````````````````````..```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.``````````````````````````````````````````.`````.````````````````````````````````````````````````````````````````.`....``.....\n--------------.-----...-...--.-.........................`..`..........................................................`..`.````````````````.```.````......`.```````.````.``````````````````````````````````````````````````````````````````.``.``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.`````````````````````````````````````````.`...........\n-------------------..............................`.``..................................................................````````````````````.`.`````....```````````````````````````````````````````````````````````````````````````````````````.```````.``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.`.....```.`...``.```..```````````````````.............\n------------.-.-...................................`.......................................................`........`...``````````````````.``````````.```````````````````.``.``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````..````.```````..``.`.```````````````````````.`...........\n-------------.-....-.......-..-...........``......`.`.....``.`.............................................`.............`...``.````.````.`.`.``````...``````````.````.``..`.`.````````````````````````````````````````````````````````````````````````.``````````````````````````````````````````````````````````````````````````````````````.`````````````````````````````````.`````````````````````````````````````````````````.``````````````````````````.```..```.``..`..````.```````````````````````..........\n-----------.--..----.....--:::::--:::::-::::-..............`............................................................``.`.``````````````````.``````````````````````````````.````````````````````````````````````````````````````````````````.``````..``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.```````````````````````.``````..........`..```...``````````.``````````...........\n-------..-.....---.-..-..-:/::::---:::----:::........`..............................................................````.`.````````````````````.`````````````````````.```````.`.````````````````````````````````````````````````````````````````````````.``````.```.````````````````````````````````````````````````````````````````````````````````````````````````````````````...``````````````````````````````````````````````````````````````````````````````....`......`.`````````````````````````````.........\n--------.--....---------.::/.../o/++/+:```-::.......................................................................`..`.`````````````````````````````````````````....``````````````````````````````````````````````````````````````````````````.`.`````.````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.`````````````````````````````````````````````````````..``````````````````.``..``...`.``````````````````````````````````.`.........\n-------..-.-....---.-..--:::...-:+os/..```-:-.......................................................................``.````````````````````.....``..``````````````.````````````..----.--.......----.````````````````````````````````````..`...`.`````.`..`````.````.```````````````````````````````````````````````````````````````````````````````````````` ```      `  `  ```````````````````````````````````````````````````````````````````.``````````````.............````````.````````.````````.`````.........\n------------.....--.....-::/....++oo/+..``--:.........................................................................`.`````````````````.`......`..````````````...`````....-:/+/:----...........--::--...``````````````````````````````...`.``.`````.````.````````````````````````````````````````````````````````````````````````````````````````````````            `  ` ```````````.``.``````````````````````````````````````````````````````````````````````....`...`.````````````````..````````````...........\n------------...........--::/....//++::````-.:...........``............................................................```.``````````````````........```..---:-::::::///++++//:-``` `   `` ``   ``  ` ..-------.`````.````..````````````````````..```.`````````````````````````````````````````````````````````````````````````.`.`````````````````````` ` `````       `   ```````````````````````````````````````````.``````````````````````````.```````````````````.....`..```````````````..``````````````.........\n---------..-...-...-.----:::.....-+::.````-.:.................................................................`....````````````````````````.`......-:////:--...```````````````````     ```  ``````` `````````.:-``````````..```````````````````````````````.``````````````````````````````````````````````````````````````````````````````````````````     `        ```   ```  ```````````````````````````````````````````````````````````````````````````````````````````.`````````````````````````````````........\n------------..--.-......--:/....-+oo+-.```-.:..............``.....................................................```````````````````````````..-:/++/-````         `  ```  `` ````` ```       ``..`````````````+-.....````.```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````             ``     ``` `````````````````````````````````````````````````````````````````````````````````````````...``.``````````.`````.```````````````.......\n------------..---........-:/...-+sssyo-.``--:..............`.............................................`.``````..``````````.``````````..-:/+//:-.` ``````  ``` ` ` ```  ````  ``  ```  `````:/::::--/:.`-/.``:+..--::-::-.`````````````````````````````````````````````````````````````````````````` ```````````````````````````````````````````                       ````  ````````````````````````````````````````````````````````````````````````````````````````..`.....`````````.````.`````````````.`.......\n--------.---...--..--....::/...:+oss/:/.``.::............................................................``..`.`````````..`.````````.-:///:-.`````  ``````      ````  `` `` `   ```` ````..```-.``:/-...::.o--`/.  ` `````.-:-..````````````````````````.```````````````````````````````````````````            ``````````````````````````````````       `     ````      ``` ```````````````````````````````````````````````````````````````````````````````````````````.`...`.`````````````````````````````........\n----------.-.---...-.....-::``.`.----.-.``.:-.................................................`..........`....```````````````````.:/::.```````````` ```        `  `   `` ``````````  ``::--+/`..`.s..``.///.-s.+``   ```  ```.--::-.````````````````````.``````````````````````````````````````````               ``````````````````` ```` `` ```        ``` ` ``````      ` ````````````````````````````````````````````````````````````````````````````..`````````````..`....`````````````````````````````........\n----------....-..-.......-::``.`.-+++-.````::.............`.`...``.....................````````````````````````````````````````-/:.`````````` ``    ` ` `     ``     `     `    ```  `...:://-/.```--````..../:.`````` `        ``-/:````````````````````.````````````````````````````````  `` `     `              `````````` `           ` ``          `     `` `` ``` ` ` ````````````````````````````````````````````.```````````````````````````````````````````````.`.`..````````````...`.````````.`..........\n-----------....---.--..---::....-::+::.````::.............`````..``....................`````````````````````````````````````.:/-````````````` ` ``` `` `   ```      `      `   ``````` `+-..::.-::`.+.```````` ``.://.````.--````  `-/.``````````````````.````````````````````````````````     `` `                      ````  ```         `  ``        `     ````` ``````   `````````````````````````````````````````````.``````````````````````````````````..```````````````...````.`````````````````````..`......\n------------..----.--..---/:.....::s:-`````::...........`````.`........................```````````````````````````````````-//-````````````````   `` ``  `  ``       `      `  `` ```   ``.//::-:./+`+``````    `..`..:-``:/--.`  `   `-::.```````````..``````````````````````````````````     ```  ```    `               ````````        `  ```   ``   ``    ``````````` `  `````  ````````````````````````````````````````````````.`````````````````````````````````````````...`.`..`````````.``````````...`......\n--------............-.----/:......./.``````:/-.........`````````....................``````````````````````````````````.:/:-`````````````````  `  `` `  ````       `  `   ` `  `` ````````-o......///-`.````    ````..-:`::///````..`  ``-/-....-.```````````````````````````````````````````  ```` ````   ``  `  ``` ` ```````````            `  ``  `  ``  ```````````````` ` ``   ` `` ``````` ``` ` ````````````````````.````.```````````````````````````````.````````.`````.`.``...```.````.`````````.`.........\n--------...-...-----------+/....--:o::.````::-...`...``.`````````.`...............````````````````````````````````.-:::.````````````  ``` `  `````   `` ```   `   ``       ` ``` ```//++-`s:``````-:`+..````  ` ` ```+//....-/``-..``  `  `..``.-/:``````````````````````````.``````````````    `  `````````````` ` ````````````    ` `      ` `````    `    ``````````````` `     `````````` ````` ``````````````````````````````````````````````````````````..`..`````````````````..`.```````.````````..``........\n------------..--.---------//....-o:.-/..```/::.........`.````...................`.```````````````````````````.:///-.```````````` ```````````````  ```   ` `   `  ` `     ``-::-.```.`..+:-s-``....+://`````````  ```.:```...++`/s```  ```` `  `  `::`````````````````````````````````````````   `` ```  ```````````````````````````` ``       ``````` `  `` ``````  ``````````` ```  ```````` ```````````````````````````````````````````.`````.`....```...``........``.``````````.`....``......``..`.....`.........\n-------.----..------------//....:/+/+:-````:::.................``...``........````````````````````````````-//:.`````````````````````  ``````` `  ``     `       ```` `//`.s:..-/o``:...:::.`+o:-:-/////:`  `--. ````.o:.```-:////``    ``````/-:.`..-::.``````````````````````````````````````````````````````````````````````````````` `  `   `````` ``````````````` ````` `````````````````````````````````````````````.````````````.``````...``..`.``...```......```````````...`.....`..................`.......-\n-----------/:---/s+-------+/....--oso:.````:::...............``.```````````.```````````````````````````.:+:````````````````````````` ````````  ````` ```      ` `-////.o-.o....//-+:.`` ````..```..`.``-o. +:..`` ````.:-//`....-o```//://```+..++:/:-.s.```````````````````````````````````````````````````````````````````` ``` ``` ``` `    ` `` ```````  `````````` ``` ``````````````````````````````````````````````...``````````.`````.````.````````.........````````.`.````.....`......`...`..............--\n----------++o+--:s--...---//....--osy:.````:-:............```````````````.```````````````````````````.+o-````````````````````````````.......````````````   `  ` `/...:++` `:/-./oo:.`---``` ```+//::.```+-.//:::````.///``s..`../- `-..`.:/.`:.`o-.``..o.`````````````...````````.``..``````````````````````````````````````````````  ````````````````````````````````````````  ``````````````````````````````````````````..``.`.``.`.`..``.`....`....`...........`...`...````..`.......`.......``.................-\n------------::-/:--...-.--//..`..+:/::.````:-:...........``````````..```````..`````````````````````-+o-``````````````````````````````........```````..```  `   ``````..` ` `.+-..//.s/:/+/.```-s.``.::--:-o:.``.: `:/+-:/`:```.:-.:+.--.``.s`/+``-+-``:+``.```````````....`````````````.```````````````````` ````````````````````````  ``````````````````````````````````````````````````````````````````````````````````.``...```.....................`.`............`.```.``.................................-...-\n--------------/o/:--------/:...`......`````::-...........`````````.``..`````````.````````````````-os:``````````````````````````` ``````.:+:..``````-.```.`     `` .+//++/:::../+--:.+-.---:/+.`/+`:+--+/:....```+`--:::.o.+. `-//-..:..-:`-/-/://`-.```..`.`````````....````....`..````...``````````````````````````````````````````  ` `````````````````````````````````````````````````````````````````` `````````````.````.```...........`...................................................................-..-\n-----------::/ooo+:-------::...```..//..o.`:--...........`````.`.....`.`.`````````````````````.:oo:.````````````````````````````  `````...:o::///:`o-.`..` `..``` ./`//:-.../:`y-`.`.:yhhho//+``. ...``.:`::.`.:-:/:/.://+/`  ```o..-:-.`./+:`.//--/+-...`.```````.........`..`...`.`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````` ````````.```.``.````.............`.....................`...........`.................................-..-\n-----------:/:+/++--------/:..`.```.+o/+so.-::.........`.``.``.``...`.`````.`````.``````````./o/-`````````````````````````````````//:----+-/+:...:/o-````` /:.`---```/+`-o//:o`o..```:ddddddhy`:```````+/:o-.`.++:.````.../o`  `././:..:/```````````-+//:...``.`..`.```...``....``.``..```````````````````````````````````````````````````````````````````````````````````````` `````````````````````````````````````.````````.......`...............................`...`..............`........................-.-\n--------------------------:/``...`..-/./o-`-::...---........`..`..........````````````````-//-.```````````````````````````````` `.o-..```-//...``./+----.``:+.-/:://-`+/::..:sshhhh+``hdddddh/os.``````++//:.``..`` .:::-`.s`  ```:/-.`./- `:/:-````.-::-::...........`.``...`.``````.```````````````````````````````````````````````````````````````````````````````````````````````````......`.```````````````````````...`.`.......``..`.`.`.....................`.`````````....`..`...``.....................-..-\n------------/o+os:--------//...`````.-:+/``--/..----...................`````.````````.`.:+:.```````````````````````````````````````.//:..+--..`:yhhhhhhhhy/`./-..`..-+.++..yhddddddh+`yhhhhhhyhhs..+:::--``o:````  `:...../-:///. `:o.`.-- :+-/+.``+/---:/./.....`.............`````````````````````````````````````````````````````````````````````````````````````````````````````````....``````````````````````...........`............................................```..`..`......`....`.................-..-\n------------+++o//--------//.````.``.:++/-..-/-----.................................../+:.```````````````````````````````.-.```-://:/:././..:-.hdddddddddddo`-soyo:`.---```+hddhhhyy//hhdddddddys-+:....-/ /.```   ``.`-/:://-../` ./...+-.:..-/+``o:..../-+-.............`...```````````````````````````````````````````````````````````````````````````````````````````````````````.````````````````````````````........................`...............................```````...`.`..`.........................-\n-:----------:o:+:-------:-//.........:+oo/..:/-----.-.-............................-/+:.````````````````````````````````--:/o..o.....:+.-`..:+:+syssdddddddh::hdddho.+:`--..:+yhyhhdhddddddddddsoyho-...-/./.``     ````.`.--.``-+`-/.-+//-...o:::`+-....:+/................```````````````````````````````````````````````````````````````````````````````````````````````````````````````.```````````````````````.......................................................``.`..........`..........................-\n-:----------++oso/------:-//../--o/:.::+-:..::-----.-........-.-................-:++:.`````````````````````````````````/o-..://-.....:+:```````.--../oyddddy/yhhhhhhs.`//:::.`.ydddddddddddddddddddd+```/:-.`  `.```  ./.++:---.:/:-.`.-......-::-./.....................```````````````````````````````````````````````````````````````````````````````````````````````````````````````.``````.````.````````````.`.....................`................................```.``....................................-\n------------++ohs:--------//.-+:so+:./.+::-`:/--------......--..--.....-.-..-:/+/:-```````````````````````````````` ```:/:-.-:-:/:-////:---.`` .+yyys+:+hyyyhhddddddh-`+yyyhy/--yddddddddddddddydddo``````` ``++/::::``///..```:+:.````.....``:---::-............-::-.````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.`..`.`.``.``...`...................``....................`............```..`....................................-\n------------/:sh+---------//..o:o++/.+.--::`:/----------.--....---........-///-..````````````````````````````````````````.--...../:-:.-:-.-/:.``shddddho/hhddddddddhy`/hhhddddy/./dddddddddddhh//+:.:ssso-` `:/`-://+:`/.```.-::-.`````````` `-..``..::----...--::--://:---.``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.`````````...`...`.`................`..................................``.`.............`....................-....\n-:---------:s+yo+/--------:/..:./-.-.-```..`//-------------............-:+/-````````````````````````````````````````````.-.../////-.o/o/:-/:/+-..-hddhhyoddddddddhd+:+hhdddddddh:.hddddhhhhhhhhhyyyyhddddh-` -``:---+:/.````o-..--:-.`      ```      ``....```.``  ````...-/:`.----.```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````..`.`..............................................`.........````......`.................................\n------------osy+o+--------:/.`-:o+:..:-.-:``/:-----------....-.---...-:o/.```````````````````````````````````````````````.::-....-+-/:+ssyso:yyy/`+hyhdddddddddhhyyyhddddddddddd/:ddhhhhhhddhhhhdhhhhhddhhy-`+-.....-:.` ```..::.``.://:-`  ` ````           `   ` `   `///-:--..-:/::--.`````````````````````````````````````````````````````````````````````````````````````````````````.`.`.`..````.`.`...```................-........................................`..```................................--.-.\n------------/:/::---------//..-oso/.`+:++s+./:------------...--.--.-:oo-```````````````````````````````````````./+++///+/.-o:-/oo+:/+-hdddddhddhy/.:ydddddddhhyyyyhdddddddddddddyhhhhhdddhhhhddddddddddddyo../..````-://..` `o-...` `..-o:   `//:/:. .-`           ``.`.-:::`.-.`.:..---/+.```````````````````````````````````````````````````````````````````````````````````````````````.``...`..`````.`.```````...........................................................`.................................--...\n--:--------+://+++:-------:/../oo++..+//:o:`/:------------..-.-.---/s/.````````````````````````````````````````++-.:/+/:/o--ohddhhhs:`ohdddddhyyhdo`oddddddhyyyyhddddddddddddddhyyhhdddhhhdddddddhyhdddddy:-. `   `--..-:::  :+````  ``..:- `-.`.`./..+`          `--:+.`+/.//::-.o:--:-.-/.`````````````````````````````````````````````````````````````````````````...`````.``````````.`.`.`..``....`.....`.``.```................................................................................................\n--:--------++/::/s:-------:/-.:+o/:/..-`./``/:------------.--..--:os:``````````````````````````````````````````-.-shdddhs-:-hdhhhdddh.:hdddhyyhdddo-yddddhyyyhhdddddddddddddhysyyhddhhhhdddddddddy/hdddhys``:++/-``-++syyos``+-.:-..` `..-o `s-:-.`--:-     ```   `...--./-.....-:-o.```-.+-`````````````````````````````````````````````````````````````````````````.````````````````...`.```........``..........``.........................................................`......................................\n-------------://:---------/+:..--.........../::-----------.---.-/s+.`````````````````````````````````````````````shddddddo-+hhhdddddy::dhyyyyddddddhddddyyyyhddddddddddddddhyyyydddhhdddddddddhydddy+++///+syyyhy+` -hs+sy/-/-`o-...``..:-:.-:--:+.-/-`    -/:::--.`:/-::.``//---``/`````:+.````````````````````````````````````````````````````````````````````````````````````````````.``.````..```.``.````````..```...`...................................................`................................---..-\n:-:---------/s++o:--------/+/:::::://:////////:----------------++-```````````````````````````````````````````````sdddddhho-ohhdddddy:ohdhyyhdddddddddhyhsyydddhydddddddddhyyyyyhdhhdddddddddddy:hdhyyhhhhhhhhhhhyy.`syooyyyys-`s-..` `..//:-.....-:`````` `/.````-+.`+-`.```/.``--/.```````````````````````````````````````````````````````````````````````````````````````````````````````.....`.````````````````..`..`...........................................................................................-\n--:::-------//ss/----------::----:::-------------------------/+-`````````````````````````````````````````````````/dddddhosyyhddddddhdddhyyddddddddddhosyshddddhyddddddddhssyyhddhyhdddd+ohdddddysyyyhhddddddddddo++sys+sssyyy/`o.`````.::......-.::`::://.``.-.``.:/`-..`   `--..-.``.-.---...-``````````````````````````````````````````````````````````````.``````````````````````````````.`.``.````.```````.`.......`....`......................................................................................-\n--:----------:ys+:--:--------------------------------------:/-```````````````````````````````````````````````````+dddddddhyyddddddh+ydhyhddddddddddysyooyddddddhddddddhysyyyhddyhddddddhsddhsyyoshddddddddddddddddddh/-::/+o/::-`-::::-`o-....-:/--:/.//:-/``s/```/--```````  .:`-../+.  `-------```````````````````````````````````````````````````````````````````````````````````````````..`..`.`````....````.`````.`....`.......................................................................................\n-:-----------/ys+/---------------------------------------:o:`````````````````````````````````````````````````````ohddddddhyhdyyddhddddyyhdddddddddh:+yyyddhhdddohdddddyoyyyhddhddddddddddhyy+yyyddddddddddddddddddddh-`````/:.  `-````--/````.:s+/-``...--- --``  ``  `+++//. ``````     `./:/:`..`````````````````````````````````````````````````````  ```````````````````````````````````````.```.......`.`.....................................................................................................-\n--------------+o---------------------:::-------------:--+o-``````````````````````````````````````````````````````:hddhhddyyhddddh/hddsohdddddddddhyhs/shdy:yddddddddhys:oyhdddddddddddddhsoyhhddddddddddddddddddddhs+-+s/::.`    ./::+-`  ``  `-////:```.::-/..`````` `-./../.-```       ``:-`::-:..````````````````````````````````````````````````````````````````````````````````````````````.`````````````.````.................................................................................................\n--------------/o-----------------------:::------------/o/````````````````````````````````.`.``````````````````````-ohdddhoydddhhdddddhyhdddddddddys+syhddhoyddddsydy/sssyhdddddhddddddhyyyyhdddddddddhohddddddddddyoyddhy-::     ````.+.`-+/. `-.``.s:  `/:-`+:`/:://:` /-``-/```` ``    ``.::-/:::::.``````````````````````````````````````  `````````` `````````````````````````````````````.`.`````````````````...`..............`.```.......`..........`.`...............``.....................................\n---------------:-----------------------:::----------/o+-.```````````````````````````````````````````````````````````:hddyohdddshdddddyshhyddddddhyy/oyhddhsyddddhhhyoysohddddddohdddhyyyyhdddddddddddhshdddddddddddddddh+.``      `-//+:`s...```....+``..`` .o.::````:+`-:``.``` -//:/-` `:-....-..`.:-.````````````````````````````````````````````````````````````````````` ```````````````...`````.```````````````..............```````.`..``...`.`..`````````````.....`.````...............`.``.................\n-------------------------------------------------:/o+-....```````````````````````````````````````````````````````````:hdyyydddddddhsdoohhoddddddhyyy+hdddy:sddddddyy/oyhdddddddddddhoyyyhddddddddyoddddddddddhhhhyyyyho:.`` ````  `..:/./+:+- `+--::.:+//+:``...``````/-/````   `.```..:` .s/:-.`.-:/-./.````````````````````````````````` `````````````````````````````````  `````````````````````.``````````````````.`....````.`.```````.`````...`````````````````````.`````....``.........`...```................\n---------------------------------------::::---::/so:.....`````````````````````````````````````````````````````````````:yyyyddssddddddoshdddhsdddyyyyydh+-+dddddddhyysyyhdddhhdhoddys-sydddddddddd/-sdddddddhhyyy-+ys+-`.-.` -o...` ``+//.```o``o-/:::-````-o:`-o``  .//:::`       ://::-- ::```````.`:/.:``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.``````````````````````````.`````.```.````.`````````````.................\n---:-:---------------------------------::::---/++:..``.````````````````````````````````````````````````````````````` ```:+syhhhdshdhho++ssyyyddhoyyyhdds/ydddddddyyyyydddddhyddddd/:yyhddds+sdddddddddddyyyyssyysoo+++shy+.``o:::/+/--`  .::+ ::`````````..::`/-    ``  -+oo:    `.```-:--:``````````.---````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.```````````.`.````````````````````````````..``````````````````````````````.`.```......\n/----------------------------------------:-:/+:...```...````````````````````````````````````````````````````````````` ```````.-+os+:```../oo+hdhshyyhdddddddddddhyoyyhdddddddy/ydyssshdddd-`+ddddddddddyyooyo/yyyyyyyhyo/o.`+-```````./-  .:/:-::  `//:--`./.:````    ``o-``:/  -///- ./s-````````````--``.````````````````````````````` ````````````````````` ````````````````` ```````````````` ``````````````````````.......``.````..``````````````````````````````````````````````````````````````````````......\n+o++/:------------:-----------------:///oys+-...``````.```````````````````````````````````````````````````````````````````` `````````````/sysoo+/-.--:ohddsdddddyysyhdddhddhydhdho+yydddddyydddhhdddds+yyyyysssyhyyyo:--+:-+/````.```./: `.:-.``:.`/o.````-++.```.``   `. `///`-+.`.//``o:```````````````````````````..``.````````````````````````````````````````````````````````````````````````````````````````````````````...```````````````````````````````````````````````````````````````.`````````````......\n-::://++++///:--------:-------::///++osy+/-..````````````````````````````````````````...`````````````````````````````````````````` `   ````````:/yyyhyo:oddddddyoyyydhy:-sdyohdhyssydddh//sdddhhhddds.-yys+yy-`oys/.`.+///-.```````.:///`+..````././.`-:::..` `-..```    ``.+-:+` /o:o+`+.`.```````..`.```.```````````````````````````````````````````` ``````````````.`````````````````````````````````````````````````````.``````````````````````````````````````````.```````````````.`````````````..``.`.```..`..\n-:::--::::::/+++//////++++/++ossossyys+-`.``.``.`````.`.`````````````````````````..------.````````````````````````````````````````````..--.```:/+hhhdddy-hdddddhyysyddy/+hdhshhsyyyy:yddyosddo:oddhyysyyosyssyss:.````..```````````:::::oo-.....:-:``::...-:/` `o-```    `.`--./.`/.`//`s.`````````.``.`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.``````````````````````````````````````..``.\n///:::::-:::::::::::/++++oosyy/oyhyo:.`````..````````.`````.``````````````````.....-----:`````````````````````````````````` ```` ````//-.-/:-`.-./oydddyhdddydhosyosddddddddhdhsyyhhyhdddddhddhdddhy--yysyyyyy+.```.```````````````-/:--.-:o```.:-``/..`````:- `/--`      ``..:+.::`::-+-````.` ```.```.```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.``..\nyyysysosssssssyyyyyyyhhyoshhhy+os/-.````.....````..``..`````````````````````..----.--/o+//.````````````````````````.:::.`````` ``````:`./+////``..``:ddhydddddhoss/sdh:-sy+hhdsyyh+-+ddddhsddddddhhyosyyyyyys:.```` ``````````````````````.s``.....`/-``````.o`:-.:o.      ``+:::-``+:``::::::-```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.```..\nhhhhhhhhhhhhhhhhy+/hhhh+--+hyo+:.....```..```````````..```.````...````.```.--------+-::/+:.```````````````````````:+:-.-:-----.``` ````.:.-/+::shyo`-hhdydddddds--yhddyyhddddy+yyhooodyyhdhddddddhyy/yyyyyy+.``````````````````````````` `-+`.+///:../+.```-//:-.``.o` ```   -.`.-::.  `.-...-+:.`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````..```````````````````````````.\nyhhhhhhhhhhhhhhhhyyyhhhyo++:-.....``````````````````.````.`````--+-`..-...---------s.-:/:`````````````````````````+/.-s+:------`````````..-/+yhddhy:`shddhhhdhyoosyhhyssohoshs:ohdddddo:/ddddddddyyysyyyyy:````````````````````````````.-/:`-+-...:+.`s.``..-.``````+--+/:-`   /:.--//-``:s-/+/-:/-````.````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.````````````````````````.`.\nyyyyyhhhhhyhhhhyyyyyso+:-...`.....`````````````````.`.```....--./o::o:..--..-------//-````````````````````````````.:-:+-..-//o/````...``````-hsodhhoyyhdddh:---///ohs::yhs-/hy+yhddddddhddddddddhyyyyyyyy:.```````````````````````````-+::-:/.`````:/`/``````````.-`-:s+/:.`` `+```.--+- -/..-::/-o````.```.``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.`````````````````````.``...`.\n//++oooooooooooo+//-...`..````````````````````````..```......:o/++::--.------:+://--/o```````````````````````````.--..-+.....-s``:o/:/-``````:sohhyhdyyyys+```oyyys+/::+yyyhdhyyydyohddddshddddhyyyyyyyys.`.```````````````````````````-...```````./-::```````````/:::.../-``  . -:....+ ::`.-../:/..`....`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````...-:\nsyyyyyyyyyyyyo/-.....`.....```.`..``````.`.``````.``..``.-....::.--.....-----/+.:+/:-.`-.`````````.-::---..`````..-:+-`/-..--::./o///.````````.:osyhys/..``````---.+yyysso/ohhyyydhohddhyddhdddhoyyssyyy+`````````````````````````````````````````-//-```````````````````-/``   `o.``.::.:..````o:/.``.`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.`````````````````````````````.-:-..\nyhhhyhyyyso/-..............```.`..```````````````..`.`...//.--////---..--::::-/+/:-++/:-.`````````.-+/+/---.````.--+/:::....+::::...+/```````````.-...````.----``+ohdyoohdh/yhyyhdddddddddddddhysoysoyyy:``````````````````````````````````````````.`````````````````````.+      /:.`-:...``````..```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.``````````````````````.-:.````\nysso++::--.......`...............`..``````````````````-o:+:-/::/+--.-..:--.-y+-----s+/:---:```````````-/-.-.```-o:-:++.:-.......-.//:``-//::.````````````-+--ohy/.-hdy:/hddhdhyyyyydddddddddddhsysyoyyyy-`````````````````````````````````````````````````````````````..-/.`.`  ``-/:--:-.`````.``````````````````````````````````````````````````````````````````````.``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````..-.``````.\n---.................................-...``````````````-/--//:-----.....````.oo:----:::-:://:://-.```..-+---.```.+:.-:+-o-.....`-+:/:://--`...```````..```.-.`/ysh/.hhdydhyssssyyyhhhhhddddddddhyssysyyyy-```````````````````````````````````````````````````````````..//:-::::. `:-..-..+:```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.```````````````````````````````.`````````.--.`````````\n...............-.-------...........-----.````````````.//---...--...`````````.-://--//:--.-:+/s/o-`.--.-/--.``````.``-/+-.....```..---:```-:-:+-````-.-...`./-`:oo:ssyhyy:````.-oyyy+::/oosoydhyysoysoyyh-```````````````````````````````````````````````````````````.///:-.```-- :o/:--:.-/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.`.-.`  `````````\n............--------------...---/..+/-/:.`````````````.o//-::```````````````````...-/o:-.-:s:/::.-+:-//-````.....--``.o/..````.:-``````````...::.`.+.---/:`/:````.-://:.`.-.```.-..--:/osso/+syyyyyyyyyy.`````````````````````````````````````````````````````````````````````.:`/.`.``./.+```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.-:.``  ``` ``````\n...........---------------------+::oo-:--``..-:``--.::+o-++/.---``..```.`````````:+o://-.--/o+///--.--:/:``-//:---o:``+-````...-:+``````.:///.../``s-....+--:  ``````  `.-::/``/-.`+:yhhddddo:hyyyyyyyy+````````````````````````````````````````````````````````````````````----:-``````/+:`....``.```.`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.--.``` `````  `````\n...........:---/+//:---------:o//o/:/+/+:``---+-`/osyyyyyso+///:`..-...-.```....`./:++:--.-o:+/+-```----+``:...----+`:/::.`//-.-/+-./.``/....``.+.-/-....+//. `.....` .+::/.o--+--.-+yhhdhddhshyyyyyyyy:.````````````````````````````````````````````.``````````````````````.-:-```.````.-.``.`..```..`````````````````````````````````````````````````````````````````````````..``````````````````````````````````````````````````````````````````````````````````````````````````````````````-:.``````````` ``````\n..........--..-::/oo///------:+--o/:/--/+`./+//-+yyyyyyyyyyyo:::/o:--.---..`://+:`/+--.----/+//-.```.:+::-+:.`+:--+///:-+/`o-..-+//---`.:/syyo-/+/.``````.-.```-::... `...:++://++/-../hdhdddddyyyyyyyy..`..```````````````````````````````````````.```  `````````````````````````.````````````.`.``````.```....-.``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.--.`````  ````````....-\n`..............---...:o+::-/+:////+-//:-.-//:+//ooooooyhhhyyhhyys:--..s/:-.`---/:.+:.-----:/++//o.```.://::-.`o-.:yhhhdy+::+-.``.:++o+.`.shhdhhys/``` ```-:--::``+:.`` ``./+/.syyyhhyo.+hddhhddyyyyyyy/``````````````````````````````````````````````````````````````.````````````````````````..````````.``````.``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.::.````````` `` ``````../\n.................`.----::/+::/:---///::///------.-:-./hdddhhyyyyy/..+yhdhy-.o:-://--.-----++.+//o.`-::-```:+.``.`/hhddddsydhhs``/hdddd/`-yyhdhh::y:````....:/.:/./.`-::.``+syhhhsyhddd+`yddddddhyhhyyy-````````````````````````````````````````````.````````````````````````.```````````.`.```.`.`.`````.`````````````````````````````````` ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.`````-/-````  ```` ``` ````.::/.\n...................:::-/+-o:----://::----------..yhhs:oddddhh//+:/oydddyos+ss:.---..-.----:o++:-:/oo///+```/.````-hddhodddddh+`.sddddy:.shsyy:/hyh.``/++///`--://:`//-/ys-`/hdddyyhddh/+ddddddddyyysys.```````````````````````````````````````````````.`.`````````.``````.````..````.`.`...```.````....````````````````````````````````````````````````````````````````````````````````.``````````````````````````````````````````````````.`````````````````````````````````````````.`..:-```````  ```` `` `.`.....-\n.............-------:o:/+++::::+o/::///+-:----.``-/shyyddddhyyyyhdddssddhhddds``..-----...-::++:y/:-+/-+..+--.```-hdddddhdh+s--yhddddoshdhoyhyohy+.-shddy/-.``..```.``syyy.+hdddhyyhdhhdhyddddddyyyyys.```````````````.``````````````````````.``.```````..```.`````````````````..` `````.`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.`````..:-``` ```   `` `` ``  ````.../\n............--/o+//+::/+::/-///:..-/::/:/:+:-.``.```-hdhhdhyyysyhdddo+hdddddds````..``.`.--.`.:+/-..:+/////---```.yy+ohhohhosyhhshddddddddyyyddyosyhyhdddy.```.-.`  ``./osshdddddyyydddh+/ddddddhyyyyy.`````````````````````````````````````````````````````````````.``````````````..```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.:. `   ` `   ```    `   `....::\n............--//++::+o:/:--...--../+::/+/-./:..-//+:`+hhhhssyysshdddddddhshho.````````..-::s```:+------------.````.+shhhd+:oddhhsys+/+yddddhyyddddhhoyhddh-`-//:.`` `..````-shddddyyhddhhhdddddddysyyy:```````````````````````````````````````````````````````````````````````````   ```  ````````.````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````::``````  `` `````` ```` `-o//://\n.....---/+/--/+:-/+//:-----.-://++--+-.--/+.o....--o-.yyhhhysysyhdddhhdddy+++++.`````.-.-/++-/.`+-----------.````````--:os+ydyyhy/```..oyddhyyhddo.-+yyhh+``ohhhs``.yhhyyys:`+ddddhyyhdy.-hhdddddyyyyys..```````````````````````````````````.```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.```````````````````````````````````.`````````````````````````````````````:.` ```  ```````````````````.+:...\n....-----:+:.o//.-:o//:--/:.:::o/:/::---:///-.-+/:+////.-//:/syyhddho:yhddddhddy-``-//:--/+++-``.://:-----..````````..```.-:/+/-```.:/+--dddhyyhdo/shhyy+syhdhshh+`-dddhhyoy::hddddysyhdhhddyhdddhyyo+y+.`````````````````````````````````````````````````````````````````````````````````.```````````````````````````````````````````` ````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````::```` ````` `   `````:/::-/::/-/-`-\n.....:/++/+-+/-/:..-+s:+.:---oso:-//--:++/:/+--:--/+/-/+/.````-:/ohhdh/:ydo-ohdho`-+:////-````-::.``s-.--.``````...-:o.`o.````````..``--oddddyyydhydyhhyhdddh-`.hy`:hh:`:hyyy`hddddhoyhddddy:oddddhyyyyy-```````````````````````````````````````````````````````.``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````..`````````````````````````````````````````````````./-``` ` ````       ````/.````.`.--``:\n.....-:/so++//:-/:.--/+/+:-/+o/-/:---..```-..+--.../+/::o/`.-+so+-:yhdyosdhyyhy/.//`-:--:/o``++//++.o-..``````......-/.:-```````.+:--::+yddddhyyyhdy-+dhyhddhhyyy::hdhhyhdyo-ohddddhs/yhddddddddddh/sy+y/`.`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.``````````.`````````````````````````````````````````````````````````````````````````````````````````````````````````-/`    `` ` ``   `    `````````.++////+\n..-++o////s/-+/--+-::.:+/-oddddh+:o-..`..-----/o:`./-.:oss./yyyyyho-sdhdddddoooos/.`.---:-+-:s-..-s-s.``..``:/-....:/-..```.:/+.-o-/+/.`+ddddddhyyhdddddhyyddhdyoyhho+:++hhhyyhddh+shssydddddddddddhyosys.``.````````````````````````````.`````````````````````````.```````````````` `````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.```````````````.````````````````````````````````./-`` `` `` ``    `  `   ` ``````.:.....-\n..-o::---/+/+/::-./--.--//hdhhhhy-s/:../syhys/.+:``..-yyyo/yysyoyyy-ydhds+hddddh+.``.:/o:///:-..-+++..//---..//-..````````..--o-`o..:-+.////:--/syyyhdddddhyhhh/.:hh/```.hddyyshddhssh/yhdddy+-:+sdh/`.sy:...`.````````.`````.``````````````````````````````````````.````````````````````````````````````.`````````````````````````````````````````.`````````````````````````````````````````````````````````````````````..`````..````````..````.`````````````````````````-/` `````````` `````` ` `` ````````-/:.:/-\n...-----.-:::o//+/:/-.---/ohshhdhshhh+.oyyysyh:s/-:.``+hhhdhhoyy+ssoddhhsohhdy/--/++-``/---.--://:o:`-o+://`:+.`..-::.````-o::::/-.:-++/:`.:osso/::hyhhsddhyoyhysyhs++yyshhddhyyhdhoodsyhdddy-``.+ddy/oyys.````.```..````````.`````````..```````````````````````````.```````````````````````````.``````.``````````````````````````````````````````````````````````.`````````````````````````````````````````````.````````.````.`.`.``````````````````````````````````-/:`:-````  ``````` `` `     ``````:/:://:++yyy\n.....://:-..:+:-oyso/..-..-+shddhhhhhh+-hyyyysohdhhh/`.sdddddysyssyhdh+sdddhs-..//-:/.::------o/oo+:/+/+:::sy/.```.:/s`````---...``/--/s/`.hdddddh:+yyhhdddhoohyyd/``.yh/./dddhyydddddhyyddddhyyhddddhysoh:.`.....``..``...``````````.`.......`````````````````````.``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````.```````.........`...``````.``````````````-:.`````````::-+/.``       ` ``     ```.```..```//...-:--syy\n....-/:::///.//-syyy//-....-:ohhyhdddd++hysyyhddddddy-.yddhhdhsyosyyhdhs+::--:-:+/+/-/s:-----.-///:::syhhhshdhy.`/:::s-`-//:```````..-yyy/.hddddddy-hyhhdddoyyyyydhhyyddhyhysdhoyhddyydh+oddhyddddddyhhooyy-...........`..`````````.``...````.`..```...`.`.```````````.`.`````.````````````````````````````````````````````````````````````.`.````````````````````````````````````````.`````````````````.`.``..```.```.............``.```......`..````./+:.```````-//+::`````    ``` ````  ```:/:::://-.`++....../yy\n/:../::----o./-./yyy/ss-.....-+shy+hddyhdhsyyhhdoydhhs.+ddyyddyossyoyhhdhyyyhs/-/++++::/:-+o+:---..-+yyddy+yddy.-o..:/-`o---::.```````/sy+oyhdddddyohhsyhddddhyyhddddh+yddhhdddh+yddddhdyshdyydddddh+sdhyyys-........`.`.`.``.``````.......`.```..```.....````````..````....`..````````````````````````````.```````````````````````````.`````.``.`````````````````.``````````````````..```````````````......``...```.`...........`....`.`........````-++/-.````.:-//++.`     ``   ` ```` `````--......--:.:+/sss+/oy\n-o.-+--/+/++syo:./hhydds-.....-:+sohds:yhdy/shhdhhdhhs./ddddddhssyyssyhhs/ys/sh:---------hdho+yhh+``:yyhhs-+hyoohs.-::-:-://///`/yys/-..:ysoyhddddddddhyshdddhyhyhdhshhhds:/ddhdhyyhh+.:ys-yddhh:oddhhddhysyy:....`.```.`...`.``````.....```````....`...`..`.`````````````..``.````````.```````````````...``..````````````````````````..```.`.....``````.```.````````..``````````````.`.``````...``..`.`.....``..`...............`............`..``.:/:.:/-```-//+++:```        ``  `````.-..`.++.`...::-.-//yyyyyss\n//:/:--/--+hhhys-+dddddds:/++////+ohdhyoyhy+oyhddddys/+hdddddddhyyyssyydhhdhyys-.``.+++/.shhsoyddy..yysyhhyydhdddh..+:--.----/+.yddhhhy/`+yy++hdysddddds:yhdy:-yhhhhyhh/ohhhdh/odhyyho-:+++shhshyhdds/hhho+syy-......`.`.......`.``.`....``````.`.........`..```.```````````````````` `.....`.`.`.````....```..``````.````````````````..`..`...........``....```````...```.`.......```..````.``.````.........`..........-....................``.`.-//-.`.-/:.:-o/++.``    `     ```` `` ./-:::/://...+yyyss+-:yhyhhh\n//:-----::+hhhysoyhdhdhho---.---:/+osho::hdssyhdsohyoshhs+hdhhdhyyyyyysshhyo+o:.```.yyyy-ydo+yddds:oyysyyyhyyddhs/+o+-`.....::-:hdh/-/dd/-hyo+yyyohdddddhs/hdhhdddhhdhs/::::+shhddhhyyhy.``:hyhdddddddds-``.oys:.......................`....`.`.....``.`.......``````````````````...``..`.`...`....``.``````..`.`..``````````.`````````.``````.............``.....`........`.....`..``.....`....``.................--....-....--....--..-.....---:/+-...``-+:..-/:`` ``   ``     ``` `` `.``.``.--..`-+syyyyso:ohddd\n----...----/shhhysyhhy+-.......-//+-o+soshdyyyhddhdhyhdhyohdddddhyysosyso+/+o+///:--:ohyyddhhhhdh+yys+yyyyyhhdhsyhdddh-``.--::.`sddhssdds:hh+:syhhdddyydddyyhh/sdddho-`````  `.+yhhdy/oys//shhshdddy+ddy-.-/syyy/...............`...................``..........`````...`....````..` `..`.`````..``.`.````````..`...```.`..`.....``...`.`............................................`...................--.-...-.-----------------------:------///+/:::/+:-..::.`   ` ```` ``  ` ```````.-...`.+o.``..-+syyyyy+yddh\n.........-...-:://::-...--...::/::+/+--.-:ohyyyhdhddyhhsshdddddddhh/:sysyyhhddddhy/-.-yyyhdddhshddhoyo/ys/yyhdddddyyddh-.-++oo.`.shdo.+d/sddhh+/yyhddyydy++yhyyhdho-`       ````.:+ssyyoohddddsshddhhdddhhhhhhyyy+--.-...--............................................`.......`.`````.......``..``.`..``.``........``...........``....................................................................--.-----------:---------:::::::-::----:-/+sso///:/-..-:.`     `  ``````   ````````::--::--:+.-//:-:syyyhhhhdy\n........................--.-+:---:+-+:/+++::ssyyhhddhyhssdddddy+shhysyyoyyyyhddddho.-shyyyhdds:/ydhhys+soosyydshddhhdds.:yhhhdyo:.:yyoodhy-+ydhyysyhdddd:``/dy/yy:```        `    ``.-/+osyhhh/+dddhdy/yddddddhsyys:-..--.-...-....-.................`...........................``..`............................................``........................................-..........--.-...--.-----------:-------:-:::::::::::::::-:::////+syhhhsss/-..-/-`             ``` `````--..``-/.``.-`--/yyysosyyhdddddy\n+..----...............--:/:+/-..-:+:///-:/o-o/+oyhhddhyhhs/odds/+hdho:+ysyyyhyhdh+--+hyyyoyhddhhhs:/ysy+..:yyyhdhddddo./yhds+dh+yo`sdy/ydy/+hysyhyyyhhddy++yhdhy-`````   `  `     ``  ```.--::/+ossyhdhdddddhdhyysss/-.----.-:-------------.----..-.................................................................................................-.......-.....-...-..------.---------------:-:-::---:-::::::::::/::/:::::::::://::://::oyyhhhhyso++.-::.``            ``    ```-/////:.-:-````..-yyyyyyyyhdddddy\no-:++//:...........--:::+//o/--.--::/+//:-:/++ooo+oyhhhyhhsyhdddddddhysyyyy/ssys/:sydddhy+yyyddddyo/hdhs+++yyyyhhddhs/sddyhhyddhdh.odyyhddddhy/ohdhy/+shh+.shhy:```` `   `  `     `              ``./yhddddh/hhddyoyy+---.::-:--------------:----------.-.........---..........``-........-.........--.......--................................---.---.-------..---.-.-.------------:---------::::::::::/:::::::::::::////////:/://///++:oshhyhhhs/-:/-:/.`      `        ``    ```.......-.-+``````-yyyyyyyyyyhhhhy\n/:+:/++:...:++/:-../:---::--/-.-.---:o+///--/+osss++ooyhhhhy/shs/+ydddhyyyyyssssyhddhdddhsyoohhddhyhdddhyyyoyyyyhhdhhddddhhyhds+hh:/hs+hhddhhhdhyhhhy+/yhyyhhy:`` `` ```   ````   `                  .shhy+shhhdhhyo/so::-::::--:::-:-:::-.-:-----:-------.--------``.----.-.-...-...---.--.--..---.--.--.-----------------------.-.---..--.------.-------------------------:-::::-::-::::::::::::////:///////::::///////////////+/:-ohyyyyyhyys/::--//-```         `     `      ``````````.-..``:s+:/ssyyyyyyyyyyyy\n//:---/+../::--:/:.-+--------.------..::://+++++-.`-::/+syyyhdds:-oddhdddssyyyyyyyhdhsoddhs:+yyhho-+dddddhhyyyyyyyyhhdddhsdhhhhyh+/hdddddh:-ydho:-oddddhyyyhs-``   ``` ``   ` `         `             .ohs+ohhoohhdhosyy:-//:::::::::--:/::::::--:::::::------:----.`-:------------...------------------------------------.--..-----------.-:----------:----:----:----:::-::::::::::::::///////:////////////////////////+++/++/+/o+ssyyyyyyyyyy+:+o++:``         `    ``     ``  ```````..````...-shhhyoyyyyyyyyyyyy\n-----:/:./s:-----+.:/-/+o/---....---.`````````-::-..-+++/:/+shhddhddddhhsyhyyyyyhyyhdyhhhhhyyssyhhyhhydhdddhhyyyyysyyyhddddddhyhdyhdhshddho+ydhs++oohohdhhs/``       ` ```      `                      `/yhhdh+/yddhhysyy/::::://////:://::///:.-::::::-:::::-::::::::::::----..-:-.``-:--:::::::-:-::-:::-::--:::-::::-:---::-:::---..-::-:::-::---:--::::::::::::::::::::/::::::::///////////////////////////+/+++++++++/+/--/yyyyho:::yysysy++o+-` `       `` ``` ```     ```..```` -ss-``````..:shhhhhhhhhhhhhyy\n.---/++-::-----.///:---.-///:------.````.....`/:/++-.o/+++-sso/+syhdddho+yddhyhyyyyyhdo--/hhossyyyhhhshyhosddhhyoyoosyoyhdddddhhhddddh:+dho//:shhys+ysyhs/.` ``        `               `    `            .+hhhhhdddo/yyyhy//:/::::///:--:://://///////////::::-:/:::::::::::::---::-:-::::::::::::::::::::::::::::::::::::::-:::::::::-:::::::::::::::::::::::::::/:/:/:::://///////////+//////++/+////+/++/+/+++++++++++++oo/yyyyyyy-`.-+ossooo+-`  `` `  `` ``` `    ````````.os//::..os+:osooo+:--:ohhhhddddddddd\n:...::/--.....----....-:++::+/-----.```//:/++:.-s//+//-:/++++ooo++/oshhhddhhhhhhyyyyyyhysshdhhhyyyyyhhdddyshdddhyysooyosyhdddhhdhhhhohhyds````.ys```sy+-` ` ```     ``            `` ` `                  `-sy::hdhhyhys+hs//+//:////.`/////:://///://///::////////://:::/::/:::::::::::::/::::::::::/:://::::::/:////::/:/::::::::::///:-/:://////:////////////////////////////////////+/+++++++++++++++++++++++++++/+:+yohhhyyssyyysossoo++++:` ` `` ``````     `  ``````````.-...../o++yyyysyhhhhs+-:shhddddddddd\n/:..:://:-..-+://-...//:::/:::-----.``.+--++///./::+/-...--:/o+oss+o++o/ossyhdddhhyyyyyhhh+hh/-/dhhhyyhhhhyohhsddhho+yoossyhh/sy/shysyy+hso:::oyh+::-```  ` `` `    ``       `    ``  ` ```                 `+yyhhhoshhy:yho/////////:-++++/--:++////////-/////////:///////:///////////:://:://////////////////////////////////////:////////-/+/+////:+////////+//////++///++++/+/+++/+++++++o++++++++++++++++++/++///+shyyhhs:.-:syyysoo+oo+-```   `` ``  ```       ```.//--....//::-.:oysyyysyyyyhhhyo/shddddddhhh\n::.::----::.:o-:+o:./o----++:----..````---.:////++/:.:::-...--:://+ssossso+++yhhosddhhyhyhhhddsyddhdhyyyyyhhhyshddssyy//ysyyyhhyosoyhhhho:ohs-./ho-``````   `              `  `  ` `    ``            `    ```-shhh+:yhhhyyyo++++/::++++/-..-/+++/++++++/+///////////////////////:++/+///++//+/+/////+++////++/+/+///+/+/+++///+++/+//////++/+/++++//+++///++++++++++++++++++++++++++++++++ooo++oo+++++++++++++++++++ooyyyyhys:.::oyyso+oo+:`````  `    `   ` `   `  ```/--:/:++-:yyhhs/:+ysyyyyyyyyyyyyy+yyyhhyyyhh\n+:::-----//:/:////o./:/+/-------..``````````.////:+so:...:::-...:/+oo+++o+ossys+ooshhydhhysshhhdddshdddhhyyy+oyhdh--hdhyyyyoyyyhhy+ohhhhy+/hy//o-`` ` ``  ``    `  `                                        `-:./yhhhhhhdhyyys+/-+/:++++/``.:/+++:/o+++++/+/++++++++++/+++/++++++++++++/+/++++++++++//+/++++++++++///+++++++++++++/++::+++++++++++++++++++++++++++++++++++++++++++++++++++++o+oo+++++++++++o++o+oossyyhyyyyysyyysoso+/+o+/.`    `       ``` ```` ``   ```.osyysss/-ohhdhho:+yyyyyyyyyyyyyyyyyyyyyyyh\n/-..-///:++-.-++:::::-:-:+----....```.`.```.-/+/o+/:o++//-..-:+oo+:-...:::/+o/++sso+:/ssyyhhhysyhhdhhddyhdhhsso/ohdhddddhhyyyys+yyyyh+sdddddhy/`  ` ` ``            `  `       `        ``        ` `       `/.``./shhhhdddhyyys++/-++/++/:/++:++++++++++++++++++++++++++++o++++++++++++++++++o+++++++++++++++++++++++++++++++++++++++/++++++/:+++++++++++++++++++++o+o+++ooo+++++o++++++++o+ooo+o++oooo+oooo++oyyyyyy+--/sssyoo++/+o+o:`````   ``    ````` ```   ```  ``.oyhhyssys+hhhdhhhoyhhhhhhyyyyyhhhhhhhhhdhh\n+..:+--:+:-..+://+:-:::/:/--..``....//++/:.`.so/:++s-/-://+osss+:..:::-...:+//:::ooosoy+o:++ssyhhhhhhdddsyddhyyoo+ohddddddddhyyssss-osyhddhho.`` `` ````  ``               ``.``         `          `     ```.+-````-ohhhddddhsyyso+/o++++++++++++++//+++o+oo++++++++++ooooooo++o+++++o++++oo+o++++++++o+o++++o++++++++++++:+o++oo+++++++++++++++++++++++++++++++++oooooooooooo++++++++oo+++ooo+o+ooooooo+++++oyyyyyyy:.-.-sooo++ooo+-``  ```    `  ``.`````````` ```.--``.ohhhyshyhhhhhhhhdhhhhhddddhdddddhddhhs+:-\n+.-+:----/+--s/:::o/-::-/+.......``.---:ohs/..:s+/-:/++-.:sy/-.-///-...::/:::://o-++/-:+ssssso+:+osooyhhhhhh+/sdo:syyhddddddh+yhysys/:soyyo-`` ` ``  `      `            ``-/:/:         ``       `  `       `./:+:-``./yhhhhohhyyyyoo+++/o+o++++/oo++:/ooooooo+:+ooo+++ooooo+++++o++ooo+oooo+oo+++ooo++o+ooo++o+oo++++++/..-.`-//o+++++++++++++o+oo++o+++++ooo+++++ooo+ooooooooooooooooo++ooooooooooo+ooo++++ysosyyyyyysss+o+o+:o+.``````````   `` `+/-.../-.::-````:yyso/-+hhhhyyhhhhhhhhdhhhhddhdhddhhhhhy+:-.--/\n/:+--------+.o//+osy:--/+/.+/////-`::+so-hyy-./+++o:-:ooo/:-:++:...:///:::::o:::/:++.....:/++oossysyo+o++++syhddsshhhs+yyhhddddhhdhdhyhy+-`````   ``  `     `           `   `..-.:.       `    ``           ````/:.``````/yhhdhhdhy/ohys+o++++/oo+oo+o+ooooo+oo++o+oooooooooooo+ooo+oo/ooooo+ooooooooo++oooooooo++++++o/-     ```--+o+++++++++++o++++o+o+++ooooo+o+ooooooooooooooooooo+++oooooo+ooooo+oooo+++o+.`.:oososooo+/++/:`  `  ````````.`````:.`.-..++yyyyo-``/yyyhhsyhhhhhhhyhhhhhhhyyyyyyyhhyys+:-...-/::.\n::::--:--:://hhdddddh++/+oyo+//::+.-sdddhdyo:///+/o++:-/o/o--./+::/:::-:+--:+++-...//::-......-//oossooyyysoossyyhh+/yhhhhhhyyhhhdddhs/.` ````` `     `` `                   `.`:ss`                   `   ` `` `.:-`.-````-/shhhyoyhyoho+oooooooooooooooooo+oo+oooooooooooooooooooooo+oooooooooo+ooooo+oooooo+++++++/.       ``  ``-oo+++++++++++++oooooooooooooooooooooooooooooooooooo+oooooo++oo+oooooo+++++//+oyo+::-++:::-`` ` `` ``````.+-::+:`:/`````/syyhhhhh/./syyhhhhhhhhhhhhhhhhhhhhhhdhhs+-.....-/:.````\n----------/ydddddddddy:-+hddddddh+-+odddddysyys//-:/:/o/-/+o+///:////:-:+:o-..///-.....:/://---.-://::::oyyo-..-://+ossyyhdhdhhhyys/.` ````````          `              `-:-`-:.`.-`-.::.              ````        ./o:/-``  ``-+soshhhyhso/o+ooo+soooo+:oooooooooooooo+oooooooooooooooooooooooooooooooooooooooo++o+-`````    ``    ``/o++++o+o+++oooooooooooooooooooooooooooooooooo+ooooooooooo+++++ooooo+++o+osso/....-+:-`` ``       -+//-``````./...`````./shhhhhhy:/yyyyyyyhhhhhhhhhhhhhhhhs+:.`....-/:.```````\n--:::::---ydhdddddddh--+dddddddho:o..sdddddhhyyo-::-://+o+o//+++:--:+/+++://:-..--:::/:.....:+++/:/::/:o-........-:-..-+s+++oo/:.````   `` ````       `  ``   `  `     `s/.---/s..`.++``     `            `         `s.`.-`     ```:+yhhhhyyooooooooooooooooooo/oososooooooooooooooooooooooooooooooooooooooooooos/-```` `     `        .+oo+oo++oooooooooooooooooooooooooooooooooooooooooooooo++oooo+o++ooo+/-.-:-....:::``         `  `-...-..````-..--```````./shhhhdhyhhhhhhhhhhhhhhhhhhys+-```...--:/:.````````.\n---::-...:hddddddddh/:yhddh+/ohyyhh:.odddddddhyyy+-:.://+/+o+:-oo++/../////--:/:/:-...-:://:::////o:..:o/:-.....:/::o+:-.`````````````` ``````` `     ``      ``       `-:-...:o+-  ``                `             `//`--``    ` ` ``.-:::///++ssooooooooooooo+ssooooosossssssosossoooooooooooooooooooooooooo+:.     ``      `    ` `  `.+oooooooooooooooooooooooooooooooooooooooooooo++ossoooooo+oooo+/:-..---...-::.``               `````.-`  -ss:````-oo/-.-.-/oyyhhhhhhhhhhhhhhhhyo/-``.......-:/-````````````\n---......-hdddddddsooyhhdy-...sdddho`oyddddddsshyys//:.../:-:++o+-/+o/+-/--//+--..-:://::/::::/:--+-oo.``:ys+/os+://-`````` ``` ``````` ``` `     ``  `````      ` ``.`` .+o-`.-``        `    `   ``    ```         `/+/:/-`  ``  `````````````.osoossoooooooo+ooooosooooossssooooososooossosooooooooooooso:.`            `      ````    `.+sooooooooooooooooooooooooooooooooooooooooooos:-+yyysoo+/----.....-.:/:.``````               ```.yyyo/-.oss::..syyyyyysssssooosyyyyyyyhs+:.````........:/-``````````````\n`.........+hdddddddddhshhhysoohddhy::yohddddy-.shhyys//oo./+://+o+/::+/+o+-..--:/::////:::/:/oyyyyhhh+-..:ohyhhys/.`````````````````` ` ` ` `     `   `` ````..````/s+//:`.s-```         ``        ` `  ` `` ``       `:-/.-.```` ````` ``````````:soossoooooosoooosooooooooosooooosyossssooooooooooooooos:```   ````.``      ` ` :.-`  `   `.+ooooooooooooooooooooooooooooooooooososoossy++:+o+:--....------//:.``  ``````       `    ``````-+syyyo/ysyhy+:+yhhhhhhhhhhhhhhhys+/:.````.`..--///+o/.```````````````.\n`........../hdddddh+/hhhhdh+:-/dds+yddhsoddddhhddhhhyss++/-:/-+++///++:-/:/o+://:--:+++/:-+/yhhhdhhhyhh/:/hhyhy+.``````````` `````    ````` ``  `  `` `  ``..////.`.-.`./:.+.////. `     ``                            ``-:.``:.` `  `.:.```.``.```./sooooooooooooooooooooosooooooooo+::/+ssssooooooosoo/.````` ``::.``   `     ` .`-`` ```````./oosooooooooooooooooooooooooosyhhhyyhyhyso+/:---..-.....:/s+:.```   ``` `` `  `  ```` `````-.`../++osssyhhhh+yhdddhhhhhhhyso/-```````..:/+osysys/.```````````.......\n`.......`...:hdddddyoshyydh+//+ddddddddho/yhddysdddhhsyyoo+/:../+o+/-::+s+:+/++oso/:+//+/:/yyhhhhyhhyhhhhhhys/.```````````````` ``````````   ```` ``` ``  `....`-+-:.``.::-....:/o``      ` `      `                  ``` `:-`./+``` `::///:-/..`.```./ossooossooooooooooooooooooooooooo/--://oossso/-```-```.```.+sy/```::`` `   -`.`    `````````.:+sooooooosooooooooooos:.-/oyyyso//--------....--/++/-```` ``   ````-//.```  `:++:-.``.:-.```.`....-+yyhyhhddhhhhyo+:.``````...-/osyyysyys:.``````````..........\n`.......`..../hdddddddhhshddho/ydysydddhhsyyhdhhddddddhyyhy+-:/::o///+//+o/++s/o-/+os/...:/+oyyhyyhhhhhhy+/-```````````````` ````````  ``` ` ```   ```` ` ``````.::``  `.` ``:/:+o``` ``    `      `                  ``` ``-/-./:`  `..`..:/:.......```-osooooooooooooooooooooooooooooooo+/:..--:/++/:-..-/:::osyhhho.`ohs``   ` /+/:-`  ` ` ``` ````-+ssoosooooooooooo+ss:::///:---...---.----:/ooo:.``    `     ` ``..-.-::: ``-....-/:`````````:o/:-../o+++syso/-.```````..-:+sssyyyyyys/.``````````...........-\n`.............+hddssddsyhs+hh/oys:-/ddo+yyh++hddddddddhhyhyyy+:.://:--.:/+/:://+os+++/.......-:/osyhyo:-.`````````````````` ````` ````` ``````````.````````-::-.````````````.-::o-.-::```  `-::   `      `          `  `   ` `:/.:/. ```--..-:........````-+soooooooooooooooooooooooosooooooo//:-.----:///oyo-shhhddho+shds`````-`:yhsh/``--.``-` ``````.-+osssssssssoo++/:------..........-:/oo+/-.```````.`    `.`````-:-``:-:``++/--/:-:.`./:.`./yyyso:-oo/:.`````````.`..`:ssyyysyyyys:````````.....`......``...\n`......`.......:shhsddddhhyysydddhhhdddds:ydhhyydddddy/-+hhyyyyo:..-///:--:+:+//+++ooo-.....--::///-.````````````````````````````````` `````-/:..+...`````/:--:+:` ..:/o+.`..o:/:/+..::-`  -o-//-`` ``  `..:.``     ` `````  ``.:+:+.``.s/+:.`..``..`..``` `./ossooooooooooooooooosssso++:-/ooyo:/:--....---:/+oyyyhhohhddh/``:.yooshhdhy/:yy:`oo...---:/ooosssysssyo:--.-.-.----.....--:/ooo/-.`````````.-::::`.//+-.``:.-:--..``:ysysyyo:.`:yysoo++sso+:..``````.``.````....-/oyyyyyso:```````.`.....```.`...`....\n`..............-.:oydhoyddhy+syydddddddyshddddyoysoyhhyyhdddhhyyyo///++/:::///++++++++/:::::-..````````````````````````` ``````````````````-///+-+...`````....../:`+-..-o/``.+.---..`..+-  -:.`...`    ``..--:/.``    ``````  ` `.+/.``.-..-//```....`..`` ```.-+ooossooosssssyyyysy+-+o:/shh/+yoshhs+:-.....:osyssssyyyyyys++++syysyyhyyssysoosyooossossysyyyyyysyyy+:-..---...---:s+oo+/-.`` ` ``..```...`..--.+...:`..+o/:.../+-+syyyysyso/+ssoo/:-.``````````.````.---:+ossyyysys/.``````..........`````........\n`..................-/osyhhy:-oyyhyhh+:syyddddhohhs+syyyhhhhys+:-...``````````````...-.....``````````````````````````````` ````````````````.o.../+:..`````````...-:::.--../:`//``.```...-/``-``:/+-``  ```.-.``.-:-```.-`````` `` `.s````````.:/.`````````````````.:oyhhhhhhhdhhyooyhyyhdhhhhoyhddddddhyys+:-.-:/osssssssossssssssssssoyysyssyyysssssssoyyyyyyyhhyyysysso/----::/+osoo/-.```   ```.:-.-+-..`---.`.-.+o/:+-oyyso+:sys++yssyyysso/:..```````````````..:/+ossyyyyyyysyo:.`````....``.........`.`........\n`.....`................-:+oooyhddyshyyydddddhs/shhhyysoo+/-.```````````````````````````````````````````````````````````````````````````````:++-.....`````-:-```.//-:/-..`.+`+/``````````.`./ .o..-//- ``-:-:--:-`:/``://-``````` ``::```--```/+//.`````````    ` ```-/ssyhdhdhhhhhdddddddddyydddhdddddddddhyo/:--:sysssssooosyyyysyysyyyyyssysysyyyyyyssyyyyyyyyysyyyyyyyo+oooo+/-..` ``` `` ```..-::::/--:syyo+o:-ssysyssyyyysssysyysoo+/-.``````````.```````````-ossyyyyyyyyys+-``````....`...................`..-\n`.............``............--:/+++++oosso+++///:---..```````````````````````````````````````...----...`````````````````````````````````..--.+/...````````.++.:/+..o-...-//+-.``````````/-/` .-...../-``..`....```..`...-.````   ```--`-+++..o::-/-````````  ```````````.--:/+ssyyyhhdddddddddddddddddddddddddhyo/::+osssysyssyyssyosyyyhyyyyyyssyyyyysyyysossyyysyyyysoo+/:-.`  ``` `...```   ``````.-..-syyyyyysooyyyyyyyyyyysoo+:-..`````````..`````.``````````..--://///++:.`````............................-:o\n`..........`.............```....````````````````````````````````````````````````````````````.-----------....```````````````````````````.o--/:/:...```...``.::...-o./+...+:/-.``````   ``..````.....`.-+``.`.-ss+:.`.-:.:-..`    `` ``.:-..-/-//-:/+.`````` ``.//.```````` `` ````...-:+syhddddddddddddddddddddddddhys++sysyyyyyyyyysssyyysyysssssso/+oooo///ossysoo+/-..``` ` ` ```  `:--..//:-`   ```.::--+yyyyyyyyyyysssoo+/-.``````````````````.```...`...-::--::///+o+/:.```````.`......................-/+ossyy\n`..............`........`....``````````````````````````````````````````````````````````````.-//------.-----....``````````````.`````````.o:.`--```-.`.s++/.-+.....+-/:..```.`````  ````` `://-.`+..`.``-/:-..+yyyys:`.`.:/+-.` `   `  ``:-...-.:+yys+:-```````+yyso:.`````     ``````````.:+ssssyyhhhddddddddddddddddddhhhyyyys++oooyyso/++o//::/++++ooooooo+/:--.``   `````` ``````..`.```....--````..-/+so:/yyyyyysoo/:-..```````````````````....---://++osssyyyyyyyyyyo:.`````........................-:+osyyyyyyy\n..........`..............``.```.````````````````````````````````````````````````````````````.-//:----------..--..```````````-+``.-.`````.-`.-```-//:.o+.-/.+:...:///...`````-//-``````` `:..-:-::.`.``-/+-..ssyyyyyo:````.-:/-``    ````:-``..`.ssyyyo:.`````/syyyys:.`````   `.......``````.--:----://+oosyyhhhhhhdddddhhhhyy/:::+ooo+++++++++++//::--.````         `````````````::/oo//-``-+//-.````.ossss//+/:-..````````..``````.````````./ossssyyyyyyhhhhhhhhhyhy+-`````.......................-:/osyyyyyyyyyyy\n........`..``.........`.....``..```````````.````.`````````````......```````````````````````..---+++/:----...-----..````````:+/:/::+/``--/+/`o```o-./o-:..:/+.........```` `:/.--:////:. .:.```.//.```..:....+:oyysoyy/``/-...+.```   ````:-:ss:.-syosyso-````./syyyyys/-`.-````..oo:.....```````..-:-..`````..-----:::::/:::-:---.---....````````````````    `.`` ` ```.+:-./oo/-...oyyyyy+-+yyys/-:--:/:-..````````..........````.`.......----/ossyyhyyyyyysssssso+/.````.`....................-../syyyyyyyyyyyyyyy\n...........```.......`...........```````.```````````````````..........```````````````````````.`...`-++-----.------..``````.:///-..-+:.+..-/-/.``.:-+/..``.......`.````` ```:-..+:....-+-`/...``:/``.+y/.....+-:+sssyyyo`+:....-.` ````````.+yyys/-oyhhyyy+.``..-+syyyyyy/-+-.```.oyyo/--.......``````..----:-...```````````````````````````` ```` `...```` ` -+::.``.```:...oyyyyso::osoo++:----..```````````.`................`````...-++oossyyyyyyyyyyyyyhhhhhy+-`````...........................-:+syyyyyyyyyyhhh\n............``........-....-....```````````````````````````....-....-..`````````````````````````````.//:-...--.-..--.``````..-....-.-/-...++/.-:/.`-+...`..``..````     ``  `.......`..::/:.```.``-syhys+:..:+--/oyyyyy/.+.....:+```````````-osyyo:ohdhhhhs:``...-/:-/syyo:....``.syyyyyo-.`......``````````..-----:-----:--...--..``......``.`.````..---..`.---o//oso:::---:/::----.```           ``` ```.`...............:+///:-------.--:oyyhhhhhhhhhhhhhhhs/.````.....`.`..........-:/+//::::::----/+osssyyhdddd\n.......`.`..``....----::--------..````````````````````````..----.....-..```````````````````````...:++/-..-...-...----..`````.....-o/+:....-..`..-o..+.``````````` ``  ``    `:///:`....--+..``````syhhyyyy+.:ys:-:+syyyy:+:.....::.`:o:```````-/oss/ohhhhhhho-`..`.:++/:+yho-..-``:yhhhyyyo-.`.......`````````````````````.....-----::::::::::::-:----.----....--..`````  ` `  `` ````     `````````````````..-:::://::::--:/oyyyyyyyyssssssyyyyhyyssyysooo+/:`````.......`........../+oyyyyyyyyyysysssossoo+++sssyh\n.............`.-:------------------...``````````````````````.:o/.........````````````````````.++/:::-:o:/-.-...-------.````````...--......```...`:+--``````````` ``   ` ``  ` ```-...-..-..```````syys++osy/.oyy/--:+syys:/.../:../`:yys-````````-+yoshddhhhhy:...:sssyy+:oyy:.:/.`-shhhhhyyo/-.........``````` ````````````` ````` ` ``   `` `` `  `````     ``` ```` `  `   `````   ` ``````..`.``..`````````:osyyhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhy/.`` ``.........`..........-/syyyyyysyyyyyyyhhhhhhhhyyyyyy\n...............---:-------------------...`````````..``````````--......--.````````````````````.o-------:+:...-..-+o+:---.`````````````````````.```+/-`````` ```   ` ` ` ```  ``   `.--//....```````/yy+ys+:-..-y+so:--/osyo:-`+yyo-.:.syys.`````````:syhhhhhhhhho.`.syyhhyyo+sho-...`.shhhhhhhhys/-........````` ````.....````````````     `  `      `````  `````````````````    `````````````````...````....``````.-:+ossyyhhhhdddhdhhhhhhhhhhhhhhhyyssy/.``````.........-:/++oo++++//////ossyyyyyhhdddhdddddddddddh\n...............::::::--://::::------------.``````````````-////-+/........```````````````````````-/o:..--....````.`-/---.````````````````````````````..:+s+-```    ```   ```` ````-::.`:/...````````y+yhhhhs-..oyyys:---/os/-`+ssys/..-ssys:`````````.+shhhhhhhhhs:.:syhhdhhyssyho:...`+hhhhhhhhhhs/-..........```````.....`......````           ` ` ` ```` `............```````````...``..````````....``.......```.```````..-:////////::::---------.-/:.```````.......:+syyyyyyyyyyyyyyyysysoossooyyyyhhhddhhdddhhyy\n...............-::--..-/++s:----:/o+/:/+---//-```.-:-```./-..///:--.--...`````..```````./+////:.``+/-.....````````/+s-...````````````````````` ` ```.....-:+-````-/.```````` ``.+::-:/:./.```  `` `oyh/:ohhy+.:ssy///----/++-..-/+ss-`-sssy:``````````.:+yhhhhhhhh+-:syhdhdhhysyhhy+:.`-shdddhhhhhyo/...........```````.`.``..```.`````  `   ```.````````  ````.......````.``````````......``.....``````...-+++/:::::::////:---:---:-----:--:---..::-``````` ```......-oyyyyyyhhhhhdhhddddddhhhhhhhhyssosysssyysssss\n`......................-y/:::---/+...-:-+:--:s``/+-/++/.`/o-........-....``.:oyyo.`````--..---:s`.+...````.://:.````+:--.``````````````````````````/+:..`.../s.`++:+-`` ``--` `/:.....:-:-` `` ````/hh/:-+hhhs-ss+``-+:----/o+:.`-//s+:.oysy:````````````.:shhhhhhhy+/shdhhddhhysydhys/.`:yhhdhdhyyyyo:....`..````````` ``.`..`````.````````` ``....```.`````` ``:o+//:-.....`.`.````````....:+ooo+++/-.....-/ossyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyys/.````````````````.....:+oyhhdddddddddddddddhdhdhdhhhyso+:-....`..-\n.............`...`....../oosoo+/:.`-+:::o/-:+/-+/-..../:`:+...........-.``:yhhhhho.``-++/:-.`../.+-``````.//-..:o/`-:.-..`````````````````````````.y-...`...:y.:```./:` `::/o-`.:...``.:+``````` ```yhhhhhhhhyssy:-oyo+/-----/o++yys+oys/oyyy:``-:``````````-+yhhhhhyysyhhhhhhddhyyddhys/.`/yhhhhhhdhhys+-......`.`...``````.....``..`````..```````....`.......````-+ssso+++/:...``....```````.+sssyssyyyssoo+://osyhhhhhhhhhhhhhhhhhhhhdhhhhhs:``````````````````````````.-:/++osyhsoo+++///++/::--..`````````````.\n.................`...............``:------::+/:......---:-..............`/hddddddh/.:+-.-::/:.`::-.``````-+-....:s.+/...```````````````````````````:+o:....:/+o-````./+`.+/.-o.``/+.`````:.`````````:hy::yhs-:hyy+syyys/+------:+syyyssyysosss+..oo:.`````````.:+shhhhyyyyhhhhddddhhhdhhy+-`./yhhhhyhhhhhyo:.....``......`` ``...................`  ``.............```.:+yyyysyso++//::::--.`````.::/osyssyyyyyyyyysyyyhhhhhhhhhhhhhhdhhhhhho-````` `````````````` ``````````````````````````````.--::::////+ooo+ooo\n............`....................````.-/++/os:.......-+/-............````/hyhddho/:+o-...-+/-:.```````://.:/-..-o//:....````````..:+o:```````....````//.....-..``..../+`-o``..:o..o..```/-/:.````````/yhhhddhyho:so-ohhhs//------:+syyyyyys+s:ss-`/ys/.```````````.:+yhhhyyhhhhhhddhdhhhhhy+-.`:yhdhdhhhdhdhs/-............``````.....-.............`````..............```-/oyyysyyssssssysoooo+//:--....--//+osyhhhhhhhhhhhhhhhhhhyhhyyyo/.```````````...........`..`..```..............--:/osssyyyyyyyyyyyyhhhhhhh\n................................````.````...-/-.````````............``````../hdhhyy:.`.....//-::.````oo-.-:-..........````....```...-s.`````.......``:+//:..-::..````:+`/o.``../://.```.y``.:+.```````.hdhyshdhysyyyyhddhy:+/-----::ooooyyysysyso+.-oyy/.`-.``````````.:+syhhhhdhdhhdddddhhyyo:.`:shddhdhhhhhhh+-............``````..+hyysys+/:.........````..................-/oshhhyyyyyyyyyysyssssssssso++////:::/+++ossyhhhhhhhhdhho-````````................................-:://+ssyyyyyyyhhhhhdddhdhddddddddd\n..............................-/+/:-```-o+/:/+-..:///-``.//........`.://.``-sddhhyy:/o+////./+.-o:```.```.+/......```````........```-..`````.....`.:/+-:.os.--/s```:////:.````-::/``````.``:-.`````````:hho+hdddh/+yyhhdddy:hs:----::++:-//+ossyyys/.:yss+oo:-.````````````.:+yhhdddhdddhhdhhhys/-.-ohdddhhhhhdhyso/-............````./yhhhhhhyso+-.......`````.....:/+///--.......-/+syhhhdhhhdhdhhhhhhhhhyyyyyyyyyyyoooo+/+++/:::://.``````...............................-:+oyyyyyyyyhhhhdddddddddddddddddddddddd\n...-................../++/-...+/---+:``--.-shy+shyohdh/``-o.......`/hddhy.`.shddyyy++o--../o/..-+:````````-+-...`````````::......:+/:/s``````....``....``.s....s.``-/--`````--//:```+o+:.``-o...`````` `shdhdhdhdhssyhhdddhhdhho::--:::++o:/..--/++so--+syyoooso/:.````-.`````.+yhdhhhdhdddddddhyyo:-./yhhddhhhhhdhhhy+:...........````.:ohhhhdhdhhyso++:--....```..+yhhhhhys+//:---.....:/+oshdddhhhddhddddhhdddddddhhhhhhhhyhyys+-```````..........................-:++oosyyyyhhhhhhddddddddddddddddddddddhddddddd\n.--.................--/:-:o-:-.-----s/`.+./ddddy:..+sdy`./::+++-..`+dddhs.-ohddhyyyo:--/-..----:s-`.:+oo-`::````.++o+:-.``:+......-::/++-``````...`...-:--o-`../.`-++/````-o:::````//..-:+:`::...```````-hhsydhhhhh+/yhhhhhddhhhy+:--::::osoo+o/+:.--::+osysysooyyso/-`.+oo+:.```:oyhhhhhhhhdhddhhhhys+/:oyhhhdhdhdhhhhyso:...........````./yhhhhhhhhdhhhyso++-...``../oyhhhhhhhhhhhsssoo+/:-..-:/+ssyyyhhhhhdhhdddddddddhdhhhho-````````........................-/osyyyyhhhhhdddddddddhddhhddddddddddddhhhhyyyyhhhd\n....-................-::/+sss+-.../+o+---..+yddhso++yysohhyohdh/..:odddhsshhdhhyyyhho//o-....-+//:+:-.-:o.//````o:---:/o:`.:.........../y`..````/...```:o--..-`/./+-.:+/``--....```o......:/`....````````:hyyhdhohhhyyyhhhhddhhdhhyo:----:+/o/+/+ss+/:://://ooosoosyyys/./syyyo/-.`.-/shhhhhhhddhddhdhhyysosyhdhddhhddhhhhhys+/:-........````-+yhhhhdhhhhhhhdhhso/:--.....:+shhhdddhhhhhhhhhyso++/:--:+:::/:::/oo++osssyyyhho:.``` ````.................---:-----.-/+oshhdhddddddddhhhyysso++/+ossyyso+/:-........-:\n...--.............-/syssssssshhy+..::-:/::---:+dy:.-+dhysshshdh+..-ydddddddhdhyyyyyso/-:.-/o+---::-...:o+:``````:-.....-+-.s-......:...o.....`.:o..```.+/...:o/++-.```.o:.::o++o+.`-+-.`.:-.:..```````` ``.+hddhhhhdds:shhhhdhhhddhys+:::::/ssssyyoo+/ooso+/:----:/+osyys:-oyyyyys+:....-/oyhhhhhdhhhhhhhhhhyyysyhhhhddhhhhhhhhhyso/:-......````-+yhhhhhdhhhdhhdhhhhso//-.....-/oyhyyhhhdhhs/-:++syy+--.-:o//:--.:/:/+osy+:.````````..............-://+ssyyyyyyyyyssoo+ooooooosooo+/::////:::::-.....`.```....---...\n..---...........:oyhdhsssshhyhhdh/..-shdhs+s/..hy:/osdddhyhhhss/.-ohddddddhyyyyyyys--/+:`..-++/:-.------..-/++:.`+:...:+o:/+......:y:-/::+..///:./+o:``/s-.......``````.::--++/::+-`+-`.//s/-``.````````````:yhhddhddhyysyhdddhhdhhhyhho/:+o+oo//+++o+o/+:::/++:++/::---:/:+osyyyyyys+/-....-:/+syhhhhhdhdhhhdhhyssyhddhhddhdhhhhhhhhyo/-.-......`.-+yhhdddhhhdddhdhhhhhhss++::--//--:shhhy/+syshhhy/::+osyo-.`-:oyyys+:.```````````....-..-....-+syyyhhhhhhhhhhhdhhhdhhhddhhhhhhyyo+/:...`.`..-:/:/++ooosssssyysyys\n.-.--.........-+yo+ydhyysshhhdddhh-./dddy/ohh-.yddddhhyyhhdddyssyhhhhhhhhyyyyyyyso:.``..:+//:--o----..``-/----+/`+/...-//+-........:///:-.````.:...+o`-+-.....``-/syys/`.`.syyyyo:+/-``...-:+:`--.```````````./yhhydhhdh++hhdhdhdhhhyyhhhs/::/o+//.:--::/ooo+//o///+++++s+-/-.-:/++osssyo:-.......-:/+syhhhhdddddhhhyyyhhddhdhhhddhdddhhhyo/:-.........:oshhhhhhhhhdhhhhhhhhhyyssy+/+syhhyyyhdhhhyyyyyyhhhys:-:+hhs+-.``````````````````......-..--:/ooooo+oosyyyyhhhhhyyyysso+/-...``````.-/ossyyyyyyyyyyyyyyyyyyyy\n.............:shh+/+hdyyyyhhdhhyy+-:ossyhddddoshddhyhhddo:sddyhddddhyyyyyyyyyss+:.```.-:/:--:+.o....````-s-.-/o/+/...```....```````````.-.````.o-.:o/:o-....```+yhhhhhh.``ohyyyyyo++`..```.:.--:+...```````````-yyohhhhhyyyhhhdhdddhhyyyhhhs+:://++///:////:::///++//:::::/:oooo+:-----::o/:/:::-......--:/+osyyhhdhddhhhhhhhddddddhdhddhhhhhyso/:---...`..:+syhhhdhhhyhhhhhhhhhhhhhyyhhhdhdhyyyyyhhhhhyyhhhyyys/-.```````````````````````````````````````````.....-:-.....`````````...:/ossyyyyyyyyyyyyhyyyyhyyhhhh\n..-........-+hdhhddhhdyyyyhhhysys+/://::ohdddddhyyhhyoyd/+sddyhdddds/osssoso+/:.````./++.....-//.:++/-.``:++--:/-..```.-///+o-``````.-.--:+-``:/..+o+/-.....``.hhh+yhhh:.+yyyyyyyy/.:yy+:..o-.-./.`..``.-.``````-yhdhddddhyoyhdddhdhdhhyyhhhhs+::///+/++://:+++-:::-/++oooosoo+/:o+//::o+o/:::/o////:/:::::------:/+ossssyyyyhhhhhhhhsyhhhhhddddhhyyys++::---+yhhhhyhhyssyhyhhhhhhyyyyyyhhy+//ohyhhhhhhhhhyyo:.````````````````````````````````...--.......-----.--------------://+ossyyyyyyyyhhhhhddhdddddddddddddd\n..-.......:shddhyyddddhyyyyysy+sosyhhhhs-ydddhyyyhdy+osdysddddydddh:...-.......----...-s-..```..shdddhys+..+..``.```........:+/-```.+-....-o`.-o...-........``.hhhhhhho/syyssoss+/`/yyyyyo-:/......://:.:/..`````.sddhhhddhyyyhhhhhhhhhhyyyyhhhyo/::::/+/:::///+o++++//:/::://///:+o++//+++/o//o+------:::::://////::::::////++/:+y::oohhyhhhhddhdhhdhhhyyoosoosyyyyhs-../yhyyhyo:--+yyyyhs----oyyyhhyhys/-.```````````````````..-://///++ooososssssssssssssssyysysssyyyyyyyyyyyyyyyyyyyyyyhhddddddddddddddddddddddd\n.---..-..:yhdddddddhysoyyyyooo/shddddddyydddhsshdyhdddddhsddyy/+o+/--.``````-..-///+o-`+/::..``+ddhhhhhyh/:soo:.`.--//-.......-s.``:s:...:-..++-............```+hhhdhhyyyhyhyyo:.``oyyyyyys:/````.....-/-/....````.+yhhhdddddhyyhhhhdhhdddhyyyhhhhs+::::/+:-:::///:///o+o+++:/:://+++/+++sooo++o+:--------::-:-::::-::::::::://///+/+oossosssyyyyhyyhyyoosos:---:shyhs-...+yyyhh+...-oyyhyy::-/ohyyss+:.`````````````````.....:osysyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhyyhhhhhhhhhhyyyyyyyyyyhhhdhhdhdddddddddddddddddd\n----.----hdddddddysssyhhyyyo+:.:syyyhdddddhyyyhdd+:hdhydddhs/syyyhhhho.`````.-syhhhhy+/yddhyo.`-yhdyyddhhyhdddh:`----/--.......+/`-+:-..-oo/++-.............````:ohdhhhhhhdddhhhyo..yhyyyys+/````.-....-/:.....`````-+yhdddddddhyyhhhhhddhdhhyyhhdhhs+/::////++::::::://:://:///+o+/++/o++++o/+/oo/:---------------::::::::-::--------------:::::::://::::/yo::.-/yyhhyo:/oosooyys:-/+yysyyo+ssoo+-.````````````````.......-/oyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhddddddddddddhhhhhhyyhhhyyyhhhhhhhhhhhyhhhhhhh\n..------sdddddhyyo:/hddhhhyo/-..----:oyddhysyhdddhhddhydds+ssyhhddhodd-`.-..-sddddhdhhhyddhyh/`.yddo:hh+sdddhhh:`.:-....-....../s.o/......---............`````````/hhhhdhdhdhhhdhho.+hhhyy/:-````oys:..:.........`````./shddddddhhhyhhhhdhdhhhhhyhhhhhys+////+++o+/+////::::-::--::-:::/:-///:/+/+/:-----------------:::-:--:------------------------:---/+sysy+/+os+sssoosossossyysyoo++ooo+/-.``````````````.............+syyyyyhhhhhhhhhhhhyyyyyyyhyyhhyhyhhhyyhyyyhhhhhhhhddddddddddddddddddhdddhhddddddddddhhhh\n-------/ddddhyosyso-/ddhhhhy+/:-/+so/:-ohsyosdddddddddhyo--yhd+:yddydh..:::::-+ydhsddddhyyhhdo.odhshsddyhhhdhhy:.:ys+:-``....:/+oo/-...............````````````````-+syhyysyhdddhhh::hhhhy+/o/.``ohyys/o-........```````.-+yyhdddddhhyyhhhhddhdddhyyyhhhhyo+:::://++/:::///////////:::::://--::::--------:--:::::-:-:-::::-:::--::------------:-----::::-::/+os+::::::/ooo+/////++sssss+/-..```````````...................../osyyhddddddddddddddddddddddddddddddddddhhhhhhyyyyyhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdd\n-------ydddhysyhooh+sddhhhyhhh+-sddddy:-y+ysydddddddddo:ssydddyoshyyy/.:sshys+--hddddsshhhddy+ohdhoyhyyyhddyoo++shhhddh+`````.:::-.......`.```````````````````````````.-..`./hhhdhhoshhhdho..:++..+hyyyy+-.......``````````..-+yhhhhdhhhhhyhhhhhddddhyyyyhhyyo/::::/+/:-.........-----::/++/////:::::::::::::::::---/::::--:::--::-:-----------------:::--:::::--:::::+/:::::::+ssoo:..````````````....-...-..--.........-:-.-:+yhhdddddddddddddddddddddddddddddddddhhddddhhhhhyyysossosssyhhhhhdhhdhdddddddddddhhhh\n.--.--/ddddsyhdhsyhhdddhhhy+yy//hddddd+/yyoshdosdhyddh+/sydddhdddyosssyhddhyyhs.yddhyyhdddhshdddddhyoshhyhddhhddddhhdddy.````````````````````...`````````````````````````````-/ohhddddddddh:.+os+``yyyyyyo:````````````````````-+ydddhddddhhyyhhdddhhhhhyyyyyhhyo+/:::/+/:-...................---:::-::::://////////+o//://////:/:::::::::::+o::-:::::::::::::::::-:::/o/////+/::-.````````````..........---::///+oooooosss+/:/:::/++oyyhddddddddddddddddhhddddddddhhhhyyso+/:--..````````.---:-:-:::/++osyyhhhdhhdd\n---.--+dddhshdddhhhhdhhdhhhhhyydddddddhhysoshdhhdooddhosohdo/:yddddddddddhyhdhs/hddyyhdddddhddddddysyddy+shdddddddhdddhy-```````````````````/syys+.```````````````:/++:.`````-:.-++/ohhhddds-yyyyo./hyhdhhy/.````````````````````-+shhdddddddhyyhhddhhdddhhhyyyhhhys+:::://:-.......................................--------::::::://///////+o///////////////////////++oo+/:-`````````````......--:::/+osyyyyyhhhhhddddddhdhhhhyyss+++//+oyyhhyyyysso+///++osso//::::--..```````````````````````````````...--::/+osy\n.-----+dddh+hddhyshdhhhdhhhyoyhdddddhhddhs/+hddddddddsosydddshdddddddddhsyhsosydddysdhddy+dddddddhyhdddddddddhhyhhhhhyys....````````.--.````/hdddhs:.````````````:+:ohhys+-`:s:....``/yddddho:yyyy/.yhddddhyo-```.+o/```````````````-/shdddddddhyyhdddddddddhhhyyhhdhhso/:::///--....................................--........................................--:///::-.````````````.---:::/+ossyhhhhyyyyyyyhddddddddddddddddddddhhhhhyyyyyysooooo++++/:--..``````````````````````````````````````````````````````.\n..-.--/dddhyydhhhhhhs+sddhhs:/ydhddho:sdys:/yddddddddyoyhdddddddddddddh+ohdsosydhooydhddddddddddhyyhddd+sddyyyddddhoso/----..````..-:::+/.``-hdddhddhs/.````..```.`+ddddddy-.s.-++os-`.sddddd++yyyy:ydddddddhy/....-/+:.``...``````````-ohdddddddhyyhhhdddddddddhhhhhhhdhys+//:///--....................................................................-.-:::::-.``````````````:oooosyyyyyyyyhhdddddddhhhyyhhdddhhdddddddddddddddddddddddddddhyso/:-.```````````````````````````..``...``...`````````.`````````````\n`.-.--:dmddoydhhhhhyyooyddhhoyddddhhhyhdy+ssydddddddhysyhddddhhdhdddddhoodddoyddy/sdh+hddddd++hhyyydddds+hhshddddddhsooo+--..````.......-+:./hhdddddddhs``-+/:.````:shddddh/o--/-./s+...yddddd+:ohyydddddddddhy:....../+``....```````````-/oyhddddddhhhhhhddddddddddhhyhhdhhhysoo+++++:-----....-----::::/:-...............----:///::::://++oosssyysso+::--.``````````````````.-/yyhddddddhhhhhdddddddddddddddddddddddddddddddhhhdddddddhhhys/:.````````````````````````.````................-.-.................``.\n`.---.:dddhyshddhhdhho-+hhhh+:hdyyhdhhddhos+syddhdddhssshddddyydydddddyoyddddddds/sdddddhdddhhhy:+yddddddysyddddddddddh:---.````..```.-.:///yyshhddddddh.`:/`-oss+-``odhhhs+:./o.`sdddho-+ddddds:shdddddddddddho`-+/-..::.-+.````````````````-/syhdddddhhyyhddddddddddhhhhhhddddhhhhhhhyyyyyssssyyhhhhhhhhdhs+///://:/:/+osyyyhhhhhhhhhhhhhhhyys+/:-.```````````````````````````.+hhddddddddddddddhhhhddhhhhhddddddddddddddddddhhhhyso+/:-.``````````.......--............................--...--------......-......\n`.:---ydddhyohhhhhdddhosydhhyydhsohdhydddyosssddddddhsosydddddhyddddddhosddddyddhosddddddddyhddsosydyhdddyydddddddddddo---.````.//..+o/://+//ooyysshdddy.`/o.yddddd+`-hyys:...-:..-hddddy/hdddddhoohdddddddddddy.ohyys-.-/.s.`/++-``...``````````.:+syhddddddhhhhhhhhhddddhhhhhhhdddddddddhdhdhdhdddddddddddddhhdhdhhhhhhhhhhhddddddhhyyo+/:-.````````````````````````````````````-/++osyyyhhdddddddddddddddddhhhhhhhhyysso+///::-.````````````....-.-----------.--.----..-.............--------.----------...------\n`..-.:hddddyoyhdhhhddhyoydhhhsdhdddhdddddhs/soydddddhyoosdddddhdddddddh/sydddohdhyshdddddddsyddosssdysddhsyddddddddddh/...`.--...:::o+-+ss/-.-::+osyhys/.-+/-hdddddd/:y+:..//....`.-+yoyhhdddhyyhdhs+hdddddddddd:oyyyys:`+-+--+.:+/``/:..`````````````.-/+syhhhdddhhhhhhhhdddddhhdhhhhhhhhhhhhddddddddddddddddddddddddddddhhhhyso+/:-.````````````````````````````````````````````````````...-:/++++++/+////::---....```````````````````.....--.......--.-.----.-.-.-...........-...----------------------.--..-----\n`...-sdddddsoshddysddhyohdhhhds+ddhddhhhddhsssshddddddo+syddddyddddddddosohddddddhsydds:hddddddsssodddddhsyhddooyhso+/..````::---.```ohhddds:......+o//:---..yddhhhs-:--::.-s...:++:-./+::::-````/hdy+sddddddddd+yyyyyyy/-o-.-......`.s.....`````````````````.-:/::/+oyhhhhhddhhhhhdddddddddhhhyhhhhdddddddddddhhhhyyso+/:-...``````````````````...............................``````````````````````````````````````````````.................-.......-....--.-.....-...............-.......------.-.----..-...---.-\n``.-ydddddyoyosdhs/+dddyydhhhhhhhddhhddddddyysyyddddddyoyydddddddddhsdddy/ydddddddyyhh+/sdyhddddysyydhhhhyshdddyo/+ooooo+/.`./y+sys:`/hddhyhhy/...-/+//..```.ysso+o+-.//://.:-.-----/+-+:.````````-yddssddddddddydyhdddyyo/----oo:--.-:/.....`````````````````````````..--:/++ooooossyyyhhhhhhhhhhhyyso+//////::--..`````...````````````````-.------------...-.....-....................................................-.-............................-..--...--...--......--.---------------------------------.--:\n`./hdddhhyoshhsshhdhddddhhyhho/osddh+ydhddddhyssyddddddyo/yddddddddddddddyyyhdddddhyydddddooddddhoyyhdddddyhdddddddddddddds..odddddy.-hhho/yhdh..:y/..-//```...```````s-...++o/-.-..--/.:`....``````:oyhhdddddddddddddddhyyo/-+yhdy+-/+/-..`.::.```````..``````````````````````.``````````........``````````...............-..............`....-..--.-.-.-...-.-..--.-...--..--..........-.-...----.--..---.......-...-.............-.......-...-.-....-.---.-.--.-.--........-------.--.-----------------------:.-:\n:ydddddhy+sssyysyhyhddhhhhhhhhddddddhhdddddddhyyyhddddmdhhyhdddmddddddddddysyyhddddhyydddddddddddhysyhddddhyhdddddddddddddd/-ydddhyy+:hhho/hddh::+/--.----............-o+/.-.-o+:----...-.--sss:...----:+ossosddddmddddddyydyyyyhddddso::-.:+/+o+/-...:soo+/-..........-----.........---.-.............-------------------------------------------------:-------------------------------------------------------------------------------------------------:-----------------:-://::::-:::--:::-::::-----::::--:-:---")
	
	(define yellows '("#ECF0A3" "#EBEDBE" "#E0E39F"))
	(define lightblues '("#46AFDB" "#66B3D4" "#7DBFDB"))
	(define darkblues '("#335196" "#506EB5" "#5097B5"))
	
	(define (drawscale colors)
		(pd)
		(begin_fill)
		(color "#000008" (choice colors))
		(circle 10)
		(end_fill)
		(pu)
	)

	(define (circlefunc start end)
		(if (< start end)
			(begin
				(goto (* 150 (cos start)) (* 150 (sin start)))
				(seth (- 90 (degrees start)))
				(if (> start 0) (drawscale yellows))
				(fd 15)
				(drawscale yellows)
				(fd 15)
				(drawscale darkblues)
				(movedrawlightblues)
				(movedrawlightblues)
				(if (> start 0) (movedrawlightblues))
				(circlefunc (+ start 0.05) end)
			)
		)
	)

	(define (movedrawlightblues)
		(fd 15)
		(drawscale lightblues)
	)

	(define (fin x y heading)
		(goto x y)
		(seth heading)
		(fillcolor "#D1E5ED")
		(begin_fill)
		(fd 45)
		(rt 120)
		(fd 100)
		(end_fill)
		(goto x y)
		(seth heading)
		(define (temp)
			(drawscale lightblues)
			(fd10)
		)
		(temp)
		(temp)
		(temp)
		(temp)
		(temp)
	)

	(define (rt90) (rt 90))
	(define (fd10) (fd 10))

	(fin 0 230 10) ;Body Fins
	(fin -230 0 -80)
	(fin 50 -230 180)
	(fin 0 -230 190)

	(fin 150 -160 160)
	(fin 150 -160 180) ;Crown fin

	(circlefunc -0.8 5)
	
	(goto 50 -120)
	(seth 50)
	(fillcolor "#506EB5")
	(begin_fill)
	(fd 75)
	(rt90)
	(fd 100)
	(rt 80)
	(fd 150)
	(end_fill)
	(goto 107.45 -71.79)
	(seth 50)
	(fillcolor "#E0E39F")
	(begin_fill)
	(fd 90)
	(rt90)
	(fd10)
	(rt90)
	(fd 80)
	(lt 90)
	(fd 90)
	(rt90)
	(fd10)
	(end_fill)
	(goto 167 -155)
	(lt 10)
	(begin_fill)
	(fillcolor "#FFFFFF")
	(fd 50)
	(rt 150)
	(fd 40)
	(end_fill)
	(rt 82.48)
	(fd 5)
	(begin_fill)
	(fillcolor "#C91E1E")
	(fd 21)
	(rt 127.52)
	(fd 20)
	(end_fill)
	(rt 180)
	(fd10)
	(begin_fill)
	(fillcolor "#000000")
	(fd10)
	(lt 127.52)
	(fd10)
	(end_fill)

	(fin 90 -120 150) ;Cheek fin

	(exitonclick))

; Please leave this last line alone.	You may add additional procedures above
; this line.
(draw)
Next

Submission 7


It's your masterpiece.
Use these three lines to describe
its inner meaning.

Submission 7

Tokens: 60
(define (draw)
    (speed 0)
    (hideturtle)
    (penup)
    (bgcolor "#19D685")
    (draw-shape 100 0 100 "#6BE6B1")
)

(define (draw-shape x y size c)
    (draw-circle x y size c)
    (if (< size 30)
        (penup)
        (draw-shape (- x 10) (- y 10) (floor(/ size 2)) c)
    )
)

(define (draw-circle x y size c)
    (setposition x y)
    (color c)
    (pensize 20)
    (pendown)
    (circle size)
    (penup)
)

; Please leave this last line alone.  You may add additional procedures above
; this line.
(draw)
Next

What Colors?


Simpler the better
Such spectacular colors!
I am colorblind.

What Colors?

Tokens: 156
(define (draw) (speed 0) (draww 10))

(define (draww x)
  (if (= x 200) (begin (goto 0 0) (left 90) (draw2 10))
  (begin (color (rgb 0 1 0))
  (showturtle)
  (pendown)
  (forward x)
  (penup)
  (right 90)
  (forward 10)
  (right 90)
  (forward x)
  (right 90)
  (right 90)
  (draww (+ x 10)))
  )
)

(define (draw2 y)
  (if (= y 200) (begin (goto 0 0) (left 90) (draw3 10))
  (begin (color (rgb 0 0 1))
  (pendown)
  (forward y)
  (penup)
  (right 90)
  (forward 10)
  (right 90)
  (forward y)
  (right 90)
  (right 90)
  (draw2 (+ y 10)))
  )
)

(define (draw3 z)
  (if (= z 200) (begin (goto 0 0) (left 90) (draw4 10))
  (begin (color (rgb 0.9 0.3 0.4))
  (pendown)
  (forward z)
  (penup)
  (right 90)
  (forward 10)
  (right 90)
  (forward z)
  (right 90)
  (right 90)
  (draw3 (+ z 10)))
  )
)

(define (draw4 w)
  (if (= w 200) (hideturtle)
  (begin (color (rgb 1 0 1))
  (pendown)
  (forward w)
  (penup)
  (right 90)
  (forward 10)
  (right 90)
  (forward w)
  (right 90)
  (right 90)
  (draw4 (+ w 10)))
  )
)

; Please leave this last line alone.  You may add additional procedures above
; this line.
(draw)
Next

Mandelbrot Frrrrraction!!



            
            

Mandelbrot Frrrrraction!!

Tokens: 174
(define EXTEND 40) ; Plot size
; EXTEND = 20    about 10 seconds
; EXTEND = 40    about 1 minute
; EXTEND = 50    3 ~ 5 minutes
; EXTEND = 100   very, very slow
; EXTEND = 400   your computer will explode

(define -EXTEND (- EXTEND))
(define SCALE (/ EXTEND 1.8))

; (define MAX_ITER (floor (/ EXTEND 26.7)) ; Better graphics
(define MAX_ITER 15)

(define (pyth x y)
  (sqrt (+ (* x x) (* y y))))

; (define (polar_to_screen real img) (list (* (+ real 0.5) SCALE) (* img SCALE)))
(define (screen_to_polar x y) (list (- (/ x SCALE) 0.5) (/ y SCALE)))

(define (iter_escape real img)
  (define (iter_escape_helper r i cycle)
    (cond ((= cycle 0) 0)
          ((> (pyth r i) 2) 0)
          (else (+ 1 (iter_escape_helper (+ (- (* r r) (* i i)) real) (+ (* 2 r i) img) (- cycle 1)))))
    )
  (iter_escape_helper real img MAX_ITER)
  )

(define colors '(
  "#d23939"
  "#da6c6c"
  "#d89999"
  "#bfbfbf"
  "#dbdb29"
  "#a9cc4c"
  "#69a869"
  "#7f7f7f"
  "#198c19"
  "#2c8170"
  "#396363"
  "#3f3f3f"
  "#0909af"
  "#0c0c61"
  "#2b092f"
  "#000000"
))

(define (list-ref seq index)
  (if (= index 0)
    (car seq)
    (list-ref (cdr seq) (- index 1))))

(define (map_color iter_count) (list-ref colors iter_count))

(define (mandelbrot x y)
  (cond ((> y EXTEND) nil)
        ((> x EXTEND) (mandelbrot -EXTEND (+ y 1)))
        (else (begin (pixel (+ x EXTEND) (+ y EXTEND) (map_color (iter_escape (- (/ x SCALE) 0.6) (/ y SCALE))))
                     (mandelbrot (+ x 1) y)))
    ))

(define (draw)
  ; (setup (* EXTEND 2) (* EXTEND 2))
  (mandelbrot -EXTEND -EXTEND))

(draw)
Next

Staring Eye


The eye stares
from the darkness
right into your soul.

Staring Eye

Tokens: 235
(define (colored_circle r extent col)
	(penup)
	
	(rt 120)
	(pendown)
	(color col)
	(circle r extent)

	)

(define (repeat func num)
	(cond ((= num 1)
		(func))
	(else

		(func)
		(repeat func (- num 1))
	)
	)

)

(define (draw_circles1)
	(penup)
	(rt 10)
	(forward 50)
	(pendown)
	(circles 80 0.3 0.3 0.9 40 200)

)


(define (circles num color1 color2 color3 r e)
	(cond ((= num 0)
		(colored_circle r e (rgb color1 color2 color3)))
		(else
			(colored_circle r e (rgb color1 color2 color3))
			(cond ((> color1 0.9)								
					(circles (- num 1) (- color1 0.005) (- color2 0.0003) (- color3 0.003) (- r 1) e)
				   )
				(else 					
					(circles (- num 1) (+ color1 0.005) (- color2 0.0003) (- color3 0.003) (- r 1) e)
				   )
			)		
		)
	)
)

(define (eye num extent color1 color2 color3)
	(cond ((= num 0)
		(color (rgb color1 color2 color3))
		(circle extent 110))
	(else (color (rgb color1 color2 color3))
		  (circle extent 110)
		  (lt 70)
		  (eye (- num 1) (+ extent 1) (- color1 0.001) (- color2 0.001) (+ color3 0.001)))
	)
	)

(define (draw)
	(speed 0)
  	(bgcolor "black")
  	
  	
  	(color (rgb 1 1 1))
  	(penup)
  	(goto 400 0)
  	(pendown)
  	(lt 35)
  	(eye 50 500 1 0.6 0.7)
  	(lt 70)
  	(eye 50 550 0.95 0.55 0.75)
  	(lt 70)
  	(eye 50 600 0.9 0.5 0.8)
  	(lt 70)
  	(eye 50 650 0.85 0.45 0.85)
  	(lt 70) 		
  	(penup)
  	(goto -30 -25 )
  	(pendown)
	(repeat draw_circles1 6)
	(repeat draw_circles1 6)
	(repeat draw_circles1 6)
	(repeat draw_circles1 6)
	(repeat draw_circles1 6)
	(repeat draw_circles1 6)
  	(repeat draw_circles1 2)
  )

; Please leave this last line alone.  You may add additional procedures above
; this line.
(draw)
Next

Submission 11


You will never know what your next step is
just like
you will never know when the recursion ends.

Submission 11

Tokens: 64
(define (draw)
  ; YOUR CODE HERE


  (define depth 2000) 
  (define length 61.8)
  (define angle 90)
  (define temp 10)
  (speed 0)
  (define (func len ang temp) 
  		(color "black")
  		(forward (+ len (* temp 1)))
  		(right angle) 
  		(color "gray")
  		(forward (+ len (* temp 1)))
  		(right (+ 1 ang))
  		(if (>= temp depth)
                    (ht) 
                    (let ((temp (+ temp 0.618))) (func len ang temp))))
  
  (func length angle temp)


  (ht)
  )



; Please leave this last line alone.  You may add additional procedures above
; this line.
(draw)
Next

Circles of Life


The Circles of Life
Connect People Together
As Do These Rainbows

Circles of Life

Tokens: 131
(define (draw)
	(bgcolor "black")
	(speed 0)
	(pu) (back 50) (left 90) (fd 350) (pd) (right 180)
	(define (spiral size i)
		(colorchoose i)
    	(cond ((> size 1) 
    		 (circle size)  (lt 2) (spiral (- size 0.25) (+ i 1)))
    )
  )  
  (spiral 150 0)
  (pu) (rt 100) (fd 475) (pd) (spiral 110 0) (pu) (right 150) (fd 340) (pd) (spiral 80 0)
  (hideturtle)
)

(define (colorchoose i)
	
	(cond ((= (modulo i 10) 0) (color "coral"))
		  ((= (modulo i 10) 1) (color "orange"))
		  ((= (modulo i 10) 2) (color "yellow"))
		  ((= (modulo i 10) 3) (color "lightgreen"))
		  ((= (modulo i 10) 4) (color "darkgreen"))
		  ((= (modulo i 10) 5) (color "turquoise"))
		  ((= (modulo i 10) 6) (color "blue"))
		  ((= (modulo i 10) 7) (color "purple"))
		  ((= (modulo i 10) 8) (color "violet"))
		  (else (color "pink"))))


; Please leave this last line alone.  You may add additional procedures above
; this line.
(draw)
Next

[Sample Text]


Marvin may be dank.
However, one may find that
Pika is danker.

[Sample Text]

Tokens: 54
(define (draw-thunder n k)
(if (eq? k 200) (exitonclick)
(penup))
(speed 1000)
(stamp)
(fd n)
(lt 40)
(fd n)
(lt 40)
(fd n)
(lt 40)
(fd (* n 2))
(lt 85)
(fd n)
(stamp)

(draw-thunder (* n 1.02) (+ k 1)))



(define (draw)
  (penup)
  (addshape 'smallb.gif)
  (setposition -100 230)
  (draw-thunder 10 0)
  )



; Please leave this last line alone.  You may add additional procedures above
; this line.  All Scheme tokens in this file (including the one below) count
; toward the token limit.
(draw)
Next

Heavy Weight

Eligible entries contain at most 2048 tokens of Scheme, not including comments or delimiters.

Good luck with your final!


It is a haiku
or not
that is a question

Good luck with your final!

Tokens: 266
(define (draw)
(speed 0)
(hideturtle)
(bgcolor "#00FFFF")
(define (bubble x y z)(cond ((= x 0) (penup))
      (else (define a  1)
      (penup)
      (pendown)
      (color (rgb 0 y 255))
      (begin_fill)
      (circle z)
      (end_fill)
      (bubble (- x 1) (+ y 10)(- z 1)))))
(pensize 5)
(define (n w)
    (define (n_bubble x y z)(cond ((= x 0) (penup))
        (else (define a 1)
        (penup)
        (pendown)
        (color (rgb 0 y 255))
        (begin_fill)
        (circle z)
        (end_fill)
        (n_bubble (- x 1) (+ y 10)(+ z 1)))))
    (cond ((zero? w) (right 150))
          (else (bubble 20 0 20)
          (right 30)
          (n (- w 1)))))

(penup)
(setposition (- 250) 265)
(define (up x)
(cond ((= x 350) (define x 50))
      (else (setposition x 250) (n 7) (up (+ 100 x)))
))
(define (bottom x)
(cond ((= x 350) (define x 50))
      (else (setposition x (- 250)) (n 7) (bottom (+ 100 x)))
))
(define (left_side x)
(cond ((= x 250) (define x 50))
      (else (setposition (- 300) x) (n 7) (left_side (+ 100 x)))
))
(define (right_side x)
(cond ((= x 250) (define x 50))
      (else (setposition 300 x) (n 7) (right_side (+ 100 x)))
))

  (define (big_fan w)
      (define (n_nbubble x y z)(cond ((= x 0) (penup))
            (else (define a  1)
            (penup)
            (pendown)
            (color (rgb 0 y 255))
            (begin_fill)
            (circle z)
            (end_fill)
            (bubble (- x 1) (+ y 10)(- z 1)))))
      (cond ((zero? w) (right 150))
            (else (n_nbubble 50 0 50)
            (right 30)
            (big_fan (- w 1)))))

(begin (up (- 250)) (right 180) (bottom (- 250)) (right 90) (left_side (- 150)) (right 180) (right_side (- 150)))
(setposition 10 0) (right 270) (big_fan 7))






; Please leave this last line alone.  You may add additional procedures above
; this line.
(draw)
Tokens: 266
Next

EE/CS Master Trainers


CS, truth, and love;
Abstract now, or poké-fight!
Team Brarvin! That's right!

EE/CS Master Trainers

Tokens: 1160
(define empty? null?)

(define 1st car)
(define rest cdr)
(define (2nd seq) (1st (rest seq)))
(define (3rd seq) (1st (rest (rest seq))))
(define (4th seq) (1st (rest (rest (rest seq)))))
(define (5th seq) (1st (rest (rest (rest (rest seq))))))

(define (sq x) (* x x))

(define (foldl op start seq)
  (define (iterate left folded)
    (if (empty? left)
        folded
        (iterate (rest left) (op folded (1st left)))))
  (iterate seq start))
(define (reduce op seq) (foldl op (1st seq) (rest seq)))

(define (reverse seq)
  (foldl (lambda (rest x) (cons x rest)) () seq))
(define (map f seq)
  (foldl (lambda (rest x) (cons (f x) rest)) () (reverse seq)))
(define (filter p? seq)
  (foldl (lambda (rest x) (if (p? x) (cons x rest) rest)) () (reverse seq)))
(define (zip seqs)
  (if (any empty? seqs)
      ()
      (cons (map 1st seqs) (zip (map rest seqs)))))

(define (any p? seq) (foldl (lambda (rest x) (or rest x)) False (map p? seq)))

(define (sum seq) (foldl + 0 seq))
(define (product seq) (foldl * 1 seq))

(define (max2 a b) (if (> a b) a b))
(define (min2 a b) (if (< a b) a b))

; minimizes f for 2 arguments
(define (fmin2 f) (lambda (a b) (if (< (f a) (f b)) a b)))
(define (min-pair key lst)
  ;; Returns the pair (key(x), x) for which key(x) is minimized, or () if there are no numeric keys
  (define keys (map key lst))
  (define pairs (filter (lambda (pair) (number? (1st pair))) (zip (list keys lst))))
  (if (null? pairs)
    ()
    (reduce (fmin2 1st) pairs)))

(define (dorange min max step proc)
  (define (iterate i)
    (if (<= i max)
        (begin (proc i)
               (iterate (+ i step)))))
  (iterate min))

;;; vectors

(define vec list)
(define (vx v) (1st v))
(define (vy v) (2nd v))
(define (vz v) (3rd v))

(define (scale v c) (map (lambda (x) (* c x)) v)) 
(define (norm v) (sqrt (dot v v)))
(define (normalize v) (scale v (/ 1 (norm v))))
(define (add v w) (map sum (zip (list v w))))
(define (sub v w) (add v (scale w -1)))
(define (dot v w) (sum (map product (zip (list v w)))))
(define (dist v w) (norm (sub v w)))
(define (dir v w) (normalize (sub v w)))
(define (cross v w)
    (vec (- (* (vz v) (vy w)) (* (vy v) (vz w)))
         (- (* (vx v) (vz w)) (* (vz v) (vx w)))
         (- (* (vy v) (vx w)) (* (vx v) (vy w)))))

;;; objects

(define center 1st)
(define color 2nd)
(define data 3rd)
(define intersect-fn 4th)
(define illuminate-fn 5th)

(define (intersect object ray)
  ((intersect-fn object) object ray))
(define (illuminate object ray depth)
  ((illuminate-fn object) object ray depth))

(define (plane xv yv c col) (list c col (cons xv yv) intersect-plane illuminate-plane))
(define (horizontal obj) (1st (data obj)))
(define (vertical obj) (rest (data obj))) 

(define (intersect-plane plane ray)
  (define normal (cross (horizontal plane) (vertical plane)))
  (define cosine (dot (direction ray) normal))
    (if (= cosine 0) ;parallel
      False
      (begin (define offset (sub (center plane) (source ray)))
             (define distance-in-front (/ (dot offset normal) cosine)) ;|(dy/m||n)| = |(dx||n)|
             (if (< distance-in-front 0)
                 False ;facing away
                 distance-in-front))))

(define (illuminate-plane plane ray depth) ;ignore depth
  (define normal (cross (horizontal plane) (vertical plane)))
  (define surface (source ray))
  
  ;create checkboard pattern
  (define origin (center plane))
  (define relative (sub surface origin))
  (define x-coord (dot (horizontal plane) relative))
  (define y-coord (dot (vertical plane) relative))
  (define grid-color
    (if (or (and (< (modulo x-coord 2) 1)       (< (modulo y-coord 2) 1))
            (and (< (modulo (- x-coord 1) 2) 1) (< (modulo (- y-coord 1) 2) 1)))
          black white))
  
  (define color grid-color)
  (complete-illuminate))

(define (sphere r fv av c col) (list c col (list r fv av) intersect-sphere illuminate-sphere))
(define (radius obj) (1st (data obj)))
(define (face obj) (2nd (data obj)))
(define (axis obj) (3rd (data obj)))

(define to-surface (mu () (sqrt (- (sq r) (sq min-distance_rc))))) ;parent=intersect-sphere
(define (intersect-sphere sphere ray)
  ;; Return distance along RAY to SPHERE, or False if it does not hit
  (define r (radius sphere))
  (define c (center sphere))

  (define v_rc (sub c (source ray)))
  (define d_rc (norm v_rc))
  (define center-in-front-by (dot v_rc (direction ray)))
  (define closest-point_rc (travel ray center-in-front-by))
  (define min-distance_rc (dist c closest-point_rc)) ;how close ray comes to center

  (if (< center-in-front-by 0) ;sphere is behind ray
      (cond ((> d_rc r) False) ;outside -- no intersection (facing away)
            ((= d_rc r) 0) ;at edge
            (else (- (to-surface) center-in-front-by)) ;occurs when ray starts inside sphere -- subtract to start behind
      ) ;else, center of sphere projects on ray
      (cond ((> min-distance_rc r) False) ;outside -- no intersection (miss)
            ((> d_rc r) (- center-in-front-by (to-surface))) ;ray from outside -- subtract to get back to surface
            (else (+ center-in-front-by (to-surface))) ;ray from inside -- add to continue until bounces back
            )))

(define band_y .04)
(define band_outer_z .03)
(define band_inner_z .01)
(define (illuminate-sphere sphere ray depth)
  ;; The color at RAY knowing RAY is on the surface of the sphere,
  ;; with reflection DEPTH
  (define c (center sphere)) ;for dir
  
  (define surface (source ray))
  (define normal (scale (sub surface c) (/ 1 (radius sphere))))
  
  ; pok`eball
  (if (null? (color sphere))
      (begin (define y (dot normal (axis sphere)))
             (define z (- 1 (dot normal (face sphere))))
             (define color (cond ((< z band_inner_z) white)
                                 ((< z band_outer_z) black)
                                 ((> y band_y) red)
                                 ((> (- y) band_y) white)
                                 (else black))))
      (define color (color sphere)))

  (complete-illuminate))

;;; rays

;; used to correct floating point errors which cause 'self shadowing'
(define eps .0001)

(define source 1st)
(define direction rest)
(define (travel ray distance)
  (define projection (scale (direction ray) distance))
  (add (source ray) projection))
(define (translate ray distance)
  (cons (travel ray distance) (direction ray)))

(define (reflect incident normal)
  (add incident (scale normal
                       (* -2 (dot incident normal)))))

(define (trace ray depth)
  ;; Trace RAY with reflection DEPTH
  (define distance-to (lambda (obj) (intersect obj ray)))
  (define hit (min-pair distance-to objects)) ;forefront, nearest, closest
  (if (null? hit)
      background
      (let ((distance (1st hit)) ;extract from pair
            (target   (2nd hit)))
           (illuminate target (translate ray (- distance eps)) depth))))

(define shininess 30) ;the closer to 0, the more `mirror-like'
;illuminate code is mostly same except for normal and color calculation
(define complete-illuminate (mu () ;parent=illuminate(normal, color, ray)
  (define incident (direction ray))

  (define v_ls (sub light surface))
  (define d_ls (norm v_ls))
  (define to-light (scale v_ls (/ 1 d_ls)))

  (define r (cons surface to-light))
  (define (obstacle? obj)
    (let ((d (intersect obj r)))
      (and d ;if its a number
           (< d d_ls)))) ;and in range
  (define intensity (if (any obstacle? objects) ;something in the way
                        ambient ;blocked
                        (max2 (dot normal to-light) ambient)))
  (define direct (scale color intensity))

  (cond ((= depth 1) direct)
        (else (define reflected (cons surface (reflect incident normal)))
              (mix direct ;diffuse term
                   (trace reflected (- depth 1)) ;specular term
                   (+ .5 (* .5 (expt intensity shininess)))))) ;incorporate contributions
  ))

;;; colors

(define half (/ 128 255))
(define black  (vec 0 0 0))
(define white  (vec 1 1 1))
(define red    (vec 1 0 0))
(define teal   (vec 0 half half))
(define olive  (vec half half 0))

(define (mix a b r)
  (add (scale a r) (scale b (- 1 r))))

;;; scene

(define background black)
(define ambient 0.2) ;dim lighting

(define x-pixels 400)
(define y-pixels 400)
(pixelsize (max2 1 (min2 (quotient (screen_width) x-pixels) (quotient (screen_height) y-pixels))))

(define max-x (quotient (- x-pixels 1) 2))
(define max-y (quotient (- y-pixels 1) 2))
(define view-shift (+ max-x max-y)) ;depth of screen on camera

(define camera (vec 0 0 0))
(define light (vec 0 1 0))

(define up (vec 0 1 0))
(define spheres (list (sphere 1 (vec 0 0 -1) up (vec 0 0 9) nil)
                      (sphere 1 nil nil (vec -3 0 9) olive)
                      (sphere 1 nil nil (vec  3 0 9) teal)))

(define left&forward (normalize (vec 1 0 1)))
(define right&forward (normalize (vec -1 0 1)))
(define corner (vec 0 -1 7))
(define planes (list (plane left&forward right&forward corner nil)))
(define objects (append spheres planes))

(define max-recursion 3)

;;; rendering

(define (calc-color x y)
  (define ray (cons camera (normalize (vec x y view-shift))))
  (define color (apply rgb (trace ray max-recursion)))
  color)
(define (draw-color x y rgb)
  (print x y rgb)
  (pixel (+ x max-x) (+ y max-y) rgb))

(define (render)
  ;; Pixel by pixel
  (dorange (- max-y) (floor (/ max-y 4)) 1 (lambda (y) ;col
      (dorange (- max-x) max-x 1 (lambda (x) ;row
          (draw-color x y (calc-color x y)))))))

(define (draw)
  (hideturtle)
  (speed 0) ;no intermediate animation
  (render)
  (exitonclick))

; Please leave this last line alone.  You may add additional procedures above
; this line.
(draw)
Tokens: 1160
Next

Pawsitive Thoughts to Bear in Mind


If ever you feel
Unpre-bear-ed: Brarvin's paws shall
Give us strength to bear

Pawsitive Thoughts to Bear in Mind

Tokens: 664
(define (make_left_paw xpos ypos)
	; Pawprint starts at (xpos, ypos) and the claws are drawn according to that position
	(setheading 0)
	(penup)
	(setpos xpos ypos)
	(pendown)
		(begin_fill)
		(pawprint 200)
	(penup)

	(setpos (- xpos 120) (+ ypos 120)) ;leftmost claw
	(pendown)
		(claw 50)
	(penup)

	(setpos (- xpos 70) (+ ypos 140)) ;left claw
	(pendown)
		(claw 50)
	(penup)

	(setpos (- xpos 20) (+ ypos 130))  ;middle claw
	(pendown)
		(claw 60)
	(penup)

	(setpos (+ xpos 15) (+ ypos 100))  ;right claw
	(pendown)
		(claw 70)
	(penup)
	(setpos 0 0)
	)

(define (make_right_paw xpos ypos)
	; Pawprint starts at (xpos, ypos) and the claws are drawn according to that position
	(setheading 0)
	(penup)
	(setpos xpos ypos)
	(pendown)
		(begin_fill)
		(pawprint 200)
	(penup)

	(setpos (- xpos 110) (+ ypos 130)) ;leftmost claw
	(pendown)
		(claw 70)
	(penup)

	(setpos (- xpos 60) (+ ypos 140)) ;left claw
	(pendown)
		(claw 60)
	(penup)

	(setpos (- xpos 10) (+ ypos 130))  ;middle claw
	(pendown)
		(claw 50)
	(penup)

	(setpos (+ xpos 25) (+ ypos 90))  ;right claw
	(pendown)
		(claw 50)
	(penup)
	(setpos 0 0)
	)

(define (pawprint num)
	; Draw the pawprint
	(cond ((> num 0)
		(begin
		(colorswap num)
		(forward (/ num 3))
		(left 50)
		(pawprint (- num 1))
		))
		(else nil)
		)
	)

(define (claw num)
	; Draw the claws
	(cond ((> num 0)
		(begin
		(colorswap num)
		(forward (/ num 3))
		(if (= (modulo num 2) 0) 
			(left 50)
			(left 80)
			)
		(left 50)
		(pawprint (- num 1))
		))
		(else nil)
		)
	)

(define (make_sparkle size x y angle)
	; Makes sparkles of of size 'size' at position (x, y)
	(define (edge)
		(cond
			((> size 0) 
			(rt 7) (forward size)) 
			(else (goto x y))) ; Check against wrong argument value for size
		(begin (right (- (* angle 2) 13)) (forward size) (right (+ (* angle 2) 6))))

	(penup)
	(goto x y)
	(pendown)
	(begin_fill)
	(edge)
	(right (/ angle 2)) (edge)
	(right (/ angle 2)) (edge)
	(right (/ angle 2)) (edge)
	(right (/ angle 2)) (edge)
	(right (/ angle 2)) (edge)
	(right (/ angle 2)) (edge)
	(right (/ angle 2)) (edge)
	(end_fill)
	(penup)
	)

(define (colorswap num) 
	; Recursively change the colors between Blue and Gold depending on pawprint size
	(if (> num 0)
		(cond 
			((> num 160) (color '"#FDB515"))
			((> num 140) (color '"#000080"))
			((> num 120) (color '"#FDB515"))
			((> num 100) (color '"#000080"))
			((> num 80) (color '"#FDB515"))
			((> num 70) (color '"#000080"))
			((> num 40) (color '"#FDB515"))
			((> num 20) (color '"#000080"))
			((> num 10) (color '"#FDB515"))
			((> num 5) (color '"#000080"))
			(else nil)
			)
		nil)
	)

(define (draw)
	(setheading 0)
	(speed 0)
	(bgcolor '"#ffffe6")
	;(bgcolor '"#ffffff")
	;(bgcolor '"#ccebff")
	(make_left_paw (- 0 150) 0)
	(make_right_paw 100 -200)
	(make_right_paw 220 120)
	(penup)
	(goto 0 0)
	(pendown)
	(color '"#000080")
	(speed 0)
	(make_sparkle 5 -310 -280 90) ; bottom left
	(make_sparkle 5 -300 -160 90)
	(make_sparkle 5 -280 -275 90)
	(make_sparkle 5 -165 -190 90)
	(make_sparkle 5 -185 -210 90)
	(make_sparkle 5 -95 -190 90)
	(make_sparkle 5 -195 -250 90)
	(make_sparkle 5 -105 -50 90)
	(make_sparkle 5 -290 -70 90)
	(make_sparkle 5 -75 -25 90)
	(make_sparkle 5 -150 -35 90)
	(make_sparkle 5 -20 -250 90)
	(make_sparkle 5 -45 -220 90)
	(make_sparkle 5 -100 -100 90)
	(make_sparkle 5 -190 -110 90)

	(make_sparkle 5 300 290 90) ; top right
	(make_sparkle 5 200 275 90)
	(make_sparkle 5 50 250 90)
	(make_sparkle 5 275 225 90)
	(make_sparkle 5 275 110 90)
	(make_sparkle 5 255 15 90)
	(make_sparkle 5 190 0 90)

	(make_sparkle 5 0 0 90) ; center
	(make_sparkle 5 10 50 90)
	(make_sparkle 5 20 -20 90)
	(make_sparkle 5 260 -20 90)
	(make_sparkle 5 285 35 90)
	(make_sparkle 5 -15 45 90)
	(make_sparkle 5 -35 105 90)
	(make_sparkle 5 0 120 90)
	(make_sparkle 5 40 50 90)
	(make_sparkle 5 15 30 90)
	(make_sparkle 5 115 30 90)
	(make_sparkle 5 155 60 90)
	(make_sparkle 5 120 -50 90)

	;(color '"#000000")
	(make_sparkle 5 -310 290 90) ; top left
	(make_sparkle 5 -270 280 90)
	(make_sparkle 5 -290 250 90)
	(make_sparkle 5 -240 250 90)
	(make_sparkle 5 -210 230 90)
	(make_sparkle 5 -190 200 90)
	(make_sparkle 5 -150 180 90)
	(make_sparkle 5 -175 175 90)
	(make_sparkle 5 -270 190 90)
	(make_sparkle 5 -255 200 90)
	(make_sparkle 5 -295 185 90)
	(make_sparkle 5 -15 185 90)
	(make_sparkle 5 -35 205 90)
	(make_sparkle 5 -50 195 90)
	(make_sparkle 5 -75 265 90)
	(make_sparkle 5 -125 255 90)
	(make_sparkle 5 -155 215 90)

	(make_sparkle 5 300 -280 90) ;bottom right
	(make_sparkle 5 260 -270 90)
	(make_sparkle 5 250 -190 90)
	(make_sparkle 5 230 -130 90)
	(make_sparkle 5 230 -210 90)
	(make_sparkle 5 200 -180 90)
	(make_sparkle 5 225 -250 90)
	(make_sparkle 5 180 -235 90)
	(make_sparkle 5 140 -255 90)
	(make_sparkle 5 270 -105 90)
	(make_sparkle 5 240 -55 90)

	(hideturtle)
	(exitonclick)
	)

; Please leave this last line alone.  You may add additional procedures above
; this line.
(draw)
Tokens: 664
Next

Origin of Life


DNA is the component of lives
It grows
Symbolizing the renewal vitality

Origin of Life

Tokens: 616
(define (rvalue d)
  (cond ((< d 100) 1)
        ((< d 400) (/ (- 400 d) 300))
        ((< d 700) 0)
        ((< d 1000) 0)
        ((< d 1300) (/ (- d 1000) 300))
        ((< d 1600) 1)
        (else 1)))

(define (gvalue d)
  (cond ((< d 100) 0)
        ((< d 400) 0)
        ((< d 700) (/ (- d 400) 300))
        ((< d 1000) 1)
        ((< d 1300) 1)
        ((< d 1600) (/ (- 1600 d) 300))
        (else 0)))

(define (bvalue d)
  (cond ((< d 100) 1)
        ((< d 400) 1)
        ((< d 700) 1)
        ((< d 1000) (/ (- 1000 d) 300))
        ((< d 1300) 0)
        ((< d 1600) 0)
        (else 0)))

(define (x point) (car point))
(define (y point) (car (cdr point)))
(define (z point) (car (cdr (cdr point))))

(define (vector p0 p1)
  (list (- (x p1) (x p0))
        (- (y p1) (y p0))
        (- (z p1) (z p0))))

(define (s_mul c v)
  (list (* c (x v))
        (* c (y v))
        (* c (z v))))

(define (prod v0 v1)
  (+ (* (x v0) (x v1))
     (* (y v0) (y v1))
     (* (z v0) (z v1))))

(define (minus v0 v1)
  (list (- (x v0) (x v1))
        (- (y v0) (y v1))
        (- (z v0) (z v1))))

(define (proj v n) (minus v (s_mul (prod v n) n)))

(define (heading y x)
  (let ((a (degrees (atan2 x y))))
       (if (< a 0) (+ 360 a) a)))

(define (distance v)
  (sqrt (+ (* (x v) (x v))
           (* (y v) (y v))
           (* (z v) (z v)))))

(define (normal view_angle)
  (let ((n_raw (vector '(0 0 0) (list 0 (tan (radians view_angle)) -1))))
       (s_mul (/ 1 (distance n_raw)) n_raw)))

(define (next_vertex curr side_len dir z)
  (list (+ (x curr) (* side_len (cos (radians dir))))
        (+ (y curr) (* side_len (sin (radians dir))))
        z))

(define (from_to p0 p1)
  (define r (proj (vector p0 p1) n))
  (define i (x r))
  (define j_raw (sqrt (+ (* (y r) (y r))
                         (* (z r) (z r)))))
  (define j (if (< (z r) 0) (- j_raw) j_raw))
  (seth (heading j i))
  (fd (distance r)))

(define (helper r a z curr)
            (define p0 (list (* r (cos (radians a))) (* r (sin (radians a))) z))
            (pu) (from_to curr p0) (pd)
            (define len (* (sqrt 2) r))
            (define p1 (next_vertex p0 len (+ a 135) z))
            (define p2 (next_vertex p1 len (+ a 225) z))
            (define p3 (next_vertex p2 len (+ a 315) z))
            (from_to p0 p1)
            (from_to p1 p2)
            (from_to p2 p3)
            (from_to p3 p0)
            (pu) (from_to p0 curr) (pd)
            p0
)

(define (draw)
  (define (recur depth r a z curr)
    (cond ((> depth 1699) nil)
          (else
            (define p0 (list (* r (cos (radians a))) (* r (sin (radians a))) z))
            (pu) (from_to curr p0) (pd)
            (color (rgb (rvalue depth) (gvalue depth) (bvalue depth)   ))
            (define len (* (sqrt 2) r))
            (define p1 (next_vertex p0 len (+ a 135) z))
            (define p2 (next_vertex p1 len (+ a 225) z))
            (define p3 (next_vertex p2 len (+ a 315) z))
            (pu) (from_to p0 p1) (from_to p1 p2) (pd)
            (define pi (helper (/ r 8) a z p1))
            (pu) (from_to p2 p3) (from_to p3 p0) (pd)
            (define pii (helper (/ r 8) a z p3)) (pd)
            (define pi (next_vertex p0 len (+ a 0) z))
            (define pii (next_vertex pi (* 2.45 len) (+ a 556) z))
            (define piii (next_vertex pii (* 1.87 len) (+ a 45.4) z))
            (pu) (from_to p0 pii) (pd)
            (if (= 0 (modulo depth 10)) (pd) (pu))
            (from_to pii piii) (pu) (from_to piii p0)
            (recur (+ depth 1) (+ r 0.065) (+ a 0.4) (+ z 0.8) p0))))
  (recur 1 50 1 -360 '(0 0 0)))

(hideturtle)
(pu)
(bgcolor "black")
(goto 0 -150)
(define n (normal 35))

; Please leave this last line alone.  You may add additional procedures above
; this line.
(draw)
Tokens: 616
Next

Spiral of Exhaustion


I enjoyed this class.
Please take pity on my grade.
I just want to sleep.

Spiral of Exhaustion

Tokens: 277
(define (draw)
  (define spiral_size 800)
  (define background_size 1000)
  (speed 0)

  (define (spiral id)
    (begin
    (color id)
    (spiralize 1 spiral_size 0)
    )
  )

  (define (background id)
    (begin
    (color id)
    (squaralize 1 background_size 0)
    )
  )


  ; MORE TOKENS!!!!!!!!!!!!!!!
  (define (spiral_two id)
    (begin
    (color id)
    (spiralize 1 spiral_size 0)
    )
  )

  (define spiralize_size 89)
  (define squaralize_size 90)

  (define (spiralize bot ceil choice)
    (if (= bot ceil)
      (begin
        (fd bot)
        (lt spiralize_size))
      (begin
        (fd bot)
        (lt spiralize_size)
        (if (= 0 choice)
          (spiralize (+ bot 1) ceil 0)
          (spiralize (- bot 1) ceil 1)
          )
        )))

  (define (squaralize bot ceil choice)
    (if (= bot ceil)
      (begin
        (fd bot)
        (lt squaralize_size))
      (begin
        (fd bot)
        (lt squaralize_size)
        (if (= 0 choice)
          (squaralize (+ bot 1) ceil 0)
          (squaralize (- bot 1) ceil 1)
          )
        )))


  ; MORE TOKENS!!!!!!!!!!!!!!!
  (define (spiralize_two bot ceil choice)
    (if (= bot ceil)
      (begin
        (fd bot)
        (lt spiralize_size))
      (begin
        (fd bot)
        (lt spiralize_size)
        (if (= 0 choice)
          (spiralize (+ bot 1) ceil 0)
          (spiralize (- bot 1) ceil 1)
          )
        )))

  ; MORE TOKENS!!!!!!!!!!!!!!!
  (define (spiralize_three bot ceil choice)
    (if (= bot ceil)
      (begin
        (fd bot)
        (lt spiralize_size))
      (begin
        (fd bot)
        (lt spiralize_size)
        (if (= 0 choice)
          (spiralize (+ bot 1) ceil 0)
          (spiralize (- bot 1) ceil 1)
          )
        )))


  ; MORE TOKENS!!!!!!!!!!!!!!!
  (define (squaralize_two bot ceil choice)
    (if (= bot ceil)
      (begin
        (fd bot)
        (lt squaralize_size))
      (begin
        (fd bot)
        (lt squaralize_size)
        (if (= 0 choice)
          (squaralize (+ bot 1) ceil 0)
          (squaralize (- bot 1) ceil 1)
          )
        )))



  ; MORE TOKENS!!!!!!!!!!!!!!!
  (define (squaralize_three bot ceil choice)
    (if (= bot ceil)
      (begin
        (fd bot)
        (lt squaralize_size))
      (begin
        (fd bot)
        (lt squaralize_size)
        (if (= 0 choice)
          (squaralize (+ bot 1) ceil 0)
          (squaralize (- bot 1) ceil 1)
          )
        )))

  (bgcolor "#000000")

  (background "#0066FF")
  (penup)
  (goto 0 0)
  (pendown)
  (spiral "#FFCC00")
  (penup)
  (goto 0 0)
  (pendown)
  (spiral "#FFCC00")

  (hideturtle)

  (exitonclick))

; Please leave this last line alone.  You may add additional procedures above
; this line.
(draw)
Tokens: 277
Next

Total Eclipse of the Sun


shadows over earth
celestial bodies align
but nothing dark stays.

Total Eclipse of the Sun

Tokens: 293
(define (outerring rad x y red green)
  (define (helper rad x y red green)
    (if (> rad 200)
      ((begin_fill)
        (setposition x y)
        (color (rgb red green 0))
        (circle rad)
        (end_fill)
        (helper (- rad 1) (- x 1) y (+ red 0.03) (+ green 0.02)))
      (ring 200 125 0 0.75 0.5 0)))
  (helper rad x y red green))
(define (ring rad x y red green blue)
  (define (helper rad x y red green blue)
    (if (> rad 150)
      ((begin_fill)
        (setposition x y)
        (color (rgb red green blue))
        (circle rad)
        (end_fill)
        (helper (- rad 2) (- x 2) y (+ red 0.01) (+ green 0.02) (+ blue 0.03)))
    ((setposition 75 0)
      (begin_fill)
       (color "white")
        (circle 145)
        (end_fill)
        (setposition 72.5 0)
       (begin_fill)
        (color "black")
        (circle 145)
        (end_fill)
        (eclipse))))
  (helper rad x y red green blue))

(define (eclipse)
  (setposition 75 0)
  (begin_fill)
  (color (rgb 0.25 0.25 0.25))
    (circle 10)
  (end_fill)
  (begin_fill)
  (color (rgb 0.4 0.4 0.4))
  (circle 9)
  (end_fill)
  (begin_fill)
  (setposition 75 0)
  (color (rgb 0.65 0.65 0.65))
    (circle 8)
  (end_fill)
  (begin_fill)
  (setposition 75 0)
  (color (rgb 0.75 0.75 0.75))
  (circle 7)
  (end_fill)
  (begin_fill)
  (setposition 75 0)
  (color (rgb 0.85 0.85 0.85))
  (circle 6)
  (end_fill)
  (begin_fill)
  (setposition 75 0)
  (color "white")
  (circle 5)
  (end_fill)
  (earth 900 1800 -800 0 0 0))

(define (earth rad x y red green blue)
  (penup)
  (setposition 1800 -800)
  (pendown)
  (define (helper rad x y red green blue)
    (if (> rad 800)
          ((setposition x y)
            (begin_fill)
            (if (< blue 1)
                (color (rgb red green blue))
                (color (rgb red green 1)))
            (circle rad)
            (end_fill)
            (helper (- rad 6) (- x 6) y (+ red 0.04) (+ green 0.04) (+ blue 0.08)))
          (penup)))
  (helper rad x y red green blue))
  

(define (draw)
  
  (bgcolor "black")
  (speed 0)
  (showturtle)
  (outerring 225 150 0 0 0)

  (exitonclick)
)

; Please leave this last line alone.  You may add additional procedures above
; this line.
(draw)
Tokens: 293
Next

Vigil for The Person Who Got -5 Points in CS61A


We salute you, sir.
It couldn't have been easy
scoring -5

Vigil for The Person Who Got -5 Points in CS61A

Tokens: 264
(define (move dir dis)
	(seth dir)
	(fd dis))

;moving up d unit
(define (move_y d)
	(move 0 d))

;moving right d unit
(define (move_x d)
	(move 90 d))

;m: radius of the circle that generate the arc
(define (el_arc m)
	(circle m 80))

(define (flame scale color_f)
	(color color_f)
	(begin_fill)
	(seth 90)
	(circle scale 120)
	(fd (* 1.5 scale))
	(seth 215)
	(fd (* 1.5 scale))
	(circle scale 120)
	(end_fill))

(define (candle k start_x start_y)
	(define height k)
	(define top_center (+ start_y height))
	(define el_fix (/ k 20))
	;major fix radius
	(define a_radius (/ k 2))
    (define stick_h (/ k 15))

    ;Start drawing here
	(setposition (+ start_x (/ k 3)) top_center)
	(pendown)

	(move 340 el_fix)
	(seth 310)
	(el_arc a_radius)
	(move 200 el_fix)
	(move 160 el_fix)
	(seth 130)
	(el_arc a_radius)
	(move 20 el_fix)
	(move_y (- height))
	(move 200 el_fix)
	(seth 230)
	(el_arc (- a_radius))
	(move 340 el_fix)
	(move_y height)
	(pu)
	(setposition start_x top_center)
	(pendown)

	;drawing the stick/string sticking out of the candle
	(move_y stick_h)

	;drawing the flame of the candle
	(define outer_flame_d (/ k 5))

	;outer flame is yellow
	(flame outer_flame_d "yellow")

	;inner flame is orange
	(flame (/ outer_flame_d 2) "orange")
	(color "black")
	(move_y stick_h)
	(pu)

	)



(define (perc_decrease value perc) (/ (- value) perc))

(define (scaling value ratio) (/ value ratio))

(define (infinite_candles max_depth current_k start_x start_y)
	(if (= max_depth 0) nil
		(and (candle current_k start_x start_y) 
												(infinite_candles (- max_depth 1) 
																		(/ current_k 1.4) 
															(+ start_x (perc_decrease start_x 3))
															(+ start_y (perc_decrease start_y 3))
															)
	)
)
)

(define (angled_candles max_depth current_k num_sideways start_x hori_gap)
	(if (= num_sideways 0) nil
		(and (infinite_candles max_depth current_k start_x -300) (infinite_candles max_depth current_k (- start_x) -300) 
			 (angled_candles max_depth current_k (- num_sideways 1) (+ start_x hori_gap) hori_gap)
		)
	)
)




;;; INPUTS

; maximum recursion depth into the screen until it is too small to be seen
(define max_depth 22)
; maximum recursion depth to the side of the screen
(define max_width 1000)

; starting scale of the initial candle
(define starting_k 50)

; starting horizontal gap between coloums
(define hori_gap 150)




(define (draw)
  (speed 0)
  (ht)
  (pu)
  (setposition 0 0)
  (infinite_candles max_depth starting_k 0 -300)
  (angled_candles max_depth starting_k max_width hori_gap hori_gap)
  )


; Please leave this last line alone.  You may add additional procedures above
; this line.  All Scheme tokens in this file (including the one below) count
; toward the token limit.
(draw)
Tokens: 264
Next