| DNS:: (part:: [a-zA-Z0-9\-]++) ++/ "."
Port:: = (":" `tok.Int)?
-username:: = [a-zA-Z0-9;/?:&=$\-_.+]++
-password:: = [a-zA-Z0-9;/?:&=$\-_.+]++
+username:: = [a-zA-Z0-9;?:&=$\-_.+]++ // slashes in usernames conflict with urls
+password:: = [a-zA-Z0-9;?:&=$\-_.+/]++
method:: = [+\-.a-z0-9]+
urlchar = urlc
| "%":: "%" [0-9a-fA-F] [0-9a-fA-F]