// Code generated by go-bindata. // sources: // pub/close.svg // pub/index.css // pub/index.html // pub/index.js // DO NOT EDIT! package web import ( "bytes" "compress/gzip" "fmt" "io" "strings" "os" "time" "io/ioutil" "path" "path/filepath" ) func bindataRead(data, name string) ([]byte, error) { gz, err := gzip.NewReader(strings.NewReader(data)) if err != nil { return nil, fmt.Errorf("Read %q: %v", name, err) } var buf bytes.Buffer _, err = io.Copy(&buf, gz) clErr := gz.Close() if err != nil { return nil, fmt.Errorf("Read %q: %v", name, err) } if clErr != nil { return nil, err } return buf.Bytes(), nil } type asset struct { bytes []byte info os.FileInfo } type bindataFileInfo struct { name string size int64 mode os.FileMode modTime time.Time } func (fi bindataFileInfo) Name() string { return fi.name } func (fi bindataFileInfo) Size() int64 { return fi.size } func (fi bindataFileInfo) Mode() os.FileMode { return fi.mode } func (fi bindataFileInfo) ModTime() time.Time { return fi.modTime } func (fi bindataFileInfo) IsDir() bool { return false } func (fi bindataFileInfo) Sys() interface{} { return nil } var _closeSvg = "\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x2c\x8e\xd1\xca\x84\x20\x14\x84\x5f\xe5\x70\xee\xff\xa3\x1e\xc9\xfc\x97\xec\x62\xaf\xdb\x87\x58\x28\x32\x68\xb7\xd8\x24\x63\x9f\x7e\xd5\x02\x19\xc6\x6f\x66\xc4\x66\xdb\x47\x38\x5e\xf3\x7b\x73\xe8\x43\x58\x6f\x42\xc4\x18\x29\x6a\x5a\x3e\xa3\x60\x29\xa5\x48\x0d\x84\x38\xf5\xc1\x3b\xd4\x06\xc1\x0f\xd3\xe8\xc3\xe9\xf7\x69\x88\xf7\xe5\x70\x28\x41\x82\x36\xe9\x60\xdb\xac\xcf\xe0\xa1\x77\xf8\x60\x4b\x15\xfc\x93\xe1\x8e\x0d\x69\x0b\x75\xba\x2a\x0b\xaa\x22\x6b\x0b\x2f\xa4\xbe\x4a\x17\x57\x67\xaf\x2c\x66\x26\xc5\x90\xa5\x4b\x98\x65\x32\xb3\xcd\x2f\x15\xc9\xfc\xaf\x84\x25\x49\xcb\x2f\x8a\xb6\xc9\x1f\x6e\x7f\x01\x00\x00\xff\xff\xe5\x79\xbd\x91\xd8\x00\x00\x00" func closeSvgBytes() ([]byte, error) { return bindataRead( _closeSvg, "close.svg", ) } func closeSvg() (*asset, error) { bytes, err := closeSvgBytes() if err != nil { return nil, err } info := bindataFileInfo{name: "close.svg", size: 216, mode: os.FileMode(420), modTime: time.Unix(1435948337, 0)} a := &asset{bytes: bytes, info: info} return a, nil } var _indexCss = "\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x94\x54\x4d\x4f\xe3\x30\x10\xbd\xf7\x57\x58\x70\x00\x24\x52\x4c\x59\xaa\xad\x91\xf6\x47\xec\x6d\x8f\x8e\xed\x24\x16\x8e\x27\xb2\x1d\xda\xb2\xda\xff\xbe\xe3\x8f\x24\xa5\x6c\x25\x56\x90\x2a\x99\x79\xe3\xcc\xbc\xf7\x26\x35\xc8\x23\xf9\xbd\x22\xa4\xe6\xe2\xb5\x75\x30\x5a\xc9\xc8\x75\xd3\x34\x2f\x18\x6b\xc0\x86\xaa\xe1\xbd\x36\x47\x46\x6e\x7e\x72\xa3\xf6\xfc\x78\x73\x4f\x3c\xb7\xbe\xf2\xca\xe9\x05\xe5\xf5\xbb\x62\xe4\xdb\x66\x38\xcc\xa1\xbd\xd2\x6d\x17\x18\x79\xa2\xf4\x65\xf5\x67\xb5\x6a\xc0\xf5\xe9\x55\x41\x1d\x42\xc5\x8d\x6e\x2d\x23\x42\xd9\xa0\x5c\xca\x5f\xd7\xdc\xa5\xfc\x5e\xcb\xd0\x31\xb2\x7d\x2e\xa7\xf5\xdc\xb5\x1a\xb1\x94\xf0\x31\x40\x8c\x0c\xe0\x75\xd0\x80\x31\xa7\x0c\x0f\xfa\x4d\xe5\x13\x46\x67\xd2\x09\xff\xdd\xf8\xd3\xc5\xc6\x97\x76\x28\xcd\x98\x81\x4b\xa9\x6d\xcb\xc8\xe6\x39\x07\x04\x18\x70\xc8\xda\x6e\xb7\x8b\x8f\x35\x38\xa9\x5c\xe5\xb8\xd4\xa3\x47\x4e\x32\x28\x47\x19\x79\x1c\x0e\xc4\x83\xd1\x92\x5c\x0b\x21\x62\x06\xc6\x60\xb4\xc5\x26\x2c\x58\x95\xa1\x87\xca\x77\x5c\xc2\x3e\xce\x8c\x9d\x91\x2d\x5e\xae\xad\xf9\x2d\xbd\x27\xe5\x7f\xbd\xb9\x9b\x67\x66\x0d\x88\xd1\x67\x19\x3f\xbf\x86\xee\x9a\x05\xc9\x70\xba\xfa\x55\x87\x4a\xdb\x61\x0c\xd5\x60\xb8\x50\x1d\x18\xac\x49\xe5\xf3\x2c\x52\xca\xd3\xa2\x1e\xde\xbf\x80\x15\xfd\x90\x32\x9f\x18\x2a\x14\x3e\x6f\xe9\x25\x45\x4f\x3d\x61\x54\x13\xce\xf4\xd9\x3c\xe6\xc2\xe0\x50\xc1\x22\x7d\xba\x4f\xa6\xda\x50\xda\x7b\xa2\xb8\x57\x38\x56\x85\x7c\xce\xd0\x98\x66\xc4\x0b\x74\xc0\xaf\x5b\x7a\xf7\x21\x5e\x81\xd3\xa9\x8b\x00\xc3\xec\xc3\x59\xbe\x1a\x42\x80\xbe\x8a\xbd\xfc\x5b\xca\x09\xe1\xa2\x59\xbe\xaa\x76\x61\x69\x8d\x82\xbf\x9e\xad\x5d\x35\xd1\xd9\x6c\xe3\xdf\x82\x6d\x46\x71\x19\xab\xd4\x27\x07\x4e\x4a\xfc\x20\x3c\x95\x4d\xc9\xe4\x83\xc2\xb4\x54\x02\x1c\xcf\x3c\x66\xdb\x2d\x55\xeb\xce\x86\xbc\x45\x06\x38\xae\x41\x1a\xf0\xf4\x2d\x49\xef\x72\xd0\xe4\xd3\x38\x68\xbc\x68\xf9\x78\xa4\xe3\x4c\xf6\xe4\xb2\xad\xbc\x46\x32\xc6\x90\x7a\x46\xd6\xd1\x00\xf1\xce\xe5\x75\xa3\x99\xb8\x48\x6a\x79\x98\x36\x6f\x22\x75\x99\x5f\xf7\xbc\x45\x5b\xa0\x39\x6f\xaf\x1e\xfc\x83\x30\xe0\xd5\xda\xbf\xb5\x57\x77\x67\xc0\xe5\xdd\x59\xe1\x53\xa1\x17\x94\x53\x83\x8a\xa3\x5a\x28\xb7\x67\xf9\xf2\x75\xfb\x8e\x03\xc6\x9f\x44\xc6\xe8\x7c\x64\x63\x00\x3d\x1d\x08\x03\x17\x3a\xe0\x17\x87\xae\x9f\xe2\xb3\xd4\x1e\x77\xe6\xf8\x81\x61\xe3\x59\x07\x6f\x65\x83\x4e\x0a\x92\xde\x7f\x03\x00\x00\xff\xff\x9f\x3b\x3f\xc1\x8d\x05\x00\x00" func indexCssBytes() ([]byte, error) { return bindataRead( _indexCss, "index.css", ) } func indexCss() (*asset, error) { bytes, err := indexCssBytes() if err != nil { return nil, err } info := bindataFileInfo{name: "index.css", size: 1421, mode: os.FileMode(420), modTime: time.Unix(1436043545, 0)} a := &asset{bytes: bytes, info: info} return a, nil } var _indexHtml = "\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x9c\x52\x4d\x73\xd3\x30\x10\xbd\xf7\x57\x2c\x3a\x13\x6d\x42\x38\x90\x62\x87\x19\x92\x0c\x30\x53\xa0\x53\xc2\x00\x47\xc5\x5e\xc7\x0a\xb2\xe5\x4a\xeb\x26\xfe\xf7\x48\xb6\xdb\x86\xd2\x13\x3a\xed\xd7\x7b\x6f\x3f\x94\xbc\x58\x7f\x5d\x6d\x7f\x5d\x6f\xa0\xe4\xca\xc0\xf5\xf7\xf7\x57\x9f\x56\x20\x26\x88\x3f\xe6\x2b\xc4\xf5\x76\x0d\x3f\x3f\x6e\x3f\x5f\xc1\x4c\x4e\xe1\x1b\x3b\x9d\x31\xe2\xe6\x8b\x00\x51\x32\x37\x97\x88\xc7\xe3\x51\x1e\xe7\xd2\xba\x3d\x6e\x6f\xf0\x14\x59\x66\x11\x36\x9a\x13\xdf\x63\x64\xce\xb9\x58\x5e\x24\xbd\xc8\xa9\x32\xb5\x4f\x9f\x21\x98\x2d\x16\x8b\x01\x17\x6a\x01\x92\x92\x54\x1e\x8d\x60\xb2\x66\x43\xcb\x0f\x36\xc1\xc1\x1a\xa2\x15\xb1\x82\xc8\x33\xa1\xdb\x56\xdf\xa5\x62\x65\x6b\xa6\x9a\x27\xdb\xae\x21\x01\xd9\xe0\xa5\x82\xe9\xc4\x18\x79\xdf\x42\x56\x2a\xe7\x89\xd3\x96\x8b\xc9\x1b\x81\x23\x91\xd1\xf5\x6f\x28\x1d\x15\xa9\x40\x8f\xba\xce\xe9\x24\x33\xef\x45\x9f\x8d\xcf\x91\x49\x85\xe7\xce\x90\x2f\x89\xf8\x31\xc1\x41\x69\x14\x88\x80\x7f\xf9\xc6\x31\x8b\xd0\x8b\x97\x7b\x6b\xf7\x86\x54\xa3\xbd\xcc\x6c\x15\x11\xef\x0a\x55\x69\xd3\xa5\x37\xca\xd0\x51\x75\x97\xaf\xa7\xd3\x97\xf3\xe9\xf4\xff\x94\x13\xbc\x5f\x59\xb2\xb3\x79\x37\x36\x53\x58\x57\x81\x6a\xd9\x06\xc9\xc6\x10\x07\x94\x2d\x8a\xb1\xd5\x90\xcf\xf5\x1d\xe8\x3c\x15\x3b\xe5\x1e\x82\x67\xe1\xcc\x04\xf2\x04\x83\x7b\x96\xd4\x75\xd3\xf2\x59\x0b\xa2\x2f\x6d\x9d\x11\xd0\x18\x95\x51\x69\x4d\x4e\x2e\x15\x9b\x70\x01\x07\x5c\x12\x84\x1c\xb0\x05\x5f\x5a\x17\x8e\x12\x19\x7b\x8e\x87\x2e\xce\x05\x1e\xb5\xab\xe6\x2f\xed\x04\xe3\x30\xcb\x8b\xc1\xf1\x99\xd3\x0d\x83\x77\x59\x38\x1b\xaa\x83\x3a\x3d\x5d\x70\x8c\xa1\xd1\x3b\x8f\x87\xdb\x96\x5c\x87\xaf\xe4\x4c\xce\x47\x47\x56\xba\x96\x87\x7e\xb8\x81\x69\xf9\x0c\xed\xfd\x6f\x78\x5a\x97\xe0\xb0\xe1\xa4\xff\x57\xcb\x8b\x3f\x01\x00\x00\xff\xff\xfc\x61\x6a\x79\x49\x03\x00\x00" func indexHtmlBytes() ([]byte, error) { return bindataRead( _indexHtml, "index.html", ) } func indexHtml() (*asset, error) { bytes, err := indexHtmlBytes() if err != nil { return nil, err } info := bindataFileInfo{name: "index.html", size: 841, mode: os.FileMode(420), modTime: time.Unix(1435948513, 0)} a := &asset{bytes: bytes, info: info} return a, nil } var _indexJs = "\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xcc\x56\xcd\x6e\x24\x35\x10\xbe\xe7\x29\x8c\x88\xd6\x6e\x31\xf1\x4c\x96\x1b\x51\x40\x4b\x12\xc4\xcf\x42\x50\x12\x0e\x08\x71\x30\xdd\xd5\xd3\xde\xb8\xed\x96\xed\xce\x64\xc8\xce\x1b\xf0\x00\x3c\x1f\x4f\x42\xf9\xa7\x7f\x32\x9b\x04\x24\x2e\xe4\x90\xb1\xcb\xe5\xfa\xfd\xea\x6b\xb3\xba\xd7\xa5\x97\x46\xb3\x82\x3c\x1c\x1c\xdc\x09\x4b\x0e\x6b\xdb\x92\x53\x72\xc8\x68\x6d\x6c\x4b\x8b\xc5\x01\xc1\xbf\xc3\xb2\xed\x92\xf4\x63\x5c\x4d\x52\xe5\x06\xa9\x72\xa3\xb4\xb7\x2a\x4b\x71\x35\x48\x4b\xd3\x6d\xbf\x83\x2d\x1e\x68\x71\x27\xd7\xc2\x1b\xcb\x7b\x07\xf6\xcd\x1a\xb4\xe7\x52\x57\x70\x7f\x59\x33\xfa\xbd\x28\xa5\xf6\xc6\x35\xb4\x20\x9f\x9f\x92\x15\xf9\x82\xd0\xbf\xfe\xf8\xf3\xe8\x8c\x92\xcf\x08\x3d\xf3\x56\xe1\x32\x59\x54\xc2\xf9\x9f\xac\x3a\xc9\x71\x03\x9a\x1e\xd3\xd1\xa2\x85\x90\x12\x21\x16\x7c\x6f\x35\x46\x53\x99\xb2\x6f\x83\xaf\xd2\x82\xf0\x70\xa1\x20\xec\x92\x66\x71\x72\xb0\xcb\x76\x2c\x38\xf9\xfb\x23\x5b\xc9\x4e\x3a\x2b\x7d\xc8\x0c\x4b\xc4\xd7\xe0\xd9\xaa\x08\x3f\x5f\x9a\x5e\x57\x52\xaf\xcf\x94\x44\x83\x57\xa8\xc3\xd0\x1e\x49\x6a\xa5\x73\x8c\xb6\xc2\xae\xa5\x3e\xf2\xa6\xa3\x0b\xb2\xc1\x5c\xcd\x06\x33\xd6\x60\xbf\x06\xb9\x6e\xfc\xf2\x53\x72\x14\x6d\xf3\x26\xed\x5f\xcf\xe2\x09\xf1\x7d\x65\x4d\x3b\x8f\xa8\xb7\x72\x0a\xaa\x13\xd6\x87\x2e\xa0\x90\xbb\xfe\x37\xe7\x2d\xc6\xc2\x8e\x0b\xee\x3a\x25\x3d\xa3\x4b\x1a\xa3\xc9\x75\x88\xda\xbf\x1c\xff\x3a\x39\x50\x46\x54\x4f\xa7\x1b\x5c\xc7\x7e\xa5\x08\x98\x32\xa5\x08\x2a\xbc\x13\xbe\x89\x75\x8b\x69\x72\xf1\x4e\xdc\xb3\x87\xd8\x13\x6c\x38\xb6\x69\x29\x3a\xb9\xc4\xe5\x92\x92\x4f\xe2\xf5\xd4\xb0\x4a\x78\x71\xb3\xed\x00\x35\xde\x39\xa3\x29\x0a\x77\x05\x17\x6a\x23\xb6\x6e\x42\x62\xd0\x4a\x31\x10\x22\x6b\xc2\x3e\x0a\x02\x6e\x6e\x07\x19\x21\xae\x31\x9b\x0b\x6b\x8d\x8d\xba\x1c\xc2\x32\x86\x12\xfe\x52\x9e\x69\xb7\x3b\x88\x3f\xb1\x75\xa6\xf7\x21\x99\x78\x23\x6e\x16\xf9\x42\x0c\x1a\x4f\x92\xc6\xab\x57\x69\xc1\x83\xf0\xfd\x7b\x42\xe9\xc9\x08\x6a\x7e\x27\x14\xd6\x5e\x15\xbc\x46\x2c\x39\x96\x7d\xa2\xe4\x5c\x56\x67\x8d\xd0\x6b\x48\xb2\x5d\xe8\x5f\xaa\x6e\x88\xf5\xad\xd4\xb7\x4f\x83\x33\xd6\x3f\x1e\x8e\xb5\x35\x56\x22\x56\xb0\x6e\x74\xac\xde\x49\x48\x23\x4c\x20\xf7\x70\x8f\x1d\xa5\x45\xf4\xcb\x2d\xb4\xe6\x0e\xce\x70\x0e\x10\x63\x75\x5f\xde\x0e\x07\xa2\xaa\xb2\x54\xa1\xeb\xd0\xff\xec\x4b\xc4\xb9\x7c\x66\x12\xa8\xa0\xc5\x60\xc0\x7b\xcb\x68\x63\xa1\x46\xc0\x62\x80\x59\x1c\xdd\x4f\x5b\xd1\x75\xa0\xab\x1b\xc3\x42\x6c\x93\x93\xe6\x45\x27\xae\x13\x7a\xf2\x33\x06\xda\x68\x4f\xe7\x5e\x32\x5d\x3c\xef\x29\xd6\x23\x4e\x97\xb7\x42\xbb\x48\x56\x0b\x42\x5d\x29\x14\xfc\x8c\xf0\xcf\x59\xe3\x7c\x5e\x83\x82\x0c\x6d\xee\x70\x5c\x85\x83\x37\xba\xba\xb8\xf7\x21\x1e\x91\x07\x79\x41\x56\x0b\x32\x6d\x8e\x67\x13\x38\xc2\x6d\xde\xc3\x16\x9c\x13\xeb\xdc\xc6\x7f\xea\x4d\xea\xc2\x7e\xca\xa9\x63\x29\x19\x18\x0a\x93\xcd\x5c\x5c\x5d\x5d\x5e\xe1\x9c\x20\x02\x06\x4f\xff\xa9\x12\x43\x2e\x8d\xac\xe0\xdc\x8a\x0d\xd8\x0f\x47\xfe\x65\x3b\xab\x47\x76\xe6\x98\x7f\x9a\x3c\xf2\x47\x60\x18\x1b\x4c\xcc\xca\x36\x8d\x47\x98\xea\x78\x7c\x3a\x70\xf8\x30\xdb\xd3\xf0\xc6\xd1\xcd\xa7\x91\xdc\x54\xcc\x75\x8a\xff\x91\xa9\xe1\x7e\xf8\x20\xf1\x5a\x54\xf0\x8d\x66\xaf\x57\xab\x34\x8c\x04\x94\x83\x7d\x85\xcb\xde\x4f\x1a\x31\xad\x48\xd7\x98\x02\x45\x12\x6d\xa5\xc7\xd4\xc7\xac\x72\x9b\x81\x77\x16\xee\x10\x35\xe7\x50\x8b\x5e\x65\x9a\xff\x77\x4c\x39\xb0\xcd\xb3\x65\xd9\x67\x52\x9f\x88\xf2\xc7\xcb\xeb\x9b\xfc\xbd\x0b\x57\x5f\x26\x57\x3c\xfe\xf6\xfa\xf2\x07\x9e\xbe\x01\xb2\xde\xb2\x87\x7c\x2b\xfc\xdf\x15\x8f\x69\x98\xfc\x3f\x78\xf8\x64\xf2\x10\xf7\x93\xfd\xfd\x66\xbf\x60\x76\x46\xe1\x13\x73\x4f\x0c\x9f\xfb\x93\xce\xe3\x66\x46\xed\x7b\x18\x0a\x7e\x1d\xbe\x4e\xb6\x38\xc3\x9d\x12\x25\x5c\x7b\xe4\x2f\xf6\xb0\x5b\x10\xdd\x2b\x85\x13\xb1\x84\x4a\xfa\xb1\xfc\x63\x68\x03\xd5\xb3\x99\x74\x37\x7c\x0d\x42\x87\x63\xd7\x03\xc2\x6e\x61\x8b\x4f\x00\x8d\x10\x9b\xcf\x51\x9e\xf0\xa0\xd0\x21\xf0\xe1\xf9\xe3\x32\x0a\xf6\xcf\x83\x87\x00\xef\xa8\xa1\x24\x92\xcb\x87\x10\x1e\x81\x47\xe9\xf4\x46\x49\x80\x4f\x35\xde\xff\x98\xc5\xc0\xf3\x93\x05\xa9\xeb\x22\xc0\xff\x2d\xd6\x07\xf0\xf5\xc2\x68\x7a\x2c\xa1\x9f\xb4\x40\xdd\xb4\x08\x37\xf7\x2d\x85\x77\x46\x04\xfa\xae\x08\x3f\x7f\x07\x00\x00\xff\xff\x02\x84\xe0\x0d\x7b\x0a\x00\x00" func indexJsBytes() ([]byte, error) { return bindataRead( _indexJs, "index.js", ) } func indexJs() (*asset, error) { bytes, err := indexJsBytes() if err != nil { return nil, err } info := bindataFileInfo{name: "index.js", size: 2683, mode: os.FileMode(420), modTime: time.Unix(1436043487, 0)} a := &asset{bytes: bytes, info: info} return a, nil } // Asset loads and returns the asset for the given name. // It returns an error if the asset could not be found or // could not be loaded. func Asset(name string) ([]byte, error) { cannonicalName := strings.Replace(name, "\\", "/", -1) if f, ok := _bindata[cannonicalName]; ok { a, err := f() if err != nil { return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) } return a.bytes, nil } return nil, fmt.Errorf("Asset %s not found", name) } // MustAsset is like Asset but panics when Asset would return an error. // It simplifies safe initialization of global variables. func MustAsset(name string) []byte { a, err := Asset(name) if (err != nil) { panic("asset: Asset(" + name + "): " + err.Error()) } return a } // AssetInfo loads and returns the asset info for the given name. // It returns an error if the asset could not be found or // could not be loaded. func AssetInfo(name string) (os.FileInfo, error) { cannonicalName := strings.Replace(name, "\\", "/", -1) if f, ok := _bindata[cannonicalName]; ok { a, err := f() if err != nil { return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) } return a.info, nil } return nil, fmt.Errorf("AssetInfo %s not found", name) } // AssetNames returns the names of the assets. func AssetNames() []string { names := make([]string, 0, len(_bindata)) for name := range _bindata { names = append(names, name) } return names } // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ "close.svg": closeSvg, "index.css": indexCss, "index.html": indexHtml, "index.js": indexJs, } // AssetDir returns the file names below a certain // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: // data/ // foo.txt // img/ // a.png // b.png // then AssetDir("data") would return []string{"foo.txt", "img"} // AssetDir("data/img") would return []string{"a.png", "b.png"} // AssetDir("foo.txt") and AssetDir("notexist") would return an error // AssetDir("") will return []string{"data"}. func AssetDir(name string) ([]string, error) { node := _bintree if len(name) != 0 { cannonicalName := strings.Replace(name, "\\", "/", -1) pathList := strings.Split(cannonicalName, "/") for _, p := range pathList { node = node.Children[p] if node == nil { return nil, fmt.Errorf("Asset %s not found", name) } } } if node.Func != nil { return nil, fmt.Errorf("Asset %s not found", name) } rv := make([]string, 0, len(node.Children)) for childName := range node.Children { rv = append(rv, childName) } return rv, nil } type bintree struct { Func func() (*asset, error) Children map[string]*bintree } var _bintree = &bintree{nil, map[string]*bintree{ "close.svg": &bintree{closeSvg, map[string]*bintree{ }}, "index.css": &bintree{indexCss, map[string]*bintree{ }}, "index.html": &bintree{indexHtml, map[string]*bintree{ }}, "index.js": &bintree{indexJs, map[string]*bintree{ }}, }} // RestoreAsset restores an asset under the given directory func RestoreAsset(dir, name string) error { data, err := Asset(name) if err != nil { return err } info, err := AssetInfo(name) if err != nil { return err } err = os.MkdirAll(_filePath(dir, path.Dir(name)), os.FileMode(0755)) if err != nil { return err } err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) if err != nil { return err } err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) if err != nil { return err } return nil } // RestoreAssets restores an asset under the given directory recursively func RestoreAssets(dir, name string) error { children, err := AssetDir(name) // File if err != nil { return RestoreAsset(dir, name) } // Dir for _, child := range children { err = RestoreAssets(dir, path.Join(name, child)) if err != nil { return err } } return nil } func _filePath(dir, name string) string { cannonicalName := strings.Replace(name, "\\", "/", -1) return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) }