templates.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. // Code generated by go-bindata.
  2. // sources:
  3. // templates/book.tmpl
  4. // templates/web.tmpl
  5. // DO NOT EDIT!
  6. package static
  7. import (
  8. "bytes"
  9. "compress/gzip"
  10. "fmt"
  11. "io"
  12. "io/ioutil"
  13. "os"
  14. "path/filepath"
  15. "strings"
  16. "time"
  17. )
  18. func bindataRead(data []byte, name string) ([]byte, error) {
  19. gz, err := gzip.NewReader(bytes.NewBuffer(data))
  20. if err != nil {
  21. return nil, fmt.Errorf("Read %q: %v", name, err)
  22. }
  23. var buf bytes.Buffer
  24. _, err = io.Copy(&buf, gz)
  25. clErr := gz.Close()
  26. if err != nil {
  27. return nil, fmt.Errorf("Read %q: %v", name, err)
  28. }
  29. if clErr != nil {
  30. return nil, err
  31. }
  32. return buf.Bytes(), nil
  33. }
  34. type asset struct {
  35. bytes []byte
  36. info os.FileInfo
  37. }
  38. type bindataFileInfo struct {
  39. name string
  40. size int64
  41. mode os.FileMode
  42. modTime time.Time
  43. }
  44. func (fi bindataFileInfo) Name() string {
  45. return fi.name
  46. }
  47. func (fi bindataFileInfo) Size() int64 {
  48. return fi.size
  49. }
  50. func (fi bindataFileInfo) Mode() os.FileMode {
  51. return fi.mode
  52. }
  53. func (fi bindataFileInfo) ModTime() time.Time {
  54. return fi.modTime
  55. }
  56. func (fi bindataFileInfo) IsDir() bool {
  57. return false
  58. }
  59. func (fi bindataFileInfo) Sys() interface{} {
  60. return nil
  61. }
  62. var _templatesBookTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x58\xe9\x6e\xe3\xba\x15\xfe\xed\x3c\xc5\xa9\x07\xb7\x98\x19\x48\x5e\x64\x7b\x16\xc5\x13\x14\xe8\x2b\x14\xfd\x53\xb4\x00\x2d\x1e\x59\x6c\x28\x52\x25\x29\xc7\xa9\x91\x77\x2f\x48\xca\x12\x29\xcb\xb9\xe9\x45\x80\x98\x22\xcf\xbe\x7c\x3a\xd4\xfe\x4f\x54\x16\xe6\xb5\x41\xa8\x4c\xcd\x9f\x1e\xf6\xf6\x07\x38\x11\xc7\x5f\x73\x14\xf3\xa7\x87\xd9\xbe\x42\x42\x9f\x1e\x66\xb3\x7d\x8d\x86\x40\x51\x11\xa5\xd1\xfc\x9a\xb7\xa6\x4c\x7f\xcc\xdd\x81\x61\x86\xe3\xd3\xe5\xb2\xf8\x9b\x5d\xbc\xbd\xed\x97\x7e\xc7\x9e\x69\xf3\x6a\x57\x0f\xb3\xd9\x6c\xf9\xf5\xab\xfd\x81\xaf\x50\x68\x0d\x0a\x35\x9a\xee\xd9\x2a\xdd\x01\x65\xba\xe1\xe4\x35\x55\x92\x63\x74\x4c\x04\x05\x8a\x25\x69\xb9\x01\x27\x4f\xfb\x83\xa5\xfd\xb1\xbc\x09\x1c\x24\x7d\x4d\x80\xb2\x53\x02\xba\x21\x22\x01\x79\xf8\x37\x16\x26\x81\x6a\x9d\x40\x95\x25\x50\x6d\x12\xa8\xb6\x09\x54\xbb\xc4\x71\x7d\x4b\xa0\x49\xe0\xc0\x65\xf1\xfc\x9f\x56\x1a\x4c\xa0\x51\x98\x00\x49\xa0\x90\x14\x13\xc0\x3a\x01\x56\x1f\x13\xd0\x46\x49\x71\x74\x4c\x94\x27\x20\x79\x02\x2d\x4f\x80\x33\x4b\x73\x40\x9a\x40\x29\xa5\x41\x95\x80\x0d\x94\xfd\xad\x51\xb4\x09\x08\x72\x72\x4c\x86\xd5\x56\x6e\x4b\x99\x4c\xe0\xc4\x28\x4a\xab\x4a\x1e\x15\x6a\x0d\x17\xe7\x08\x00\xd4\x44\x1d\x99\xc8\x61\xf5\x78\xdd\x69\x08\xa5\x4c\x1c\xc3\xad\x83\x54\x14\x55\xb8\x53\x4a\x61\x72\x60\xa2\x42\xc5\x4c\xbf\x7b\x42\x65\x58\x41\x78\x4a\x38\x3b\x8a\x1c\x0e\x44\x23\x67\x02\x1d\xc1\x9b\xfd\x77\xd7\xe4\xc1\xa2\x2e\x1b\xb9\x8f\xd1\xc0\xda\x79\x52\x10\x71\x22\x7a\x70\xa5\xf3\x6d\x82\x9f\x09\xab\x3b\x1d\xc4\x7c\xcc\x44\x57\x88\x97\xd0\xd1\xb4\x24\x35\xe3\xaf\x39\x54\xc8\x4f\x68\xd9\xa3\x38\xa4\x9a\xfd\x17\x73\xc8\xb2\xe6\x3c\x48\xb1\x75\x31\x48\x71\x86\x54\xc8\x8e\x95\xc9\x61\xbd\xd8\xf6\xfc\x85\xe4\x52\xe5\xf0\x69\xb3\xd9\x0c\xd1\x26\xc5\xf3\x51\xc9\x56\xd0\xf4\x7a\x5c\x96\x65\x60\xe0\x7a\x64\x9e\xd7\xbf\x5e\x7c\xdf\x61\x1d\x90\x65\x77\xc8\x62\xaa\xcd\x1d\xaa\x2c\x26\xbb\xad\x66\xa8\xbe\xdd\x09\x93\x26\x42\xa7\x1a\x15\x2b\x13\x38\xa2\x54\x47\x36\x04\xcc\xd7\x5b\x6a\x64\x93\x43\xb6\xea\x22\x16\x1c\x1c\xa4\x31\xb2\xce\x61\x9d\x05\x67\x1c\x8d\x41\x95\xea\x86\x14\xae\x32\xa3\x48\x7b\x93\xc6\x15\xed\x35\xac\x77\xef\x68\x58\x45\x52\x46\x0e\x45\x52\x62\x4a\x17\x8a\x91\xeb\x2f\x5d\x6e\x0f\x92\x53\x54\x63\xe3\xfa\x66\x86\xc3\x3b\x7c\x03\x17\xd6\xe3\xa4\x58\xf0\xc9\x81\x19\xc2\x59\xf1\x38\x29\x21\x5b\xad\x82\xea\xeb\xe1\xe5\x03\x29\xba\xad\x6a\xc7\xa9\x73\x10\xb2\x6b\x8c\x08\x17\x6c\x38\xa6\x72\x97\xc3\x0a\x56\xf1\x81\x07\x8e\x94\x63\x69\x72\xd8\x35\x67\xd0\x92\x33\x0a\x9f\x10\xf1\xf1\x77\x1c\xf4\xe1\x53\x83\xfd\xd7\xf6\x59\xdd\xa8\xb5\x2a\xdf\x45\xab\xce\x0c\x9f\xcc\x5b\x2b\x9c\xaa\x46\xdd\x8b\x55\x2d\x85\xb4\xa5\x17\x10\x5b\xa8\x1e\xa8\xfb\xc8\x64\xcd\x19\xb6\x81\xfb\x41\x43\xad\x16\x3f\xbb\x7e\x8a\x31\x76\xb1\xda\x61\x1d\x31\x75\xc6\x2a\x42\x59\xab\xf3\xf8\xa8\x47\x86\x1c\x3e\xad\x56\x83\x83\xf2\x84\xaa\xe4\xf2\x25\x3d\xe7\x40\x5a\x23\x6f\xf0\xa5\xfc\x61\xff\x62\x6f\x63\x27\x26\x60\x37\x8c\xf1\x3a\x8e\x71\xe0\x40\x84\x13\x2d\x0f\x41\x4f\xf7\x89\xa5\x4c\x07\x69\x95\xf7\xa8\xb0\x60\x35\xe1\x03\x21\x67\x37\x1d\xe9\x6b\x69\xfb\x4e\x63\x87\x47\x23\xe0\xcd\x76\xa1\xa9\xfe\xa5\x6a\x5f\xae\xcd\x8d\x9a\x69\x94\x20\x09\x90\xfc\xc4\x34\x33\x48\x07\x96\x01\xc4\xbf\x93\xc3\xf7\x80\x3a\xaf\x6c\x62\x2c\x0f\x29\x0c\x3b\x05\xd1\xbe\xc5\x78\xa3\x88\xd0\x0d\x51\x28\x86\xf7\xa9\xc1\xb3\x49\x29\x16\x52\x11\xc3\xa4\xc8\xa1\x15\x14\x55\xff\xba\x72\x99\x6f\x8d\x7d\x0e\xab\xbd\x13\x18\xbe\x9c\xc7\xe6\x94\xb2\x68\x83\x21\xe0\x03\x7a\xae\x3e\x66\x9b\x5d\xf6\xbd\x08\x85\x8e\x64\xf5\x06\x99\x8a\x09\xa0\xd2\x18\xa4\x7f\xc0\xa1\x54\x96\xa5\x46\x93\x43\x1a\x83\xfd\xda\x4e\x4a\xf6\xff\x35\x0d\x0e\x8c\x89\xff\x1f\xec\x6d\xdc\xde\x26\xd8\x73\xec\x5b\xb7\xbd\x0d\x49\x3d\x34\xdb\xfd\xeb\xea\x7e\x86\xb7\xdb\xed\x47\x7d\x71\xe6\xb2\xfa\xf8\xbb\x1d\x76\x85\xab\x08\x6c\x6b\x72\x4e\x5f\x18\x35\x95\xad\xc0\xd5\x6f\x8f\x63\x10\x8c\x9a\x7c\x3c\xd3\xd4\x8c\x52\x7e\xb5\xe2\xc1\x0d\xc0\x50\x48\x61\x08\x13\xa8\xf4\x75\x7c\xed\x26\xb0\x85\x3d\x41\x61\xae\xe3\x64\xd8\x09\xbd\x0d\x3f\x7f\x4c\xc1\xbd\xc3\xdd\xc8\x92\x01\x16\x20\xfb\x2d\x36\xc0\xeb\x83\x3f\xdb\x61\x8f\x1d\x5d\xc8\x22\x4b\x9e\xc8\x6d\xb8\x43\x88\xbb\x09\x77\x1f\xaf\xb7\x41\x08\x84\xb3\xd1\xb8\x93\x77\x61\x21\xd9\x91\x33\x44\x97\xc9\x09\xe9\x06\x41\xb2\x29\x4f\xd7\x31\xe0\x0c\x70\x16\x58\xd8\x05\xa1\x0b\xb1\xbf\x4b\x74\xee\x8f\xc3\xee\x1c\xed\x32\x59\xa0\x30\xfd\x38\x71\xcd\x24\x47\xa2\x4a\x76\xee\xd8\x17\x16\x46\x9a\x9c\x94\x91\x90\x2e\xa9\x39\xcc\xe7\x8f\x37\xf5\x67\xc8\x81\x07\x9d\x6d\xe5\xd9\x09\xc4\x54\xb1\x22\x85\xba\x91\x42\x5b\xdc\xb2\xd1\x01\x1b\x1d\xed\xee\x44\x9c\x89\xe7\xd8\x89\xbf\xd4\x48\x19\x01\x29\xf8\x2b\xe8\x42\x21\x0a\x47\xf8\xb9\x66\x62\xa8\xa1\x75\x73\xfe\x12\xbc\xcf\xa3\x39\x7b\x9c\x83\x9f\x41\x4c\xdf\xfa\xac\x7d\x40\xcd\x3a\x5b\xad\xfe\x0f\x3d\xdf\xc6\x7a\xec\xc2\xc1\xfc\x08\xbb\x93\x08\x5e\xd6\x57\xc8\xe9\xa1\x66\x1b\x22\x48\xac\xef\x7e\xe9\x46\x5a\x27\x4a\x78\x64\xed\x26\xa8\xcb\x9e\x6d\x5c\xc9\x13\x77\xa0\x71\x24\xfb\x6a\x54\xd0\x28\x66\x53\xdb\x36\x8d\x54\x26\x4e\xa6\x3f\x1a\xa6\x1c\x7f\xff\x94\xee\x0e\x1a\xab\x93\xaa\xa9\x88\xd0\x39\xec\x1e\xc3\xed\x17\x46\xe5\x8b\xce\x61\x73\x6b\xf4\x55\xd2\xcd\x3d\x38\x1e\x4a\x7c\xa7\x1d\x31\x3d\x28\x24\xcf\x29\x13\x9a\x51\xcc\x81\x9c\x24\xa3\x13\x01\xec\x2f\x28\x77\x25\xb8\x36\xb9\x2f\xe0\xdd\x52\x99\x0a\x7e\x7c\xcd\x1b\xcf\x68\x2f\x15\x33\x13\x89\xbe\x42\xee\x7d\xc6\xa9\x61\xa0\x67\x6f\x80\xfc\xa3\x52\x58\xfe\xeb\xd7\xbc\x32\xa6\x99\xff\xd3\x37\xbf\x4b\xcb\xe4\x49\xac\x67\x80\x06\xf8\x3c\x07\x62\x8c\xfa\x6c\x79\xbe\xc0\xfc\xcb\x7c\xa2\x50\xf6\xcb\xee\x4b\xca\x6c\xbf\xec\xbe\xc8\xec\xad\xd7\xee\x23\x4b\x07\xdd\x96\x78\x5f\x65\xd1\x97\x98\x2a\xf3\xdb\x82\x9c\xfc\x62\xd9\xad\xbc\x18\xcb\x65\x1f\x28\x3b\x41\xc1\x89\xd6\xbf\xe6\x9d\x61\x73\x2b\xe6\xaf\x7e\x6d\x05\x51\x76\xf2\xa4\x1e\x28\xbd\xb0\xe6\xe9\x72\x61\x25\x2c\xfe\x8e\x4a\x33\x29\xde\xde\x2e\x97\x70\x8d\x82\x5a\xd6\xc6\x13\x07\x3a\x74\xa1\x58\x63\xb4\xfb\x7c\x34\x9b\xed\xfd\xa3\x7f\x98\x2d\x97\xa0\xb0\x96\x27\x04\x72\xd0\x92\xb7\x06\xa1\x21\xa6\x72\x68\xa7\x7b\x12\xfb\xbe\xab\x89\xc1\xf0\x3d\xd6\x6a\x26\x8e\x5d\xff\x7a\xca\xfd\x32\x10\xdd\xf9\x60\x17\xbd\x0f\xfb\xa5\x0f\xe2\x7e\xe9\xbe\x7f\xfd\x2f\x00\x00\xff\xff\x77\x2c\xab\x05\x0f\x13\x00\x00")
  63. func templatesBookTmplBytes() ([]byte, error) {
  64. return bindataRead(
  65. _templatesBookTmpl,
  66. "templates/book.tmpl",
  67. )
  68. }
  69. func templatesBookTmpl() (*asset, error) {
  70. bytes, err := templatesBookTmplBytes()
  71. if err != nil {
  72. return nil, err
  73. }
  74. info := bindataFileInfo{name: "templates/book.tmpl", size: 4879, mode: os.FileMode(420), modTime: time.Unix(1492105743, 0)}
  75. a := &asset{bytes: bytes, info: info}
  76. return a, nil
  77. }
  78. var _templatesWebTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x58\x5b\x6f\xe3\xb8\x15\x7e\x4e\x7e\xc5\xa9\x07\xd3\xb9\x40\x8a\x65\xd9\x9e\xcc\x28\x8e\x51\xa0\xef\x7d\xea\x5b\xd1\x05\x68\xf1\xc8\xe2\x86\x22\xb5\x24\xed\x38\xeb\xcd\x7f\x5f\x90\xba\x91\xb2\x9c\xc9\x2e\x0c\x58\x12\x79\xee\x97\x4f\x87\xda\xfc\x83\xca\xdc\xbc\xd4\x08\xa5\xa9\xf8\xf6\x76\x63\x2f\xc0\x89\xd8\x3f\xce\x50\xcc\xb6\xb7\x37\x9b\x12\x09\xdd\xde\xde\xdc\x6c\x2a\x34\x04\xf2\x92\x28\x8d\xe6\x71\x76\x30\x45\xfc\x7d\xe6\x36\x0c\x33\x1c\xb7\xe7\x33\x2b\xe0\xee\x3f\xa4\xc2\xd7\xd7\xf3\xb9\xbd\x81\x3f\xe0\x7c\x46\x41\xdd\xd2\x7f\x2d\xdd\xeb\xeb\x66\xde\x30\x58\x56\x6d\x5e\xec\xdd\xed\xcd\xcd\xcd\xfc\xeb\x57\x7b\x81\xaf\x90\x6b\x0d\x0a\x35\x9a\xf6\xd9\xda\xb4\x06\xca\x74\xcd\xc9\x4b\xac\x24\xc7\x60\x9b\x08\x0a\x14\x0b\x72\xe0\x06\x9c\x3c\xdd\x6c\xcc\xed\xc5\xf2\x46\xb0\x93\xf4\x25\x02\xca\x8e\x11\xe8\x9a\x88\x08\xe4\xee\x57\xcc\x4d\x04\xe5\x22\x82\x32\x8d\xa0\x5c\x46\x50\xae\x22\x28\xd7\x91\xe3\xfa\x16\x41\x1d\xc1\x8e\xcb\xfc\xe9\xb7\x83\x34\x18\x41\xad\x30\x02\x12\x41\x2e\x29\x46\x80\x55\x04\xac\xda\x47\xa0\x8d\x92\x62\xef\x98\x28\x8f\x40\xf2\x08\x0e\x3c\x02\xce\x2c\xcd\x0e\x69\x04\x85\x94\x06\x55\x04\x36\x8e\xf6\x5a\xa1\x38\x44\x20\xc8\xd1\x31\x19\x56\x59\xb9\x07\xca\x64\x04\x47\x46\x51\x5a\x55\x72\xaf\x50\x6b\x38\x3b\x47\x00\xa0\x22\x6a\xcf\x44\x06\xc9\x43\xb7\x52\x13\x4a\x99\xd8\xfb\x4b\x3b\xa9\x28\x2a\x7f\xa5\x90\xc2\x64\xc0\x44\x89\x8a\x99\x7e\xf5\x88\xca\xb0\x9c\xf0\x98\x70\xb6\x17\x19\xec\x88\x46\xce\x04\x3a\x82\x57\xfb\x77\xd5\xe4\xc1\xa2\x36\x1b\x59\x13\xa3\x81\xb5\xf5\x24\x27\xe2\x48\xf4\xe0\x4a\xeb\xdb\x04\x3f\x13\x56\x77\x3c\x88\x79\x9f\x89\xae\x4e\xcf\xbe\xa3\x71\x41\x2a\xc6\x5f\x32\x28\x91\x1f\xd1\xb2\x07\x71\x88\x35\xfb\x1d\x33\x48\xd3\xfa\x34\x48\xb1\x75\x31\x48\x71\x86\x94\xc8\xf6\xa5\xc9\x60\x71\xb7\xea\xf9\x73\xc9\xa5\xca\xe0\xc3\x72\xb9\x1c\xa2\x4d\xf2\xa7\xbd\x92\x07\x41\xe3\x6e\xbb\x28\x0a\xcf\xc0\xc5\xc8\xbc\x46\xff\xe2\xee\x7e\x8d\x95\x47\x96\x5e\x21\x0b\xa9\x96\x57\xa8\xd2\x90\xec\xb2\x9a\xa1\xfc\x76\x25\x4c\x9a\x08\x1d\x6b\x54\xac\x88\x60\x8f\x52\xed\xd9\x10\xb0\xa6\xde\x62\x23\xeb\x0c\xd2\xa4\x8d\x98\xb7\xb1\x93\xc6\xc8\x2a\x83\x45\xea\xed\x71\x34\x06\x55\xac\x6b\x92\xbb\xca\x0c\x22\xdd\x98\x34\xae\xe8\x46\xc3\x62\xfd\x86\x86\x24\x90\x32\x72\x28\x90\x12\x52\xba\x50\x8c\x5c\x7f\x6e\x73\xbb\x93\x9c\xa2\x1a\x1b\xd7\x37\x33\xec\xde\xe0\x1b\xb8\xb0\x1a\x27\xc5\x82\x4f\x06\xcc\x10\xce\xf2\x87\x49\x09\x69\x92\x78\xd5\xd7\xc3\xcb\x3b\x52\x74\x59\xd5\x8e\x53\x67\x20\x64\xdb\x18\x01\x2e\xd8\x70\x4c\xe5\x2e\x83\x04\x92\x70\xa3\x01\x8e\x98\x63\x61\x32\x58\xd7\x27\xd0\x92\x33\x0a\x1f\x10\xf1\xe1\x27\x0e\x36\xe1\x53\x83\xfd\x5d\xfb\x24\x17\x6a\xad\xca\x37\xd1\xaa\x35\xa3\x49\xe6\xa5\x15\x4e\x55\xad\xae\xc5\xaa\x92\x42\xda\xd2\xf3\x88\x2d\x54\x0f\xd4\x7d\x64\xd2\xfa\x04\x2b\xcf\x7d\xaf\xa1\x92\xbb\x1f\x6d\x3f\x85\x18\x7b\x97\xac\xb1\x0a\x98\x5a\x63\x15\xa1\xec\xa0\xb3\x70\xab\x47\x86\x0c\x3e\x24\xc9\xe0\xa0\x3c\xa2\x2a\xb8\x7c\x8e\x4f\x19\x90\x83\x91\x17\xf8\x52\x7c\xb7\xbf\xd0\xdb\xd0\x89\x09\xd8\xf5\x63\xbc\x08\x63\xec\x39\x10\xe0\xc4\x81\xfb\xa0\xa7\xfb\xc4\x52\xa6\xbd\xb4\xca\x6b\x54\x98\xb3\x8a\xf0\x81\x90\xb3\x8b\x8e\x6c\x6a\x69\xf5\x46\x63\xfb\x5b\x23\xe0\x4d\xd7\xbe\xa9\xcd\x4b\xd5\xbe\x5c\xeb\x0b\x35\xd3\x28\x41\x22\x20\xd9\x91\x69\x66\x90\x0e\x2c\x03\x88\xdf\x93\xdd\xbd\x47\x9d\x95\x36\x31\x96\x87\xe4\x86\x1d\xbd\x68\x5f\x62\xbc\x51\x44\xe8\x9a\x28\x14\xc3\xfb\xd4\xe0\xc9\xc4\x14\x73\xa9\x88\x61\x52\x64\x70\x10\x14\x55\xff\xba\x72\x99\x3f\x18\xfb\xec\x57\x7b\x2b\xd0\x7f\x39\x8f\xcd\x29\x64\x7e\xf0\x86\x80\x77\xe8\xe9\x7c\x4c\x97\xeb\xf4\x3e\xf7\x85\x8e\x64\xf5\x06\x99\x92\x09\xa0\xd2\x18\xa4\x7f\xc3\xa1\x58\x16\x85\x46\x93\x41\x1c\x82\xfd\xc2\x4e\x4a\xf6\xbf\x4b\x83\x03\x63\xd2\xfc\x7b\x6b\x4b\xb7\xb6\xf4\xd6\x1c\xfb\xca\x2d\xaf\x7c\xd2\x06\x9a\xed\x7a\x77\x77\x3d\xc3\xab\xd5\xea\xbd\xbe\x38\x73\x59\xb5\xff\x69\x87\x75\x70\x15\x80\x6d\x45\x4e\xf1\x33\xa3\xa6\xb4\x15\x98\x7c\x7c\x18\x83\x60\xd0\xe4\xe3\x99\xa6\x62\x94\xf2\xce\x8a\x5b\x37\x00\x43\x2e\x85\x21\x4c\xa0\xd2\xdd\xf8\xda\x4e\x60\x77\x76\x07\x85\xe9\xc6\x49\xbf\x13\x7a\x1b\x7e\x7c\x9f\x82\x7b\x87\xbb\x81\x25\x03\x2c\x40\xfa\x31\x34\xa0\xd1\x07\xff\xb4\xc3\x1e\xdb\xbb\x90\x05\x96\x6c\xc9\x65\xb8\x7d\x88\xbb\x08\x77\x1f\xaf\xd7\x41\x08\xf8\xb3\xd1\xb8\x93\xd7\x7e\x21\xd9\x91\xd3\x47\x97\xc9\x09\xe9\x02\x41\xd2\x29\x4f\x17\x21\xe0\x0c\x70\xe6\x59\xd8\x06\xa1\x0d\x71\x73\x96\x68\xdd\x1f\x87\xdd\x39\xda\x66\x32\x47\x61\xfa\x71\xa2\xcb\x24\x47\xa2\x0a\x76\x6a\xd9\xef\x2c\x8c\xd4\x19\x29\x02\x21\x6d\x52\x33\x98\xcd\x1e\x2e\xea\xcf\x90\x1d\xf7\x3a\xdb\xca\xb3\x13\x88\x29\x43\x45\x0a\x75\x2d\x85\xb6\xb8\x65\xa3\x03\x36\x3a\xda\x9d\x89\x38\x13\x4f\xa1\x13\xff\xaa\x90\x32\x02\x52\xf0\x17\xd0\xb9\x42\x14\x8e\xf0\x73\xc5\xc4\x50\x43\x8b\xfa\xf4\xc5\x7b\x9f\x07\x73\xf6\x38\x07\x3f\xbc\x98\xbe\xf6\x59\x7b\x87\x9a\x45\x9a\x24\x7f\x41\xcf\xb7\xb1\x1e\x7b\xe3\x60\x7e\x84\xdd\x51\x00\x2f\x8b\x0e\x72\x7a\xa8\x59\xf9\x08\x12\xea\xbb\x5e\xba\x81\xd6\x89\x12\x1e\x59\xbb\xf4\xea\xb2\x67\x1b\x57\xf2\xc4\x19\x68\x1c\xc9\xbe\x1a\x15\xd4\x8a\xd9\xd4\x1e\xea\x5a\x2a\x13\x26\xb3\xd9\x1a\xa6\x9c\xe6\xfc\x29\xdd\x19\x34\x54\x27\x55\x5d\x12\xa1\x33\x58\x3f\xf8\xcb\xcf\x8c\xca\x67\x9d\xc1\xf2\xd2\xe8\x4e\xd2\xc5\x39\x38\x1c\x4a\x9a\x4e\xdb\x63\xbc\x53\x48\x9e\x62\x26\x34\xa3\x98\x01\x39\x4a\x46\x27\x02\xd8\x1f\x50\xae\x4a\x70\x6d\x72\x5d\xc0\x9b\xa5\x32\x15\xfc\xf0\x98\x37\x9e\xd1\x9e\x4b\x66\x26\x12\xdd\x41\xee\x75\xc6\xa9\x61\xa0\x67\xaf\x81\xfc\xaf\x54\x58\xfc\xf2\x38\x2b\x8d\xa9\x67\xff\x6f\x9a\xdf\xa5\x65\x72\x27\xd4\x33\x40\x03\x7c\x9e\x01\x31\x46\x7d\xb6\x3c\x5f\x60\xf6\x65\x36\x51\x28\x9b\x79\xfb\x25\xe5\x66\x33\x6f\x3f\xd8\x6c\xac\xd7\xee\x23\x4b\x0b\xdd\x96\x78\x53\xa6\xdb\x0d\x01\x2b\xea\xf1\xd3\xfc\xd3\xd6\xff\x2a\x43\xb6\x9b\x79\x99\x3a\x8e\x79\xc7\x62\x1f\x28\x3b\x42\xce\x89\xd6\x8f\xb3\xd6\xaa\x99\xe5\xfb\x77\x73\x6f\x39\x29\x3b\x3a\xcd\x8d\xc6\xcd\xdc\x7d\x4b\xfa\x33\x00\x00\xff\xff\x03\xf6\xba\x5e\x5b\x12\x00\x00")
  79. func templatesWebTmplBytes() ([]byte, error) {
  80. return bindataRead(
  81. _templatesWebTmpl,
  82. "templates/web.tmpl",
  83. )
  84. }
  85. func templatesWebTmpl() (*asset, error) {
  86. bytes, err := templatesWebTmplBytes()
  87. if err != nil {
  88. return nil, err
  89. }
  90. info := bindataFileInfo{name: "templates/web.tmpl", size: 4699, mode: os.FileMode(420), modTime: time.Unix(1492106166, 0)}
  91. a := &asset{bytes: bytes, info: info}
  92. return a, nil
  93. }
  94. // Asset loads and returns the asset for the given name.
  95. // It returns an error if the asset could not be found or
  96. // could not be loaded.
  97. func Asset(name string) ([]byte, error) {
  98. cannonicalName := strings.Replace(name, "\\", "/", -1)
  99. if f, ok := _bindata[cannonicalName]; ok {
  100. a, err := f()
  101. if err != nil {
  102. return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err)
  103. }
  104. return a.bytes, nil
  105. }
  106. return nil, fmt.Errorf("Asset %s not found", name)
  107. }
  108. // MustAsset is like Asset but panics when Asset would return an error.
  109. // It simplifies safe initialization of global variables.
  110. func MustAsset(name string) []byte {
  111. a, err := Asset(name)
  112. if err != nil {
  113. panic("asset: Asset(" + name + "): " + err.Error())
  114. }
  115. return a
  116. }
  117. // AssetInfo loads and returns the asset info for the given name.
  118. // It returns an error if the asset could not be found or
  119. // could not be loaded.
  120. func AssetInfo(name string) (os.FileInfo, error) {
  121. cannonicalName := strings.Replace(name, "\\", "/", -1)
  122. if f, ok := _bindata[cannonicalName]; ok {
  123. a, err := f()
  124. if err != nil {
  125. return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err)
  126. }
  127. return a.info, nil
  128. }
  129. return nil, fmt.Errorf("AssetInfo %s not found", name)
  130. }
  131. // AssetNames returns the names of the assets.
  132. func AssetNames() []string {
  133. names := make([]string, 0, len(_bindata))
  134. for name := range _bindata {
  135. names = append(names, name)
  136. }
  137. return names
  138. }
  139. // _bindata is a table, holding each asset generator, mapped to its name.
  140. var _bindata = map[string]func() (*asset, error){
  141. "templates/book.tmpl": templatesBookTmpl,
  142. "templates/web.tmpl": templatesWebTmpl,
  143. }
  144. // AssetDir returns the file names below a certain
  145. // directory embedded in the file by go-bindata.
  146. // For example if you run go-bindata on data/... and data contains the
  147. // following hierarchy:
  148. // data/
  149. // foo.txt
  150. // img/
  151. // a.png
  152. // b.png
  153. // then AssetDir("data") would return []string{"foo.txt", "img"}
  154. // AssetDir("data/img") would return []string{"a.png", "b.png"}
  155. // AssetDir("foo.txt") and AssetDir("notexist") would return an error
  156. // AssetDir("") will return []string{"data"}.
  157. func AssetDir(name string) ([]string, error) {
  158. node := _bintree
  159. if len(name) != 0 {
  160. cannonicalName := strings.Replace(name, "\\", "/", -1)
  161. pathList := strings.Split(cannonicalName, "/")
  162. for _, p := range pathList {
  163. node = node.Children[p]
  164. if node == nil {
  165. return nil, fmt.Errorf("Asset %s not found", name)
  166. }
  167. }
  168. }
  169. if node.Func != nil {
  170. return nil, fmt.Errorf("Asset %s not found", name)
  171. }
  172. rv := make([]string, 0, len(node.Children))
  173. for childName := range node.Children {
  174. rv = append(rv, childName)
  175. }
  176. return rv, nil
  177. }
  178. type bintree struct {
  179. Func func() (*asset, error)
  180. Children map[string]*bintree
  181. }
  182. var _bintree = &bintree{nil, map[string]*bintree{
  183. "templates": &bintree{nil, map[string]*bintree{
  184. "book.tmpl": &bintree{templatesBookTmpl, map[string]*bintree{}},
  185. "web.tmpl": &bintree{templatesWebTmpl, map[string]*bintree{}},
  186. }},
  187. }}
  188. // RestoreAsset restores an asset under the given directory
  189. func RestoreAsset(dir, name string) error {
  190. data, err := Asset(name)
  191. if err != nil {
  192. return err
  193. }
  194. info, err := AssetInfo(name)
  195. if err != nil {
  196. return err
  197. }
  198. err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755))
  199. if err != nil {
  200. return err
  201. }
  202. err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode())
  203. if err != nil {
  204. return err
  205. }
  206. err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
  207. if err != nil {
  208. return err
  209. }
  210. return nil
  211. }
  212. // RestoreAssets restores an asset under the given directory recursively
  213. func RestoreAssets(dir, name string) error {
  214. children, err := AssetDir(name)
  215. // File
  216. if err != nil {
  217. return RestoreAsset(dir, name)
  218. }
  219. // Dir
  220. for _, child := range children {
  221. err = RestoreAssets(dir, filepath.Join(name, child))
  222. if err != nil {
  223. return err
  224. }
  225. }
  226. return nil
  227. }
  228. func _filePath(dir, name string) string {
  229. cannonicalName := strings.Replace(name, "\\", "/", -1)
  230. return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
  231. }