271 lines
22 KiB
Go
271 lines
22 KiB
Go
// Code generated by vfsgen; DO NOT EDIT.
|
||
|
||
// +build !dev
|
||
|
||
package web
|
||
|
||
import (
|
||
"bytes"
|
||
"compress/gzip"
|
||
"fmt"
|
||
"io"
|
||
"io/ioutil"
|
||
"net/http"
|
||
"os"
|
||
pathpkg "path"
|
||
"time"
|
||
)
|
||
|
||
// Templates statically implements the virtual filesystem provided to vfsgen.
|
||
var Templates = func() http.FileSystem {
|
||
fs := vfsgen۰FS{
|
||
"/": &vfsgen۰DirInfo{
|
||
name: "/",
|
||
modTime: time.Date(2021, 2, 11, 16, 42, 47, 817907571, time.UTC),
|
||
},
|
||
"/admin": &vfsgen۰DirInfo{
|
||
name: "admin",
|
||
modTime: time.Date(2021, 2, 11, 15, 43, 30, 499222597, time.UTC),
|
||
},
|
||
"/admin/dashboard.tmpl": &vfsgen۰CompressedFileInfo{
|
||
name: "dashboard.tmpl",
|
||
modTime: time.Date(2021, 2, 11, 15, 43, 30, 499222597, time.UTC),
|
||
uncompressedSize: 393,
|
||
|
||
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\x6c\x8e\xb1\x6a\xc4\x30\x0c\x86\xf7\x3c\x85\xea\xdd\x09\xe9\xd4\xc1\x67\x28\xd7\x27\x28\x85\xce\x6e\xa4\x5e\x04\x8e\x1c\x1c\xdf\x65\x30\x7e\xf7\x12\x37\x29\x57\xb8\x49\x46\x9f\xff\xff\x53\xce\x80\xf4\xcd\x42\xa0\x12\x27\x4f\x0a\x4a\xc9\x99\xfb\x17\x01\xf5\x8a\x13\xcb\x9b\x5b\xc6\xaf\xe0\x22\x7e\x54\xbc\x51\x20\x41\x28\xa5\xb9\xcb\x0e\x41\x12\x49\xda\xd2\x8d\x41\xbe\xc1\xe0\xdd\xb2\x9c\xd4\xec\x2e\xa4\x47\x72\x48\x51\xd9\x06\xc0\x8c\x3d\x30\x9e\xd4\x4a\x7e\x08\x13\x29\xfb\xd8\xf5\xb9\xe3\x52\x4c\x37\xf6\xb6\x31\x1d\xf2\xcd\xfe\x6b\x8e\x61\xad\x8d\x00\xf7\xdb\x21\x78\x3d\xa1\xee\x9f\x0f\x36\x57\x5d\x0c\x61\x3a\x87\xab\xa4\x43\x38\xfb\x5d\xf9\xfe\x47\xa0\xad\x73\x53\xce\x7b\xf8\xea\x7f\x1f\x39\x47\x27\x17\x82\xf6\xec\x99\x24\x2d\xa5\xd4\x35\x18\xcf\x36\xe7\x76\x8b\x78\x3e\xbe\x92\xe0\xce\x4d\x77\x14\x1c\xf7\xd7\x01\xe6\x49\x6b\xe8\x62\x58\x41\x6b\xdb\xec\x89\x9f\x00\x00\x00\xff\xff\xfa\x5a\x53\xad\x89\x01\x00\x00"),
|
||
},
|
||
"/auth": &vfsgen۰DirInfo{
|
||
name: "auth",
|
||
modTime: time.Date(2021, 2, 10, 16, 34, 42, 221227039, time.UTC),
|
||
},
|
||
"/auth/fallback_sign_in.tmpl": &vfsgen۰CompressedFileInfo{
|
||
name: "fallback_sign_in.tmpl",
|
||
modTime: time.Date(2021, 2, 10, 16, 34, 42, 221227039, time.UTC),
|
||
uncompressedSize: 445,
|
||
|
||
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\x74\x8f\xcb\x6a\xeb\x30\x10\x86\xf7\x7e\x8a\x39\xb3\x17\xc6\x67\x55\x82\x6d\xe8\xa6\xdb\x16\x1a\xe8\x5a\xb1\x26\xb1\xa8\x2e\x46\x1a\xc5\x2d\x42\xef\x5e\xec\xd8\x90\x42\xba\xd2\xe5\xfb\xe7\x9b\x99\x9c\x41\xd1\x59\x3b\x02\x64\xcd\x86\x10\x4a\xc9\x59\x37\x4f\x0e\xf0\x39\xf1\xf8\x22\x8d\x39\xc9\xe1\xf3\xb8\xc2\x85\x01\x39\x05\xa5\x54\x77\x95\x83\x77\x4c\x8e\x97\xda\xaa\x55\xfa\x0a\x83\x91\x31\x76\x38\xc9\x0b\x89\x91\xa4\xa2\x80\x7d\x05\xd0\x8e\x0d\x68\xd5\xe1\x4c\x66\xf0\x96\xb0\x7f\xd4\xe9\x63\x83\xa5\xb4\xf5\xd8\xf4\x55\x5b\x2b\x7d\xed\x7f\x79\x83\x9f\x57\x1f\xc0\xfd\xef\xe0\x8d\xb0\x4a\x34\xff\x77\x76\xf6\xc1\x82\x25\x1e\xbd\xea\xf0\xed\xf5\xfd\x88\x20\x07\xd6\xde\x75\x39\xa7\x60\x8e\x1e\x50\x26\x1e\x0f\xe7\xad\xf3\x21\xea\x8b\xd3\x0e\x4b\xb9\x09\x56\x89\x76\x53\x62\xe0\xef\x89\x3a\x64\xfa\x62\x04\x27\x2d\x75\x98\xe2\xb6\xd4\x83\xdc\x24\x63\x9c\x7d\x50\x7b\x76\x79\xff\x95\x8d\xe9\x64\x35\xef\x23\xd7\xcb\xcc\xfb\xfd\xb6\xf7\x7a\x40\xfb\x4f\x08\xa8\x83\x9f\x41\x88\xbe\xca\x99\x9c\x2a\xe5\x27\x00\x00\xff\xff\x62\x75\x88\x18\xbd\x01\x00\x00"),
|
||
},
|
||
"/base.tmpl": &vfsgen۰CompressedFileInfo{
|
||
name: "base.tmpl",
|
||
modTime: time.Date(2021, 2, 11, 17, 34, 12, 596824032, time.UTC),
|
||
uncompressedSize: 1001,
|
||
|
||
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\xbc\x93\x41\x6f\xdb\x30\x0c\x85\xef\xf9\x15\xac\xb0\xe3\x1c\xaf\xb7\xc2\x90\x0d\x74\xeb\xb0\xed\xd2\x0e\x4b\x2e\x3b\x15\x8a\xcd\xc4\x42\x68\x29\x90\x68\x67\x85\xa0\xff\x3e\x58\xb1\x93\xa5\x18\xd0\x9d\x76\x4a\x48\x3e\x7e\x06\x1f\x9e\xe4\xcd\xc3\xd3\xa7\xf5\xcf\xef\x9f\xa1\xe5\x8e\xaa\x85\x9c\x7f\x50\x35\xd5\x02\x40\xde\x64\x19\xd4\xb6\x3b\x10\x32\xc2\x46\x79\x04\xc6\xee\x40\x8a\x11\xb2\x2c\x29\x3a\x64\x05\x75\xab\x9c\x47\x2e\x45\xcf\xdb\xec\x4e\x40\x7e\x19\x19\xd5\x61\x29\x06\x8d\xc7\x83\x75\x2c\xa0\xb6\x86\xd1\x70\x29\x8e\xba\xe1\xb6\x6c\x70\xd0\x35\x66\xa9\x78\x0f\xda\x68\xd6\x8a\x32\x5f\x2b\xc2\xf2\x76\xf9\x61\x46\x91\x36\x7b\x68\x1d\x6e\x4b\x91\x2b\xef\x91\x7d\xee\xf9\x85\x70\x59\x7b\x2f\xc0\x21\x95\x22\xd5\xbe\x45\x64\x91\x56\x58\x33\x61\x15\xc2\x86\x6c\xbd\x07\x91\x4a\x01\xcb\x18\xbf\xd8\x6c\xb5\xfa\x08\x3f\xac\xed\x60\x85\x6e\x40\x17\x02\x9a\x26\x46\x99\x9f\x76\x16\x32\x3f\x19\x20\x37\xb6\x79\x19\x61\x67\x0a\xfe\x62\xa7\x12\x65\xda\x59\x8c\x9f\x6a\xf4\x30\xaa\x46\xdd\xbb\xde\xa3\x83\xa2\x04\xed\x9f\xc9\xee\x76\xd8\x3c\x6b\x13\xe3\x34\xd5\x5b\x48\x82\xa9\x01\x20\x0f\xd5\xf4\x0f\xe0\x2b\x12\xd9\x19\xb1\x7c\x54\x1d\xc6\x78\x33\xeb\xf2\xb3\x50\xf6\x74\xd9\x91\xa4\x2b\xa9\x26\x67\x42\xe8\x1d\xad\x2d\x08\x83\x47\x5f\xd8\x01\xdd\x68\xbb\x88\x51\x54\x21\xe8\xdb\x3b\x03\xe2\x11\x8f\x7e\x9d\x9c\x18\xcf\x55\x95\xcc\x49\xbf\x45\x53\x4d\xa7\x4d\xd1\x28\xdf\x6e\xac\x72\xcd\x35\x4f\x0d\xf7\xe3\xf8\xe1\x8f\xe9\x3f\x73\x7b\x6e\x8b\xad\x22\xda\xa8\x7a\x5f\x90\xdd\xd9\x9e\xaf\xe0\xf7\x3d\xb7\x2b\xbd\x33\x4f\xa9\xff\x1a\x2b\xf3\xd9\x88\x10\x90\x3c\x5e\x3c\xfd\xef\x06\x5d\x1d\xe2\xf5\xce\x68\x53\x6c\xad\xeb\xfe\x7a\xcd\x37\xf3\xd6\x31\x29\x57\x63\x2f\xe5\xea\x55\xc0\x60\x4a\xe2\xf4\x8e\x04\x2c\xe1\x12\xc6\xf3\x92\xcc\x4f\xd1\x95\xf9\xe9\x45\xff\x0e\x00\x00\xff\xff\x3b\x0e\xae\xe2\xe9\x03\x00\x00"),
|
||
},
|
||
"/error.tmpl": &vfsgen۰CompressedFileInfo{
|
||
name: "error.tmpl",
|
||
modTime: time.Date(2021, 2, 9, 14, 51, 23, 670842269, time.UTC),
|
||
uncompressedSize: 369,
|
||
|
||
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\x5c\xd0\xc1\x4e\xc4\x20\x10\x06\xe0\x7b\x9f\x62\x82\x17\x3d\xb0\x4d\x3d\x1a\xca\x61\xcd\x3e\x81\x4f\x30\x85\x59\x8b\xdb\x42\x33\x60\x4d\x43\x78\x77\xe3\xb2\xcd\xaa\xa7\x49\x7e\xe0\xfb\xc9\xe4\x6c\xe9\xec\x3c\x81\x48\x2e\x4d\x24\x4a\x61\xf2\x96\x18\x24\x9c\x98\x03\x43\xce\x87\xb7\x84\xe9\x33\xbe\x06\x4b\xa5\xe4\x4c\xde\x96\xd2\xdc\xdf\x99\xe0\x13\xf9\x24\x4a\x69\x94\x75\x2b\x98\x09\x63\xec\xc5\x82\xef\x24\x47\x42\x4b\x2c\x74\x03\xa0\xc6\x4e\x57\xf1\xe1\x1f\xa9\xe2\x8c\xd3\xa4\x41\xde\xbb\x4a\x51\x6d\x4d\x55\x3b\x76\xba\x51\xad\x75\xab\xfe\xe3\x73\xf8\xaa\xee\xaf\xcc\x84\x49\xc6\x59\x76\xcf\xd7\x13\x00\xb5\x30\x81\xb3\xbd\x20\xe6\x63\xb0\x9b\xd0\x39\x1f\x4e\xcc\x3f\xfc\xc2\xb4\x5f\xaa\x13\x40\x21\x8c\x4c\xe7\x5e\x7c\xe0\x8a\xd1\xb0\x5b\xd2\xcb\xe8\x62\x0a\xbc\x1d\x06\x34\x97\xc7\x27\xb1\x37\x0d\xc9\xc3\x90\xbc\x5c\xd8\xcd\xc8\x9b\xd0\x47\x34\x17\xd5\xe2\x8d\x6c\xaf\xe6\xfe\xeb\x3a\x6e\x9b\xfb\x0e\x00\x00\xff\xff\x6b\x12\x36\x5b\x71\x01\x00\x00"),
|
||
},
|
||
"/landing": &vfsgen۰DirInfo{
|
||
name: "landing",
|
||
modTime: time.Date(2021, 2, 11, 16, 42, 47, 817907571, time.UTC),
|
||
},
|
||
"/landing/about.tmpl": &vfsgen۰CompressedFileInfo{
|
||
name: "about.tmpl",
|
||
modTime: time.Date(2021, 2, 11, 16, 42, 47, 817907571, time.UTC),
|
||
uncompressedSize: 135,
|
||
|
||
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\x4c\xcb\xb1\xaa\x02\x31\x10\x46\xe1\x3e\x4f\xf1\xdf\xed\x43\xd8\x7e\x08\xdc\xde\xd2\x17\x88\xce\xb8\x09\xc8\x44\x64\xd4\x62\x98\x77\x97\xd5\xc6\xea\x34\xdf\x71\x07\xcb\x65\xa8\x60\xb1\x61\x57\x59\x10\x71\x68\xca\x43\x37\x64\xfc\x9f\xe6\xc3\xdc\x21\xca\x88\x48\x3f\xf8\x3c\xd5\x44\x6d\xe7\x89\x78\x3c\x6b\x02\xa8\xaf\xf5\xd8\x05\x6d\xbf\x70\x6b\x9b\x50\xe9\x6b\x4d\x54\x3e\xe0\x1b\xd0\x5f\xce\x28\xf7\xf9\x42\xce\x35\xb9\x8b\x72\xc4\x3b\x00\x00\xff\xff\xe2\x37\xb4\x29\x87\x00\x00\x00"),
|
||
},
|
||
"/landing/index.tmpl": &vfsgen۰CompressedFileInfo{
|
||
name: "index.tmpl",
|
||
modTime: time.Date(2021, 2, 11, 16, 42, 47, 817907571, time.UTC),
|
||
uncompressedSize: 4104,
|
||
|
||
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\x94\x57\x4b\x6f\x1c\xb9\x11\xbe\xeb\x57\x54\x74\x5e\xb5\xe0\x5b\x0e\x5a\x01\x42\x56\x8b\x35\x60\x6b\xb3\x2b\xdb\x39\x73\xc8\xd2\x4c\x05\x7c\xb4\xc8\xe2\x24\x80\xa0\xff\x1e\x54\xf1\x31\x3d\xb1\x25\x60\x4f\xb6\xba\xd9\xac\xc7\xf7\xa8\x9a\x97\x17\x70\xf8\x44\x11\xe1\x92\x89\x3d\x5e\xc2\xeb\xeb\xcb\x0b\x7d\xf8\x7b\x84\xcb\x4f\x26\x3a\x8a\xfb\x2f\xfa\x5c\x1e\x03\x46\x07\xaf\xaf\x17\x9b\x8f\x6c\x8a\x8c\x91\xe5\xb3\x8b\x1b\x47\x47\xb0\xde\x94\xf2\xb3\x3e\x37\x14\x31\x43\xf8\xef\x95\xa9\x9c\x2e\x6f\x2f\x00\x6e\x0e\x1f\x6e\xff\xef\xf6\x7f\xa1\xb7\x29\xc8\xfd\x37\xd7\x87\x0f\xb7\x17\x72\x8a\xc2\x1e\x4a\xb6\x3f\x5f\x5e\x9b\x52\x90\xcb\x35\x85\xfd\x35\x63\xe1\xab\x03\xe6\x40\xb8\xac\x71\x7f\xd9\x8e\xae\xb7\x9f\x52\xc6\x00\xb4\x96\x1a\xc0\x25\x9f\x32\x14\x62\x30\x01\xf9\x27\xb0\x29\x16\xb4\x8c\x5c\x33\x18\x47\x2b\x15\x4b\x71\x0f\xe8\x89\x7f\x82\x82\x0e\x5c\x02\xa4\x5a\x42\x72\xc0\x18\xd6\x94\x81\xa2\x25\x47\xae\x46\x86\xca\xe0\xcd\x2e\x65\x04\xe4\x76\x35\x42\x30\xfb\x68\x2e\x00\x00\x8c\xa7\xe7\x6a\x16\x78\x44\x07\x4f\xa6\x5a\xda\xd5\x02\x5c\xf3\x4a\x05\x28\x02\x56\x08\x04\x3b\xda\x61\x74\x35\x2c\x70\x07\x26\xdb\x0a\xb6\xe6\x52\x0b\x1c\x89\x0d\x4a\x7a\xfb\x2a\x77\xd6\x4c\x05\xf2\x21\x45\x5b\x0b\x18\x8c\x68\x22\x1c\xd1\x6b\xa2\x0b\xdc\x49\x24\x64\x8d\x3a\x2e\x04\x8c\x14\xe0\xc9\x58\xf2\x54\xa8\xc0\x3e\x9b\x23\x39\x03\x11\x9f\xab\x5e\x7c\x34\xde\x53\x59\xe0\x4b\x2b\x2b\x65\x4b\x92\x93\x4f\xbb\x94\x99\x0a\xa0\xc7\x80\x91\x6b\x80\x48\xbb\x03\x30\x7a\x5f\x0b\x84\xe4\xb1\x30\xe1\x02\x8f\xbd\x89\x1a\x15\x0b\xc3\xea\x8d\xc5\x6c\x58\x8b\xdb\x63\x61\x53\xa0\xfd\x1d\x56\xcc\x8e\x50\x32\x0d\xc8\xef\x35\x1d\x5c\xa5\x02\x9c\xa9\xb0\x94\x04\x25\x79\x4f\x96\xb8\x3a\x8a\x2d\x8f\x81\xdd\xa2\x71\xbf\x7a\xce\x64\x51\x1b\x4a\xc6\x56\x4f\x05\x62\x8d\x56\xb0\x5b\xe0\x77\x47\x69\xd3\x82\xde\xc6\x71\x03\x04\x53\x4a\xc7\xe7\x58\xfd\x5a\xd9\x30\x0a\x26\x9b\x03\xfa\x81\x4d\x21\x24\x97\xe0\xb9\x52\xd1\xa8\x9b\x82\x7e\xc3\xe8\x32\x66\xea\xf8\x37\xf8\xa5\x7c\xd6\x9e\xf8\x37\xb9\xb7\xc0\x83\x22\xd1\x80\x16\x6e\xd5\x02\xcf\xd5\x04\x58\xd1\x7b\x8c\x8c\x45\x5e\x47\xb4\x10\x4d\x68\xd5\xfe\x21\xcd\xc9\x24\xfc\x28\x67\x49\x27\x29\xb4\xf2\x02\x5f\x94\x9d\xc2\xcd\x89\xe3\x13\xd6\x3d\x19\x86\x23\x1d\x4d\x10\xf6\x30\x98\xba\xaf\xb8\xdc\x5c\xaf\xb7\x4d\x21\x8f\x18\x20\x56\xef\x0d\xac\x07\x93\x91\xb3\x01\x47\x26\x9c\x1a\x11\xa9\xf8\xd6\x28\x8d\x14\x52\xde\x91\xb6\x63\xf6\x46\x9f\x77\x62\x4a\x6e\x27\x5c\x17\xf8\x18\x21\xe5\x68\x32\x6a\x7d\x5a\xc9\x91\x8e\x98\xb3\x69\xac\x2b\x66\x4f\xcc\xc2\xc5\x7b\xa1\x80\x36\x6f\xd0\xd5\xd6\x00\x25\x59\x12\x5c\x0d\xa7\xe7\x8a\x0b\xdc\x55\xcb\x29\x77\x26\x7f\xd7\xbf\x05\xfe\x99\x32\x33\xb1\xa2\x51\x8a\x01\x72\x1a\xb3\x9d\x6f\xaa\x0c\x70\x14\x1a\xef\xaa\xaf\xa1\x97\xb3\xf3\xe2\x37\x3c\x04\xa8\x6d\x5e\xe0\xf7\x96\xb8\x47\xcb\x75\x43\x9d\xf7\xf8\xbe\xc0\x57\x56\xf5\x35\x3d\xf6\x6b\x8f\xc9\x57\x5e\x8d\x90\x0a\x2d\x46\x53\x16\xf8\x15\x73\x57\x98\x76\x0f\xeb\xc4\x6a\xcd\xc8\xd4\x95\xb7\xc0\x1d\x77\xd0\x47\xd7\x36\xa2\x91\x70\xf7\x3c\xe3\x9f\x28\xaa\x94\x2b\xb5\xac\x18\x1d\x95\x82\x0b\x7c\x16\x2d\x9d\xe4\x01\xe4\xa0\xa0\x30\xb9\xdf\x4e\x11\x0e\x83\xcd\x02\xb6\xbe\x1a\x19\x35\xed\xa1\x83\xb5\xfa\x23\x45\x93\x37\xf4\x79\x18\x37\x2a\xaf\xc0\x1b\xbb\xc9\x55\xf1\x59\xe0\x6b\x8e\x02\xc4\xa9\x0d\xed\x94\x37\x29\xa3\x10\x2c\x45\x69\xbc\xd9\x91\x98\xc2\x00\x5f\x0d\xd1\x58\xed\x40\x47\xa0\xe6\xee\xae\xae\xb1\xaf\xdb\xd8\xe6\x7f\xdd\xa8\xc8\x01\x45\xc6\xac\xde\xfa\x9b\xb1\x70\x90\xcb\x65\x5c\x08\x70\x8c\x42\x71\xcb\x35\x14\xd6\xa6\x29\xb1\xce\x89\x7a\x46\x52\x8d\x39\x88\x2a\x50\xcd\x42\xd2\x99\xc9\x2c\x70\x67\xe1\x09\x25\x11\x97\x44\xbc\xd8\x4f\x9c\xa9\x5a\xd5\x35\x6f\x18\x1a\x52\xcf\xba\x1f\xb6\xdb\x60\x8c\x8c\x7b\xcc\xcd\xcc\x3b\xe1\xc7\x67\xc6\x02\x4f\xb9\x37\x19\x74\x3c\xa5\x20\xf1\x17\xb5\x8e\xc9\xf8\x82\x41\xb2\xe1\x94\x45\x1a\x6a\xc2\xcf\x55\xe8\xeb\x60\x4d\x99\x4d\x63\x9b\x86\xfd\xac\xba\xe9\xd2\x9a\xe7\x1d\x75\xba\x7a\x63\x29\x92\x69\x0e\x70\x44\x3f\xbc\x6c\xb0\xb0\x8f\xad\xde\xd7\xf9\x58\xab\xa6\xb8\x9d\x73\x0b\xfc\xd9\x86\x9a\x86\x0d\x46\xbb\x3b\xe6\x9c\x60\x3d\x55\xde\xa0\xf8\x77\x2d\x9c\x16\xf8\x43\xea\x19\xd7\x93\xeb\xfd\x44\xdf\x70\x3b\x4d\xae\x49\x56\x61\xd0\x6c\x9c\x9e\xae\x6d\x70\x1d\x31\x62\x34\xbc\xe1\x4d\x84\x80\xc2\xb4\x93\xbb\x62\x5d\xe0\x97\x4a\x12\xa8\xd3\x43\x2b\xe8\xa6\xab\x7d\x3d\x77\xcf\xe6\x00\x55\xdf\x0c\x04\x5b\x33\x35\xff\x36\x31\xf7\x3a\x60\x64\x5a\x3c\x4d\x1f\xe8\x23\x6c\x81\x3f\xdf\x33\xf9\xfb\x37\xd9\xb7\x19\x71\x0b\x7c\x43\x0f\x4f\x99\xe2\x9e\x24\x37\x2c\xad\x60\x49\x34\xd8\x94\x85\x27\x9a\x43\x4b\x7d\x5c\x01\xc8\x24\x1e\xfa\xa0\xe7\x94\x63\x0d\xff\x96\xff\x5a\x73\x2d\x73\x9b\xd9\x78\xc0\xbd\x10\x74\xda\xe3\xa9\xab\x8a\x61\xb7\xd4\x1e\x4e\xcc\xc2\xa2\xc7\xdc\xe0\xeb\xd0\x4e\x26\x34\x6f\xdd\xaa\x45\x17\x83\x4d\xde\x4d\xff\xb4\x8f\x54\x0a\x05\x95\xed\x96\xe3\xa7\x9a\x2b\x77\x6f\x3f\xe9\xa4\x59\xd4\xc9\x19\xc6\x16\xf3\xde\x52\xb2\xc0\xc7\x36\x41\xfe\xb2\x79\x49\x1f\xa3\x6d\xd9\x21\xff\xe5\xdd\x4c\x83\xde\xe7\x34\xbc\xc4\xd8\x86\x37\x6f\x56\x36\x67\x56\x5d\x2c\xeb\xf7\x9b\x90\x74\xa6\xd5\x79\x56\x9d\xa7\x1d\xe6\x24\x6c\x9e\x5b\x69\x9b\xef\xf7\x45\x90\xf3\xc4\x83\xa0\x4d\xb5\x6f\x32\x7f\x81\xc7\x0d\x8e\xcd\xf4\xe6\x6a\x04\x6b\x4e\x14\x37\xdc\xf6\x98\x54\xa2\x9a\x75\x37\x9c\x14\x17\x78\x10\xd6\x29\xbb\x9a\xc7\xd6\x62\x69\x25\x9e\x0b\x67\x63\x74\xdf\x48\x4e\xc3\xf3\x81\x8a\x9f\x73\xf2\xa9\x16\xab\x46\x70\x6c\x5c\x99\x2e\x37\x0e\x0c\x92\x9d\x08\xfb\xcd\x64\xd2\x7d\x56\xf8\xd1\xec\x55\xa0\x9a\xd4\x16\xc7\x30\x6d\xd1\x68\x3e\x24\x6f\xc9\x4d\xdf\xfa\xf6\x03\x3d\x8c\x26\x9d\x8d\xdd\xaf\xdc\x1f\x6b\x79\xef\x2d\x12\x0b\x7c\x6a\xd0\xa8\x4b\x4c\x7a\x9d\x36\xc6\xc7\xef\x65\x33\xfa\x43\x6f\x6b\xa0\xd1\xe8\x63\xd4\x58\x26\xb2\xd0\xbf\x6f\x16\x5f\xda\xaf\x91\x01\xf5\x9c\x36\x22\xd4\x4e\x5a\xe9\xf4\xee\x00\x36\x9b\x32\xed\x74\x18\xf5\x5c\x25\xfa\x92\xb3\xc0\xaf\x9b\xb8\xcd\xd2\xdf\xd5\x5f\xc7\x0b\x2b\xe9\x2f\x2c\x8a\x0b\x7c\x36\x1e\x4b\x35\x4e\x2c\x29\x60\x51\x07\x3a\xcf\x52\x02\xf6\x7d\x4f\x91\x11\xae\x4d\xe3\xbd\xaf\x1a\xf6\x47\x8b\x54\xdb\x89\x24\x82\x76\x6c\x0a\x06\x45\x60\x14\x87\x4b\xf5\x68\xfd\xc7\xc1\xfd\x9b\x2e\xae\x5d\x5a\xe0\x97\xe1\x43\x83\xbd\x03\x79\x5d\x0b\x4f\x1d\x5f\xe0\xe3\x94\x46\xb3\xdc\x30\x2b\xfd\xce\xed\x94\x35\x93\x55\xb3\xed\xa7\xc1\xb6\xdd\x0b\x4e\xcb\xed\x02\xff\x98\x53\xbd\xaf\x02\x83\x26\xb2\x08\xf8\x1f\xb0\xab\x29\xe2\xe6\xda\xd1\x71\xfc\x03\x37\x7f\xbb\xba\x82\xeb\x9c\xfe\x03\x57\x57\xb7\x17\x2f\x2f\x18\xdd\xeb\xeb\xff\x02\x00\x00\xff\xff\x8f\x92\xaf\x72\x08\x10\x00\x00"),
|
||
},
|
||
"/news": &vfsgen۰DirInfo{
|
||
name: "news",
|
||
modTime: time.Date(2021, 2, 10, 16, 34, 42, 221227039, time.UTC),
|
||
},
|
||
"/news/overview.tmpl": &vfsgen۰CompressedFileInfo{
|
||
name: "overview.tmpl",
|
||
modTime: time.Date(2021, 2, 10, 16, 34, 42, 221227039, time.UTC),
|
||
uncompressedSize: 390,
|
||
|
||
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\x54\x90\xbf\x6a\xc3\x30\x10\xc6\xf7\x7b\x8a\xeb\x91\xb1\x4a\x70\xa6\x12\x64\x41\xa1\x4b\x97\xd0\x21\xd0\x59\x58\x97\x58\x20\x4b\xc6\x52\xe3\xc0\xa1\x77\x2f\x0e\x0e\x24\x93\xe0\xf7\xfd\xd1\x27\x89\xa0\xe3\xb3\x8f\x8c\x54\x7c\x09\x4c\x58\xab\x88\x6f\x3e\x22\xd2\x91\xe7\x7c\xba\xc3\x85\x21\x47\x87\xb5\xc2\x53\xa2\x4b\xb1\x70\x2c\x4b\x06\xb4\xf3\x57\xec\x82\xcd\xb9\xa5\xd1\x5e\x58\xf5\x6c\x1d\x4f\x64\x00\x51\xf7\x0d\x7a\xd7\xd2\xcc\xa1\x4b\x03\x93\x79\xbe\xe1\x77\x85\xb5\xea\x5d\xdf\x18\xd0\x3b\xe7\xaf\xe6\xa5\x6f\x4a\x33\xbd\x92\x2e\x05\x35\x38\xd5\xec\xc9\x80\xc8\x64\xe3\x85\x71\xe3\xa3\xe3\xdb\x3b\x6e\x38\xf0\xc0\xb1\xe0\xa1\xc5\xed\x67\x08\x3f\x29\x97\x5c\x2b\x00\x68\x8b\xfd\xc4\xe7\x96\x44\xfe\xa6\x70\x4a\x48\x91\xe7\x7c\x18\x53\x2e\x84\xb4\xf8\xbe\xbf\x68\xed\xa9\x75\x9d\xbe\x37\x22\x8f\xca\xed\xd1\x0e\x7c\x1f\xba\x5f\x86\x5a\x03\xa0\xc7\x67\xfd\xc4\xb7\xb2\xe8\xa3\x01\x10\xe1\xe8\x96\x9f\x59\x1f\x74\x3f\x50\xbf\x29\x85\xbb\x29\xcd\xa8\x94\x79\x78\xfe\x03\x00\x00\xff\xff\x91\x0d\x8b\x0e\x86\x01\x00\x00"),
|
||
},
|
||
"/news/post.tmpl": &vfsgen۰CompressedFileInfo{
|
||
name: "post.tmpl",
|
||
modTime: time.Date(2021, 2, 9, 14, 51, 23, 670842269, time.UTC),
|
||
uncompressedSize: 388,
|
||
|
||
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\x74\xce\xb1\x6e\x84\x30\x0c\x80\xe1\x9d\xa7\x70\x3d\xb5\x43\x40\x74\xaa\x4e\x21\xd3\x2d\xb7\xd0\x0e\xbc\x40\x44\x7c\x25\x12\x97\xa0\x24\x05\xa4\xc8\xef\x5e\x41\xdb\x6b\x19\x3a\x25\xfa\x65\x7f\x72\xce\x60\xe8\x6a\x1d\x01\x26\x9b\x46\x42\x60\xce\xd9\xd6\x2f\x0e\xb0\xa5\x25\x76\x7b\x64\x3e\x41\xce\xe5\x9b\x8f\xa9\x6c\xf5\x8d\xb6\x19\x20\x67\x80\xb9\xf8\x23\xf4\xde\x25\x72\x69\x33\x0a\x69\xec\x0c\xfd\xa8\x63\x6c\x70\xd2\xef\x24\x06\xd2\x86\x02\xaa\x02\x40\x0e\xb5\x3a\x72\xb2\x1a\x6a\x55\xc8\xca\xd8\x59\x1d\x56\x83\x5f\xf0\x58\x7a\x3f\x8a\x9b\x11\xf5\xf3\xd6\xa7\xbb\xd3\xd1\x9a\x36\x67\xfa\x65\xf6\x07\xe4\x83\x10\x50\x05\xbf\x80\x10\xaa\x90\x1a\x86\x40\xd7\x06\x73\xfe\x08\x63\xe7\x01\x1d\x2d\xf1\xe4\x67\x0a\xb3\xa5\x05\x99\x11\xac\x69\xf0\x1e\xd4\xeb\xf7\x4f\x56\xfa\xdf\xf5\xc9\xc7\x84\x80\xdb\x21\x97\x33\xc2\xa3\x75\x3d\x7c\x9d\x75\x39\x3f\xfd\x90\x8e\xd6\x84\xaa\xa5\x35\x95\x65\xb9\x6b\x39\x93\x33\xcc\x9f\x01\x00\x00\xff\xff\xc9\x34\x6e\xa1\x84\x01\x00\x00"),
|
||
},
|
||
}
|
||
fs["/"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
|
||
fs["/admin"].(os.FileInfo),
|
||
fs["/auth"].(os.FileInfo),
|
||
fs["/base.tmpl"].(os.FileInfo),
|
||
fs["/error.tmpl"].(os.FileInfo),
|
||
fs["/landing"].(os.FileInfo),
|
||
fs["/news"].(os.FileInfo),
|
||
}
|
||
fs["/admin"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
|
||
fs["/admin/dashboard.tmpl"].(os.FileInfo),
|
||
}
|
||
fs["/auth"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
|
||
fs["/auth/fallback_sign_in.tmpl"].(os.FileInfo),
|
||
}
|
||
fs["/landing"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
|
||
fs["/landing/about.tmpl"].(os.FileInfo),
|
||
fs["/landing/index.tmpl"].(os.FileInfo),
|
||
}
|
||
fs["/news"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
|
||
fs["/news/overview.tmpl"].(os.FileInfo),
|
||
fs["/news/post.tmpl"].(os.FileInfo),
|
||
}
|
||
|
||
return fs
|
||
}()
|
||
|
||
type vfsgen۰FS map[string]interface{}
|
||
|
||
func (fs vfsgen۰FS) Open(path string) (http.File, error) {
|
||
path = pathpkg.Clean("/" + path)
|
||
f, ok := fs[path]
|
||
if !ok {
|
||
return nil, &os.PathError{Op: "open", Path: path, Err: os.ErrNotExist}
|
||
}
|
||
|
||
switch f := f.(type) {
|
||
case *vfsgen۰CompressedFileInfo:
|
||
gr, err := gzip.NewReader(bytes.NewReader(f.compressedContent))
|
||
if err != nil {
|
||
// This should never happen because we generate the gzip bytes such that they are always valid.
|
||
panic("unexpected error reading own gzip compressed bytes: " + err.Error())
|
||
}
|
||
return &vfsgen۰CompressedFile{
|
||
vfsgen۰CompressedFileInfo: f,
|
||
gr: gr,
|
||
}, nil
|
||
case *vfsgen۰DirInfo:
|
||
return &vfsgen۰Dir{
|
||
vfsgen۰DirInfo: f,
|
||
}, nil
|
||
default:
|
||
// This should never happen because we generate only the above types.
|
||
panic(fmt.Sprintf("unexpected type %T", f))
|
||
}
|
||
}
|
||
|
||
// vfsgen۰CompressedFileInfo is a static definition of a gzip compressed file.
|
||
type vfsgen۰CompressedFileInfo struct {
|
||
name string
|
||
modTime time.Time
|
||
compressedContent []byte
|
||
uncompressedSize int64
|
||
}
|
||
|
||
func (f *vfsgen۰CompressedFileInfo) Readdir(count int) ([]os.FileInfo, error) {
|
||
return nil, fmt.Errorf("cannot Readdir from file %s", f.name)
|
||
}
|
||
func (f *vfsgen۰CompressedFileInfo) Stat() (os.FileInfo, error) { return f, nil }
|
||
|
||
func (f *vfsgen۰CompressedFileInfo) GzipBytes() []byte {
|
||
return f.compressedContent
|
||
}
|
||
|
||
func (f *vfsgen۰CompressedFileInfo) Name() string { return f.name }
|
||
func (f *vfsgen۰CompressedFileInfo) Size() int64 { return f.uncompressedSize }
|
||
func (f *vfsgen۰CompressedFileInfo) Mode() os.FileMode { return 0444 }
|
||
func (f *vfsgen۰CompressedFileInfo) ModTime() time.Time { return f.modTime }
|
||
func (f *vfsgen۰CompressedFileInfo) IsDir() bool { return false }
|
||
func (f *vfsgen۰CompressedFileInfo) Sys() interface{} { return nil }
|
||
|
||
// vfsgen۰CompressedFile is an opened compressedFile instance.
|
||
type vfsgen۰CompressedFile struct {
|
||
*vfsgen۰CompressedFileInfo
|
||
gr *gzip.Reader
|
||
grPos int64 // Actual gr uncompressed position.
|
||
seekPos int64 // Seek uncompressed position.
|
||
}
|
||
|
||
func (f *vfsgen۰CompressedFile) Read(p []byte) (n int, err error) {
|
||
if f.grPos > f.seekPos {
|
||
// Rewind to beginning.
|
||
err = f.gr.Reset(bytes.NewReader(f.compressedContent))
|
||
if err != nil {
|
||
return 0, err
|
||
}
|
||
f.grPos = 0
|
||
}
|
||
if f.grPos < f.seekPos {
|
||
// Fast-forward.
|
||
_, err = io.CopyN(ioutil.Discard, f.gr, f.seekPos-f.grPos)
|
||
if err != nil {
|
||
return 0, err
|
||
}
|
||
f.grPos = f.seekPos
|
||
}
|
||
n, err = f.gr.Read(p)
|
||
f.grPos += int64(n)
|
||
f.seekPos = f.grPos
|
||
return n, err
|
||
}
|
||
func (f *vfsgen۰CompressedFile) Seek(offset int64, whence int) (int64, error) {
|
||
switch whence {
|
||
case io.SeekStart:
|
||
f.seekPos = 0 + offset
|
||
case io.SeekCurrent:
|
||
f.seekPos += offset
|
||
case io.SeekEnd:
|
||
f.seekPos = f.uncompressedSize + offset
|
||
default:
|
||
panic(fmt.Errorf("invalid whence value: %v", whence))
|
||
}
|
||
return f.seekPos, nil
|
||
}
|
||
func (f *vfsgen۰CompressedFile) Close() error {
|
||
return f.gr.Close()
|
||
}
|
||
|
||
// vfsgen۰DirInfo is a static definition of a directory.
|
||
type vfsgen۰DirInfo struct {
|
||
name string
|
||
modTime time.Time
|
||
entries []os.FileInfo
|
||
}
|
||
|
||
func (d *vfsgen۰DirInfo) Read([]byte) (int, error) {
|
||
return 0, fmt.Errorf("cannot Read from directory %s", d.name)
|
||
}
|
||
func (d *vfsgen۰DirInfo) Close() error { return nil }
|
||
func (d *vfsgen۰DirInfo) Stat() (os.FileInfo, error) { return d, nil }
|
||
|
||
func (d *vfsgen۰DirInfo) Name() string { return d.name }
|
||
func (d *vfsgen۰DirInfo) Size() int64 { return 0 }
|
||
func (d *vfsgen۰DirInfo) Mode() os.FileMode { return 0755 | os.ModeDir }
|
||
func (d *vfsgen۰DirInfo) ModTime() time.Time { return d.modTime }
|
||
func (d *vfsgen۰DirInfo) IsDir() bool { return true }
|
||
func (d *vfsgen۰DirInfo) Sys() interface{} { return nil }
|
||
|
||
// vfsgen۰Dir is an opened dir instance.
|
||
type vfsgen۰Dir struct {
|
||
*vfsgen۰DirInfo
|
||
pos int // Position within entries for Seek and Readdir.
|
||
}
|
||
|
||
func (d *vfsgen۰Dir) Seek(offset int64, whence int) (int64, error) {
|
||
if offset == 0 && whence == io.SeekStart {
|
||
d.pos = 0
|
||
return 0, nil
|
||
}
|
||
return 0, fmt.Errorf("unsupported Seek in directory %s", d.name)
|
||
}
|
||
|
||
func (d *vfsgen۰Dir) Readdir(count int) ([]os.FileInfo, error) {
|
||
if d.pos >= len(d.entries) && count > 0 {
|
||
return nil, io.EOF
|
||
}
|
||
if count <= 0 || count > len(d.entries)-d.pos {
|
||
count = len(d.entries) - d.pos
|
||
}
|
||
e := d.entries[d.pos : d.pos+count]
|
||
d.pos += count
|
||
return e, nil
|
||
}
|