You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailscale-android/cmd/tailscale/logo.go

238 lines
117 KiB
Go

// Code generated for package main by go-bindata DO NOT EDIT. (@generated)
// sources:
// tailscale.png
// google.png
package main
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strings"
"time"
)
type asset struct {
bytes []byte
info os.FileInfo
}
type bindataFileInfo struct {
name string
size int64
mode os.FileMode
modTime time.Time
}
// Name return file name
func (fi bindataFileInfo) Name() string {
return fi.name
}
// Size return file size
func (fi bindataFileInfo) Size() int64 {
return fi.size
}
// Mode return file mode
func (fi bindataFileInfo) Mode() os.FileMode {
return fi.mode
}
// Mode return file modify time
func (fi bindataFileInfo) ModTime() time.Time {
return fi.modTime
}
// IsDir return file whether a directory
func (fi bindataFileInfo) IsDir() bool {
return fi.mode&os.ModeDir != 0
}
// Sys return file is sys mode
func (fi bindataFileInfo) Sys() interface{} {
return nil
}
var _tailscalePng = []byte("\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x04\x00\x00\x00\x00\xca\b\x06\x00\x00\x00;!2B\x00\x00\x00\tpHYs\x00\x00\x9e\x1b\x00\x00\x9e\x1b\x01b8\xb7\xfd\x00\x00\x00\x19tEXtSoftware\x00www.inkscape.org\x9b\xee<\x1a\x00\x00 \x00IDATx\x9c\xec\xddw\x9c$e\x9d?\xf0\u03f7:UU\xcf\xec.\xbb \"(9\x83\bJ\x92\f\x82\xa0\xe8OP\f\x88\x8az\x9e'\x86\xd3\u00c0\xf1\xe4\x0e\xef\xf4\x8c\u725e\t\u00ddpg\x0e\x04A\x11AP\x82\x9c\x04%\a1\x00\xb2\xbb3]\xa1\xab\xba\xeb\xf3\xfbc\x06X\x96\x9deB\xf7<\xd5\u075f\xf7\xeb5/v{\xba\xab>\xc3\xf6t=\u03f7\x9e`\x10\x11YK\x9aF\xc7z\xc4\xf7\\\xe7\x98\x19/\xa9\ac\a\xb9N!\"\"\"\"2H<\xd7\x01DDDDDDD\xa4\xffT\x00\x10\x11\x11\x11\x11\x11\x11\x19\x01U\xd7\x01DD\u028ed\xc3u\x86\x19\xe4fV\xb8\x0e!\"\"\xe2\x12\xc9\n\xca\u066f\xa1\x99e\xaeC\x88\xac\xa9\x8c\xbf(\"\"\xa5\xc1(\xda4O\xe3?\xba\u03b1.\xf4p\x1c\x80\xef\xba\xce!\"\"\xe2R\xdeN>\f\xf2\xef]\xe7X\x87\xdb\x00l\xed:\x84\u021a4\x05@DDDDDDd\x04\xf4}\x04\x00\xc9J\xa7\x1d\x1d\xdc\xef\xf3\xccG\xb5k7X\xb3\xf9'\xd79DDDDDDD\xfam1\xa6\x004H\xbbp\x11\xce3g\xb9\xc7W\x008\xdbu\x0e\x11\x11\x11\x11\x11\x11\x91~\xd3\x14\x00\x11\x11\x11\x11\x11\x11\x91\x11\xa0\x02\x80\x88\x88\x88\x88\x88\x88\xc8\bP\x01@DDDDDDd\x04\xa8\x00 \"\"\"\"\"\"2\x02T\x00\x10\x11\x11\x11\x11\x11\x11\x19\x01*\x00\x88\x88\x88\x88\x88\x88\x88\x8c\x00\x15\x00DDDDDDDF\x80\n\x00\"\"\"\"\"\"\"#@\x05\x00\x11\x11\x11\x11\x11\x11\x91\x11\xa0\x02\x80\x88\x88\x88\x88\x88\x88\xc8\bP\x01@DDDDDDd\x04\xa8\x00 \"\"\"\"\"\"2\x02T\x00\x10\x11\x11\x11\x11\x11\x11\x19\x01*\x00\x88\x88\x88\x88\x88\x88\x88\x8c\x00\x15\x00DDDDDDDF\x80\n\x00\"\"\"\"\"\"\"#@\x05\x00\x11\x11\x11\x11\x11\x11\x91\x11\xa0\x02\x80\x88\x88\x88\x88\x88\x88\xc8\bP\x01@DDDDDDd\x04\xa8\x00 \"\"\"\"\"\"2\x02T\x00\x10\x11\x11\x11\x11\x11\x11\x19\x01*\x00\x88\x88\x88\x88\x88\x88\x88\x8c\x00\x15\x00DDDDDDDF\x80\n\x00\"\"\"\"\"\"\"#@\x05\x00\x11\x11\x11\x11\x11\x11\x91\x11\xa0\x02\x80\x88\x88\x88\x88\x88\x88\xc8\bP\x01@DDDDDDd\x04T]\a\x10\x91\xf21+n%*\xff\xe2:\xc7L\f\xb8\xcdu\x06\x11\x11\x11\x11\x91A\xa3\x02\x80\x88<F\xa31~\x13\x80\xd3\\\xe7\x10\x11\x11\x11\x11\x91\xde\xd1\x14\x00\x11\x11\x11\x11\x11\x11\x91\x11\xa0\x02\x80\x88\x88\x88\x88\x88\x88\xc8\bP\x01@DDDDDDd\x04\xa8\x00 \"\"\"\"\"\"2\x02T\x00\x10\x11\x11\x11\x11\x11\x11\x19\x01*\x00\x88\x88\x88\x88\x88\x88\x88\x8c\x00\x15\x00DDDDDDDF\x80\n\x00\"\"\"\"\"\"\"#@\x05\x00\x11\x11\x11\x11\x11\x11\x91\x11\xa0\x02\x80\x88\x88\x88\x88\x88\x88\xc8\bP\x01@DDDDDDd\x04\xa8\x00 \"\"\"\"\"\"2\x02T\x00\x10\x11\x11\x11\x11\x11\x11\x19\x01*\x00\x88\x88\x88\x88\x88\x88\x88\x8c\x80\xaa\xeb\x00\"kc\xab\xb5I\xeeyO&\xb0\x99y\xdc\u0608\xe54[\x0er\xb9\x196 16\xfd\xcc\x06\xcc\xc2G^\x88\x0e\x80I\x000\xc3J\x00 1\t\xe3j+\xf0G\x1a\xfeb\x86?\x17\xc6?\xd53\xdcg\xe3\xe3\xf7-\xfeO'\"\xfdD\xb2\x91\xa6\xe9\xa6Ur\xb3\x02\xd8\u0300'\xc2\u00d3@\x8e\x03\\ffV\x10Km\xaa\x00\xbe\x14\xb6F!\x9c6\t\xb0C\xa0m\xb0\a\xc1\xe2A3{\x90f\x0f\xd2x\x8fupO\xad(\xee\xb1\xf1\xf1\xfb\xdd\xfd\x84\xb2\x98H\xd6\xd24}R\x15x2\xd1\xdd\u0088\x8d\n\xb3\xe5\x06,\a\xb8\x1c\xb0\xe5\xd3O\r`\xf0\x1f\xfd\u21efC\xa9\xe7!!\xf1\x00\x81\a\xcc\xec\x01\x16\xb8\u07f3\u2faeU\xefj4\x1aw\x99Y\xbe\xd8?\x9b\xf4\x1e'&V\xe4\x95\u0293\x8b\n6\xf7\x88'\x18\xb9\xbc\xf0\xbc\x156\xd5~YNb\xc9\xd43\xad\n\xe3\xf8#/D\x01`5\x00\x98a\x02@\x97D\fr\x95\x19\xfeB\xe0\x8f\x9e\xd9\xfd\x85\xc7{k\xb9\u07470\xbc\xcf\u033a\x0e~D\x91E\xc7\u056b\x97\xe7\xd5\xea\x964\xdb\xd2<lFr\x85\x11+`\xb6\x9c\xe0\n\x03*\x00|\x18\x82G\xbf\xd0&\x00v\xd7yM\xef\xf2\x0f\x06\xdc]\xebv\xef\xb2%K\xfe\xea\xe6'sG\x05\x00q\x82d\x98\xc7\xf1\x8e\xf0\xb8\v\f;\x93\xb6\x93\xc1\xb6\x04\xb8E\x0e\xf8\x00a\x00@\x80S/\xc0\x1a\xff\x99f\xd3\xdf\\\xd7\xf1\xd7\xfc\x8b\x81\xf6\xc8\xe3FC^\x05\xb2$J`\xf8\x1dh7\x19\x8a\xeb\vz\xbf\xa3\xe7]\xdfh4n\u05c5U\xa4\xdcH\x06y\x1c\xef\x04\x0f\xbb\u00b8\v\xe8\xedBp\xa7<\x8d7\xa9\x00\xa0\x01\xf6\xf0\x93\x1f\xfa\x83M}\x06<\xea@\x8f\xfd\x8b=\xf4g\xb3\x87?\u007f\x8c\x00< \xf7\xbc\x87>;~\x0f\xf2&\x83]_\x14\xb8\xb1\xf0\xbck\x83 \xb8\xab_?\xaf\xf4\x17I?O\x92\xa9\xf7\x92qG\xd2v6`\x87<\x8d7\xab\x00\xdeC\xef\x8cG\xbd\xaf\x1e\xfdN\x9a\xf1zd\xf6\xc85i\xea\xba\u01a9\xc7`\xf0\xd8E\x9e\u019d,\x89\xee$p\xab\x11\x
func tailscalePngBytes() ([]byte, error) {
return _tailscalePng, nil
}
func tailscalePng() (*asset, error) {
bytes, err := tailscalePngBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "tailscale.png", size: 24866, mode: os.FileMode(436), modTime: time.Unix(1590514565, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
var _googlePng = []byte("\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x01\x00\x00\x00\x01\x06\b\x06\x00\x00\x00\x8a+K{\x00\x00\x1b(zTXtRaw profile type exif\x00\x00x\u06ad\x9bir\x1c\xb9v\x85\xffc\x15^\x02\xc6\v`9\x18#\xbc\x03/\xdf\xdf\xc9*J\x14%u\xf3\x85-6Yd\r\x99\xc0\x1d\xce\x00\xa0\xdd\xf9\x9f\xff\xbe\xee\xbf\xf8g\xad6\x97Km\xd6\xcd<\xffr\xcf=\x0e~i\xfe\xf5\xaf??\x83\xcf\xcf\u03cf\u007f\xe1\xfd\xf3\x97\u7777\xf7\xaf\x91\xc7\xc4cz\xbdP\xc7\xfbS\x83\xe7\xcb\xcf\x0f|\xdc#\xcc_\x9fw\xed\xfdJl\xef\v}\xdc\xf9}\xc1\xa4;G~\u065f\a\xc9\xf3\xf1\xf5|\xc8\xef\v\xf5\xf3\xfa\xc5z\xab\x9f\x87:\xe3\xebq\xbd\xdf\xf8\f\xe5\xfd\x1d\xa7\x9fO(\xde\x17\xd7\xdf\xee\xf3\x13\xb9\x12\xa5]\xb8Q\x8a\xf1\xa4\x90<?cz\x8f \xbd\xbe\a\xdf\xc6\u03d4\x9e\xf7\xf1.=\x13\x1c\x0f9}\x8c\x84\x80\xfc2\xbd\x9f\x01\xfe\x1c\xa0_\x82|\xc7G\xb0\xc3_\xb2\xf2%\xf8q\xbc\x9fO_bi\x9f\xb3\xf6\x87\x17B\xf9s\xf0\x9f\x10\u007f\xbaqz\xff\xe6x\xfa\x97\x17F\r\xfd\xb7\u9f3f\xef\xdd\xed\xde\xf3\x9a\xdd\xc8FD\xed]Q\xde}D\xe7\x99\xef\xddd#\xa7\xe7c\xc6W\xe5\xbb\xf0{}\xbe:_\xcd\x0f\xbfH\xf9\xf6\xcb+w+\xf4\x10\xc9\xcau!\x87\x1dF\xb8\xe1<\x8f+,\x86\x98\u3255\xc7\x18\x17i\xd1s-\xd5\xd8\xe3R~\x94\x9c\x94\u00cd5\xf5\xb4S#s+\x1eG\x1as\x8a?\xc6\x12\x9e\xfb\xf6\xe7~+4\xee\xbc\x03o\x8d\x81\x8b\x05>\xf2\xd7/\xf7O/\xfe'_\xee\u07a5\x10\x05\xdf\xdeq\x1aJpT]3\feN?y\x17\t\t\xf7\x9d\xb7\xf2\x04\xf8\xe3\xeb\x9d~\xff\xa9~(U2X\x9e07&8\xfc|]b\x96\xf0\xb3\xb6\u0493\xe7\xc4\xfb\n\x8f\xaf\x16\n\xae\xee\xf7\x05\b\x11\xf7.\f&$2\xe0-\xa4\x12,\xf8\x1ac\r\x8186\x124\x18yL9N2\x10J\x89\x9bA\u019c\x92EWc\x8b\xba7\x9f\xa9\xe1yo,\u0462\x9e\x06\x9bHD\xa1\xb3*\xb9\xe9i\x90\xac\x9c\v\xf5Ss\xa3\x86FI%\x97R\xac\xd4\xd2\\\xe9eX\xb2l\xc5\u032a\t\xe4FM5\xd7R\xad\xd6\xdaj\xaf\xa3\xa5\x96[i\x02\xc2\xd6z\x1b=\xf6\x04\x06\x96n\xbd\xf6\xd6{\x1f#\xba\xc1\x8d\x06\xd7\x1a\xbc\u007f\xf0\u030c3\xcd<\u02f4Yg\x9b}\x8eE\xf9\xac\xbc\u02b2UW[}\x8d\x1dw\xda\xc0\u0136]w\xdb}\x8f\x13\xdc\x01)N>\xe5\u0629\xa7\x9d~\u01a5\xd6n\xba\xf9\x96k\xb7\xdev\xfb\x1d?\xb2\x16\xdem\xfb\xf5\xeb?\xc8Zxg->\x99\xd2\xfb\ua3ec\xf1\xac\xab\xf5\xe3\x12ApR\x9432\x16s \xe3U\x19\xa0\xa0\xa3r\xe6[\xc89*s\u0299\uf466(\x91A\x16\xe5\xc6\xed\xa0\x8c\x91\xc2|B,7\xfc\xc8\xdd\xcf\xcc}+o\xae\xb4o\xe5-\xfe[\xe6\x9cR\xf7\xff\x919G\xea~\xcf\xdb\x1f\xb2\xb6\x85\xcd\xeb\xc9\u062b\v\x15S\x9f\xe8>^?m\xb8\u0606Hm\xfc\xed\xf1\xb4\x9b\xdb\xf5vF\x18\xedl89\\\xb3\xe6o\xea\xf5\u0395\xeb\xf4\xe3\xec\x9b\u077e~\x1aQ\xaaq\x842+\xb05H9\xd7\u06310NB\u007fzY\xbb$@\x9c\xf0\u0359v\x01\xc7Jhm\xdcsSYc.j\xc45.\xbd\xd3]i\x0e\x82Tf\xdbs\x8f\xe9K9c=\x17l\xeb\x86U\xd3-\f\xee\xac{\xc2!H\f\x8f\xf93\xc5\xe3\x0f\x11\xe2eGM\xf5q\xae1\x89\u0521\u00d1\xf6\xcci\xefA\r\x9c0\xfa]\xb5\xf6\xc4K\xb3^_\xacu\x1f\xbb\xdf\xc6X\x8c(v\ua987\xdb\xe9\xfeYF\u0611\xd0\xceZy\x9eb\x9b\xd6\xf6\xae\u742b<|\xe3J\x94\x1c\xe1\\\x11\u0728q\xef~\x98\xc3\x02d\x06\xd7\xce!\xde\x0e\xfa k\x98\xbc\x9d\xc0cF\\\x14\xca#\u05dd\xc0\x92Uty\u0296\xae$\xf5qR8\xb7.\xaao\xaf\xda\xe2\u0339\xef\x92\xe3\xf2\u05df4\u076aL\xb4\u07b4v\xa5lK\x19\xa3'b\xb1N\xed'X+\xf9\xb6\xe3\x99 ?\xed&Eh\xb4V\xc6:7\x98X\xad\xef\x89N\xd8\u02c9\xbbmvR\xb5iM\xaa,E;F\xa1\x81\xcb\xcbn9\xa5\x0eS\xa1^\x94\x03\xd5\x0f\x88\xc5A\xb0{n4\x1c\xcd\x12HB\xb3\xe4\xe2\x88\xfb\x16\x064\xee\x13\xdda3s7\n\x91\xbf:zn\x8c3\xe6\ta\xa7\xca\xdb\b\\\xbdFS(\xa3\xdc)\x05\u02958\x12\xec\xc6\xed\xeb\x8a}\xd05\x96g\xe0\xd9\xdbr\xbdkrOc\u04a1\xec\x9e/lJ\x90gJ\xcb/\x86YZ[\xe9L\x06\xdfn\xcd\x16\xb6S\x94\xcb\xf6\xdc\xe3#\xde\xdfy,S\x05E-\xefu&|\x91\xb7\x8b\xb1\x13\xdb\n\xff\xc6Zi\xc9B\xff\xaczf\xa1vh\xfa\xb9\u06a6\x1c\xfc\xe8\xf4\xe2\b\xea\xd2N\x13\xdb\xe9\xa9\x12\u0632(\xf7m1n\xb7n\xa4WiTZ\xb9\x8et\x1a\xf1H\x93\xd2:\t\x89[\xb8L\x9dpf$E\a`<\xb4@\xb1I57\xc0\xa1O[\u04ee\xf5\x80\x18E\xe2\xd1\x15\xf5\x8c:w\xe9T>3\x8fV\xd2&\xf9\x8d\xbe_\u0798\xd2\xf4\x87\xd4\xd6s\xf3\xa4\xc0\x0f\rO\\^\xbd},\xed\xe6\xddx\xfeB\x17}\xf7\x110\xa7~\xdaz\x03\xc4)\x97\x80ys\xc23?\xac\xcc\x04\n\xdc\x1av>\xbe\x82[\xb7\x95\xda\xf7VK.\x06 \xa54G\xeb#\xd5p\x00\xc2;UYk\u043d\xd4\x11\xf3wc\xd1\xf1\x8c\xef\xa4\x05\\\x10\xf6\x92\x1a\x13;\u02e6\xda=\x8e\xe2\x01\x941\x04\x90\xf5\xe4\x9b\xe9\xc1\x9a\xc0S\xcd\xd1j\u06e4\x90\v/w\x04\x02\x14\xe5\x
func googlePngBytes() ([]byte, error) {
return _googlePng, nil
}
func googlePng() (*asset, error) {
bytes, err := googlePngBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "google.png", size: 15501, mode: os.FileMode(436), modTime: time.Unix(1593543714, 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){
"tailscale.png": tailscalePng,
"google.png": googlePng,
}
// 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{
"google.png": &bintree{googlePng, map[string]*bintree{}},
"tailscale.png": &bintree{tailscalePng, 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, filepath.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, filepath.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, "/")...)...)
}