├── iPad └── FORTHCOMING ├── misc └── art │ ├── placeholder │ ├── ff.jpg │ ├── ff-large │ ├── rewind.jpg │ ├── rw-large │ ├── skip.jpg │ ├── ff-small.psd │ ├── ghost-black │ ├── new │ ├── last.png │ ├── first.png │ ├── forward.png │ ├── motion.psd │ ├── backward.png │ ├── hover-first.png │ ├── hover-last.png │ ├── hover-backward.png │ ├── hover-forward.png │ └── reverse-motion.psd │ ├── rw-small.psd │ ├── small │ ├── bl.png │ ├── br.png │ ├── tl.png │ ├── tr.png │ ├── black.png │ ├── left.png │ ├── right.png │ ├── star.png │ ├── top.png │ ├── white.png │ ├── Archive.zip │ ├── bottom.png │ └── center.png │ ├── big │ ├── bl-try.png │ ├── br-try.png │ ├── tl-try.png │ ├── top-try.png │ ├── tr-try.png │ ├── board-660.png │ ├── left-try.png │ ├── right-try.png │ ├── star-try.png │ ├── black-huge.png │ ├── board-huge.png │ ├── bottom-try.png │ ├── center-try.png │ └── white-huge.png │ ├── email-icon.jpg │ ├── first-large.psd │ ├── first-small.psd │ ├── ghost-white.psd │ ├── highlight.psd │ ├── last-large.psd │ ├── last-small.psd │ ├── normal │ ├── bl.png │ ├── br.png │ ├── last.png │ ├── left.png │ ├── star.png │ ├── tl.png │ ├── top.png │ ├── tr.png │ ├── black.png │ ├── bottom.png │ ├── center.png │ ├── first.png │ ├── motion.psd │ ├── right.png │ ├── white.png │ ├── backward.png │ ├── forward.png │ ├── hover-forward.psd │ ├── reverse motion.psd │ ├── simple-black.png │ └── simple-white.png │ ├── email in prog.psd │ ├── hover-good │ ├── first.png │ ├── last.png │ ├── forward.png │ ├── backward.png │ ├── hover-last.png │ ├── hover-first.png │ ├── hover-backward.png │ └── hover-forward.png │ └── email-small-progress.psd ├── .tool-versions ├── .gitignore ├── www ├── static │ ├── img │ │ ├── ff.png │ │ ├── rw.png │ │ ├── board.png │ │ ├── first.png │ │ ├── grid.png │ │ ├── last.png │ │ ├── favicon.ico │ │ ├── board-30.png │ │ ├── dead-black.png │ │ ├── dead-white.png │ │ ├── email-off.png │ │ ├── email-on.png │ │ ├── ff-hover.png │ │ ├── grid-hover.png │ │ ├── highlight.png │ │ ├── last-hover.png │ │ ├── rw-hover.png │ │ ├── first-hover.png │ │ ├── ghost-black.png │ │ ├── ghost-white.png │ │ ├── grid-enabled.png │ │ ├── simple-black.png │ │ ├── simple-white.png │ │ ├── email-off-hover.png │ │ ├── email-on-hover.png │ │ ├── grid-disabled.png │ │ ├── loading-spinner.gif │ │ ├── territory-black.png │ │ ├── territory-white.png │ │ ├── transparent-1x1.png │ │ └── apple-touch-icon.png │ ├── css │ │ ├── ie.css │ │ └── go.css │ └── js │ │ ├── sound.js │ │ ├── scriptaculous.js │ │ ├── builder.js │ │ ├── slider.js │ │ └── dragdrop.js ├── templates │ ├── head.html │ ├── game.sgf │ ├── fail.html │ ├── foot.html │ ├── update-database.html │ ├── index.html │ ├── options.html │ ├── get-going.html │ ├── history.html │ └── play.html ├── index.yaml ├── cron.yaml ├── secrets.py ├── simplejson │ ├── tool.py │ ├── jsonfilter.py │ ├── scanner.py │ ├── decoder.py │ ├── __init__.py │ └── encoder.py └── app.yaml ├── LICENSE ├── deadstones.md └── README.md /iPad/FORTHCOMING: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /misc/art/placeholder: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.tool-versions: -------------------------------------------------------------------------------- 1 | python 3.11.2 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | .DS_Store 3 | .emacs.* 4 | .#* 5 | .*.sw? 6 | -------------------------------------------------------------------------------- /misc/art/ff.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/ff.jpg -------------------------------------------------------------------------------- /misc/art/ff-large: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/ff-large -------------------------------------------------------------------------------- /misc/art/rewind.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/rewind.jpg -------------------------------------------------------------------------------- /misc/art/rw-large: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/rw-large -------------------------------------------------------------------------------- /misc/art/skip.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/skip.jpg -------------------------------------------------------------------------------- /misc/art/ff-small.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/ff-small.psd -------------------------------------------------------------------------------- /misc/art/ghost-black: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/ghost-black -------------------------------------------------------------------------------- /misc/art/new/last.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/new/last.png -------------------------------------------------------------------------------- /misc/art/rw-small.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/rw-small.psd -------------------------------------------------------------------------------- /misc/art/small/bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/small/bl.png -------------------------------------------------------------------------------- /misc/art/small/br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/small/br.png -------------------------------------------------------------------------------- /misc/art/small/tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/small/tl.png -------------------------------------------------------------------------------- /misc/art/small/tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/small/tr.png -------------------------------------------------------------------------------- /www/static/img/ff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/ff.png -------------------------------------------------------------------------------- /www/static/img/rw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/rw.png -------------------------------------------------------------------------------- /misc/art/big/bl-try.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/big/bl-try.png -------------------------------------------------------------------------------- /misc/art/big/br-try.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/big/br-try.png -------------------------------------------------------------------------------- /misc/art/big/tl-try.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/big/tl-try.png -------------------------------------------------------------------------------- /misc/art/big/top-try.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/big/top-try.png -------------------------------------------------------------------------------- /misc/art/big/tr-try.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/big/tr-try.png -------------------------------------------------------------------------------- /misc/art/email-icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/email-icon.jpg -------------------------------------------------------------------------------- /misc/art/first-large.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/first-large.psd -------------------------------------------------------------------------------- /misc/art/first-small.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/first-small.psd -------------------------------------------------------------------------------- /misc/art/ghost-white.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/ghost-white.psd -------------------------------------------------------------------------------- /misc/art/highlight.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/highlight.psd -------------------------------------------------------------------------------- /misc/art/last-large.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/last-large.psd -------------------------------------------------------------------------------- /misc/art/last-small.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/last-small.psd -------------------------------------------------------------------------------- /misc/art/new/first.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/new/first.png -------------------------------------------------------------------------------- /misc/art/new/forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/new/forward.png -------------------------------------------------------------------------------- /misc/art/new/motion.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/new/motion.psd -------------------------------------------------------------------------------- /misc/art/normal/bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/bl.png -------------------------------------------------------------------------------- /misc/art/normal/br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/br.png -------------------------------------------------------------------------------- /misc/art/normal/last.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/last.png -------------------------------------------------------------------------------- /misc/art/normal/left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/left.png -------------------------------------------------------------------------------- /misc/art/normal/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/star.png -------------------------------------------------------------------------------- /misc/art/normal/tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/tl.png -------------------------------------------------------------------------------- /misc/art/normal/top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/top.png -------------------------------------------------------------------------------- /misc/art/normal/tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/tr.png -------------------------------------------------------------------------------- /misc/art/small/black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/small/black.png -------------------------------------------------------------------------------- /misc/art/small/left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/small/left.png -------------------------------------------------------------------------------- /misc/art/small/right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/small/right.png -------------------------------------------------------------------------------- /misc/art/small/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/small/star.png -------------------------------------------------------------------------------- /misc/art/small/top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/small/top.png -------------------------------------------------------------------------------- /misc/art/small/white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/small/white.png -------------------------------------------------------------------------------- /www/static/img/board.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/board.png -------------------------------------------------------------------------------- /www/static/img/first.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/first.png -------------------------------------------------------------------------------- /www/static/img/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/grid.png -------------------------------------------------------------------------------- /www/static/img/last.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/last.png -------------------------------------------------------------------------------- /misc/art/big/board-660.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/big/board-660.png -------------------------------------------------------------------------------- /misc/art/big/left-try.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/big/left-try.png -------------------------------------------------------------------------------- /misc/art/big/right-try.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/big/right-try.png -------------------------------------------------------------------------------- /misc/art/big/star-try.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/big/star-try.png -------------------------------------------------------------------------------- /misc/art/email in prog.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/email in prog.psd -------------------------------------------------------------------------------- /misc/art/new/backward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/new/backward.png -------------------------------------------------------------------------------- /misc/art/normal/black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/black.png -------------------------------------------------------------------------------- /misc/art/normal/bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/bottom.png -------------------------------------------------------------------------------- /misc/art/normal/center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/center.png -------------------------------------------------------------------------------- /misc/art/normal/first.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/first.png -------------------------------------------------------------------------------- /misc/art/normal/motion.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/motion.psd -------------------------------------------------------------------------------- /misc/art/normal/right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/right.png -------------------------------------------------------------------------------- /misc/art/normal/white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/white.png -------------------------------------------------------------------------------- /misc/art/small/Archive.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/small/Archive.zip -------------------------------------------------------------------------------- /misc/art/small/bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/small/bottom.png -------------------------------------------------------------------------------- /misc/art/small/center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/small/center.png -------------------------------------------------------------------------------- /www/static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/favicon.ico -------------------------------------------------------------------------------- /misc/art/big/black-huge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/big/black-huge.png -------------------------------------------------------------------------------- /misc/art/big/board-huge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/big/board-huge.png -------------------------------------------------------------------------------- /misc/art/big/bottom-try.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/big/bottom-try.png -------------------------------------------------------------------------------- /misc/art/big/center-try.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/big/center-try.png -------------------------------------------------------------------------------- /misc/art/big/white-huge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/big/white-huge.png -------------------------------------------------------------------------------- /misc/art/hover-good/first.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/hover-good/first.png -------------------------------------------------------------------------------- /misc/art/hover-good/last.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/hover-good/last.png -------------------------------------------------------------------------------- /misc/art/new/hover-first.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/new/hover-first.png -------------------------------------------------------------------------------- /misc/art/new/hover-last.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/new/hover-last.png -------------------------------------------------------------------------------- /misc/art/normal/backward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/backward.png -------------------------------------------------------------------------------- /misc/art/normal/forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/forward.png -------------------------------------------------------------------------------- /www/static/img/board-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/board-30.png -------------------------------------------------------------------------------- /www/static/img/dead-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/dead-black.png -------------------------------------------------------------------------------- /www/static/img/dead-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/dead-white.png -------------------------------------------------------------------------------- /www/static/img/email-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/email-off.png -------------------------------------------------------------------------------- /www/static/img/email-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/email-on.png -------------------------------------------------------------------------------- /www/static/img/ff-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/ff-hover.png -------------------------------------------------------------------------------- /www/static/img/grid-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/grid-hover.png -------------------------------------------------------------------------------- /www/static/img/highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/highlight.png -------------------------------------------------------------------------------- /www/static/img/last-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/last-hover.png -------------------------------------------------------------------------------- /www/static/img/rw-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/rw-hover.png -------------------------------------------------------------------------------- /misc/art/hover-good/forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/hover-good/forward.png -------------------------------------------------------------------------------- /misc/art/new/hover-backward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/new/hover-backward.png -------------------------------------------------------------------------------- /misc/art/new/hover-forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/new/hover-forward.png -------------------------------------------------------------------------------- /misc/art/new/reverse-motion.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/new/reverse-motion.psd -------------------------------------------------------------------------------- /www/static/img/first-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/first-hover.png -------------------------------------------------------------------------------- /www/static/img/ghost-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/ghost-black.png -------------------------------------------------------------------------------- /www/static/img/ghost-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/ghost-white.png -------------------------------------------------------------------------------- /www/static/img/grid-enabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/grid-enabled.png -------------------------------------------------------------------------------- /www/static/img/simple-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/simple-black.png -------------------------------------------------------------------------------- /www/static/img/simple-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/simple-white.png -------------------------------------------------------------------------------- /misc/art/email-small-progress.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/email-small-progress.psd -------------------------------------------------------------------------------- /misc/art/hover-good/backward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/hover-good/backward.png -------------------------------------------------------------------------------- /misc/art/hover-good/hover-last.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/hover-good/hover-last.png -------------------------------------------------------------------------------- /misc/art/normal/hover-forward.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/hover-forward.psd -------------------------------------------------------------------------------- /misc/art/normal/reverse motion.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/reverse motion.psd -------------------------------------------------------------------------------- /misc/art/normal/simple-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/simple-black.png -------------------------------------------------------------------------------- /misc/art/normal/simple-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/normal/simple-white.png -------------------------------------------------------------------------------- /www/static/img/email-off-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/email-off-hover.png -------------------------------------------------------------------------------- /www/static/img/email-on-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/email-on-hover.png -------------------------------------------------------------------------------- /www/static/img/grid-disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/grid-disabled.png -------------------------------------------------------------------------------- /www/static/img/loading-spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/loading-spinner.gif -------------------------------------------------------------------------------- /www/static/img/territory-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/territory-black.png -------------------------------------------------------------------------------- /www/static/img/territory-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/territory-white.png -------------------------------------------------------------------------------- /www/static/img/transparent-1x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/transparent-1x1.png -------------------------------------------------------------------------------- /misc/art/hover-good/hover-first.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/hover-good/hover-first.png -------------------------------------------------------------------------------- /www/static/img/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/www/static/img/apple-touch-icon.png -------------------------------------------------------------------------------- /misc/art/hover-good/hover-backward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/hover-good/hover-backward.png -------------------------------------------------------------------------------- /misc/art/hover-good/hover-forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepeck/game-of-go/HEAD/misc/art/hover-good/hover-forward.png -------------------------------------------------------------------------------- /www/templates/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /www/templates/game.sgf: -------------------------------------------------------------------------------- 1 | ( 2 | ;FF[4]GM[1]CA[UTF-8] 3 | PC[Dave Peck's Go: {{base_url}}] 4 | DT[{{start_date}},{{stop_date}}] 5 | GN[{{white_name}} vs {{black_name}}] 6 | PB[{{black_name}}] 7 | PW[{{white_name}}] 8 | RU[Japanese] 9 | SZ[{{board_size}}] 10 | KM[{{komi}}]{% ifnotequal handicap 0 %} 11 | HA[{{handicap}}] 12 | AB{% for h in handicap_stones %}[{{h}}]{% endfor %}PL[W]{% else %}PL[B]{% endifnotequal %} 13 | {% for m in moves %};{{m}} 14 | {% endfor %}) 15 | -------------------------------------------------------------------------------- /www/templates/fail.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | [Dave Peck's Go » Failed.] 4 | {% include "head.html" %} 5 | 6 | 7 |
8 |
9 |

