Recent Changes - Search:

Last Year's Class Web

Staff Login

Main / HomePage

This is the archived web page for CS559 from 2010. If you were looking for the fall 2014 offering of the class and were directed here by mistake, please go to

559 Calendar

This is the web for CS559 Computer Graphics for Fall, 2010.

This will be the news and announcement page. If you're looking for basic information about the class, check Main.BasicInfo.

Check out the rss feed of this page, if you prefer to get your information that way. Either way, you will be held accountable for the information that appears on this page. This page will be updated frequently.

There is also a Google Calendar for this class. In addition to the agenda to the right, and the Calendar page, you can subscribe to it via ical or xml if your calendar supports it.

December 24,2010 by sghosh (link)
Graphics Town Compilation

Some of the coolest graphics towns that were made. Check them out here - Town

December 23,2010 by gleicher (link)
Final Exam

The answer key (if you're curious) is at pub:final2010-key.pdf

The mean was 70, the median was 64. The distribution was incredibly bimodal: only 1 person scored in the 70s. People either score above 80 (AB or 92 and higher for an A), or below 67 (BC >= 62, C>50).

If you would like to see your exam, send email to the professor.

December 22,2010 by gleicher (link)
Finals and Final Grades

Information about the final (including the answer key and grade distributions) will be posted here, probably tomorrow.

We have done all grading (including the final grades). The registrar should have them tomorrow.

December 20,2010 by gleicher (link)
Review Materials

Main.Review2 and Main.Review should be pretty complete. All audio has been uploaded (I seem to be missing the audio for 1 lecture).

December 17,2010 by gleicher (link)

While the exam will be cummulative, the focus will be on the material after the midterm.

I have been keeping a "review" page listing the topics, with links to notes and audio at Main.Review2. I need to update it with the past 2 weeks worth of stuff, and I have a backlog of audio to process. This will most likely happen Monday.

The review page for the first part of the semester is at Main.Review.

The exam is Wednesday, December 22nd, at 12:25 in room 1325 Comp Sci (the same room as class).

December 16,2010 by gleicher (link)
P4 Demos

In case we didn't make it clear, Project 4 demos are in 1358, between 1:30 and 4:00. please come a minute or two early if possible.

December 13,2010 by sghosh (link)
Project #4 Demo Signup Sheet

There are a few of you who haven't selected a slot for the demo session on Thursday (Dec 16). Please do it asap. The signup sheet is available outside my office door.

December 13,2010 by gleicher (link)
Project 3 Grades (and grades in general)

We haven't given you actual final grades for things: it seems that no matter where we put the cutoffs, there are always people right on the borders. Roughly, >3.7 is an A, >3.2 is an AB, etc. But if you're close, we usually tend to round up, but we might look more closely at your assignment, consider if it was on time, etc.

December 12,2010 by gleicher (link)
Project 3 Grades

Subhadip will soon (if he hasn't already - although if he has, they are a little low, since I just adjusted the curve a little on the painting) send you information on your project 3 grades.

For each aspect of the project, we have you a grade. Your final grade is 10% Blur, 20% upsampling, 20% downsampling, 40% painting, and 10% answering questions.

For blur, you either got it (A), or you didn't.

For downsampling, you either got (F) nothing, (C) the basic thing to work (no filtering), (B) some filtering, or (A) demonstrated multiple filter types.

For upsampling, you either got (F) nothing, (C) the basic thing to work (no filtering), (B) some filtering, or (A) demonstrated multiple filter types.

Painting was more subjective. Subhadip and I both scored them independently, and then came up with a final grade based on our combined opinions. The grades spanned the entire range (0-4 - with fractions given), where 2 (C) approximately meant you had something that looked painted, 3 (B) if you had a complete basic algorithm (some degree of randomness in stroke order), and an A if you got something really cool.

The painting grades (and therefore the overall grades) are a lower bound: we made a mistake and were a little too harsh, and will probably add about .25 to each one that isn't already an A.

In case you were wondering, the mean grade was a B. The median is at the border of B/AB.

December 8,2010 by gleicher (link)
Shader Lighting

Here is a simple tutorial on how to do lighting in a shader:

If I were doing it, I might start by hard-coding the colors and light information into the shader to make it even simpler.

December 8,2010 by gleicher (link)
Shader Clarification

There was a clarification on what it means to have a "shader affected by light" posted to project 4.

Also, the documents on shaders are listed at the bottom of Main.Practice3. This is just 2 of the things listed:

Chapter 15 of the OpenGL red book gives a good introduction to GLSL. (if you don't have a 6th (or later) edition red book, a scan of Chapter 15 is here (only accessable with a UW CS account). We'll also provide an GLSL reference, Appendix I of the Redbook, here.

December 6,2010 by gleicher (link)
Art Class

There is a "Technology and Art" class, being taught in the art department, that might be of interest to you. Information available here.

And don't forget about the VR class.

December 4,2010 by gleicher (link)
Project 4, Checkpoint 2

On Wednesday, December 8th, you must turn in Project Checkpoint 2. If you do not want your final project to be considered late, you must turn in something for this checkpoint.

Please send email to Subhadip with:

  • 1 or 2 pictures - they should show that your program has gotten beyond what the starting code does
  • a description of your overall idea for the project
  • a list of the technical challenges that you intend to implement
  • a few of more complicated objects/behaviors that you intend to implement
  • whether you would be willing to give a demo on Thursday, December 16th, and whether you could give a demo between 1-4pm (15 minute time slot).

December 3,2010 by gleicher (link)
The Actual Project 4 Deadline

The project is "officially" due on Wednesday, December 8th. However, we actually encourage you to turn it in "late", because we would prefer for you to do a better project than to have something on time.

I would say "there is no penalty for being late" (which effectively makes the due date the following week), but this is unfair to people who have been saving their "late pass" for this last assignment. So, there's a (slightly complicated) scheme desribed below.

The project is due on Wednesday, December 15th. However, because of a scheduling concern, demos will be on Tuesday (time to be determined). However, if you are willing to give your demo on study day, Thursday, December 16th, we will allow/encourage that. (I cannot require you to do something on study day).

If your demo is on Tuesday, your project is due 1 minute before the scheduled start of your demo. If your demo is on Thursday, your project is due Wednesday. We cannot accept projects after demos are over on Thursday. So if you don't hand something in before demos, you get nothing.

Here's the late policy:

  • If you do not complete Checkpoint 2 on time, your project is considered late and will be penalized according to the standard late policy.
  • If all of your previous projects are on time, we will consider this one on time as well - providing you turn it in before the demos.
  • If you turn in this project late, we will not penalize it.
  • Previous projects will be penalized for being late. But this penalty depends on how "consistently late" you were.
  • If you turned in 1 or 2 of the previous projects late, and think that you might prefer showing that you are consistently on time (rather than having a better project), contact the instructor before December 8th. And we'll figure out the details on a case-by-case basis to help you determine whether or not you are better off just having a better Project 4.

December 3,2010 by gleicher (link)
Project 2 Grades

Because of a glitch, we didn't get project 2 grades back to you. You should get them today or over the weekend. A description of how we determined grades is at Main.Project2Grading.

December 2,2010 by sghosh (link)
Project 4: Checkpoint 1

While most of you have sent in your checkpoint images there are a couple of you who haven't. Please make sure that you send in the images asap.

December 1,2010 by gleicher (link)
Perception and Virtual Reality

On Friday, we'll talk about depth perception, and take a segway to talk about stereo and virtual reality (which involve creating non-standard depth cues).

Kevin Ponto will come to talk about next semester's "Projects in VR class" (which is described here).

November 27,2010 by gleicher (link)
This week in CS559

This week in 559, we'll shift topics a bit and talk about human perception and how it influences graphics, including how we display color. The main readings are Chapters 22 and 21 of the Shirley and Marschner textbook (recommended in that order - the chapter on human perception will help you understand color). There will be some optional readings if you are interested.

Don't forget: the project 4 checkpoint is Wednesday. If you miss the checkpoint, we'll have less lenience on you being late with future checkpoints.

November 24,2010 by gleicher (link)
Readings on Advanced Texturing

Today's discussion on advanced texturing, pretty much comes from Section 5.7 of the 2nd edition Real-time Rendering book (provided (here)). However, this book is a bit dated - now that we have programmable shaders, much more is possible!

A better reading comes from the newer edition of the book. It is provided here.

November 23,2010 by gleicher (link)
Projects in Virtual Reality Class

The Virtual Reality class really will happen next semester.

Information about it is at:

November 21,2010 by gleicher (link)
Finding partners

If you'd like to find a partner:

  • Hang around after class on Monday and talk to people
  • Send email to Subhadip saying that you're looking for a partner. He'll email that list to everyone on the list.

Remember: you must pick a partner and send email to Subhadip telling him that you intend to work together on Wednesday, November 24th.

November 18,2010 by gleicher (link)
Project 4

Project 4, Graphics Town, is now announced at Main.Project4. There are some small changes from last year. I recommend you read over the project materials soon and ask questions now. There's a lot of description.

Please be aware of a number of deadlines:

  • November 24th (basically before Thanksgiving) - you must give your intent to work with a partner (which is allowed for this project)
  • December 1st - there is a checkpoint to show that you have at least started on the project
  • December 8th - even if you are turning in the project late, you must complete a status report (to be explained later)

November 17,2010 by gleicher (link)
The next practice program

The next practice program, writing shaders and using textures, is due before Thanksgiving. Its Main.Practice3

November 16,2010 by gleicher (link)
A Hint on TGA files

LibTarga does care about the alpha channel, although you might not. Its a good idea to set the alpha to 255 so that other programs can look at your output.

November 16,2010 by gleicher (link)
More Graphics Next Semester?

If you think you like graphics, there are several opportunities to do more of it next semester:

  • Prof. Dyer will teach CS534 Computational Photography (and undergrad-level class)
  • I will teach CS777 Computer Animation - this is a grad level class, but undergrads can take it (although you might want to talk to me first)
  • There is a might be an undergraduates special topics class "Projects in Virtual Reality" focused on building virtual environments. If you are interested in this, let me know.
  • There are always opportunities for projects and research. Either directed studies, undergrad honors thesis, master's projects, masters thesis, ... If you're interested, its best to come talk to me.

November 15,2010 by sghosh (link)
TA Office Hours this week

I (the TA) will be away this Wednesday and Thursday (Nov 17,18) and I won't be able to hold office hours on these days. In case you need any help drop me a mail.

November 13,2010 by sghosh (link)
Assignment 4 Solution

The solution to written assignment 4 is now available here

November 10,2010 by gleicher (link)
Exam Grades

Some people missed this: The mean (and median) of the exam was 63. While we won't determine the exact cutoff for grades until the end, the mean is usually in the middle of the B range. High 70s or above are most likely As (the standard deviation is about 12).

OK, an unofficial grade chart: >=75 A, >=67 AB, >=58 B, >=54 BC, >=50 C. That is subject to change.

We know the exam was hard (it was supposed to be hard, but maybe was a little too hard).

November 9,2010 by gleicher (link)
Notes on What Happened in Lecture

I have been keeping track of what we discuss in lecture, including links to the notes, on the page Main.Review2. This page is mainly meant for exam review at the end of the semester, but you might find it useful as an index to the notes (and a reminder of what you were supposed to have read). The audio recordings can be found at pub:audio

November 7,2010 by gleicher (link)
The Week in 559 11/8-11/12

This week, we'll wrap up our exploration of image processing. The written homework assignment will help you get ready for the project due next week. We'll also do train demos.

  • Monday 11/8 - We'll finish up sampling theory and see what it means in practice for implementing resampling, and what kinds of filter kernels may be useful. Chapter 9 of Shirley and Marschner will be very relevant.
  • Wednesday 11/10 - We'll talk about more complex resampling operations such as warping and morphing, and other tricks that might be useful for manipulating photographs. Sections of the Szeliski book chapter will be applicable.
  • Friday 11/12 - We'll connect all of the image processing things back to geometric graphics and drawing. We'll also talk about image file formats and compression a little.

November 5,2010 by gleicher (link)
My Notes

In case you haven't realized (I thought I posted this, but maybe I didn't) my notes (generally posted after lectures) are here. Audio recordings (sometimes after a little delay) are here.

November 4,2010 by gleicher (link)
Project 2 Demos

We will do project 2 demos on Wednesday 11/10 between 1:30 and 3, and Thursday 11/11 between 12:30 and 2pm. Like last time, there will be a signup sheet for 15 minute slots. We will have it available before class tomorrow (Friday, 11/5).

November 3,2010 by gleicher (link)
Exam Statistics

In case you are wondering (we will get exams back to you either Friday or Monday):

  • The mean and median on the exam were 61 (62.1 and 61.5 to be precise).
  • At least one person got all the points on each question (i.e. there were no impossible questions)
  • The high score was 95

November 3,2010 by gleicher (link)
Project 3

Project 3 is announced at Main.Project3.

November 2,2010 by gleicher (link)
Project 2 "Very Late" Policy

If you haven't turned in Project 2 yet, it is "very late". We will continue to accept very late projects through Wednesday (November 3rd), since we want to begin grading. (and you really should be moving on to the new assignments).

We will be scheduling demos for next week (details coming soon), but we want to look over what has been handed in first to get a sense of how to schedule.

November 2,2010 by gleicher (link)
Written Assignment 4

Written Assignment 4 is posted and is due on Wednesday, November 10th. This is important practice for the project. You can also expect to see exam questions of this form.

November 1,2010 by gleicher (link)

To answer the question in class (in hindsight I should have known this): Convolution is distributive, and distributes with addition (so it acts as a multiplication operator, see p. 194 of S&M). This is actually going to be important when we talk about superposition (although, we might not actually use that term).

November 1,2010 by gleicher (link)
Black Notebook

Someone left a black notebook in my office after office hours last monday (10/25). It is on the shelf outside my office.

November 1,2010 by gleicher (link)
This week in 559

We'll really dig into image processing, building up the foundations and seeing how we can do some useful things. You should be reading from the Szeliski book chapter (3.1 and 3.2, 3.4 gets at the theory a little deeper than you might want, and 3.6 talks about geometric transformations (basically resampling - although he comes at it from a different direction). You should also read Shirley and Marschner Chapter 9 that describes think much more similarly to the way I come at them.

The practice program will help get you ready for the upcoming programming project (to be announced midweek).

In lectures:

  • Monday: we'll discuss region-based operations and convolutions as a setup for doing signal theory and resampling.
  • Wednesday: we'll actually get to resampling - hopefully in both theory and practice.
  • Friday: we'll talk about resampling again - its one of those things you need to see multiple times before it all fits together.

October 31,2010 by gleicher (link)
Practice Programming Assignment

Practice Program 2 has been announced. It there to get you ready for the next project (coming soon!)

October 27,2010 by gleicher (link)
P2 Late Policy

We are extending the "late" period for Project 2.

Projects turned in before Tuesday, November 2nd (e.g. on Monday) will be considered "late". Projects turned in Tuesday or later will be considered very late.

Remember: the next programming assignment will be due next week, and the next project will soon follow. So you probably don't want to delay too much.

October 27,2010 by gleicher (link)
Limited Email for the Next Few Days

It turns out that my internet connection here in Salt Lake is much worse than I thought it would be, so it will be difficult for me to be as responsive to questions as I would like before Saturday.

I understand that this might be a little inconvenient for last-minute project questions. Subhadip can help as well.

October 25,2010 by gleicher (link)
Project 1 Feedback

You should (or will soon) get email from Subhadip with feedback on Project 1. An explanation is here.

October 25,2010 by sghosh (link)
Tomorrow's Office Hour

Since Professor Gleicher will be out of town tomorrow, I'll be there in his place, in my office, during the same time.

October 24,2010 by gleicher (link)
The week in 559 (10/25-10/29)

This week, we'll move into image-based graphics.

  • Monday, we'll do a quick overview of some image processing basics, and lay some of the groundwork for the rest of our work in image processing.
  • Wednesday, Perry Kivolowitz will give a guest lecture discussing some of the applications of image-based computer graphics in order to motivate the kinds of things we're going to learn about.
  • Friday, Charles Dyer will give a lecture on Computational Photography. This will relate the kinds of things we'll learn about to taking and fixing pictures.

The readings for this week is Chapter 3 of Rick Szeliski's Computer Vision book. We won't follow the book directly, but cover some of the ideas in 3.1 (but not 3.1.4) and 3.2.

To be honest, I don't expect people to do much reading for this week, since you'll probably be focused on Project 2, which is due Wednesday.

October 22,2010 by gleicher (link)
Midterm Answer Key

Is available here.

We have not yet graded them.

October 20,2010 by sghosh (link)
Correction to HW3

Q1E. Since we are connecting a cubic bezier curve to a quadratic bezier curve and it has a C(1) continuity, 3(P4 - P3) = 2(P5 - P4). (P5 is the second point on the new curve) so P5 comes out to be (3.5,-.5) and not (3,0)

October 17,2010 by gleicher (link)
Topics for the Exam

The Midterm (Wednesday night, 7:15-9pm, 1325 CS) will cover everything up to and including surfaces. Texture (the topic we will start on Monday) will not be covered.

We have made a Review page to remind you of the topics we've covered, and to give you links to some notes that might help.

October 16,2010 by sghosh (link)
All Written Homework Solutions

All the homework solutions are now accessible from here - HW1 HW2 HW3

October 15,2010 by sghosh (link)
Written Assignment 3

Solution Key to the assignment has been mailed to your cs.wisc account.

October 15,2010 by gleicher (link)
The Week in 559 10/18-10/22

Next week (starting Monday 10/18) we'll be discussing texturing. You should read:

  • The book chapter (Shirley&Marschner 11) doesn't have quite enough detail, but its a good start.
  • You should also read the begining of the chapter in the OpenGL book (OGL9), but this chapter quickly goes to gory details of the library (which is a useful reference when programming, but less useful in getting the idea)
  • Parts of the Chapter from Real-Time Rendering. In the old version, its Chapter 5 (and provided at pub:RTR2-texturing.pdf). The new (3rd edition) chapter is better, but I cannot provide it online. This Chapter covers a lot of advanced stuff - you can probably figure out what's important based on the lectures).

Note: discussions of texturing quickly get into discussions of sampling, aliasing, image filtering, and related topics. We will be talking about those topics in detail later in the class.

The big event next week is, of course, the midterm exam on Wednesday night (7:15-9pm, in 1325CS). More details about the exam (including a summary of the topics we've covered in class to help you prepare) will be coming soon.

October 12,2010 by gleicher (link)
Surfaces Readings

The readings for surfaces are available here

October 11,2010 by sghosh (link)
Project #1 Demos

The project demos will take place in Lab 1358. Please be there on time.

If you have not signed up for the demo please do the same as soon as possible. You will find the sign-up sheet on my office door (CS 1301).

October 8,2010 by gleicher (link)
Announcements and next week

As you hopefully have noticed, there were several announcements that are pretty important:

Next week, we will do Project 1 demos. The written assignment will be good practice for the exam (which is the following week).

In class, we'll wrap up curves, talking about some pragmatic issues and approximating curves. The syllabus says lighting, but we'll really use that as a way to talk about smooth surfaces.

You'll notice that it still says "TBD" for the reading. Unfortunately, the book doesn't cover surfaces, and I don't have a reading that I am completely satisfied with. There will be something to read posted next week.

October 8,2010 by gleicher (link)
Project 2

Project 2, Trains and Roller Coasters has been announced here.

October 8,2010 by gleicher (link)
Written Assignment 3

The written assignment, due Wednesday October 13, is posted here.

October 6,2010 by gleicher (link)
Audio Files

The audio recordings from the lectures are being placed in pub:audio.

October 6,2010 by gleicher (link)
Project 1 Demos

We will do in-person demos of project 1 as part of the grading. You will come to the lab (1358), and show of your program for us. This demo will probably only take a few minutes, but we schedule people for 15 minute blocks so that we have some slack.

You will need to sign up for a 15 minute time slot during the 2 demo periods (Monday, October 11 3:15-5:45 and Thursday October 14 4:00-5:45).

There will be a signup sheet available in class on Friday, 10/8. After class, the signup sheet will be on Subhadip's door.

If you cannot make any of these times, please email the TA before class on Friday, and we will try to make alternative arrangements for you. If all of the times that are convenient for you are taken, please try to swap with others.

October 5,2010 by gleicher (link)
A Hint for P1

There is a hint for computing the end effector positions posted in the project page.

October 4,2010 by gleicher (link)
Project 1 Late Grading and Late Policy

There was a typo on the assignment that said that late assignments were due until a day last year. That's been fixed.

We will be doing in-person demonstrations of Project 1 next week. The details will be coming soon, but everyone will be asked to come for a (roughly) 10 minute demo either Monday or Thursday of next week. You will need to sign up for a demo slot - details will be announced on Wednesday.

Because we cannot accept projects once grading/demos have begun, all projects are due before Monday (the 11th). (that is, they are due on 10/10). However, we will give a slight extension: we will consider projects turned in before Monday "late" (not "very late"). of course, projects turned in Wednesday 10/6 (before Thursday) are on time.

September 26,2010 by gleicher (link)
This week in 559 (September 26-October 1)

This week in 559, we'll talk more about how shaded triangles get to the screen (what OpenGL and the graphics hardware are doing for you) - this includes more about shading, as well as other aspects of the graphics pipeline. We're going in a slightly different order than the Syllabus

  • Readings: By the end of this week, we'll have covered the topics in the textbook chapters 6,7,8 and 10, and the OpenGL book 3 and 5.
  • Assignments: Written 2 is due on Wednesday
  • Project 1 is due next Wednesday. You already have all the material you need to do it. Start early.

September 25,2010 by gleicher (link)
Written Assignment 2

Is available at Main.Written2

September 22,2010 by gleicher (link)
No Partners for Project 1

It never said this, but each person needs to do their own Project 1. We will allow people to work in pairs on some (but not all) of the projects.

September 20,2010 by gleicher (link)
Project 1

The first project is announced here. It is due Wednesday, October 6th.

September 19,2010 by gleicher (link)
Typos in assignment

We just fixed 2 typos in the written assignment. The first one in Q1 Part B - It is Q1A we are referring to and not Q2A. And second in Q4 - The vertices of the triangle are (1,1) (2,1) (1,2) and not (1,1) (2,1) (2,1)

September 17,2010 by gleicher (link)
Written Assignment 1

The written assignment is posted here. It is due Wednesday, September 22nd.

September 16,2010 by gleicher (link)
Change of Calendar

We've changed around the calendar a little bit. The first project won't be due until October, but we'll have a second written assignment before it. Information on these will be coming soon

September 15,2010 by sghosh (link)
Survey: You need to take it

The survey is used to help us plan the course - your answers won't be considered in grading or anything.

Please follow the link here and take the CS559 class survey. Please keep in mind you are required to take this survey.

September 13,2010 by gleicher (link)
Handin Directories

Handin directories have been created for everyone who is on the current class roster.

Your handin directory is /p/course/cs559-gleicher/handin/X (where X is your CS account name). On a windows machine, this looks like P:\course\cs559-gleicher\handin

Within your handin directory, there is a subdirectory for each programming assignment or project.

September 10,2010 by sghosh (link)
FlTk update

If you want to get a copy of FlTk for VS2008 for your home machine, you can download it here. Note: The version given on the FLTK Tutorial page old version might not work with VS2008. But the installation procedure is similar; so until I update that page you can refer that.

If you're using it on CSL windows machines, note that the directory is S:\fltk\i386_winxp\vs9 (vs9 is for vs2008).

September 10,2010 by sghosh (link)
Getting Visual Studio 2008

As students, all of you can access full versions of Microsoft products (including Visual Studio 2008) free of cost. All you need to do is follow this link -, create an account and download the software.

Those of you who have taken the disk from me, go to the Dreamspark site, create a student account with your @wisc id and click far enough to get the product key. Once you get the key, use it while installing from the disk!

September 7,2010 by gleicher (link)
Visual Studio 2008 at Home

If you want to work on your own computer (at home or a laptop), you will need Visual Studio 2008. You can borrow a disk from Subhadip. Note: you need Visual Studio 2008 with the service pack.

Unfortunately, the CSL is not upgrading to Visual Studio 2010 for this semester, so the machines in the computing labs are still running 2008. This means that if you have a newer version at home, you'll need to convert things when you hand them in.

September 7,2010 by gleicher (link)
First Assignments

Some of you looked at the Syllabus and notice that there are some things due soon. The survey isn't ready yet (we'll give you details soon), but the first programming assignment is.

Practice programming assignment 1 is here. It basically asks you to write a simple program with OpenGL/FlTk.

One issue is that CSL has not yet updated FlTk. You can use the old version - they should be the same as far as the class is concerned.

September 1,2010 by gleicher (link)
Web page is live!

The 559 web page for 2010 is alive! we're still putting things together, but you can get the basic information (like the books you need) and some idea of the course schedule.

See everyone on class Friday!

August 30,2010 by gleicher (link)
Test Announcement

This is a first test announcement so I can see if the announcement thing works!

History - Print - Recent Changes - Search
Page last modified on September 01, 2014, at 01:15 PM