// Code generated by go-bindata. DO NOT EDIT.
// sources:
// ebpf/bin/probe.o

package main


import (
	"bytes"
	"compress/gzip"
	"fmt"
	"io"
	"io/ioutil"
	"os"
	"path/filepath"
	"strings"
	"time"
)

func bindataRead(data []byte, name string) ([]byte, error) {
	gz, err := gzip.NewReader(bytes.NewBuffer(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  fileInfoEx
}

type fileInfoEx interface {
	os.FileInfo
	MD5Checksum() string
}

type bindataFileInfo struct {
	name        string
	size        int64
	mode        os.FileMode
	modTime     time.Time
	md5checksum string
}

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) MD5Checksum() string {
	return fi.md5checksum
}
func (fi bindataFileInfo) IsDir() bool {
	return false
}
func (fi bindataFileInfo) Sys() interface{} {
	return nil
}

var _bindataProbeo = []byte(
	"\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x54\x3d\x6f\x13\x41\x10\x7d\x6b\x9b\xc4\x24\x29\x6c\xaa\xe4\x02\x92" +
	"\xc5\x0f\x58\x48\x0a\x6a\xcb\x12\xa6\x49\x11\xa1\x48\x94\xa7\xb5\x6f\x21\x16\xbe\xbb\xe8\xee\xf8\x74\x24\x2a\xfa" +
	"\x34\x48\x74\x88\x5f\xe1\x92\xbf\xe2\x12\x89\x06\x2a\x10\x48\x2c\xda\xcd\xae\x6f\x99\xdc\xe9\x32\xd2\x7a\x67\xde" +
	"\xce\x9b\x79\x3b\x5e\xdd\xbb\x87\x47\xe3\x16\x63\x70\xc6\xf0\x13\x65\x54\xda\x45\xab\xf4\x87\xf6\x77\x07\x0c\x4b" +
	"\x06\x44\x5b\xc0\xf3\xe0\x97\xd2\xe8\x2e\x03\x06\x91\x2c\xb4\x2f\xa7\x85\x5c\x04\xdf\x4b\x7c\x9a\xc6\xda\x8f\x45" +
	"\x12\x2d\x82\xaf\x6b\x3c\x91\xaf\x06\xda\x9f\x88\xfc\x74\x11\xac\x0c\xbe\xb4\x22\xf2\xe0\xb7\x89\xbf\x7c\xbe\x8c" +
	"\x37\x19\xb0\x52\x4a\x2d\x5b\xc0\x3e\x80\xf7\x00\x36\x74\xbe\xd5\xf6\x81\xe8\xd6\xb5\x75\x5d\xdd\x5b\xf7\xd5\xda" +
	"\xb4\xae\x68\x0b\x8f\x8e\x8f\x80\xbf\x4a\xa9\x4f\xdf\x18\x76\x09\xcf\xb4\xf7\x0f\x3a\xde\xea\x02\xe8\x5d\xc2\x3d" +
	"\x97\xff\xf6\x31\xba\xe7\xdb\x6c\x47\xdf\xc9\x2e\x67\x1f\x2b\xe6\x49\xed\xd8\x94\xfe\xa1\xaa\xce\xda\x68\x5f\xc1" +
	"\xf6\x00\xf4\x71\x63\x1d\x77\x50\xea\xe9\x9b\x89\xfc\x8f\xdf\x05\x70\xcb\xab\xe3\x34\xdd\xf6\xee\x6b\xfe\x62\x5e" +
	"\xc8\xd7\x05\xf8\xe8\x64\xcc\xb5\x13\xbe\x94\x59\x3e\x4b\x13\x84\xf3\xd9\x54\x26\xb9\xc4\x8b\xb3\x2c\x9d\xc8\x30" +
	"\x93\x22\x9a\xcf\x12\x17\xdf\x5b\xc7\x3c\x93\x73\x2e\x4f\xc3\xa7\x99\x88\x25\x62\x31\x4b\xf8\x14\x3c\x2f\xb2\x42" +
	"\x4c\xc0\xf3\x37\xb1\xd9\x47\x27\x63\xf0\x2c\x8d\x44\x21\xf4\xd9\x01\x3f\x78\x70\x8d\x29\x35\xdb\x13\x33\xaf\xab" +
	"\xd6\xb3\xef\xf7\x9c\xe0\xf4\xad\x33\xbb\x36\x08\x3e\xac\xe9\xd7\x21\xf1\x61\x03\x9f\xbe\x85\x2e\x89\xe7\x96\x7f" +
	"\x48\xf0\x95\xdd\xf7\x09\xde\x23\xf7\x08\xac\x4f\x67\xf0\xa7\x46\x2f\xbd\x7f\xbf\x86\xef\x12\x29\x9f\xc6\xcf\x2a" +
	"\x6a\x9a\x3c\x0b\xee\x35\xf4\xdf\xac\xe1\xdf\xb1\xe0\xa0\x81\x3f\xf6\xdf\xb2\x67\x43\x9b\x78\x9f\xe0\x74\xfe\x23" +
	"\x00\x37\x2b\xfa\xbb\x82\x6e\xde\xdb\x36\xcf\xf1\x1d\x1e\x56\xf4\xd6\x76\x66\xfb\x5f\x78\xba\xdb\x1e\xdf\x7d\x2f" +
	"\xfe\x05\x00\x00\xff\xff\x0f\x7a\x6f\x8a\x90\x05\x00\x00")

func bindataProbeoBytes() ([]byte, error) {
	return bindataRead(
		_bindataProbeo,
		"/probe.o",
	)
}



func bindataProbeo() (*asset, error) {
	bytes, err := bindataProbeoBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{
		name: "/probe.o",
		size: 1424,
		md5checksum: "",
		mode: os.FileMode(420),
		modTime: time.Unix(1594295165, 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, &os.PathError{Op: "open", Path: name, Err: os.ErrNotExist}
}

//
// MustAsset is like Asset but panics when Asset would return an error.
// It simplifies safe initialization of global variables.
// nolint: deadcode
//
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, &os.PathError{Op: "open", Path: name, Err: os.ErrNotExist}
}

//
// AssetNames returns the names of the assets.
// nolint: deadcode
//
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){
	"/probe.o": bindataProbeo,
}

//
// 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, &os.PathError{
					Op: "open",
					Path: name,
					Err: os.ErrNotExist,
				}
			}
		}
	}
	if node.Func != nil {
		return nil, &os.PathError{
			Op: "open",
			Path: name,
			Err: os.ErrNotExist,
		}
	}
	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{Func: nil, Children: map[string]*bintree{
	"": {Func: nil, Children: map[string]*bintree{
		"probe.o": {Func: bindataProbeo, Children: 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
	}
	return os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
}

// 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, "/")...)...)
}