Sorry, but an error occured:

10 |

{{message}}

11 |
12 |
13 | 14 | {% include "foot.html" %} 15 | 16 | 17 | -------------------------------------------------------------------------------- /www/index.yaml: -------------------------------------------------------------------------------- 1 | indexes: 2 | 3 | # AUTOGENERATED 4 | 5 | # This index.yaml is automatically updated whenever the dev_appserver 6 | # detects that a new type of query is run. If you want to manage the 7 | # index.yaml file manually, remove the above marker line (the line 8 | # saying "# AUTOGENERATED"). If you want to manage some indexes 9 | # manually, move them above the marker line. The index.yaml file is 10 | # automatically uploaded to the admin console when you next deploy 11 | # your application using appcfg.py. 12 | -------------------------------------------------------------------------------- /www/templates/foot.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 15 | -------------------------------------------------------------------------------- /www/templates/update-database.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [Dave Peck's Go » Options] 5 | {% include "head.html" %} 6 | 7 | 8 |
9 |
Database Update...
10 |
11 |
12 | 13 |
14 | Ensure reminder times for all items. 15 |
16 | 17 |
UPDATING...
18 | 19 |
20 |
21 |
22 | {% include "foot.html" %} 23 | 24 | -------------------------------------------------------------------------------- /www/cron.yaml: -------------------------------------------------------------------------------- 1 | # (c) 2009 Dave Peck, All Rights Reserved. (http://davepeck.org/) 2 | 3 | # This file is part of Dave Peck's Go. 4 | 5 | # Dave Peck's Go is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU Affero General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | 10 | # Dave Peck's Go is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | 15 | # You should have received a copy of the GNU Affero General Public License 16 | # along with Dave Peck's Go. If not, see . 17 | 18 | 19 | cron: 20 | - description: check for games that haven't been played in a while 21 | url: /cron/send-reminders/ 22 | schedule: every 3 minutes 23 | 24 | -------------------------------------------------------------------------------- /www/static/css/ie.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | (c) 2009 Dave Peck, All Rights Reserved. (http://davepeck.org/) 4 | 5 | This file is part of Dave Peck's Go. 6 | 7 | Dave Peck's Go is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU Affero General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | Dave Peck's Go is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU Affero General Public License 18 | along with Dave Peck's Go. If not, see . 19 | 20 | */ 21 | 22 | 23 | #chat 24 | { 25 | padding-top: 1em; 26 | } 27 | 28 | #grid_information 29 | { 30 | position: absolute; 31 | top: -2px; 32 | right: 0px; 33 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013, Dave Peck 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /www/secrets.py: -------------------------------------------------------------------------------- 1 | # (c) 2009 Dave Peck, All Rights Reserved. (http://davepeck.org/) 2 | 3 | # This file is part of Dave Peck's Go. 4 | 5 | # Dave Peck's Go is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU Affero General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | 10 | # Dave Peck's Go is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | 15 | # You should have received a copy of the GNU Affero General Public License 16 | # along with Dave Peck's Go. If not, see . 17 | 18 | 19 | #------ 20 | # This file contains secrets (usernames & passwords) that you need in order 21 | # to run the application, but which I don't want to distribute real values for 22 | # on github. (Sorry, but I can't give carte blanche to my twitter accounts :-) 23 | #------ 24 | 25 | twitter_user = "twitter_screen_name" 26 | twitter_pass = "twitter_password" 27 | 28 | dashboard_user = "dashboard" 29 | dashboard_pass = "dashboard" 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /www/simplejson/tool.py: -------------------------------------------------------------------------------- 1 | r""" 2 | Using simplejson from the shell to validate and 3 | pretty-print:: 4 | 5 | $ echo '{"json":"obj"}' | python -msimplejson 6 | { 7 | "json": "obj" 8 | } 9 | $ echo '{ 1.2:3.4}' | python -msimplejson 10 | Expecting property name: line 1 column 2 (char 2) 11 | 12 | Note that the JSON produced by this module's default settings 13 | is a subset of YAML, so it may be used as a serializer for that as well. 14 | """ 15 | import simplejson 16 | 17 | # 18 | # Pretty printer: 19 | # curl http://mochikit.com/examples/ajax_tables/domains.json | python -msimplejson.tool 20 | # 21 | 22 | def main(): 23 | import sys 24 | if len(sys.argv) == 1: 25 | infile = sys.stdin 26 | outfile = sys.stdout 27 | elif len(sys.argv) == 2: 28 | infile = open(sys.argv[1], 'rb') 29 | outfile = sys.stdout 30 | elif len(sys.argv) == 3: 31 | infile = open(sys.argv[1], 'rb') 32 | outfile = open(sys.argv[2], 'wb') 33 | else: 34 | raise SystemExit("%s [infile [outfile]]" % (sys.argv[0],)) 35 | try: 36 | obj = simplejson.load(infile) 37 | except ValueError, e: 38 | raise SystemExit(e) 39 | simplejson.dump(obj, outfile, sort_keys=True, indent=4) 40 | outfile.write('\n') 41 | 42 | 43 | if __name__ == '__main__': 44 | main() 45 | -------------------------------------------------------------------------------- /www/simplejson/jsonfilter.py: -------------------------------------------------------------------------------- 1 | import simplejson 2 | import cgi 3 | 4 | class JSONFilter(object): 5 | def __init__(self, app, mime_type='text/x-json'): 6 | self.app = app 7 | self.mime_type = mime_type 8 | 9 | def __call__(self, environ, start_response): 10 | # Read JSON POST input to jsonfilter.json if matching mime type 11 | response = {'status': '200 OK', 'headers': []} 12 | def json_start_response(status, headers): 13 | response['status'] = status 14 | response['headers'].extend(headers) 15 | environ['jsonfilter.mime_type'] = self.mime_type 16 | if environ.get('REQUEST_METHOD', '') == 'POST': 17 | if environ.get('CONTENT_TYPE', '') == self.mime_type: 18 | args = [_ for _ in [environ.get('CONTENT_LENGTH')] if _] 19 | data = environ['wsgi.input'].read(*map(int, args)) 20 | environ['jsonfilter.json'] = simplejson.loads(data) 21 | res = simplejson.dumps(self.app(environ, json_start_response)) 22 | jsonp = cgi.parse_qs(environ.get('QUERY_STRING', '')).get('jsonp') 23 | if jsonp: 24 | content_type = 'text/javascript' 25 | res = ''.join(jsonp + ['(', res, ')']) 26 | elif 'Opera' in environ.get('HTTP_USER_AGENT', ''): 27 | # Opera has bunk XMLHttpRequest support for most mime types 28 | content_type = 'text/plain' 29 | else: 30 | content_type = self.mime_type 31 | headers = [ 32 | ('Content-type', content_type), 33 | ('Content-length', len(res)), 34 | ] 35 | headers.extend(response['headers']) 36 | start_response(response['status'], headers) 37 | return [res] 38 | 39 | def factory(app, global_conf, **kw): 40 | return JSONFilter(app, **kw) 41 | -------------------------------------------------------------------------------- /www/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | 15 | [Dave Peck's Go] 16 | 17 | 18 | 19 | 20 |
21 |
Go.
22 |
Play Go online with your 23 | friends. It’s fun, easy to get started, and 24 | free!
25 |
26 |
This site was built by Dave Peck and other 28 | members of the Go community.
29 |
30 | 31 |
32 | 33 | 34 | 38 | 45 | 46 | -------------------------------------------------------------------------------- /www/app.yaml: -------------------------------------------------------------------------------- 1 | # (c) 2009 Dave Peck, All Rights Reserved. (http://davepeck.org/) 2 | 3 | # This file is part of Dave Peck's Go. 4 | 5 | # Dave Peck's Go is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU Affero General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | 10 | # Dave Peck's Go is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | 15 | # You should have received a copy of the GNU Affero General Public License 16 | # along with Dave Peck's Go. If not, see . 17 | 18 | # application: davepeck-go-hrd -- no longer needed in modern gcloud cli land? 19 | # version: 10-python27 20 | runtime: python27 21 | api_version: 1 22 | threadsafe: true 23 | 24 | inbound_services: 25 | - warmup 26 | 27 | handlers: 28 | - url: /img 29 | static_dir: static/img 30 | secure: always 31 | 32 | - url: /css 33 | static_dir: static/css 34 | secure: always 35 | 36 | - url: /js 37 | static_dir: static/js 38 | secure: always 39 | 40 | - url: /favicon.ico 41 | static_files: static/img/favicon.ico 42 | upload: static/img/favicon.ico 43 | secure: always 44 | 45 | - url: /apple-touch-icon.png 46 | static_files: static/img/apple-touch-icon.png 47 | upload: static/img/apple-touch-icon.png 48 | secure: always 49 | 50 | - url: /cron/.* 51 | script: go.application 52 | login: admin 53 | secure: always 54 | 55 | - url: /export/.* 56 | script: go.application 57 | login: admin 58 | secure: always 59 | 60 | - url: /_ah/warmup 61 | script: go.application 62 | login: admin 63 | secure: always 64 | 65 | - url: /.* 66 | script: go.application 67 | secure: always 68 | 69 | instance_class: F1 70 | automatic_scaling: 71 | min_instances: 0 72 | max_instances: 1 73 | -------------------------------------------------------------------------------- /www/static/js/sound.js: -------------------------------------------------------------------------------- 1 | // script.aculo.us sound.js v1.8.2, Tue Nov 18 18:30:58 +0100 2008 2 | 3 | // Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) 4 | // 5 | // Based on code created by Jules Gravinese (http://www.webveteran.com/) 6 | // 7 | // script.aculo.us is freely distributable under the terms of an MIT-style license. 8 | // For details, see the script.aculo.us web site: http://script.aculo.us/ 9 | 10 | Sound = { 11 | tracks: {}, 12 | _enabled: true, 13 | template: 14 | new Template(''), 15 | enable: function(){ 16 | Sound._enabled = true; 17 | }, 18 | disable: function(){ 19 | Sound._enabled = false; 20 | }, 21 | play: function(url){ 22 | if(!Sound._enabled) return; 23 | var options = Object.extend({ 24 | track: 'global', url: url, replace: false 25 | }, arguments[1] || {}); 26 | 27 | if(options.replace && this.tracks[options.track]) { 28 | $R(0, this.tracks[options.track].id).each(function(id){ 29 | var sound = $('sound_'+options.track+'_'+id); 30 | sound.Stop && sound.Stop(); 31 | sound.remove(); 32 | }); 33 | this.tracks[options.track] = null; 34 | } 35 | 36 | if(!this.tracks[options.track]) 37 | this.tracks[options.track] = { id: 0 }; 38 | else 39 | this.tracks[options.track].id++; 40 | 41 | options.id = this.tracks[options.track].id; 42 | $$('body')[0].insert( 43 | Prototype.Browser.IE ? new Element('bgsound',{ 44 | id: 'sound_'+options.track+'_'+options.id, 45 | src: options.url, loop: 1, autostart: true 46 | }) : Sound.template.evaluate(options)); 47 | } 48 | }; 49 | 50 | if(Prototype.Browser.Gecko && navigator.userAgent.indexOf("Win") > 0){ 51 | if(navigator.plugins && $A(navigator.plugins).detect(function(p){ return p.name.indexOf('QuickTime') != -1 })) 52 | Sound.template = new Template(''); 53 | else 54 | Sound.play = function(){}; 55 | } -------------------------------------------------------------------------------- /www/templates/options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [Dave Peck's Go » Options] 5 | {% include "head.html" %} 6 | 7 | 8 |
9 |
Options...
10 |
11 |
12 | 13 | 15 |
16 | {% ifequal your_contact_type "email" %}Your email:{% endifequal %}{% ifequal your_contact_type "twitter" %}Your twitter:{% endifequal %} 17 | 18 |
19 |

 

