<!--
	Copyright 2009 The Go Authors. All rights reserved.
	Use of this source code is governed by a BSD-style
	license that can be found in the LICENSE file.
-->

{.section PAst}
	<pre>{@ FSet|html-esc}</pre>
{.end}
{.section PDoc}
	<!-- PackageName is printed as title by the top-level template -->
	{.section IsPkg}
		{# ImportPath is a string - no need for FSet}
		<p><code>import "{ImportPath|html-esc}"</code></p>
	{.end}
	{Doc|html-comment}
	{.section IsPkg}
		{.section Filenames}
			{# Filenames are strings - no need for FSet}
			<p>
			<h4>Package files</h4>
			<span style="font-size:90%">
			{.repeated section @}
				<a href="/{@|url-src}">{@|localname}</a>
			{.end}
			</span>
			</p>
		{.end}
	{.end}
	{.section Consts}
		<h2 id="Constants">Constants</h2>
		{.repeated section @}
			{Doc|html-comment}
			<pre>{Decl FSet|html-esc}</pre>
		{.end}
	{.end}
	{.section Vars}
		<h2 id="Variables">Variables</h2>
		{.repeated section @}
			{Doc|html-comment}
			<pre>{Decl FSet|html-esc}</pre>
		{.end}
	{.end}
	{.section Funcs}
		{.repeated section @}
			{# Name is a string - no need for FSet}
			<h2 id="{Name|html-esc}">func <a href="/{Decl FSet|url-pos}">{Name|html-esc}</a></h2>
			<p><code>{Decl FSet|html-esc}</code></p>
			{Doc|html-comment}
		{.end}
	{.end}
	{.section Types}
		{.repeated section @}
			<h2 id="{Type.Name FSet|html-esc}">type <a href="/{Decl FSet|url-pos}">{Type.Name FSet|html-esc}</a></h2>
			{Doc|html-comment}
			<p><pre>{Decl FSet|html-esc}</pre></p>
			{.repeated section Consts}
				{Doc|html-comment}
				<pre>{Decl FSet|html-esc}</pre>
			{.end}
			{.repeated section Vars}
				{Doc|html-comment}
				<pre>{Decl FSet|html-esc}</pre>
			{.end}
			{.repeated section Factories}
				<h3 id="{Type.Name FSet|html-esc}.{Name|html-esc}">func <a href="/{Decl FSet|url-pos}">{Name|html-esc}</a></h3>
				<p><code>{Decl FSet|html-esc}</code></p>
				{Doc|html-comment}
			{.end}
			{.repeated section Methods}
				<h3 id="{Type.Name FSet|html-esc}.{Name|html-esc}">func ({Recv FSet|html-esc}) <a href="/{Decl FSet|url-pos}">{Name|html-esc}</a></h3>
				<p><code>{Decl FSet|html-esc}</code></p>
				{Doc|html-comment}
			{.end}
		{.end}
	{.end}
	{.section Bugs}
		<h2 id="Bugs">Bugs</h2>
		{.repeated section @}
		{@|html-comment}
		{.end}
	{.end}
{.end}
{.section PList}
	<h2>Other packages</h2>
	<p>
	{# PLIst entries are strings - no need for FSet}
	{.repeated section @}
	<a href="?p={@|html-esc}">{@|html-esc}</a><br />
	{.end}
	</p>
{.end}
{.section Dirs}
	<p class="detail">
	Need more packages? The
	<a href="http://godashboard.appspot.com/package">Package Dashboard</a>
	provides a list of <a href="/cmd/goinstall/">goinstallable</a> packages.
	</p>
	{# DirList entries are numbers and strings - no need for FSet}
	<h2 id="Subdirectories">Subdirectories</h2>
	<p>
	<table class="layout">
	<tr>
	<th align="left" colspan="{MaxHeight|html-esc}">Name</th>
	<td width="25">&nbsp;</td>
	<th align="left">Synopsis</th>
	</tr>
	<tr>
	<th align="left"><a href="..">..</a></th>
	</tr>
	{.repeated section List}
		<tr>
		{Depth|padding}
		<td align="left" colspan="{Height|html-esc}"><a href="{Path|html-esc}">{Name|html-esc}</a></td>
		<td></td>
		<td align="left">{Synopsis|html-esc}</td>
		</tr>
	{.end}
	</table>
	</p>
{.end}
