This is test page that we navigate to as part of testing various navigation styles. It includes a form so that we can test saving and restoring of form data, and it needs to be long enough that we can test saving and restoring of scroll position.





Here are some form elements
that we can use for testing
 Male
 Female
 option #1
 option #2

Initial Value
foo
Value set by User that should be Restored
bar



Now

some

filler

so

the

doc

is

long

enough

to scroll.

This is an anchor point named "anchor1".

============== Back Forward List ==============
        http://127.0.0.1:8000/navigation/relativeanchor-goback.html
        http://127.0.0.1:8000/navigation/resources/success200.html
curr->  http://127.0.0.1:8000/navigation/resources/success200.html#anchor1
        http://127.0.0.1:8000/navigation/resources/otherpage.html
===============================================