20 |
21 | Your twitter password: 22 |
23 | 24 | 25 | 26 |
27 |
28 |
29 | {% include "foot.html" %} 30 | 31 | -------------------------------------------------------------------------------- /www/simplejson/scanner.py: -------------------------------------------------------------------------------- 1 | """ 2 | JSON token scanner 3 | """ 4 | import re 5 | try: 6 | from simplejson._speedups import make_scanner as c_make_scanner 7 | except ImportError: 8 | c_make_scanner = None 9 | 10 | __all__ = ['make_scanner'] 11 | 12 | NUMBER_RE = re.compile( 13 | r'(-?(?:0|[1-9]\d*))(\.\d+)?([eE][-+]?\d+)?', 14 | (re.VERBOSE | re.MULTILINE | re.DOTALL)) 15 | 16 | def py_make_scanner(context): 17 | parse_object = context.parse_object 18 | parse_array = context.parse_array 19 | parse_string = context.parse_string 20 | match_number = NUMBER_RE.match 21 | encoding = context.encoding 22 | strict = context.strict 23 | parse_float = context.parse_float 24 | parse_int = context.parse_int 25 | parse_constant = context.parse_constant 26 | object_hook = context.object_hook 27 | 28 | def _scan_once(string, idx): 29 | try: 30 | nextchar = string[idx] 31 | except IndexError: 32 | raise StopIteration 33 | 34 | if nextchar == '"': 35 | return parse_string(string, idx + 1, encoding, strict) 36 | elif nextchar == '{': 37 | return parse_object((string, idx + 1), encoding, strict, _scan_once, object_hook) 38 | elif nextchar == '[': 39 | return parse_array((string, idx + 1), _scan_once) 40 | elif nextchar == 'n' and string[idx:idx + 4] == 'null': 41 | return None, idx + 4 42 | elif nextchar == 't' and string[idx:idx + 4] == 'true': 43 | return True, idx + 4 44 | elif nextchar == 'f' and string[idx:idx + 5] == 'false': 45 | return False, idx + 5 46 | 47 | m = match_number(string, idx) 48 | if m is not None: 49 | integer, frac, exp = m.groups() 50 | if frac or exp: 51 | res = parse_float(integer + (frac or '') + (exp or '')) 52 | else: 53 | res = parse_int(integer) 54 | return res, m.end() 55 | elif nextchar == 'N' and string[idx:idx + 3] == 'NaN': 56 | return parse_constant('NaN'), idx + 3 57 | elif nextchar == 'I' and string[idx:idx + 8] == 'Infinity': 58 | return parse_constant('Infinity'), idx + 8 59 | elif nextchar == '-' and string[idx:idx + 9] == '-Infinity': 60 | return parse_constant('-Infinity'), idx + 9 61 | else: 62 | raise StopIteration 63 | 64 | return _scan_once 65 | 66 | make_scanner = c_make_scanner or py_make_scanner -------------------------------------------------------------------------------- /www/static/js/scriptaculous.js: -------------------------------------------------------------------------------- 1 | // script.aculo.us scriptaculous.js v1.8.2, Tue Nov 18 18:30:58 +0100 2008 2 | 3 | // Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining 6 | // a copy of this software and associated documentation files (the 7 | // "Software"), to deal in the Software without restriction, including 8 | // without limitation the rights to use, copy, modify, merge, publish, 9 | // distribute, sublicense, and/or sell copies of the Software, and to 10 | // permit persons to whom the Software is furnished to do so, subject to 11 | // the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be 14 | // included in all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20 | // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21 | // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22 | // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | // 24 | // For details, see the script.aculo.us web site: http://script.aculo.us/ 25 | 26 | var Scriptaculous = { 27 | Version: '1.8.2', 28 | require: function(libraryName) { 29 | // inserting via DOM fails in Safari 2.0, so brute force approach 30 | document.write('