Commit cfaca42e by Ryan McKinley Committed by GitHub

InfluxDB: update flux library and support boolean label values (#29310)

parent 83329ae7
......@@ -22,7 +22,6 @@ require (
github.com/centrifugal/centrifuge v0.13.0
github.com/crewjam/saml v0.4.1
github.com/davecgh/go-spew v1.1.1
github.com/deepmap/oapi-codegen v1.3.11 // indirect
github.com/denisenkom/go-mssqldb v0.0.0-20200620013148-b91950f658ec
github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51 // indirect
github.com/facebookgo/inject v0.0.0-20180706035515-f23751cae28b
......@@ -50,7 +49,7 @@ require (
github.com/hashicorp/go-plugin v1.2.2
github.com/hashicorp/go-version v1.2.0
github.com/inconshreveable/log15 v0.0.0-20180818164646-67afb5ed74ec
github.com/influxdata/influxdb-client-go/v2 v2.0.1
github.com/influxdata/influxdb-client-go/v2 v2.2.0
github.com/jmespath/go-jmespath v0.4.0
github.com/jonboulle/clockwork v0.2.1 // indirect
github.com/jung-kurt/gofpdf v1.10.1
......
......@@ -260,9 +260,8 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dchest/uniuri v0.0.0-20160212164326-8902c56451e9/go.mod h1:GgB8SF9nRG+GqaDtLcwJZsQFhcogVCJ79j4EdT0c2V4=
github.com/deepmap/oapi-codegen v1.3.6/go.mod h1:aBozjEveG+33xPiP55Iw/XbVkhtZHEGLq3nxlX0+hfU=
github.com/deepmap/oapi-codegen v1.3.11 h1:Nd3tDQfqgquLmCzyRONHzs5SJEwPPoQcFZxT8MKt1Hs=
github.com/deepmap/oapi-codegen v1.3.11/go.mod h1:suMvK7+rKlx3+tpa8ByptmvoXbAV70wERKTOGH3hLp0=
github.com/deepmap/oapi-codegen v1.3.13 h1:9HKGCsdJqE4dnrQ8VerFS0/1ZOJPmAhN+g8xgp8y3K4=
github.com/deepmap/oapi-codegen v1.3.13/go.mod h1:WAmG5dWY8/PYHt4vKxlt90NsbHMAOCiteYKZMiIRfOo=
github.com/denisenkom/go-mssqldb v0.0.0-20200620013148-b91950f658ec h1:NfhRXXFDPxcF5Cwo06DzeIaE7uuJtAUhsDwH3LNsjos=
github.com/denisenkom/go-mssqldb v0.0.0-20200620013148-b91950f658ec/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4=
......@@ -343,7 +342,6 @@ github.com/fsouza/fake-gcs-server v1.7.0/go.mod h1:5XIRs4YvwNbNoz+1JF8j6KLAyDh7R
github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc=
github.com/gchaincl/sqlhooks v1.3.0 h1:yKPXxW9a5CjXaVf2HkQn6wn7TZARvbAOAelr3H8vK2Y=
github.com/gchaincl/sqlhooks v1.3.0/go.mod h1:9BypXnereMT0+Ys8WGWHqzgkkOfHIhyeUCqXC24ra34=
github.com/getkin/kin-openapi v0.2.0/go.mod h1:V1z9xl9oF5Wt7v32ne4FmiF1alpS4dM6mNzoywPOXlk=
github.com/getkin/kin-openapi v0.13.0/go.mod h1:WGRs2ZMM1Q8LR1QBEwUxC6RJEfaBcD0s+pcEVXFuAjw=
github.com/getsentry/sentry-go v0.7.0 h1:MR2yfR4vFfv/2+iBuSnkdQwVg7N9cJzihZ6KJu7srwQ=
github.com/getsentry/sentry-go v0.7.0/go.mod h1:pLFpD2Y5RHIKF9Bw3KH6/68DeN2K/XBJd8awjdPnUwg=
......@@ -716,8 +714,8 @@ github.com/influxdata/go-syslog/v3 v3.0.1-0.20200510134747-836dce2cf6da/go.mod h
github.com/influxdata/influxdb v1.7.7/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY=
github.com/influxdata/influxdb v1.8.0/go.mod h1:SIzcnsjaHRFpmlxpJ4S3NT64qtEKYweNTUMb/vh0OMQ=
github.com/influxdata/influxdb v1.8.1/go.mod h1:SIzcnsjaHRFpmlxpJ4S3NT64qtEKYweNTUMb/vh0OMQ=
github.com/influxdata/influxdb-client-go/v2 v2.0.1 h1:vRla3taM+zkziP1NUGfN6Y6zJ9ZSSMg0fs/JhCGyX1s=
github.com/influxdata/influxdb-client-go/v2 v2.0.1/go.mod h1:eyFPc0lhFnNSpyCDb0ZkrB3Hbtqvn1K1JZmjo2BXqeo=
github.com/influxdata/influxdb-client-go/v2 v2.2.0 h1:2R/le0s/MZpHtc+ijuXKe2c4KGN14M85mWtGlmg6vec=
github.com/influxdata/influxdb-client-go/v2 v2.2.0/go.mod h1:fa/d1lAdUHxuc1jedx30ZfNG573oQTQmUni3N6pcW+0=
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
github.com/influxdata/influxql v1.1.0/go.mod h1:KpVI7okXjK6PRi3Z5B+mtKZli+R1DnZgb3N+tzevNgo=
github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE=
......
......@@ -209,9 +209,10 @@ func (fb *frameBuilder) Append(record *query.FluxRecord) error {
// set the labels
labels := make(map[string]string)
for _, name := range fb.labels {
val, ok := record.ValueByKey(name).(string)
if ok {
labels[name] = val
val := record.ValueByKey(name)
str := fmt.Sprintf("%v", val)
if val != nil && str != "" {
labels[name] = str
}
}
fb.active.Fields[1].Labels = labels
......
......@@ -73,141 +73,129 @@ func verifyGoldenResponse(t *testing.T, name string) *backend.DataResponse {
}
func TestExecuteSimple(t *testing.T) {
t.Run("Simple Test", func(t *testing.T) {
dr := verifyGoldenResponse(t, "simple")
require.Len(t, dr.Frames, 1)
require.Contains(t, dr.Frames[0].Name, "test")
require.Len(t, dr.Frames[0].Fields[1].Labels, 2)
require.Equal(t, "Time", dr.Frames[0].Fields[0].Name)
st, err := dr.Frames[0].StringTable(-1, -1)
require.NoError(t, err)
fmt.Println(st)
fmt.Println("----------------------")
})
dr := verifyGoldenResponse(t, "simple")
require.Len(t, dr.Frames, 1)
require.Contains(t, dr.Frames[0].Name, "test")
require.Len(t, dr.Frames[0].Fields[1].Labels, 2)
require.Equal(t, "Time", dr.Frames[0].Fields[0].Name)
st, err := dr.Frames[0].StringTable(-1, -1)
require.NoError(t, err)
fmt.Println(st)
fmt.Println("----------------------")
}
func TestExecuteSingle(t *testing.T) {
t.Run("Single value", func(t *testing.T) {
dr := verifyGoldenResponse(t, "single")
require.Len(t, dr.Frames, 1)
})
dr := verifyGoldenResponse(t, "single")
require.Len(t, dr.Frames, 1)
}
func TestExecuteMultiple(t *testing.T) {
t.Run("Multiple Test", func(t *testing.T) {
dr := verifyGoldenResponse(t, "multiple")
require.Len(t, dr.Frames, 4)
require.Contains(t, dr.Frames[0].Name, "test")
require.Len(t, dr.Frames[0].Fields[1].Labels, 2)
require.Equal(t, "Time", dr.Frames[0].Fields[0].Name)
st, err := dr.Frames[0].StringTable(-1, -1)
require.NoError(t, err)
fmt.Println(st)
fmt.Println("----------------------")
})
dr := verifyGoldenResponse(t, "multiple")
require.Len(t, dr.Frames, 3)
require.Contains(t, dr.Frames[0].Name, "test")
require.Len(t, dr.Frames[0].Fields[1].Labels, 2)
require.Equal(t, "Time", dr.Frames[0].Fields[0].Name)
st, err := dr.Frames[0].StringTable(-1, -1)
require.NoError(t, err)
fmt.Println(st)
fmt.Println("----------------------")
}
func TestExecuteGrouping(t *testing.T) {
t.Run("Grouping Test", func(t *testing.T) {
dr := verifyGoldenResponse(t, "grouping")
require.Len(t, dr.Frames, 3)
require.Contains(t, dr.Frames[0].Name, "system")
require.Len(t, dr.Frames[0].Fields[1].Labels, 1)
require.Equal(t, "Time", dr.Frames[0].Fields[0].Name)
st, err := dr.Frames[0].StringTable(-1, -1)
require.NoError(t, err)
fmt.Println(st)
fmt.Println("----------------------")
})
dr := verifyGoldenResponse(t, "grouping")
require.Len(t, dr.Frames, 3)
require.Contains(t, dr.Frames[0].Name, "system")
require.Len(t, dr.Frames[0].Fields[1].Labels, 1)
require.Equal(t, "Time", dr.Frames[0].Fields[0].Name)
st, err := dr.Frames[0].StringTable(-1, -1)
require.NoError(t, err)
fmt.Println(st)
fmt.Println("----------------------")
}
func TestAggregateGrouping(t *testing.T) {
t.Run("Grouping Test", func(t *testing.T) {
dr := verifyGoldenResponse(t, "aggregate")
require.Len(t, dr.Frames, 1)
dr := verifyGoldenResponse(t, "aggregate")
require.Len(t, dr.Frames, 1)
str, err := dr.Frames[0].StringTable(-1, -1)
require.NoError(t, err)
fmt.Println(str)
// `Name:
// Dimensions: 2 Fields by 3 Rows
// +-------------------------------+--------------------------+
// | Name: Time | Name: |
// | Labels: | Labels: host=hostname.ru |
// | Type: []time.Time | Type: []*float64 |
// +-------------------------------+--------------------------+
// | 2020-06-05 12:06:00 +0000 UTC | 8.291 |
// | 2020-06-05 12:07:00 +0000 UTC | 0.534 |
// | 2020-06-05 12:08:00 +0000 UTC | 0.667 |
// +-------------------------------+--------------------------+
// `
expectedFrame := data.NewFrame("",
data.NewField("Time", nil, []time.Time{
time.Date(2020, 6, 5, 12, 6, 0, 0, time.UTC),
time.Date(2020, 6, 5, 12, 7, 0, 0, time.UTC),
time.Date(2020, 6, 5, 12, 8, 0, 0, time.UTC),
}),
data.NewField("", map[string]string{"host": "hostname.ru"}, []*float64{
pointer.Float64(8.291),
pointer.Float64(0.534),
pointer.Float64(0.667),
}),
)
expectedFrame.Meta = &data.FrameMeta{}
diff := cmp.Diff(expectedFrame, dr.Frames[0], data.FrameTestCompareOptions()...)
assert.Empty(t, diff)
})
str, err := dr.Frames[0].StringTable(-1, -1)
require.NoError(t, err)
fmt.Println(str)
// `Name:
// Dimensions: 2 Fields by 3 Rows
// +-------------------------------+--------------------------+
// | Name: Time | Name: |
// | Labels: | Labels: host=hostname.ru |
// | Type: []time.Time | Type: []*float64 |
// +-------------------------------+--------------------------+
// | 2020-06-05 12:06:00 +0000 UTC | 8.291 |
// | 2020-06-05 12:07:00 +0000 UTC | 0.534 |
// | 2020-06-05 12:08:00 +0000 UTC | 0.667 |
// +-------------------------------+--------------------------+
// `
expectedFrame := data.NewFrame("",
data.NewField("Time", nil, []time.Time{
time.Date(2020, 6, 5, 12, 6, 0, 0, time.UTC),
time.Date(2020, 6, 5, 12, 7, 0, 0, time.UTC),
time.Date(2020, 6, 5, 12, 8, 0, 0, time.UTC),
}),
data.NewField("", map[string]string{"host": "hostname.ru"}, []*float64{
pointer.Float64(8.291),
pointer.Float64(0.534),
pointer.Float64(0.667),
}),
)
expectedFrame.Meta = &data.FrameMeta{}
diff := cmp.Diff(expectedFrame, dr.Frames[0], data.FrameTestCompareOptions()...)
assert.Empty(t, diff)
}
func TestNonStandardTimeColumn(t *testing.T) {
t.Run("Time Column", func(t *testing.T) {
dr := verifyGoldenResponse(t, "non_standard_time_column")
require.Len(t, dr.Frames, 1)
str, err := dr.Frames[0].StringTable(-1, -1)
require.NoError(t, err)
fmt.Println(str)
// Dimensions: 2 Fields by 1 Rows
// +-----------------------------------------+------------------+
// | Name: _start_water | Name: |
// | Labels: | Labels: st=1 |
// | Type: []time.Time | Type: []*float64 |
// +-----------------------------------------+------------------+
// | 2020-06-28 17:50:13.012584046 +0000 UTC | 156.304 |
// +-----------------------------------------+------------------+
expectedFrame := data.NewFrame("",
data.NewField("_start_water", nil, []time.Time{
time.Date(2020, 6, 28, 17, 50, 13, 12584046, time.UTC),
}),
data.NewField("", map[string]string{"st": "1"}, []*float64{
pointer.Float64(156.304),
}),
)
expectedFrame.Meta = &data.FrameMeta{}
dr := verifyGoldenResponse(t, "non_standard_time_column")
require.Len(t, dr.Frames, 1)
diff := cmp.Diff(expectedFrame, dr.Frames[0], data.FrameTestCompareOptions()...)
assert.Empty(t, diff)
})
str, err := dr.Frames[0].StringTable(-1, -1)
require.NoError(t, err)
fmt.Println(str)
// Dimensions: 2 Fields by 1 Rows
// +-----------------------------------------+------------------+
// | Name: _start_water | Name: |
// | Labels: | Labels: st=1 |
// | Type: []time.Time | Type: []*float64 |
// +-----------------------------------------+------------------+
// | 2020-06-28 17:50:13.012584046 +0000 UTC | 156.304 |
// +-----------------------------------------+------------------+
expectedFrame := data.NewFrame("",
data.NewField("_start_water", nil, []time.Time{
time.Date(2020, 6, 28, 17, 50, 13, 12584046, time.UTC),
}),
data.NewField("", map[string]string{"st": "1"}, []*float64{
pointer.Float64(156.304),
}),
)
expectedFrame.Meta = &data.FrameMeta{}
diff := cmp.Diff(expectedFrame, dr.Frames[0], data.FrameTestCompareOptions()...)
assert.Empty(t, diff)
}
func TestBuckets(t *testing.T) {
t.Run("Buckes", func(t *testing.T) {
verifyGoldenResponse(t, "buckets")
})
verifyGoldenResponse(t, "buckets")
}
func TestBooleanGrouping(t *testing.T) {
verifyGoldenResponse(t, "boolean")
}
func TestGoldenFiles(t *testing.T) {
t.Run("Renamed", func(t *testing.T) {
verifyGoldenResponse(t, "renamed")
})
verifyGoldenResponse(t, "renamed")
}
func TestRealQuery(t *testing.T) {
......
#group,false,false,false,false,true,true,false,false,false,true
#datatype,string,long,string,string,dateTime:RFC3339,dateTime:RFC3339,dateTime:RFC3339,long,boolean,string
#default,_result,,,,,,,,,
,result,table,_field,_measurement,_start,_stop,_time,_value,dead,train
,,0,file_size,ingress,2020-10-28T00:07:53.819772368Z,2020-11-11T00:07:53.819772368Z,2020-11-09T17:27:00Z,3339,true,350117
,,1,file_size,ingress,2020-10-28T00:07:53.819772368Z,2020-11-11T00:07:53.819772368Z,2020-11-10T12:29:00Z,3666,true,350125
,,2,file_size,ingress,2020-10-28T00:07:53.819772368Z,2020-11-11T00:07:53.819772368Z,2020-11-09T19:01:00Z,3570,true,350236
,,3,file_size,ingress,2020-10-28T00:07:53.819772368Z,2020-11-11T00:07:53.819772368Z,2020-11-09T07:13:00Z,2772,true,350410
🌟 This was machine generated. Do not edit. 🌟
Frame[0] {}
Name: ingress
Dimensions: 2 Fields by 1 Rows
+-------------------------------+---------------------------------+
| Name: Time | Name: file_size |
| Labels: | Labels: dead=true, train=350117 |
| Type: []time.Time | Type: []*int64 |
+-------------------------------+---------------------------------+
| 2020-11-09 17:27:00 +0000 UTC | 3339 |
+-------------------------------+---------------------------------+
Frame[1]
Name: ingress
Dimensions: 2 Fields by 1 Rows
+-------------------------------+---------------------------------+
| Name: Time | Name: file_size |
| Labels: | Labels: dead=true, train=350125 |
| Type: []time.Time | Type: []*int64 |
+-------------------------------+---------------------------------+
| 2020-11-10 12:29:00 +0000 UTC | 3666 |
+-------------------------------+---------------------------------+
Frame[2]
Name: ingress
Dimensions: 2 Fields by 1 Rows
+-------------------------------+---------------------------------+
| Name: Time | Name: file_size |
| Labels: | Labels: dead=true, train=350236 |
| Type: []time.Time | Type: []*int64 |
+-------------------------------+---------------------------------+
| 2020-11-09 19:01:00 +0000 UTC | 3570 |
+-------------------------------+---------------------------------+
Frame[3]
Name: ingress
Dimensions: 2 Fields by 1 Rows
+-------------------------------+---------------------------------+
| Name: Time | Name: file_size |
| Labels: | Labels: dead=true, train=350410 |
| Type: []time.Time | Type: []*int64 |
+-------------------------------+---------------------------------+
| 2020-11-09 07:13:00 +0000 UTC | 2772 |
+-------------------------------+---------------------------------+
====== TEST DATA RESPONSE (arrow base64) ======
FRAME=QVJST1cxAAD/////+AEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEDAAoADAAAAAgABAAKAAAACAAAAHgAAAADAAAAUAAAACgAAAAEAAAAmP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAAC4/v//CAAAABAAAAAHAAAAaW5ncmVzcwAEAAAAbmFtZQAAAADc/v//CAAAAAwAAAACAAAAe30AAAQAAABtZXRhAAAAAAIAAADgAAAAGAAAAAAAEgAYABQAEwASAAwAAAAIAAQAEgAAABQAAACEAAAAjAAAAAAAAgGQAAAAAgAAADAAAAAEAAAAQP///wgAAAAUAAAACQAAAGZpbGVfc2l6ZQAAAAQAAABuYW1lAAAAAGj///8IAAAALAAAACAAAAB7ImRlYWQiOiJ0cnVlIiwidHJhaW4iOiIzNTAxMTcifQAAAAAGAAAAbGFiZWxzAAAAAAAACAAMAAgABwAIAAAAAAAAAUAAAAAJAAAAZmlsZV9zaXplABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAAP////+4AAAAFAAAAAAAAAAMABYAFAATAAwABAAMAAAAEAAAAAAAAAAUAAAAAAAAAwMACgAYAAwACAAEAAoAAAAUAAAAWAAAAAEAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAADo6c795kUWCw0AAAAAAAAQAAAADAAUABIADAAIAAQADAAAABAAAAAsAAAAPAAAAAAAAwABAAAACAIAAAAAAADAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAwAAAAIAAQACgAAAAgAAAB4AAAAAwAAAFAAAAAoAAAABAAAAJj+//8IAAAADAAAAAAAAAAAAAAABQAAAHJlZklkAAAAuP7//wgAAAAQAAAABwAAAGluZ3Jlc3MABAAAAG5hbWUAAAAA3P7//wgAAAAMAAAAAgAAAHt9AAAEAAAAbWV0YQAAAAACAAAA4AAAABgAAAAAABIAGAAUABMAEgAMAAAACAAEABIAAAAUAAAAhAAAAIwAAAAAAAIBkAAAAAIAAAAwAAAABAAAAED///8IAAAAFAAAAAkAAABmaWxlX3NpemUAAAAEAAAAbmFtZQAAAABo////CAAAACwAAAAgAAAAeyJkZWFkIjoidHJ1ZSIsInRyYWluIjoiMzUwMTE3In0AAAAABgAAAGxhYmVscwAAAAAAAAgADAAIAAcACAAAAAAAAAFAAAAACQAAAGZpbGVfc2l6ZQASABgAFAAAABMADAAAAAgABAASAAAAFAAAAEQAAABMAAAAAAAACkwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAQAAAABAAAAFRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAVGltZQAAAAAoAgAAQVJST1cx
FRAME=QVJST1cxAAD/////2AEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEDAAoADAAAAAgABAAKAAAACAAAAFQAAAACAAAAKAAAAAQAAAC4/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAANj+//8IAAAAEAAAAAcAAABpbmdyZXNzAAQAAABuYW1lAAAAAAIAAADgAAAAGAAAAAAAEgAYABQAEwASAAwAAAAIAAQAEgAAABQAAACEAAAAjAAAAAAAAgGQAAAAAgAAADAAAAAEAAAAQP///wgAAAAUAAAACQAAAGZpbGVfc2l6ZQAAAAQAAABuYW1lAAAAAGj///8IAAAALAAAACAAAAB7ImRlYWQiOiJ0cnVlIiwidHJhaW4iOiIzNTAxMjUifQAAAAAGAAAAbGFiZWxzAAAAAAAACAAMAAgABwAIAAAAAAAAAUAAAAAJAAAAZmlsZV9zaXplABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAAAAAAAD/////uAAAABQAAAAAAAAADAAWABQAEwAMAAQADAAAABAAAAAAAAAAFAAAAAAAAAMDAAoAGAAMAAgABAAKAAAAFAAAAFgAAAABAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAeCxdTyVGFlIOAAAAAAAAEAAAAAwAFAASAAwACAAEAAwAAAAQAAAALAAAADgAAAAAAAMAAQAAAOgBAAAAAAAAwAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAKAAwAAAAIAAQACgAAAAgAAABUAAAAAgAAACgAAAAEAAAAuP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAADY/v//CAAAABAAAAAHAAAAaW5ncmVzcwAEAAAAbmFtZQAAAAACAAAA4AAAABgAAAAAABIAGAAUABMAEgAMAAAACAAEABIAAAAUAAAAhAAAAIwAAAAAAAIBkAAAAAIAAAAwAAAABAAAAED///8IAAAAFAAAAAkAAABmaWxlX3NpemUAAAAEAAAAbmFtZQAAAABo////CAAAACwAAAAgAAAAeyJkZWFkIjoidHJ1ZSIsInRyYWluIjoiMzUwMTI1In0AAAAABgAAAGxhYmVscwAAAAAAAAgADAAIAAcACAAAAAAAAAFAAAAACQAAAGZpbGVfc2l6ZQASABgAFAAAABMADAAAAAgABAASAAAAFAAAAEQAAABMAAAAAAAACkwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAQAAAABAAAAFRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAVGltZQAAAAAAAgAAQVJST1cx
FRAME=QVJST1cxAAD/////2AEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEDAAoADAAAAAgABAAKAAAACAAAAFQAAAACAAAAKAAAAAQAAAC4/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAANj+//8IAAAAEAAAAAcAAABpbmdyZXNzAAQAAABuYW1lAAAAAAIAAADgAAAAGAAAAAAAEgAYABQAEwASAAwAAAAIAAQAEgAAABQAAACEAAAAjAAAAAAAAgGQAAAAAgAAADAAAAAEAAAAQP///wgAAAAUAAAACQAAAGZpbGVfc2l6ZQAAAAQAAABuYW1lAAAAAGj///8IAAAALAAAACAAAAB7ImRlYWQiOiJ0cnVlIiwidHJhaW4iOiIzNTAyMzYifQAAAAAGAAAAbGFiZWxzAAAAAAAACAAMAAgABwAIAAAAAAAAAUAAAAAJAAAAZmlsZV9zaXplABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAAAAAAAD/////uAAAABQAAAAAAAAADAAWABQAEwAMAAQADAAAABAAAAAAAAAAFAAAAAAAAAMDAAoAGAAMAAgABAAKAAAAFAAAAFgAAAABAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAOBz5HuxFFvINAAAAAAAAEAAAAAwAFAASAAwACAAEAAwAAAAQAAAALAAAADgAAAAAAAMAAQAAAOgBAAAAAAAAwAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAKAAwAAAAIAAQACgAAAAgAAABUAAAAAgAAACgAAAAEAAAAuP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAADY/v//CAAAABAAAAAHAAAAaW5ncmVzcwAEAAAAbmFtZQAAAAACAAAA4AAAABgAAAAAABIAGAAUABMAEgAMAAAACAAEABIAAAAUAAAAhAAAAIwAAAAAAAIBkAAAAAIAAAAwAAAABAAAAED///8IAAAAFAAAAAkAAABmaWxlX3NpemUAAAAEAAAAbmFtZQAAAABo////CAAAACwAAAAgAAAAeyJkZWFkIjoidHJ1ZSIsInRyYWluIjoiMzUwMjM2In0AAAAABgAAAGxhYmVscwAAAAAAAAgADAAIAAcACAAAAAAAAAFAAAAACQAAAGZpbGVfc2l6ZQASABgAFAAAABMADAAAAAgABAASAAAAFAAAAEQAAABMAAAAAAAACkwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAQAAAABAAAAFRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAVGltZQAAAAAAAgAAQVJST1cx
FRAME=QVJST1cxAAD/////2AEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEDAAoADAAAAAgABAAKAAAACAAAAFQAAAACAAAAKAAAAAQAAAC4/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAANj+//8IAAAAEAAAAAcAAABpbmdyZXNzAAQAAABuYW1lAAAAAAIAAADgAAAAGAAAAAAAEgAYABQAEwASAAwAAAAIAAQAEgAAABQAAACEAAAAjAAAAAAAAgGQAAAAAgAAADAAAAAEAAAAQP///wgAAAAUAAAACQAAAGZpbGVfc2l6ZQAAAAQAAABuYW1lAAAAAGj///8IAAAALAAAACAAAAB7ImRlYWQiOiJ0cnVlIiwidHJhaW4iOiIzNTA0MTAifQAAAAAGAAAAbGFiZWxzAAAAAAAACAAMAAgABwAIAAAAAAAAAUAAAAAJAAAAZmlsZV9zaXplABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAAAAAAAD/////uAAAABQAAAAAAAAADAAWABQAEwAMAAQADAAAABAAAAAAAAAAFAAAAAAAAAMDAAoAGAAMAAgABAAKAAAAFAAAAFgAAAABAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA2MxTfMVFFtQKAAAAAAAAEAAAAAwAFAASAAwACAAEAAwAAAAQAAAALAAAADgAAAAAAAMAAQAAAOgBAAAAAAAAwAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAKAAwAAAAIAAQACgAAAAgAAABUAAAAAgAAACgAAAAEAAAAuP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAADY/v//CAAAABAAAAAHAAAAaW5ncmVzcwAEAAAAbmFtZQAAAAACAAAA4AAAABgAAAAAABIAGAAUABMAEgAMAAAACAAEABIAAAAUAAAAhAAAAIwAAAAAAAIBkAAAAAIAAAAwAAAABAAAAED///8IAAAAFAAAAAkAAABmaWxlX3NpemUAAAAEAAAAbmFtZQAAAABo////CAAAACwAAAAgAAAAeyJkZWFkIjoidHJ1ZSIsInRyYWluIjoiMzUwNDEwIn0AAAAABgAAAGxhYmVscwAAAAAAAAgADAAIAAcACAAAAAAAAAFAAAAACQAAAGZpbGVfc2l6ZQASABgAFAAAABMADAAAAAgABAASAAAAFAAAAEQAAABMAAAAAAAACkwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAQAAAABAAAAFRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAVGltZQAAAAAAAgAAQVJST1cx
......@@ -10,12 +10,6 @@
,result,table,_start,_stop,_time,_value,_field,_measurement,a,b
,,1,2020-02-17T22:19:49.747562847Z,2020-02-18T22:19:49.747562847Z,2020-02-18T10:34:08.135814545Z,4,i,test,1,adsfasdf
,,1,2020-02-17T22:19:49.747562847Z,2020-02-18T22:19:49.747562847Z,2020-02-18T22:08:44.850214724Z,-1,i,test,1,adsfasdf
#datatype,string,long,dateTime:RFC3339,dateTime:RFC3339,dateTime:RFC3339,bool,string,string,string,string
#group,false,false,true,true,false,false,true,true,true,true
#default,_result,,,,,,,,,
,result,table,_start,_stop,_time,_value,_field,_measurement,a,b
,,2,2020-02-17T22:19:49.747562847Z,2020-02-18T22:19:49.747562847Z,2020-02-18T22:08:44.62797864Z,false,f,test,0,adsfasdf
,,2,2020-02-17T22:19:49.747562847Z,2020-02-18T22:19:49.747562847Z,2020-02-18T22:08:44.969100374Z,true,f,test,0,adsfasdf
#datatype,string,long,dateTime:RFC3339Nano,dateTime:RFC3339Nano,dateTime:RFC3339Nano,unsignedLong,string,string,string,string
#group,false,false,true,true,false,false,true,true,true,true
#default,_result,,,,,,,,,
......
......@@ -32,20 +32,6 @@ Frame[2]
Name: test
Dimensions: 2 Fields by 2 Rows
+-----------------------------------------+-------------------------+
| Name: Time | Name: f |
| Labels: | Labels: a=0, b=adsfasdf |
| Type: []time.Time | Type: []*bool |
+-----------------------------------------+-------------------------+
| 2020-02-18 22:08:44.62797864 +0000 UTC | false |
| 2020-02-18 22:08:44.969100374 +0000 UTC | true |
+-----------------------------------------+-------------------------+
Frame[3]
Name: test
Dimensions: 2 Fields by 2 Rows
+-----------------------------------------+-------------------------+
| Name: _start | Name: i |
| Labels: | Labels: a=0, b=adsfasdf |
| Type: []time.Time | Type: []*uint64 |
......@@ -58,5 +44,4 @@ Dimensions: 2 Fields by 2 Rows
====== TEST DATA RESPONSE (arrow base64) ======
FRAME=QVJST1cxAAD/////2AEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEDAAoADAAAAAgABAAKAAAACAAAAHgAAAADAAAAUAAAACgAAAAEAAAAvP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAADc/v//CAAAABAAAAAEAAAAdGVzdAAAAAAEAAAAbmFtZQAAAAAA////CAAAAAwAAAACAAAAe30AAAQAAABtZXRhAAAAAAIAAAC8AAAAGAAAAAAAEgAYABQAEwASAAwAAAAIAAQAEgAAABQAAAB0AAAAdAAAAAAAAwF0AAAAAgAAACgAAAAEAAAAZP///wgAAAAMAAAAAQAAAGYAAAAEAAAAbmFtZQAAAACE////CAAAACQAAAAYAAAAeyJhIjoiMSIsImIiOiJhZHNmYXNkZiJ9AAAAAAYAAABsYWJlbHMAAAAAAACO////AAACAAEAAABmABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAAAAAAAD/////uAAAABQAAAAAAAAADAAWABQAEwAMAAQADAAAACAAAAAAAAAAFAAAAAAAAAMDAAoAGAAMAAgABAAKAAAAFAAAAFgAAAACAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAACRnfi9q3j0FUR3uluTnvQVZmZmZmZm9j9mZmZmZmYaQBAAAAAMABQAEgAMAAgABAAMAAAAEAAAACwAAAA4AAAAAAADAAEAAADoAQAAAAAAAMAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAACgAMAAAACAAEAAoAAAAIAAAAeAAAAAMAAABQAAAAKAAAAAQAAAC8/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAANz+//8IAAAAEAAAAAQAAAB0ZXN0AAAAAAQAAABuYW1lAAAAAAD///8IAAAADAAAAAIAAAB7fQAABAAAAG1ldGEAAAAAAgAAALwAAAAYAAAAAAASABgAFAATABIADAAAAAgABAASAAAAFAAAAHQAAAB0AAAAAAADAXQAAAACAAAAKAAAAAQAAABk////CAAAAAwAAAABAAAAZgAAAAQAAABuYW1lAAAAAIT///8IAAAAJAAAABgAAAB7ImEiOiIxIiwiYiI6ImFkc2Zhc2RmIn0AAAAABgAAAGxhYmVscwAAAAAAAI7///8AAAIAAQAAAGYAEgAYABQAAAATAAwAAAAIAAQAEgAAABQAAABEAAAATAAAAAAAAApMAAAAAQAAAAwAAAAIAAwACAAEAAgAAAAIAAAAEAAAAAQAAABUaW1lAAAAAAQAAABuYW1lAAAAAAAAAAAAAAYACAAGAAYAAAAAAAMABAAAAFRpbWUAAAAAAAIAAEFSUk9XMQ==
FRAME=QVJST1cxAAD/////wAEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEDAAoADAAAAAgABAAKAAAACAAAAFQAAAACAAAAKAAAAAQAAADQ/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAPD+//8IAAAAEAAAAAQAAAB0ZXN0AAAAAAQAAABuYW1lAAAAAAIAAADIAAAAGAAAAAAAEgAYABQAEwASAAwAAAAIAAQAEgAAABQAAAB0AAAAfAAAAAAAAgGAAAAAAgAAACgAAAAEAAAAWP///wgAAAAMAAAAAQAAAGkAAAAEAAAAbmFtZQAAAAB4////CAAAACQAAAAYAAAAeyJhIjoiMSIsImIiOiJhZHNmYXNkZiJ9AAAAAAYAAABsYWJlbHMAAAAAAAAIAAwACAAHAAgAAAAAAAABQAAAAAEAAABpABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAAAAAAAD/////uAAAABQAAAAAAAAADAAWABQAEwAMAAQADAAAACAAAAAAAAAAFAAAAAAAAAMDAAoAGAAMAAgABAAKAAAAFAAAAFgAAAACAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAACRnfi9q3j0FUR3uluTnvQVBAAAAAAAAAD//////////xAAAAAMABQAEgAMAAgABAAMAAAAEAAAACwAAAA4AAAAAAADAAEAAADQAQAAAAAAAMAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAACgAMAAAACAAEAAoAAAAIAAAAVAAAAAIAAAAoAAAABAAAAND+//8IAAAADAAAAAAAAAAAAAAABQAAAHJlZklkAAAA8P7//wgAAAAQAAAABAAAAHRlc3QAAAAABAAAAG5hbWUAAAAAAgAAAMgAAAAYAAAAAAASABgAFAATABIADAAAAAgABAASAAAAFAAAAHQAAAB8AAAAAAACAYAAAAACAAAAKAAAAAQAAABY////CAAAAAwAAAABAAAAaQAAAAQAAABuYW1lAAAAAHj///8IAAAAJAAAABgAAAB7ImEiOiIxIiwiYiI6ImFkc2Zhc2RmIn0AAAAABgAAAGxhYmVscwAAAAAAAAgADAAIAAcACAAAAAAAAAFAAAAAAQAAAGkAEgAYABQAAAATAAwAAAAIAAQAEgAAABQAAABEAAAATAAAAAAAAApMAAAAAQAAAAwAAAAIAAwACAAEAAgAAAAIAAAAEAAAAAQAAABUaW1lAAAAAAQAAABuYW1lAAAAAAAAAAAAAAYACAAGAAYAAAAAAAMABAAAAFRpbWUAAAAA6AEAAEFSUk9XMQ==
FRAME=QVJST1cxAAD/////sAEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEDAAoADAAAAAgABAAKAAAACAAAAFQAAAACAAAAKAAAAAQAAADc/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAPz+//8IAAAAEAAAAAQAAAB0ZXN0AAAAAAQAAABuYW1lAAAAAAIAAAC8AAAAGAAAAAAAEgAYABQAEwASAAwAAAAIAAQAEgAAABQAAAB0AAAAeAAAAAAABgF0AAAAAgAAACgAAAAEAAAAZP///wgAAAAMAAAAAQAAAGYAAAAEAAAAbmFtZQAAAACE////CAAAACQAAAAYAAAAeyJhIjoiMCIsImIiOiJhZHNmYXNkZiJ9AAAAAAYAAABsYWJlbHMAAAAAAAAEAAQABAAAAAEAAABmABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAAP////+4AAAAFAAAAAAAAAAMABYAFAATAAwABAAMAAAAGAAAAAAAAAAUAAAAAAAAAwMACgAYAAwACAAEAAoAAAAUAAAAWAAAAAIAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAgAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAJBpe06TnvQVVoTQYpOe9BUCAAAAAAAAABAAAAAMABQAEgAMAAgABAAMAAAAEAAAACwAAAA8AAAAAAADAAEAAADAAQAAAAAAAMAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoADAAAAAgABAAKAAAACAAAAFQAAAACAAAAKAAAAAQAAADc/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAPz+//8IAAAAEAAAAAQAAAB0ZXN0AAAAAAQAAABuYW1lAAAAAAIAAAC8AAAAGAAAAAAAEgAYABQAEwASAAwAAAAIAAQAEgAAABQAAAB0AAAAeAAAAAAABgF0AAAAAgAAACgAAAAEAAAAZP///wgAAAAMAAAAAQAAAGYAAAAEAAAAbmFtZQAAAACE////CAAAACQAAAAYAAAAeyJhIjoiMCIsImIiOiJhZHNmYXNkZiJ9AAAAAAYAAABsYWJlbHMAAAAAAAAEAAQABAAAAAEAAABmABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAAOABAABBUlJPVzE=
FRAME=QVJST1cxAAD/////uAEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEDAAoADAAAAAgABAAKAAAACAAAAFQAAAACAAAAKAAAAAQAAADU/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAPT+//8IAAAAEAAAAAQAAAB0ZXN0AAAAAAQAAABuYW1lAAAAAAIAAADEAAAAGAAAAAAAEgAYABQAEwASAAwAAAAIAAQAEgAAABQAAAB0AAAAfAAAAAAAAgF8AAAAAgAAACgAAAAEAAAAXP///wgAAAAMAAAAAQAAAGkAAAAEAAAAbmFtZQAAAAB8////CAAAACQAAAAYAAAAeyJhIjoiMCIsImIiOiJhZHNmYXNkZiJ9AAAAAAYAAABsYWJlbHMAAAAAAAAAAAYACAAEAAYAAABAAAAAAQAAAGkAEgAYABQAAAATAAwAAAAIAAQAEgAAABQAAABEAAAATAAAAAAAAApMAAAAAQAAAAwAAAAIAAwACAAEAAgAAAAIAAAAEAAAAAYAAABfc3RhcnQAAAQAAABuYW1lAAAAAAAAAAAAAAYACAAGAAYAAAAAAAMABgAAAF9zdGFydAAA/////7gAAAAUAAAAAAAAAAwAFgAUABMADAAEAAwAAAAgAAAAAAAAABQAAAAAAAADAwAKABgADAAIAAQACgAAABQAAABYAAAAAgAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAX9ljmZlQ9BVf2WOZmVD0FQAAAAAAAAAAAgAAAAAAAAAQAAAADAAUABIADAAIAAQADAAAABAAAAAsAAAAPAAAAAAAAwABAAAAyAEAAAAAAADAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAwAAAAIAAQACgAAAAgAAABUAAAAAgAAACgAAAAEAAAA1P7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAAD0/v//CAAAABAAAAAEAAAAdGVzdAAAAAAEAAAAbmFtZQAAAAACAAAAxAAAABgAAAAAABIAGAAUABMAEgAMAAAACAAEABIAAAAUAAAAdAAAAHwAAAAAAAIBfAAAAAIAAAAoAAAABAAAAFz///8IAAAADAAAAAEAAABpAAAABAAAAG5hbWUAAAAAfP///wgAAAAkAAAAGAAAAHsiYSI6IjAiLCJiIjoiYWRzZmFzZGYifQAAAAAGAAAAbGFiZWxzAAAAAAAAAAAGAAgABAAGAAAAQAAAAAEAAABpABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAGAAAAX3N0YXJ0AAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAYAAABfc3RhcnQAAOgBAABBUlJPVzE=
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment