diff --git a/cmd/thanos/query.go b/cmd/thanos/query.go index cdf72effb3..0e36cc7caf 100644 --- a/cmd/thanos/query.go +++ b/cmd/thanos/query.go @@ -55,6 +55,9 @@ func registerQuery(m map[string]setupFunc, app *kingpin.Application, name string stores := cmd.Flag("store", "Addresses of statically configured store API servers (repeatable)."). PlaceHolder("").Strings() + enableAutodownsampling := cmd.Flag("query.auto-downsampling", "Enable automatic adjustment (step / 5) to what source of data should be used in store gateways if no max_source_resolution param is specified. "). + Default("false").Bool() + m[name] = func(g *run.Group, logger log.Logger, reg *prometheus.Registry, tracer opentracing.Tracer, _ bool) error { peer, err := newPeerFn(logger, reg, true, *httpAdvertiseAddr, true) if err != nil { @@ -87,6 +90,7 @@ func registerQuery(m map[string]setupFunc, app *kingpin.Application, name string peer, selectorLset, *stores, + *enableAutodownsampling, ) } } @@ -141,6 +145,7 @@ func runQuery( peer *cluster.Peer, selectorLset labels.Labels, storeAddrs []string, + enableAutodownsampling bool, ) error { var staticSpecs []query.StoreSpec for _, addr := range storeAddrs { @@ -208,7 +213,7 @@ func runQuery( router := route.New() ui.New(logger, nil).Register(router) - api := v1.NewAPI(logger, reg, engine, queryableCreator) + api := v1.NewAPI(logger, reg, engine, queryableCreator, enableAutodownsampling) api.Register(router.WithPrefix("/api/v1"), tracer, logger) mux := http.NewServeMux() diff --git a/docs/components/bucket.md b/docs/components/bucket.md index 1877cb83ed..0389d17e76 100644 --- a/docs/components/bucket.md +++ b/docs/components/bucket.md @@ -111,8 +111,12 @@ Flags: detected -i, --issues=index_issue... ... Issues to verify (and optionally repair). - Possible values: [index_issue overlapped_blocks - duplicated_compaction] + Possible values: [overlapped_blocks + duplicated_compaction index_issue] + --id-whitelist=ID-WHITELIST ... + Block IDs to verify (and optionally repair) only. + If none is specified, all blocks will be + verified. Repeated field ``` @@ -130,7 +134,7 @@ $ thanos bucket ls -o json --gcs.bucket example-bucket ```txt usage: thanos bucket ls [] -lqist all blocks in the bucket +list all blocks in the bucket Flags: -h, --help Show context-sensitive help (also try --help-long diff --git a/docs/components/compact.md b/docs/components/compact.md index ad9ffb6044..a13b538bb2 100644 --- a/docs/components/compact.md +++ b/docs/components/compact.md @@ -20,7 +20,7 @@ On-disk data is safe to delete between restarts and should be the first attempt ```$ usage: thanos compact [] -continously compacts blocks in an object store bucket +continuously compacts blocks in an object store bucket Flags: -h, --help Show context-sensitive help (also try --help-long diff --git a/docs/components/query.md b/docs/components/query.md index 11d7ea955f..fd666accc2 100644 --- a/docs/components/query.md +++ b/docs/components/query.md @@ -48,25 +48,28 @@ Flags: If 0 no trace will be sent periodically, unless forced by baggage item. See `pkg/tracing/tracing.go` for details. + --grpc-address="0.0.0.0:10901" + Listen ip:port address for gRPC endpoints + (StoreAPI). Make sure this address is routable + from other components if you use gossip, + 'grpc-advertise-address' is empty and you + require cross-node connection. + --grpc-advertise-address=GRPC-ADVERTISE-ADDRESS + Explicit (external) host:port address to + advertise for gRPC StoreAPI in gossip cluster. + If empty, 'grpc-address' will be used. --http-address="0.0.0.0:10902" Listen host:port for HTTP endpoints. - --grpc-address="0.0.0.0:10901" - Listen host:port for gRPC endpoints. - --query.timeout=2m Maximum time to process query by query node. - --query.max-concurrent=20 Maximum number of queries processed - concurrently by query node. - --query.replica-label=QUERY.REPLICA-LABEL - Label to treat as a replica indicator along - which data is deduplicated. Still you will be - able to query without deduplication using - 'dedup=false' parameter. - --cluster.peers=CLUSTER.PEERS ... - Initial peers to join the cluster. It can be - either , or . --cluster.address="0.0.0.0:10900" - Listen address for cluster. + Listen ip:port address for gossip cluster. --cluster.advertise-address=CLUSTER.ADVERTISE-ADDRESS - Explicit address to advertise in cluster. + Explicit (external) ip:port address to + advertise for gossip in gossip cluster. Used + internally for membership only + --cluster.peers=CLUSTER.PEERS ... + Initial peers to join the cluster. It can be + either , or . A lookup + resolution is done only at the startup. --cluster.gossip-interval=5s Interval between sending gossip messages. By lowering this value (more frequent) gossip @@ -77,10 +80,28 @@ Flags: interval lower (more frequent) will increase convergence speeds across larger clusters at the expense of increased bandwidth usage. + --cluster.refresh-interval=1m0s + Interval for membership to refresh + cluster.peers state, 0 disables refresh. + --http-advertise-address=HTTP-ADVERTISE-ADDRESS + Explicit (external) host:port address to + advertise for HTTP QueryAPI in gossip cluster. + If empty, 'http-address' will be used. + --query.timeout=2m Maximum time to process query by query node. + --query.max-concurrent=20 Maximum number of queries processed + concurrently by query node. + --query.replica-label=QUERY.REPLICA-LABEL + Label to treat as a replica indicator along + which data is deduplicated. Still you will be + able to query without deduplication using + 'dedup=false' parameter. --selector-label=="" ... Query selector labels that will be exposed in info endpoint (repeated). --store= ... Addresses of statically configured store API servers (repeatable). + --query.auto-downsampling Enable automatic adjustment (step / 5) to what + source of data should be used in store gateways + if no max_source_resolution param is specified. ``` diff --git a/docs/components/rule.md b/docs/components/rule.md index 4842b69039..65e5c24665 100644 --- a/docs/components/rule.md +++ b/docs/components/rule.md @@ -44,16 +44,47 @@ Flags: 0 no trace will be sent periodically, unless forced by baggage item. See `pkg/tracing/tracing.go` for details. + --grpc-address="0.0.0.0:10901" + Listen ip:port address for gRPC endpoints + (StoreAPI). Make sure this address is routable + from other components if you use gossip, + 'grpc-advertise-address' is empty and you + require cross-node connection. + --grpc-advertise-address=GRPC-ADVERTISE-ADDRESS + Explicit (external) host:port address to + advertise for gRPC StoreAPI in gossip cluster. + If empty, 'grpc-address' will be used. + --http-address="0.0.0.0:10902" + Listen host:port for HTTP endpoints. + --cluster.address="0.0.0.0:10900" + Listen ip:port address for gossip cluster. + --cluster.advertise-address=CLUSTER.ADVERTISE-ADDRESS + Explicit (external) ip:port address to advertise + for gossip in gossip cluster. Used internally + for membership only + --cluster.peers=CLUSTER.PEERS ... + Initial peers to join the cluster. It can be + either , or . A lookup + resolution is done only at the startup. + --cluster.gossip-interval=5s + Interval between sending gossip messages. By + lowering this value (more frequent) gossip + messages are propagated across the cluster more + quickly at the expense of increased bandwidth. + --cluster.pushpull-interval=5s + Interval for gossip state syncs. Setting this + interval lower (more frequent) will increase + convergence speeds across larger clusters at the + expense of increased bandwidth usage. + --cluster.refresh-interval=1m0s + Interval for membership to refresh cluster.peers + state, 0 disables refresh. --label=="" ... Labels to be applied to all generated metrics (repeated). --data-dir="data/" data directory --rule-file=rules/ ... Rule files that should be used by rule manager. Can be in glob format (repeated). - --http-address="0.0.0.0:10902" - Listen host:port for HTTP endpoints. - --grpc-address="0.0.0.0:10901" - Listen host:port for gRPC endpoints. --eval-interval=30s The default evaluation interval to use. --tsdb.block-duration=2h Block duration for TSDB block. --tsdb.retention=48h Block retention time on local disk. @@ -67,6 +98,9 @@ Flags: --gcs.bucket= Google Cloud Storage bucket name for stored blocks. If empty, ruler won't store any block inside Google Cloud Storage. + --alert.query-url=ALERT.QUERY-URL + The external Thanos Query URL that would be set + in all alerts 'Source' field --s3.bucket= S3-Compatible API bucket name for stored blocks. --s3.endpoint= S3-Compatible API endpoint for stored blocks. --s3.access-key= Access key for an S3-Compatible API. @@ -75,22 +109,5 @@ Flags: --s3.signature-version2 Whether to use S3 Signature Version 2; otherwise Signature Version 4 will be used. --s3.encrypt-sse Whether to use Server Side Encryption - --cluster.peers=CLUSTER.PEERS ... - Initial peers to join the cluster. It can be - either , or . - --cluster.address="0.0.0.0:10900" - Listen address for cluster. - --cluster.gossip-interval=5s - Interval between sending gossip messages. By - lowering this value (more frequent) gossip - messages are propagated across the cluster more - quickly at the expense of increased bandwidth. - --cluster.pushpull-interval=5s - Interval for gossip state syncs. Setting this - interval lower (more frequent) will increase - convergence speeds across larger clusters at the - expense of increased bandwidth usage. - --cluster.advertise-address=CLUSTER.ADVERTISE-ADDRESS - Explicit address to advertise in cluster. - --alert.query-url The external Thanos Query URL that would be set in all alerts 'Source' field + ``` diff --git a/docs/components/sidecar.md b/docs/components/sidecar.md index bba4276b25..af6e0d77ab 100644 --- a/docs/components/sidecar.md +++ b/docs/components/sidecar.md @@ -43,9 +43,40 @@ Flags: forced by baggage item. See `pkg/tracing/tracing.go` for details. --grpc-address="0.0.0.0:10901" - Listen address for gRPC endpoints. + Listen ip:port address for gRPC endpoints + (StoreAPI). Make sure this address is routable + from other components if you use gossip, + 'grpc-advertise-address' is empty and you + require cross-node connection. + --grpc-advertise-address=GRPC-ADVERTISE-ADDRESS + Explicit (external) host:port address to + advertise for gRPC StoreAPI in gossip cluster. + If empty, 'grpc-address' will be used. --http-address="0.0.0.0:10902" - Listen address for HTTP endpoints. + Listen host:port for HTTP endpoints. + --cluster.address="0.0.0.0:10900" + Listen ip:port address for gossip cluster. + --cluster.advertise-address=CLUSTER.ADVERTISE-ADDRESS + Explicit (external) ip:port address to + advertise for gossip in gossip cluster. Used + internally for membership only + --cluster.peers=CLUSTER.PEERS ... + Initial peers to join the cluster. It can be + either , or . A lookup + resolution is done only at the startup. + --cluster.gossip-interval=5s + Interval between sending gossip messages. By + lowering this value (more frequent) gossip + messages are propagated across the cluster more + quickly at the expense of increased bandwidth. + --cluster.pushpull-interval=5s + Interval for gossip state syncs. Setting this + interval lower (more frequent) will increase + convergence speeds across larger clusters at + the expense of increased bandwidth usage. + --cluster.refresh-interval=1m0s + Interval for membership to refresh + cluster.peers state, 0 disables refresh. --prometheus.url=http://localhost:9090 URL at which to reach Prometheus's API. --tsdb.path="./data" Data directory of TSDB. @@ -61,23 +92,6 @@ Flags: --s3.signature-version2 Whether to use S3 Signature Version 2; otherwise Signature Version 4 will be used. --s3.encrypt-sse Whether to use Server Side Encryption - --cluster.peers=CLUSTER.PEERS ... - Initial peers to join the cluster. It can be - either , or . - --cluster.address="0.0.0.0:10900" - Listen address for cluster. - --cluster.advertise-address=CLUSTER.ADVERTISE-ADDRESS - Explicit address to advertise in cluster. - --cluster.gossip-interval=5s - Interval between sending gossip messages. By - lowering this value (more frequent) gossip - messages are propagated across the cluster more - quickly at the expense of increased bandwidth. - --cluster.pushpull-interval=5s - Interval for gossip state syncs. Setting this - interval lower (more frequent) will increase - convergence speeds across larger clusters at - the expense of increased bandwidth usage. --reloader.config-file="" Config file watched by the reloader. --reloader.config-envsubst-file="" Output file for environment variable diff --git a/docs/components/store.md b/docs/components/store.md index 26630a7fc3..8a9d5698c1 100644 --- a/docs/components/store.md +++ b/docs/components/store.md @@ -35,9 +35,40 @@ Flags: forced by baggage item. See `pkg/tracing/tracing.go` for details. --grpc-address="0.0.0.0:10901" - Listen address for gRPC endpoints. + Listen ip:port address for gRPC endpoints + (StoreAPI). Make sure this address is routable + from other components if you use gossip, + 'grpc-advertise-address' is empty and you + require cross-node connection. + --grpc-advertise-address=GRPC-ADVERTISE-ADDRESS + Explicit (external) host:port address to + advertise for gRPC StoreAPI in gossip cluster. + If empty, 'grpc-address' will be used. --http-address="0.0.0.0:10902" - Listen address for HTTP endpoints. + Listen host:port for HTTP endpoints. + --cluster.address="0.0.0.0:10900" + Listen ip:port address for gossip cluster. + --cluster.advertise-address=CLUSTER.ADVERTISE-ADDRESS + Explicit (external) ip:port address to advertise + for gossip in gossip cluster. Used internally + for membership only + --cluster.peers=CLUSTER.PEERS ... + Initial peers to join the cluster. It can be + either , or . A lookup + resolution is done only at the startup. + --cluster.gossip-interval=5s + Interval between sending gossip messages. By + lowering this value (more frequent) gossip + messages are propagated across the cluster more + quickly at the expense of increased bandwidth. + --cluster.pushpull-interval=5s + Interval for gossip state syncs. Setting this + interval lower (more frequent) will increase + convergence speeds across larger clusters at the + expense of increased bandwidth usage. + --cluster.refresh-interval=1m0s + Interval for membership to refresh cluster.peers + state, 0 disables refresh. --tsdb.path="./data" Data directory of TSDB. --gcs.bucket= Google Cloud Storage bucket name for stored blocks. If empty sidecar won't store any block @@ -53,22 +84,5 @@ Flags: --index-cache-size=250MB Maximum size of items held in the index cache. --chunk-pool-size=2GB Maximum size of concurrently allocatable bytes for chunks. - --cluster.peers=CLUSTER.PEERS ... - Initial peers to join the cluster. It can be - either , or . - --cluster.address="0.0.0.0:10900" - Listen address for cluster. - --cluster.advertise-address=CLUSTER.ADVERTISE-ADDRESS - Explicit address to advertise in cluster. - --cluster.gossip-interval=5s - Interval between sending gossip messages. By - lowering this value (more frequent) gossip - messages are propagated across the cluster more - quickly at the expense of increased bandwidth. - --cluster.pushpull-interval=5s - Interval for gossip state syncs. Setting this - interval lower (more frequent) will increase - convergence speeds across larger clusters at the - expense of increased bandwidth usage. ``` diff --git a/pkg/query/api/v1.go b/pkg/query/api/v1.go index ab127c7cc2..8cca71e088 100644 --- a/pkg/query/api/v1.go +++ b/pkg/query/api/v1.go @@ -101,10 +101,10 @@ type API struct { queryableCreate query.QueryableCreator queryEngine *promql.Engine - instantQueryDuration prometheus.Histogram - rangeQueryDuration prometheus.Histogram - - now func() time.Time + instantQueryDuration prometheus.Histogram + rangeQueryDuration prometheus.Histogram + enableAutodownsampling bool + now func() time.Time } // NewAPI returns an initialized API type. @@ -113,6 +113,7 @@ func NewAPI( reg *prometheus.Registry, qe *promql.Engine, c query.QueryableCreator, + enableAutodownsampling bool, ) *API { instantQueryDuration := prometheus.NewHistogram(prometheus.HistogramOpts{ Name: "thanos_query_api_instant_query_duration_seconds", @@ -134,12 +135,13 @@ func NewAPI( rangeQueryDuration, ) return &API{ - logger: logger, - queryEngine: qe, - queryableCreate: c, - instantQueryDuration: instantQueryDuration, - rangeQueryDuration: rangeQueryDuration, - now: time.Now, + logger: logger, + queryEngine: qe, + queryableCreate: c, + instantQueryDuration: instantQueryDuration, + rangeQueryDuration: rangeQueryDuration, + enableAutodownsampling: enableAutodownsampling, + now: time.Now, } } @@ -277,7 +279,11 @@ func (api *API) queryRange(r *http.Request) (interface{}, []error, *apiError) { return nil, nil, &apiError{errorBadData, err} } - maxSourceResolution := step / 5 // By default fit at least 5 samples between steps. + maxSourceResolution := 0 * time.Second + if api.enableAutodownsampling { + // If no max_source_resolution is specified fit at least 5 samples between steps. + maxSourceResolution = step / 5 + } if val := r.FormValue("max_source_resolution"); val != "" { maxSourceResolution, err = parseDuration(val) if err != nil { diff --git a/pkg/query/ui/bindata.go b/pkg/query/ui/bindata.go index ab0b54747c..746da3d8b8 100644 --- a/pkg/query/ui/bindata.go +++ b/pkg/query/ui/bindata.go @@ -114,7 +114,7 @@ func pkgQueryUiTemplates_baseHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/templates/_base.html", size: 2428, mode: os.FileMode(420), modTime: time.Unix(1530522886, 0)} + info := bindataFileInfo{name: "pkg/query/ui/templates/_base.html", size: 2428, mode: os.FileMode(436), modTime: time.Unix(1530605819, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -134,7 +134,7 @@ func pkgQueryUiTemplatesFlagsHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/templates/flags.html", size: 433, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/templates/flags.html", size: 433, mode: os.FileMode(436), modTime: time.Unix(1510240981, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -154,7 +154,7 @@ func pkgQueryUiTemplatesGraphHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/templates/graph.html", size: 2061, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/templates/graph.html", size: 2061, mode: os.FileMode(436), modTime: time.Unix(1510240981, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -174,7 +174,7 @@ func pkgQueryUiTemplatesStatusHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/templates/status.html", size: 1286, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/templates/status.html", size: 1286, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -194,7 +194,7 @@ func pkgQueryUiStaticCssGraphCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/css/graph.css", size: 3359, mode: os.FileMode(420), modTime: time.Unix(1527584209, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/css/graph.css", size: 3359, mode: os.FileMode(436), modTime: time.Unix(1527501614, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -214,7 +214,7 @@ func pkgQueryUiStaticCssPrometheusCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/css/prometheus.css", size: 322, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/css/prometheus.css", size: 322, mode: os.FileMode(436), modTime: time.Unix(1510240981, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -234,7 +234,7 @@ func pkgQueryUiStaticImgAjaxLoaderGif() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/img/ajax-loader.gif", size: 847, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/img/ajax-loader.gif", size: 847, mode: os.FileMode(436), modTime: time.Unix(1510240981, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -254,7 +254,7 @@ func pkgQueryUiStaticImgFaviconIco() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/img/favicon.ico", size: 15886, mode: os.FileMode(420), modTime: time.Unix(1530522830, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/img/favicon.ico", size: 15886, mode: os.FileMode(436), modTime: time.Unix(1530605819, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -274,12 +274,12 @@ func pkgQueryUiStaticJsGraphJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/js/graph.js", size: 31377, mode: os.FileMode(420), modTime: time.Unix(1527584209, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/js/graph.js", size: 31377, mode: os.FileMode(436), modTime: time.Unix(1527504222, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _pkgQueryUiStaticJsGraph_templateHandlebar = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x59\x4b\x8f\xdb\xb6\x13\xbf\xff\x3f\xc5\xfc\xd9\x4b\x82\x42\xeb\x6c\x8a\xe4\x50\xc8\x2a\xd2\x64\x11\xa0\x40\x90\x22\xd9\xe4\x6a\x8c\xc5\xb1\xc5\x86\x22\x15\x92\xf2\xa3\xc6\x7e\xf7\x82\xa2\x24\x3f\x56\x92\xe5\x64\xbb\x45\xf6\xa0\xb5\xc9\x79\x71\xf8\x9b\x87\xc6\x50\xff\xc5\x5c\xac\x40\xf0\x29\x5b\x1a\x2c\xb2\xd9\xda\x60\x51\x90\xd9\xed\x04\xbf\xbb\x63\x90\x4a\xb4\xf6\x64\x8f\x25\xff\x83\xf6\x2f\x5e\x68\x93\x37\x64\x5f\x4b\x32\xdb\x59\xb5\xe2\x1f\x91\x50\x52\x28\x3a\xa2\xaf\x15\xd6\x0c\x46\xaf\x4f\x76\x8f\xf7\x53\x2d\x23\xb9\x8c\xae\x9f\xdd\xa3\x02\x88\x1d\x6d\x1c\x1a\x42\x30\x7a\x6d\xa7\xec\x9a\x41\x21\x31\xa5\x4c\x4b\x4e\x66\xca\x6e\x36\x85\x21\x6b\x85\x56\xf0\xa4\xfa\x04\x1f\x33\xb1\x70\x3f\xdf\x28\x47\xc6\xdb\x07\x8a\xd6\xde\x3e\xfb\x94\x81\xc2\x9c\xa6\x8c\x36\x85\x61\x95\x33\xfc\xa7\x13\x1f\x54\x27\x4a\xb5\x72\x46\x4b\xa0\x56\xf8\x4c\xa8\xa2\x74\x0c\x38\x3a\x8c\x0a\xa3\x57\x82\xd3\x94\xb9\x6d\x41\x98\x11\x72\x06\x58\x3a\x9d\xea\xbc\x90\xe4\x68\xca\xf4\x62\xc1\x92\xdd\xce\xf3\xdf\xdd\xc5\x93\xe6\x0c\xf7\x9c\x30\xe1\x62\x35\xc2\x33\xcf\xbb\x1c\x73\x40\x46\x2b\x94\x33\xeb\xd0\x59\x28\x4a\x29\x23\x23\x96\x99\x63\x49\xa7\x78\x80\x58\xe4\x4b\xb0\x26\x9d\xb2\xdd\x0e\x0a\x74\xd9\x9f\x86\x16\x62\x03\x77\x77\x13\x2f\x43\xa4\x13\x91\x2f\x27\xf8\x17\x6e\x22\xa9\x91\x93\xb9\x5a\x8a\xc5\x6f\xab\xe9\x6e\x07\xf3\x52\x48\xfe\x99\x4c\xe5\xef\x03\xaf\xd9\x42\x28\x45\x86\x01\x4a\x37\x65\x9e\x75\xd6\x2c\x8d\x38\x73\xd7\xd2\x43\xc1\xa7\xba\xb7\x86\x72\xee\x14\xcc\x9d\x8a\x0a\x23\x72\x34\x5b\xa0\x0d\xa5\xa5\xa3\xd9\xdc\x29\x06\xfe\x32\xa7\xcc\x96\xf3\x5c\x38\x06\x2b\x94\x25\x79\x78\x55\x14\x0d\x74\xea\xdd\x0e\x3d\x96\x24\xa5\xee\x1c\x8a\x02\x55\x23\x4d\x28\x4b\xc6\xcd\x72\x72\x46\xa4\x1d\x42\x01\x62\x5d\x38\xef\xea\xda\x1a\x96\x44\x10\x98\x20\x30\x01\x3a\x48\x4b\x63\xb5\x81\x28\x9e\x04\xe2\x0e\xe3\x26\x41\x6f\xc7\xce\xbc\x74\x4e\xab\xfa\xec\xe1\x0b\x3b\xf5\x16\xa7\x05\x96\xd2\x01\x27\x5e\x16\x95\xaf\xba\xfc\xdc\x26\x11\xb9\x2d\x32\x91\x6a\xe5\xf1\x27\x92\xc0\x25\x45\x8a\xde\xb6\x0e\xd3\x82\xd2\xde\x9b\x0b\x96\x65\x82\x73\x52\x8d\xdf\x2a\x91\xed\x15\x5d\x3f\x22\xc4\xce\x06\xa2\x31\xda\x00\x4a\x7f\x43\xd5\x33\xe2\xa8\x96\x3e\x0a\xba\x43\xfd\x3f\x33\x74\x8d\x46\x09\xb5\xb4\x47\xb6\xd6\x8b\x17\x1b\x7b\xbc\xf6\xff\x28\x3a\xe1\xbc\x7d\xff\xe6\xfd\xaf\xf0\x5a\xab\x95\xd7\xe5\x32\x61\xc1\x69\xf8\x5d\x6b\x67\x9d\xc1\x02\x14\xae\xe6\x68\xae\x00\x6e\xfd\x96\xa1\xaf\xa5\x30\x64\xe1\x0f\x5c\xa1\x4d\x8d\x28\x5c\x47\x64\x00\x18\x5a\x18\xb2\xd9\xd5\xc9\x66\x14\xfd\x8b\xde\x33\x5a\xfa\xb4\x8f\xf3\x02\x15\xc9\xee\x90\x2d\x65\x23\x4e\xe1\xca\x9f\x2d\x72\x38\xb7\x6c\xcf\x2b\x85\xed\x4a\x21\x15\xb3\x14\x35\x9d\x4f\x19\xa4\x5c\x15\x35\x2c\x89\x11\x32\x43\x8b\x29\xfb\xa9\xaa\xd1\x4d\xcd\x42\x23\xb0\x49\x33\x4d\xfd\x6e\xf6\x5a\x75\x75\xd1\x72\x7a\xb9\x6c\x56\x92\xb7\x9e\x32\x9e\x60\x12\x4f\xa4\xb8\xc8\x94\xe6\x6c\x98\x3a\xb1\xa2\x43\xcb\x52\xad\xac\x96\xd4\x63\xdb\xc9\xee\xa0\x75\xaf\x03\xed\x90\x7d\xf1\xa4\x94\x9d\xeb\x07\xb7\xe9\x70\x5e\x19\x40\xaa\xd7\xdd\x1d\x77\x7a\xc8\xed\x57\x20\x74\x45\x5e\x10\x0a\x45\x06\x0c\xf9\xaa\xc8\xf6\xdd\x54\x7d\xa6\x6e\x15\x27\x00\x93\x84\x66\x21\x36\xbd\xc4\x21\x7e\xe0\x66\xe3\x0c\xa6\x8e\xb8\x0f\x94\x85\x36\xa9\x37\x43\x97\x05\x71\xa8\xd2\xa2\xbd\xba\x87\xf3\x3e\x95\x85\xd1\x39\xb9\x8c\x4a\x1b\x7a\x98\x59\x25\x08\x8c\xcf\x4b\x61\x25\xf4\x0c\x92\x16\x7d\x6e\xaa\x85\x86\x4c\x3d\x40\x01\x7d\x95\x63\xaf\x60\x90\xfb\xa8\x0a\x0d\x52\x36\x75\x20\x9d\x55\xe7\x38\x23\x56\x38\x7f\xc3\x1f\x33\x23\xd4\x17\x70\x19\x81\x13\x39\x05\x0f\x5c\x0d\x1e\xb9\xb3\xae\x41\xfb\x29\xca\x85\x2a\x6d\xa8\x73\x43\x8e\xeb\xad\x71\x87\x7a\xfc\x4d\x8c\xf1\x6d\xeb\xcb\x80\x84\xe1\xa3\x7b\x8c\x1e\xdc\x74\x8d\xd4\x31\xde\xba\x6d\x5d\x04\x7a\x11\x62\x60\xcc\xe5\xf9\x4e\x77\xcc\xd5\x1d\x18\x35\x4c\x6e\xc5\xdf\x34\x65\xbf\x0c\x13\xd5\x9d\xc0\x6e\x77\x20\x76\x20\x22\x61\x24\x9a\xbf\x17\xcf\x97\x20\x1a\xda\x9e\x70\x14\xa6\xdb\x7b\x7a\x6b\xf4\xfa\x41\x31\x5d\xc8\x07\x81\x74\x57\x6b\x70\xb4\xff\x38\x69\xee\x30\xb5\xfd\x80\x68\xf0\x19\x8e\x14\x1f\x89\x85\x0f\xb4\x16\x8a\x57\x68\x20\xff\x5f\xe4\xdf\x89\x85\x39\xa6\x5f\xd6\x68\xf8\x05\x78\xf8\xbe\x1c\xd7\x91\xe5\x38\xba\xa6\x4e\x8d\x48\x17\x21\xe5\x91\xe2\x63\x52\x5d\xeb\xb8\x9b\xda\x5b\x6d\xaa\x83\x27\x9f\x6e\x5f\x3f\x3d\xc7\x7d\x34\x88\xf8\xa4\x9c\x90\xe7\x38\xaa\x5e\xc7\xbf\x1c\xa2\x9b\xb2\xed\x76\xbb\x8d\xde\xbd\x8b\xf8\xf9\xfb\x1d\x99\x5b\x1b\xd8\x90\xe2\x63\x72\x6b\x93\x5d\xaf\x5f\x9e\xa3\x6b\x13\x2c\xa9\xd0\xea\xfc\x80\xb1\xe4\x33\xeb\xf8\x58\x7a\xc5\x57\xa8\x52\x7a\xc0\x60\x5a\x68\x73\x61\x2c\xf5\x53\x9c\xc9\xad\x97\xe5\xc5\xa1\x03\x1d\x4e\x4f\xea\x11\x58\x9b\x6c\x14\xaf\xba\x61\xab\x65\x59\x0d\x29\x84\x02\x4b\xa9\x56\xdc\x9e\xcc\xe8\x3e\xd0\x95\xa7\xbb\x82\x27\xf6\x29\x3b\x04\x73\x33\x55\x71\x54\x34\x03\x36\x1f\xbe\xfb\xef\xcd\xeb\x42\x8b\xbf\xfd\x96\x5f\x0e\xf0\x7d\x39\xd4\x4d\x3f\x9a\xab\x2e\x99\xa4\x58\x87\xe9\x17\xe2\x3d\xb3\x94\xe3\x1b\xe8\x9b\xab\xd4\x32\x1e\xa4\xef\xec\x9c\xb2\xd4\x0a\x8e\x9c\x5f\xad\x0c\x76\x56\x8f\xe6\xf0\x76\xe4\x16\xac\xcd\x71\x33\xb3\xba\x34\x29\xcd\xf6\x90\x9c\x1d\x43\xf6\x8d\x5e\x2b\x8b\x79\x21\x85\x5a\x42\x18\x96\x05\xc0\x0d\x30\x9f\x79\xb9\x6b\x8d\x39\x1d\xd4\xbd\x2a\x9d\x06\x7e\xa0\xb0\x7f\x3c\x37\x28\xe9\x99\x65\xc9\x7b\x25\xb7\x60\x70\x5d\x95\x8f\x6f\x94\xf3\x22\x67\xc9\x3b\xdc\xc0\x8b\xfc\x21\xac\xba\xce\x82\xb4\xeb\xec\x72\x69\xfd\xd3\xc8\x96\xa0\x73\x6c\x7d\xb4\x39\xe2\x5d\x3b\xbc\xb7\xa3\x21\xec\x9d\x84\xdf\x67\x92\xb4\xf4\x35\x62\x88\x61\x68\x6b\xcc\x3c\x21\x4c\x4e\xa0\x1e\x88\x1c\x8d\x13\x8e\x87\x24\xbd\xf6\x3a\x9c\x4b\x3a\x90\x2b\x09\xaa\x67\xe4\x93\x2f\x29\xeb\xfb\xe9\xea\x7b\xa6\x57\x64\x1a\x4d\xb3\x6a\x6d\x28\x74\x5d\x46\xc8\x07\xb3\x85\xcb\x92\x1b\x49\x39\x29\x17\x4f\x5c\x76\x8e\xf4\xb3\x07\xcb\x30\xa1\xdf\x1d\x54\x1a\xbb\xb9\xe6\xdb\x61\x4d\x26\x89\x1d\x87\x54\x4b\x5b\xa0\x9a\xb2\xe7\x2c\x89\x45\xa2\x74\x1d\x2e\x22\x89\x27\x8e\xfb\x87\x19\xb4\x63\x48\x4f\x3c\xa9\x9c\x77\x21\x20\xfa\x7e\x7f\x79\xe4\x51\x30\xf8\x5a\xdb\xfc\x26\xd4\x7d\x02\x6c\x5e\xcb\x29\xd7\x2b\x62\xcd\x48\x8f\x25\x1f\xaa\x05\x68\xe7\x85\xdf\x60\x75\x3c\xf1\x0d\xef\x7e\xa5\x26\xf8\x27\x00\x00\xff\xff\x73\x2c\x1c\x54\x9a\x1c\x00\x00") +var _pkgQueryUiStaticJsGraph_templateHandlebar = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x59\x5b\x8f\xdb\xb6\x12\x7e\x3f\xbf\x62\x0e\xcf\x4b\x82\x03\xad\xb3\x29\x92\x87\x42\x56\x91\x26\x8b\x00\x05\x82\x14\xc9\x26\xaf\xc6\x58\x1c\x5b\x6c\x28\x52\x21\x29\x5f\x6a\xec\x7f\x2f\x28\x4a\xf2\x65\x25\x59\xee\x6e\xb7\xc8\x3e\x78\x65\x72\x6e\x9c\xf9\x66\x38\x1a\x43\xfd\x17\x73\xb1\x02\xc1\xa7\x6c\x69\xb0\xc8\x66\x6b\x83\x45\x41\x66\xb7\x13\xfc\xee\x8e\x41\x2a\xd1\xda\x93\x3d\x96\xfc\x07\xda\xbf\x78\xa1\x4d\xde\x90\x7d\x2f\xc9\x6c\x67\xd5\x8a\xff\x88\x84\x92\x42\xd1\x11\x7d\xad\xb0\x66\x30\x7a\x7d\xb2\x7b\xbc\x9f\x6a\x19\xc9\x65\x74\xfd\xe2\x1e\x15\x40\xec\x68\xe3\xd0\x10\x82\xd1\x6b\x3b\x65\xd7\x0c\x0a\x89\x29\x65\x5a\x72\x32\x53\x76\xb3\x29\x0c\x59\x2b\xb4\x82\x67\xd5\x13\x7c\xce\xc4\xc2\xfd\xff\x46\x39\x32\xde\x3e\x50\xb4\xf6\xf6\xd9\xe7\x0c\x14\xe6\x34\x65\xb4\x29\x0c\xab\x9c\xe1\x9f\x4e\x7c\x50\x9d\x28\xd5\xca\x19\x2d\x81\x5a\xe1\x33\xa1\x8a\xd2\x31\xe0\xe8\x30\x2a\x8c\x5e\x09\x4e\x53\xe6\xb6\x05\x61\x46\xc8\x19\x60\xe9\x74\xaa\xf3\x42\x92\xa3\x29\xd3\x8b\x05\x4b\x76\x3b\xcf\x7f\x77\x17\x4f\x9a\x33\xdc\x73\xc2\x84\x8b\xd5\x08\xcf\xbc\xec\x72\xcc\x01\x19\xad\x50\xce\xac\x43\x67\xa1\x28\xa5\x8c\x8c\x58\x66\x8e\x25\x9d\xe2\x01\x62\x91\x2f\xc1\x9a\x74\xca\x76\x3b\x28\xd0\x65\xbf\x1b\x5a\x88\x0d\xdc\xdd\x4d\xbc\x0c\x91\x4e\x44\xbe\x9c\xe0\x1f\xb8\x89\xa4\x46\x4e\xe6\x6a\x29\x16\xbf\xac\xa6\xbb\x1d\xcc\x4b\x21\xf9\x57\x32\x95\xbf\x0f\xbc\x66\x0b\xa1\x14\x19\x06\x28\xdd\x94\x79\xd6\x59\xb3\x34\xe2\xcc\x5d\x4b\x8f\x05\x9f\x2a\x6e\x0d\xe5\xdc\x29\x98\x3b\x15\x15\x46\xe4\x68\xb6\x40\x1b\x4a\x4b\x47\xb3\xb9\x53\x0c\x7c\x30\xa7\xcc\x96\xf3\x5c\x38\x06\x2b\x94\x25\x79\x78\x55\x14\x0d\x74\xea\xdd\x0e\x3d\x96\x24\xa5\xee\x1c\x8a\x02\x55\x23\x4d\x28\x4b\xc6\xcd\x72\x72\x46\xa4\x1d\x42\x01\x62\x5d\x38\xef\xea\xda\x1a\x96\x44\x10\x98\x20\x30\x01\x3a\x48\x4b\x63\xb5\x81\x28\x9e\x04\xe2\x0e\xe3\x26\x41\x6f\xc7\xce\xbc\x74\x4e\xab\xfa\xec\xe1\x0b\x3b\xf5\x16\xa7\x05\x96\xd2\x01\x27\x5e\x16\x95\xaf\xba\xfc\xdc\x16\x11\xb9\x2d\x32\x91\x6a\xe5\xf1\x27\x92\xc0\x25\x45\x8a\xde\xb6\x0e\xd3\x82\xd2\xde\xc8\x05\xcb\x32\xc1\x39\xa9\xc6\x6f\x95\xc8\x36\x44\xd7\x4f\x08\xb1\xb3\x89\x68\x8c\x36\x80\xd2\x47\xa8\xfa\x8c\x38\xaa\xa5\xcf\x82\xee\x54\xff\xd7\x0c\x5d\xa3\x51\x42\x2d\xed\x91\xad\xf5\xe2\xc5\xc6\x1e\xaf\xfd\x37\x8a\x4e\x38\x6f\x3f\xbe\xfb\xf8\x33\xbc\xd5\x6a\xe5\x75\xb9\x4c\x58\x70\x1a\x7e\xd5\xda\x59\x67\xb0\x00\x85\xab\x39\x9a\x2b\x80\x5b\xbf\x65\xe8\x7b\x29\x0c\x59\xf8\x0d\x57\x68\x53\x23\x0a\xd7\x91\x19\x00\x86\x16\x86\x6c\x76\x75\xb2\x19\x45\xff\xa0\xf7\x8c\x96\xbe\xec\xe3\xbc\x40\x45\xb2\x3b\x65\x4b\xd9\x88\x53\xb8\xf2\x67\x8b\x1c\xce\x2d\xdb\xf3\x4a\x61\xbb\x4a\x48\xc5\x2c\x45\x4d\xe7\x4b\x06\x29\x57\x65\x0d\x4b\x62\x84\xcc\xd0\x62\xca\xfe\x57\xdd\xd1\xcd\x9d\x85\x46\x60\x53\x66\x9a\xfb\xbb\xd9\x6b\xd5\xd5\x97\x96\xd3\xcb\x65\xb3\x92\xbc\xf7\x94\xf1\x04\x93\x78\x22\xc5\x45\xa6\x34\x67\xc3\xd4\x89\x15\x1d\x5a\x96\x6a\x65\xb5\xa4\x1e\xdb\x4e\x76\x07\xad\x7b\x1b\x68\x87\xec\x8b\x27\xa5\xec\x5c\x3f\x88\xa6\xc3\x79\x65\x00\xa9\x5e\x77\x77\xc4\xf4\x90\xdb\xaf\x40\xe8\x8a\xbc\x20\x14\x8a\x0c\x18\xf2\xb7\x22\xdb\x77\x53\xf5\x99\xba\x55\x9c\x00\x4c\x12\x9a\x85\xd8\xf4\x12\x87\xfc\x81\x9b\x8d\x33\x98\x3a\xe2\x3e\x51\x16\xda\xa4\xde\x0c\x5d\x16\xc4\xa1\x2a\x8b\xf6\xea\x1e\xce\xfb\x54\x16\x46\xe7\xe4\x32\x2a\x6d\xe8\x61\x66\x95\x20\x30\xbe\x2e\x85\x95\xd0\x33\x48\x5a\xf4\xb9\xa9\x16\x1a\x2a\xf5\x00\x05\xf4\xdd\x1c\x7b\x05\x83\xdc\x47\xb7\xd0\x20\x65\x73\x0f\xa4\xb3\xea\x1c\x67\xc4\x0a\xe7\x23\xfc\x39\x33\x42\x7d\x03\x97\x11\x38\x91\x53\xf0\xc0\xd5\xe0\x91\x3b\xef\x35\x68\x9f\xa2\x5c\xa8\xd2\x86\x7b\x6e\xc8\x71\xbd\x77\xdc\xa1\x1e\x1f\x89\x31\xbe\x6d\x7d\x19\x90\x30\x7c\x74\x8f\xd1\x83\x48\xd7\x48\x1d\xe3\xad\xdb\xd6\x45\xa0\x17\x21\x07\xc6\x04\xcf\x77\xba\x63\x42\x77\x60\xd4\x30\xb9\x15\x7f\xd2\x94\xfd\x34\x4c\x54\x77\x02\xbb\xdd\x81\xd8\x81\x8c\x84\x91\x68\x7e\x28\x9e\x2f\x41\x34\xb4\x3d\xe1\x28\x4c\xb7\x71\x7a\x6f\xf4\xfa\x51\x31\x5d\xc8\x47\x81\x74\x57\x6b\x70\xb4\xff\x34\x65\xee\xb0\xb4\xfd\x80\x68\xf0\x15\x8e\x14\x1f\x89\x85\x4f\xb4\x16\x8a\x57\x68\x20\xff\x5f\xe4\x0f\xc4\xc2\x1c\xd3\x6f\x6b\x34\xfc\x02\x3c\x3c\xac\xc6\x75\x54\x39\x8e\xae\xb9\xa7\x46\x94\x8b\x50\xf2\x48\xf1\x31\xa5\xae\x75\xdc\x4d\xed\xad\xb6\xd4\xc1\xb3\x2f\xb7\x6f\x9f\x9f\xe3\x3e\x1a\x44\x7c\x51\x4e\xc8\x73\x1c\x55\xaf\xe3\x5f\x0e\xd1\x4d\xd9\x76\xbb\xdd\x46\x1f\x3e\x44\xfc\x7c\x7c\x47\xd6\xd6\x06\x36\xa4\xf8\x98\xda\xda\x54\xd7\xeb\xd7\xe7\xe8\xda\x02\x4b\x2a\xb4\x3a\x3f\x60\x2e\xf9\xca\x3a\x3e\x97\xde\xf0\x15\xaa\x94\x1e\x31\x99\x16\xda\x5c\x98\x4b\xfd\x14\x67\x6a\xeb\x65\x75\x71\xe8\x40\x87\xd3\x93\x7a\x04\xd6\x16\x1b\xc5\xab\x6e\xd8\x6a\x59\x56\x43\x0a\xa1\xc0\x52\xaa\x15\xb7\x27\x33\xba\x4f\x74\xe5\xe9\xae\xe0\x99\x7d\xce\x0e\xc1\xdc\x4c\x55\x1c\x15\xcd\x80\xcd\xa7\xef\xfe\x7b\xf3\xba\xd0\xe2\x6f\xbf\xe5\x97\x03\x7c\x5f\x0f\x75\xd3\x4f\xe6\xaa\x4b\x26\x29\xd6\x61\xfa\x8d\x78\xcf\x2c\xe5\x38\x02\x7d\x73\x95\x5a\xc6\xa3\xf4\x9d\x9d\x53\x96\x5a\xc1\x91\xf3\xab\x95\xc1\xce\xea\xc9\x1c\xde\x8e\xdc\x82\xb5\x39\x6e\x66\x56\x97\x26\xa5\xd9\x1e\x92\xb3\x63\xc8\xbe\xd3\x6b\x65\x31\x2f\xa4\x50\x4b\x08\xc3\xb2\x00\xb8\x01\xe6\x33\x2f\x77\xad\x31\xa7\x83\xba\x37\xa5\xd3\xc0\x0f\x14\xf6\x8f\xe7\xba\x25\x85\xd3\x91\x4f\x87\xfa\xa9\x8d\xc4\x0b\xcb\x92\x8f\x4a\x6e\xc1\xe0\xba\xba\x52\x2e\x95\x5d\xcb\x79\x95\xb3\xe4\x03\x6e\xe0\x55\xfe\x20\x4b\x9b\x39\x5c\x16\xa4\x5d\x67\x97\x4b\xeb\x9f\x50\xb6\x04\x9d\xa3\xec\xa3\xcd\x11\xef\xdf\xe1\x5d\x1e\x0d\x61\xef\x74\xfc\x3e\x93\xa4\xa5\xbf\x37\x86\x18\x86\xb6\xc6\xcc\x18\xc2\x34\x05\xea\x21\xc9\xd1\x88\xe1\x78\x70\xd2\x6b\xaf\xc3\xb9\xa4\x03\xb9\x92\xa0\xfa\x8c\x7c\x41\x26\x65\x7d\x8f\x5d\x7d\xcf\xf4\x8a\x4c\xa3\x69\x56\xad\x0d\xa5\xb3\xcb\x08\xf9\x60\x05\x71\x59\x72\x23\x29\x27\xe5\xe2\x89\xcb\xce\x91\x7e\xf5\x60\x19\x26\xf4\xbb\x83\x4a\x63\x37\xd7\x7c\x3b\xac\xc9\x24\xb1\xe3\x90\x6a\x69\x0b\x54\x53\xf6\x92\x25\xb1\x48\x94\xae\xd3\x45\x24\xf1\xc4\x71\xff\x61\x06\xed\x18\xd2\x13\x4f\x2a\xe7\x5d\x08\x88\xbe\xdf\x64\x9e\x78\x3c\x0c\xfe\xfe\x6d\x7e\x27\xea\x3e\x01\x36\xaf\xea\x94\xeb\x15\xb1\x66\xcc\xc7\x92\x4f\xd5\x02\xb4\x33\xc4\xbf\x61\x75\x3c\xf1\x4d\xf0\x7e\xa5\x26\xf8\x2b\x00\x00\xff\xff\x99\xdb\x9e\x24\xae\x1c\x00\x00") func pkgQueryUiStaticJsGraph_templateHandlebarBytes() ([]byte, error) { return bindataRead( @@ -294,7 +294,7 @@ func pkgQueryUiStaticJsGraph_templateHandlebar() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/js/graph_template.handlebar", size: 7322, mode: os.FileMode(420), modTime: time.Unix(1527584209, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/js/graph_template.handlebar", size: 7342, mode: os.FileMode(436), modTime: time.Unix(1530780097, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -314,7 +314,7 @@ func pkgQueryUiStaticVendorBootstrap331CssBootstrapThemeMinCss() (*asset, error) return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/bootstrap-3.3.1/css/bootstrap-theme.min.css", size: 19835, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/bootstrap-3.3.1/css/bootstrap-theme.min.css", size: 19835, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -334,7 +334,7 @@ func pkgQueryUiStaticVendorBootstrap331CssBootstrapMinCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/bootstrap-3.3.1/css/bootstrap.min.css", size: 113498, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/bootstrap-3.3.1/css/bootstrap.min.css", size: 113498, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -354,7 +354,7 @@ func pkgQueryUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularEot() (*as return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.eot", size: 20335, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.eot", size: 20335, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -374,7 +374,7 @@ func pkgQueryUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularSvg() (*as return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.svg", size: 62926, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.svg", size: 62926, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -394,7 +394,7 @@ func pkgQueryUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularTtf() (*as return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.ttf", size: 41280, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.ttf", size: 41280, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -414,7 +414,7 @@ func pkgQueryUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularWoff() (*a return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.woff", size: 23320, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.woff", size: 23320, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -434,7 +434,7 @@ func pkgQueryUiStaticVendorBootstrap331JsBootstrapMinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/bootstrap-3.3.1/js/bootstrap.min.js", size: 35601, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/bootstrap-3.3.1/js/bootstrap.min.js", size: 35601, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -454,7 +454,7 @@ func pkgQueryUiStaticVendorBootstrap331JsNpmJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/bootstrap-3.3.1/js/npm.js", size: 484, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/bootstrap-3.3.1/js/npm.js", size: 484, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -474,7 +474,7 @@ func pkgQueryUiStaticVendorBootstrap3TypeaheadBootstrap3TypeaheadMinJs() (*asset return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/bootstrap3-typeahead/bootstrap3-typeahead.min.js", size: 7856, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/bootstrap3-typeahead/bootstrap3-typeahead.min.js", size: 7856, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -494,7 +494,7 @@ func pkgQueryUiStaticVendorEonasdanBootstrapDatetimepickerBootstrapDatetimepicke return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/eonasdan-bootstrap-datetimepicker/bootstrap-datetimepicker.min.css", size: 7771, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/eonasdan-bootstrap-datetimepicker/bootstrap-datetimepicker.min.css", size: 7771, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -514,7 +514,7 @@ func pkgQueryUiStaticVendorEonasdanBootstrapDatetimepickerBootstrapDatetimepicke return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/eonasdan-bootstrap-datetimepicker/bootstrap-datetimepicker.min.js", size: 48881, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/eonasdan-bootstrap-datetimepicker/bootstrap-datetimepicker.min.js", size: 48881, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -534,7 +534,7 @@ func pkgQueryUiStaticVendorFuzzyFuzzyJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/fuzzy/fuzzy.js", size: 5669, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/fuzzy/fuzzy.js", size: 5669, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -554,7 +554,7 @@ func pkgQueryUiStaticVendorJsJqueryHotkeysJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/js/jquery.hotkeys.js", size: 4490, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/js/jquery.hotkeys.js", size: 4490, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -574,7 +574,7 @@ func pkgQueryUiStaticVendorJsJqueryMinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/js/jquery.min.js", size: 86671, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/js/jquery.min.js", size: 86671, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -594,7 +594,7 @@ func pkgQueryUiStaticVendorJsJquerySelectionJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/js/jquery.selection.js", size: 12881, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/js/jquery.selection.js", size: 12881, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -614,7 +614,7 @@ func pkgQueryUiStaticVendorMomentMomentTimezoneWithDataMinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/moment/moment-timezone-with-data.min.js", size: 184190, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/moment/moment-timezone-with-data.min.js", size: 184190, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -634,7 +634,7 @@ func pkgQueryUiStaticVendorMomentMomentMinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/moment/moment.min.js", size: 61281, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/moment/moment.min.js", size: 61281, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -654,7 +654,7 @@ func pkgQueryUiStaticVendorMustacheMustacheMinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/mustache/mustache.min.js", size: 9528, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/mustache/mustache.min.js", size: 9528, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -674,7 +674,7 @@ func pkgQueryUiStaticVendorRickshawRickshawMinCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/rickshaw/rickshaw.min.css", size: 6102, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/rickshaw/rickshaw.min.css", size: 6102, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -694,7 +694,7 @@ func pkgQueryUiStaticVendorRickshawRickshawMinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/rickshaw/rickshaw.min.js", size: 76322, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/rickshaw/rickshaw.min.js", size: 76322, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -714,7 +714,7 @@ func pkgQueryUiStaticVendorRickshawVendorD3LayoutMinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/rickshaw/vendor/d3.layout.min.js", size: 17514, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/rickshaw/vendor/d3.layout.min.js", size: 17514, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -734,7 +734,7 @@ func pkgQueryUiStaticVendorRickshawVendorD3V3Js() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "pkg/query/ui/static/vendor/rickshaw/vendor/d3.v3.js", size: 144718, mode: os.FileMode(420), modTime: time.Unix(1523972574, 0)} + info := bindataFileInfo{name: "pkg/query/ui/static/vendor/rickshaw/vendor/d3.v3.js", size: 144718, mode: os.FileMode(436), modTime: time.Unix(1523923615, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/pkg/query/ui/static/js/graph_template.handlebar b/pkg/query/ui/static/js/graph_template.handlebar index 2e167db50c..0bdd62ca4f 100644 --- a/pkg/query/ui/static/js/graph_template.handlebar +++ b/pkg/query/ui/static/js/graph_template.handlebar @@ -117,7 +117,7 @@