//line plugins/parsers/influx/machine.go.rl:1
package influx

import (
	"errors"
	"io"
)

type readErr struct {
	Err error
}

func (e *readErr) Error() string {
	return e.Err.Error()
}

var (
	ErrNameParse      = errors.New("expected measurement name")
	ErrFieldParse     = errors.New("expected field")
	ErrTagParse       = errors.New("expected tag")
	ErrTimestampParse = errors.New("expected timestamp")
	ErrParse          = errors.New("parse error")
	EOF               = errors.New("EOF")
)

//line plugins/parsers/influx/machine.go.rl:318

//line plugins/parsers/influx/machine.go:33
const LineProtocol_start int = 46
const LineProtocol_first_final int = 46
const LineProtocol_error int = 0

const LineProtocol_en_main int = 46
const LineProtocol_en_discard_line int = 34
const LineProtocol_en_align int = 85
const LineProtocol_en_series int = 37

//line plugins/parsers/influx/machine.go.rl:321

type Handler interface {
	SetMeasurement(name []byte) error
	AddTag(key []byte, value []byte) error
	AddInt(key []byte, value []byte) error
	AddUint(key []byte, value []byte) error
	AddFloat(key []byte, value []byte) error
	AddString(key []byte, value []byte) error
	AddBool(key []byte, value []byte) error
	SetTimestamp(tm []byte) error
}

type machine struct {
	data         []byte
	cs           int
	p, pe, eof   int
	pb           int
	lineno       int
	sol          int
	handler      Handler
	initState    int
	key          []byte
	beginMetric  bool
	finishMetric bool
}

func NewMachine(handler Handler) *machine {
	m := &machine{
		handler:   handler,
		initState: LineProtocol_en_align,
	}

//line plugins/parsers/influx/machine.go.rl:354

//line plugins/parsers/influx/machine.go.rl:355

//line plugins/parsers/influx/machine.go.rl:356

//line plugins/parsers/influx/machine.go.rl:357

//line plugins/parsers/influx/machine.go.rl:358

//line plugins/parsers/influx/machine.go.rl:359

//line plugins/parsers/influx/machine.go:90
	{
		(m.cs) = LineProtocol_start
	}

//line plugins/parsers/influx/machine.go.rl:360

	return m
}

func NewSeriesMachine(handler Handler) *machine {
	m := &machine{
		handler:   handler,
		initState: LineProtocol_en_series,
	}

//line plugins/parsers/influx/machine.go.rl:371

//line plugins/parsers/influx/machine.go.rl:372

//line plugins/parsers/influx/machine.go.rl:373

//line plugins/parsers/influx/machine.go.rl:374

//line plugins/parsers/influx/machine.go.rl:375

//line plugins/parsers/influx/machine.go:117
	{
		(m.cs) = LineProtocol_start
	}

//line plugins/parsers/influx/machine.go.rl:376

	return m
}

func (m *machine) SetData(data []byte) {
	m.data = data
	m.p = 0
	m.pb = 0
	m.lineno = 1
	m.sol = 0
	m.pe = len(data)
	m.eof = len(data)
	m.key = nil
	m.beginMetric = false
	m.finishMetric = false

//line plugins/parsers/influx/machine.go:140
	{
		(m.cs) = LineProtocol_start
	}

//line plugins/parsers/influx/machine.go.rl:393
	m.cs = m.initState
}

// Next parses the next metric line and returns nil if it was successfully
// processed.  If the line contains a syntax error an error is returned,
// otherwise if the end of file is reached before finding a metric line then
// EOF is returned.
func (m *machine) Next() error {
	if m.p == m.pe && m.pe == m.eof {
		return EOF
	}

	m.key = nil
	m.beginMetric = false
	m.finishMetric = false

	return m.exec()
}

func (m *machine) exec() error {
	var err error

//line plugins/parsers/influx/machine.go:168
	{
		if (m.p) == (m.pe) {
			goto _test_eof
		}
		goto _resume

	_again:
		switch m.cs {
		case 46:
			goto st46
		case 1:
			goto st1
		case 2:
			goto st2
		case 3:
			goto st3
		case 0:
			goto st0
		case 4:
			goto st4
		case 5:
			goto st5
		case 6:
			goto st6
		case 47:
			goto st47
		case 48:
			goto st48
		case 49:
			goto st49
		case 7:
			goto st7
		case 8:
			goto st8
		case 9:
			goto st9
		case 10:
			goto st10
		case 50:
			goto st50
		case 51:
			goto st51
		case 52:
			goto st52
		case 53:
			goto st53
		case 54:
			goto st54
		case 55:
			goto st55
		case 56:
			goto st56
		case 57:
			goto st57
		case 58:
			goto st58
		case 59:
			goto st59
		case 60:
			goto st60
		case 61:
			goto st61
		case 62:
			goto st62
		case 63:
			goto st63
		case 64:
			goto st64
		case 65:
			goto st65
		case 66:
			goto st66
		case 67:
			goto st67
		case 68:
			goto st68
		case 69:
			goto st69
		case 11:
			goto st11
		case 12:
			goto st12
		case 13:
			goto st13
		case 14:
			goto st14
		case 15:
			goto st15
		case 70:
			goto st70
		case 16:
			goto st16
		case 17:
			goto st17
		case 71:
			goto st71
		case 72:
			goto st72
		case 73:
			goto st73
		case 74:
			goto st74
		case 75:
			goto st75
		case 76:
			goto st76
		case 77:
			goto st77
		case 78:
			goto st78
		case 79:
			goto st79
		case 18:
			goto st18
		case 19:
			goto st19
		case 20:
			goto st20
		case 80:
			goto st80
		case 21:
			goto st21
		case 22:
			goto st22
		case 23:
			goto st23
		case 81:
			goto st81
		case 24:
			goto st24
		case 25:
			goto st25
		case 82:
			goto st82
		case 83:
			goto st83
		case 26:
			goto st26
		case 27:
			goto st27
		case 28:
			goto st28
		case 29:
			goto st29
		case 30:
			goto st30
		case 31:
			goto st31
		case 32:
			goto st32
		case 33:
			goto st33
		case 34:
			goto st34
		case 84:
			goto st84
		case 37:
			goto st37
		case 86:
			goto st86
		case 87:
			goto st87
		case 38:
			goto st38
		case 39:
			goto st39
		case 40:
			goto st40
		case 41:
			goto st41
		case 88:
			goto st88
		case 42:
			goto st42
		case 89:
			goto st89
		case 43:
			goto st43
		case 44:
			goto st44
		case 45:
			goto st45
		case 85:
			goto st85
		case 35:
			goto st35
		case 36:
			goto st36
		}

		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof
		}
	_resume:
		switch m.cs {
		case 46:
			goto st_case_46
		case 1:
			goto st_case_1
		case 2:
			goto st_case_2
		case 3:
			goto st_case_3
		case 0:
			goto st_case_0
		case 4:
			goto st_case_4
		case 5:
			goto st_case_5
		case 6:
			goto st_case_6
		case 47:
			goto st_case_47
		case 48:
			goto st_case_48
		case 49:
			goto st_case_49
		case 7:
			goto st_case_7
		case 8:
			goto st_case_8
		case 9:
			goto st_case_9
		case 10:
			goto st_case_10
		case 50:
			goto st_case_50
		case 51:
			goto st_case_51
		case 52:
			goto st_case_52
		case 53:
			goto st_case_53
		case 54:
			goto st_case_54
		case 55:
			goto st_case_55
		case 56:
			goto st_case_56
		case 57:
			goto st_case_57
		case 58:
			goto st_case_58
		case 59:
			goto st_case_59
		case 60:
			goto st_case_60
		case 61:
			goto st_case_61
		case 62:
			goto st_case_62
		case 63:
			goto st_case_63
		case 64:
			goto st_case_64
		case 65:
			goto st_case_65
		case 66:
			goto st_case_66
		case 67:
			goto st_case_67
		case 68:
			goto st_case_68
		case 69:
			goto st_case_69
		case 11:
			goto st_case_11
		case 12:
			goto st_case_12
		case 13:
			goto st_case_13
		case 14:
			goto st_case_14
		case 15:
			goto st_case_15
		case 70:
			goto st_case_70
		case 16:
			goto st_case_16
		case 17:
			goto st_case_17
		case 71:
			goto st_case_71
		case 72:
			goto st_case_72
		case 73:
			goto st_case_73
		case 74:
			goto st_case_74
		case 75:
			goto st_case_75
		case 76:
			goto st_case_76
		case 77:
			goto st_case_77
		case 78:
			goto st_case_78
		case 79:
			goto st_case_79
		case 18:
			goto st_case_18
		case 19:
			goto st_case_19
		case 20:
			goto st_case_20
		case 80:
			goto st_case_80
		case 21:
			goto st_case_21
		case 22:
			goto st_case_22
		case 23:
			goto st_case_23
		case 81:
			goto st_case_81
		case 24:
			goto st_case_24
		case 25:
			goto st_case_25
		case 82:
			goto st_case_82
		case 83:
			goto st_case_83
		case 26:
			goto st_case_26
		case 27:
			goto st_case_27
		case 28:
			goto st_case_28
		case 29:
			goto st_case_29
		case 30:
			goto st_case_30
		case 31:
			goto st_case_31
		case 32:
			goto st_case_32
		case 33:
			goto st_case_33
		case 34:
			goto st_case_34
		case 84:
			goto st_case_84
		case 37:
			goto st_case_37
		case 86:
			goto st_case_86
		case 87:
			goto st_case_87
		case 38:
			goto st_case_38
		case 39:
			goto st_case_39
		case 40:
			goto st_case_40
		case 41:
			goto st_case_41
		case 88:
			goto st_case_88
		case 42:
			goto st_case_42
		case 89:
			goto st_case_89
		case 43:
			goto st_case_43
		case 44:
			goto st_case_44
		case 45:
			goto st_case_45
		case 85:
			goto st_case_85
		case 35:
			goto st_case_35
		case 36:
			goto st_case_36
		}
		goto st_out
	st46:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof46
		}
	st_case_46:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr31
		case 13:
			goto tr31
		case 32:
			goto tr80
		case 35:
			goto tr31
		case 44:
			goto tr31
		case 92:
			goto tr81
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto tr80
		}
		goto tr79
	tr29:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st1
	tr79:
//line plugins/parsers/influx/machine.go.rl:82

		m.beginMetric = true

//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st1
	st1:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof1
		}
	st_case_1:
//line plugins/parsers/influx/machine.go:590
		switch (m.data)[(m.p)] {
		case 10:
			goto tr2
		case 13:
			goto tr2
		case 32:
			goto tr1
		case 44:
			goto tr3
		case 92:
			goto st8
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto tr1
		}
		goto st1
	tr1:
		(m.cs) = 2
//line plugins/parsers/influx/machine.go.rl:86

		err = m.handler.SetMeasurement(m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	tr56:
		(m.cs) = 2
//line plugins/parsers/influx/machine.go.rl:99

		err = m.handler.AddTag(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	st2:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof2
		}
	st_case_2:
//line plugins/parsers/influx/machine.go:638
		switch (m.data)[(m.p)] {
		case 10:
			goto tr7
		case 13:
			goto tr7
		case 32:
			goto st2
		case 44:
			goto tr7
		case 61:
			goto tr7
		case 92:
			goto tr8
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto st2
		}
		goto tr5
	tr5:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st3
	st3:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof3
		}
	st_case_3:
//line plugins/parsers/influx/machine.go:668
		switch (m.data)[(m.p)] {
		case 32:
			goto tr7
		case 44:
			goto tr7
		case 61:
			goto tr10
		case 92:
			goto st12
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 13 {
			goto tr7
		}
		goto st3
	tr2:
		(m.cs) = 0
//line plugins/parsers/influx/machine.go.rl:46

		err = ErrTagParse
		(m.p)--

		(m.cs) = 34
		{
			(m.p)++
			goto _out
		}

		goto _again
	tr7:
		(m.cs) = 0
//line plugins/parsers/influx/machine.go.rl:39

		err = ErrFieldParse
		(m.p)--

		(m.cs) = 34
		{
			(m.p)++
			goto _out
		}

		goto _again
	tr31:
		(m.cs) = 0
//line plugins/parsers/influx/machine.go.rl:32

		err = ErrNameParse
		(m.p)--

		(m.cs) = 34
		{
			(m.p)++
			goto _out
		}

		goto _again
	tr35:
		(m.cs) = 0
//line plugins/parsers/influx/machine.go.rl:53

		err = ErrTimestampParse
		(m.p)--

		(m.cs) = 34
		{
			(m.p)++
			goto _out
		}

		goto _again
	tr82:
		(m.cs) = 0
//line plugins/parsers/influx/machine.go.rl:39

		err = ErrFieldParse
		(m.p)--

		(m.cs) = 34
		{
			(m.p)++
			goto _out
		}

//line plugins/parsers/influx/machine.go.rl:53

		err = ErrTimestampParse
		(m.p)--

		(m.cs) = 34
		{
			(m.p)++
			goto _out
		}

		goto _again
	tr135:
//line plugins/parsers/influx/machine.go.rl:73

		(m.p)--

		{
			goto st46
		}

		goto st0
//line plugins/parsers/influx/machine.go:754
	st_case_0:
	st0:
		(m.cs) = 0
		goto _out
	tr10:
//line plugins/parsers/influx/machine.go.rl:108

		m.key = m.text()

		goto st4
	st4:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof4
		}
	st_case_4:
//line plugins/parsers/influx/machine.go:770
		switch (m.data)[(m.p)] {
		case 34:
			goto st5
		case 45:
			goto tr13
		case 46:
			goto tr14
		case 48:
			goto tr15
		case 70:
			goto tr17
		case 84:
			goto tr18
		case 102:
			goto tr19
		case 116:
			goto tr20
		}
		if 49 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
			goto tr16
		}
		goto tr7
	st5:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof5
		}
	st_case_5:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr22
		case 34:
			goto tr23
		case 92:
			goto tr24
		}
		goto tr21
	tr21:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st6
	tr22:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

//line plugins/parsers/influx/machine.go.rl:166

		m.lineno++
		m.sol = m.p
		m.sol++ // next char will be the first column in the line

		goto st6
	tr26:
//line plugins/parsers/influx/machine.go.rl:166

		m.lineno++
		m.sol = m.p
		m.sol++ // next char will be the first column in the line

		goto st6
	st6:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof6
		}
	st_case_6:
//line plugins/parsers/influx/machine.go:838
		switch (m.data)[(m.p)] {
		case 10:
			goto tr26
		case 34:
			goto tr27
		case 92:
			goto st13
		}
		goto st6
	tr23:
		(m.cs) = 47
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

//line plugins/parsers/influx/machine.go.rl:148

		err = m.handler.AddString(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	tr27:
		(m.cs) = 47
//line plugins/parsers/influx/machine.go.rl:148

		err = m.handler.AddString(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	st47:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof47
		}
	st_case_47:
//line plugins/parsers/influx/machine.go:883
		switch (m.data)[(m.p)] {
		case 10:
			goto tr34
		case 13:
			goto st9
		case 32:
			goto st48
		case 44:
			goto st11
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto st48
		}
		goto tr82
	tr110:
		(m.cs) = 48
//line plugins/parsers/influx/machine.go.rl:130

		err = m.handler.AddFloat(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	tr117:
		(m.cs) = 48
//line plugins/parsers/influx/machine.go.rl:112

		err = m.handler.AddInt(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	tr122:
		(m.cs) = 48
//line plugins/parsers/influx/machine.go.rl:121

		err = m.handler.AddUint(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	tr127:
		(m.cs) = 48
//line plugins/parsers/influx/machine.go.rl:139

		err = m.handler.AddBool(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	st48:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof48
		}
	st_case_48:
//line plugins/parsers/influx/machine.go:955
		switch (m.data)[(m.p)] {
		case 10:
			goto tr34
		case 13:
			goto st9
		case 32:
			goto st48
		case 45:
			goto tr86
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto tr87
			}
		case (m.data)[(m.p)] >= 9:
			goto st48
		}
		goto tr35
	tr34:
//line plugins/parsers/influx/machine.go.rl:166

		m.lineno++
		m.sol = m.p
		m.sol++ // next char will be the first column in the line

		goto st49
	tr89:
		(m.cs) = 49
//line plugins/parsers/influx/machine.go.rl:157

		err = m.handler.SetTimestamp(m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

//line plugins/parsers/influx/machine.go.rl:166

		m.lineno++
		m.sol = m.p
		m.sol++ // next char will be the first column in the line

		goto _again
	tr111:
		(m.cs) = 49
//line plugins/parsers/influx/machine.go.rl:130

		err = m.handler.AddFloat(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

//line plugins/parsers/influx/machine.go.rl:166

		m.lineno++
		m.sol = m.p
		m.sol++ // next char will be the first column in the line

		goto _again
	tr118:
		(m.cs) = 49
//line plugins/parsers/influx/machine.go.rl:112

		err = m.handler.AddInt(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

//line plugins/parsers/influx/machine.go.rl:166

		m.lineno++
		m.sol = m.p
		m.sol++ // next char will be the first column in the line

		goto _again
	tr123:
		(m.cs) = 49
//line plugins/parsers/influx/machine.go.rl:121

		err = m.handler.AddUint(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

//line plugins/parsers/influx/machine.go.rl:166

		m.lineno++
		m.sol = m.p
		m.sol++ // next char will be the first column in the line

		goto _again
	tr128:
		(m.cs) = 49
//line plugins/parsers/influx/machine.go.rl:139

		err = m.handler.AddBool(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

//line plugins/parsers/influx/machine.go.rl:166

		m.lineno++
		m.sol = m.p
		m.sol++ // next char will be the first column in the line

		goto _again
	st49:
//line plugins/parsers/influx/machine.go.rl:172

		m.finishMetric = true
		(m.cs) = 85
		{
			(m.p)++
			goto _out
		}

		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof49
		}
	st_case_49:
//line plugins/parsers/influx/machine.go:1089
		switch (m.data)[(m.p)] {
		case 10:
			goto tr31
		case 13:
			goto tr31
		case 32:
			goto st7
		case 35:
			goto tr31
		case 44:
			goto tr31
		case 92:
			goto tr32
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto st7
		}
		goto tr29
	tr80:
//line plugins/parsers/influx/machine.go.rl:82

		m.beginMetric = true

		goto st7
	st7:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof7
		}
	st_case_7:
//line plugins/parsers/influx/machine.go:1119
		switch (m.data)[(m.p)] {
		case 10:
			goto tr31
		case 13:
			goto tr31
		case 32:
			goto st7
		case 35:
			goto tr31
		case 44:
			goto tr31
		case 92:
			goto tr32
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto st7
		}
		goto tr29
	tr32:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st8
	tr81:
//line plugins/parsers/influx/machine.go.rl:82

		m.beginMetric = true

//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st8
	st8:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof8
		}
	st_case_8:
//line plugins/parsers/influx/machine.go:1159
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 13 {
			goto st0
		}
		goto st1
	tr90:
		(m.cs) = 9
//line plugins/parsers/influx/machine.go.rl:157

		err = m.handler.SetTimestamp(m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	tr112:
		(m.cs) = 9
//line plugins/parsers/influx/machine.go.rl:130

		err = m.handler.AddFloat(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	tr119:
		(m.cs) = 9
//line plugins/parsers/influx/machine.go.rl:112

		err = m.handler.AddInt(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	tr124:
		(m.cs) = 9
//line plugins/parsers/influx/machine.go.rl:121

		err = m.handler.AddUint(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	tr129:
		(m.cs) = 9
//line plugins/parsers/influx/machine.go.rl:139

		err = m.handler.AddBool(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	st9:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof9
		}
	st_case_9:
//line plugins/parsers/influx/machine.go:1234
		if (m.data)[(m.p)] == 10 {
			goto tr34
		}
		goto st0
	tr86:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st10
	st10:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof10
		}
	st_case_10:
//line plugins/parsers/influx/machine.go:1250
		if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
			goto st50
		}
		goto tr35
	tr87:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st50
	st50:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof50
		}
	st_case_50:
//line plugins/parsers/influx/machine.go:1266
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st52
			}
		case (m.data)[(m.p)] >= 9:
			goto tr88
		}
		goto tr35
	tr88:
		(m.cs) = 51
//line plugins/parsers/influx/machine.go.rl:157

		err = m.handler.SetTimestamp(m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	st51:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof51
		}
	st_case_51:
//line plugins/parsers/influx/machine.go:1302
		switch (m.data)[(m.p)] {
		case 10:
			goto tr34
		case 13:
			goto st9
		case 32:
			goto st51
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto st51
		}
		goto st0
	st52:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof52
		}
	st_case_52:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st53
			}
		case (m.data)[(m.p)] >= 9:
			goto tr88
		}
		goto tr35
	st53:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof53
		}
	st_case_53:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st54
			}
		case (m.data)[(m.p)] >= 9:
			goto tr88
		}
		goto tr35
	st54:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof54
		}
	st_case_54:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st55
			}
		case (m.data)[(m.p)] >= 9:
			goto tr88
		}
		goto tr35
	st55:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof55
		}
	st_case_55:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st56
			}
		case (m.data)[(m.p)] >= 9:
			goto tr88
		}
		goto tr35
	st56:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof56
		}
	st_case_56:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st57
			}
		case (m.data)[(m.p)] >= 9:
			goto tr88
		}
		goto tr35
	st57:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof57
		}
	st_case_57:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st58
			}
		case (m.data)[(m.p)] >= 9:
			goto tr88
		}
		goto tr35
	st58:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof58
		}
	st_case_58:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st59
			}
		case (m.data)[(m.p)] >= 9:
			goto tr88
		}
		goto tr35
	st59:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof59
		}
	st_case_59:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st60
			}
		case (m.data)[(m.p)] >= 9:
			goto tr88
		}
		goto tr35
	st60:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof60
		}
	st_case_60:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st61
			}
		case (m.data)[(m.p)] >= 9:
			goto tr88
		}
		goto tr35
	st61:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof61
		}
	st_case_61:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st62
			}
		case (m.data)[(m.p)] >= 9:
			goto tr88
		}
		goto tr35
	st62:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof62
		}
	st_case_62:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st63
			}
		case (m.data)[(m.p)] >= 9:
			goto tr88
		}
		goto tr35
	st63:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof63
		}
	st_case_63:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st64
			}
		case (m.data)[(m.p)] >= 9:
			goto tr88
		}
		goto tr35
	st64:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof64
		}
	st_case_64:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st65
			}
		case (m.data)[(m.p)] >= 9:
			goto tr88
		}
		goto tr35
	st65:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof65
		}
	st_case_65:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st66
			}
		case (m.data)[(m.p)] >= 9:
			goto tr88
		}
		goto tr35
	st66:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof66
		}
	st_case_66:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st67
			}
		case (m.data)[(m.p)] >= 9:
			goto tr88
		}
		goto tr35
	st67:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof67
		}
	st_case_67:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st68
			}
		case (m.data)[(m.p)] >= 9:
			goto tr88
		}
		goto tr35
	st68:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof68
		}
	st_case_68:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st69
			}
		case (m.data)[(m.p)] >= 9:
			goto tr88
		}
		goto tr35
	st69:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof69
		}
	st_case_69:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr89
		case 13:
			goto tr90
		case 32:
			goto tr88
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto tr88
		}
		goto tr35
	tr113:
		(m.cs) = 11
//line plugins/parsers/influx/machine.go.rl:130

		err = m.handler.AddFloat(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	tr120:
		(m.cs) = 11
//line plugins/parsers/influx/machine.go.rl:112

		err = m.handler.AddInt(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	tr125:
		(m.cs) = 11
//line plugins/parsers/influx/machine.go.rl:121

		err = m.handler.AddUint(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	tr130:
		(m.cs) = 11
//line plugins/parsers/influx/machine.go.rl:139

		err = m.handler.AddBool(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	st11:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof11
		}
	st_case_11:
//line plugins/parsers/influx/machine.go:1763
		switch (m.data)[(m.p)] {
		case 32:
			goto tr7
		case 44:
			goto tr7
		case 61:
			goto tr7
		case 92:
			goto tr8
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 13 {
			goto tr7
		}
		goto tr5
	tr8:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st12
	st12:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof12
		}
	st_case_12:
//line plugins/parsers/influx/machine.go:1789
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 13 {
			goto tr7
		}
		goto st3
	tr24:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st13
	st13:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof13
		}
	st_case_13:
//line plugins/parsers/influx/machine.go:1805
		switch (m.data)[(m.p)] {
		case 34:
			goto st6
		case 92:
			goto st6
		}
		goto tr7
	tr13:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st14
	st14:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof14
		}
	st_case_14:
//line plugins/parsers/influx/machine.go:1824
		switch (m.data)[(m.p)] {
		case 46:
			goto st15
		case 48:
			goto st72
		}
		if 49 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
			goto st75
		}
		goto tr7
	tr14:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st15
	st15:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof15
		}
	st_case_15:
//line plugins/parsers/influx/machine.go:1846
		if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
			goto st70
		}
		goto tr7
	st70:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof70
		}
	st_case_70:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr111
		case 13:
			goto tr112
		case 32:
			goto tr110
		case 44:
			goto tr113
		case 69:
			goto st16
		case 101:
			goto st16
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st70
			}
		case (m.data)[(m.p)] >= 9:
			goto tr110
		}
		goto tr82
	st16:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof16
		}
	st_case_16:
		switch (m.data)[(m.p)] {
		case 34:
			goto st17
		case 43:
			goto st17
		case 45:
			goto st17
		}
		if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
			goto st71
		}
		goto tr7
	st17:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof17
		}
	st_case_17:
		if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
			goto st71
		}
		goto tr7
	st71:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof71
		}
	st_case_71:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr111
		case 13:
			goto tr112
		case 32:
			goto tr110
		case 44:
			goto tr113
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st71
			}
		case (m.data)[(m.p)] >= 9:
			goto tr110
		}
		goto tr82
	st72:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof72
		}
	st_case_72:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr111
		case 13:
			goto tr112
		case 32:
			goto tr110
		case 44:
			goto tr113
		case 46:
			goto st70
		case 69:
			goto st16
		case 101:
			goto st16
		case 105:
			goto st74
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st73
			}
		case (m.data)[(m.p)] >= 9:
			goto tr110
		}
		goto tr82
	st73:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof73
		}
	st_case_73:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr111
		case 13:
			goto tr112
		case 32:
			goto tr110
		case 44:
			goto tr113
		case 46:
			goto st70
		case 69:
			goto st16
		case 101:
			goto st16
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st73
			}
		case (m.data)[(m.p)] >= 9:
			goto tr110
		}
		goto tr82
	st74:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof74
		}
	st_case_74:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr118
		case 13:
			goto tr119
		case 32:
			goto tr117
		case 44:
			goto tr120
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto tr117
		}
		goto tr82
	st75:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof75
		}
	st_case_75:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr111
		case 13:
			goto tr112
		case 32:
			goto tr110
		case 44:
			goto tr113
		case 46:
			goto st70
		case 69:
			goto st16
		case 101:
			goto st16
		case 105:
			goto st74
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st75
			}
		case (m.data)[(m.p)] >= 9:
			goto tr110
		}
		goto tr82
	tr15:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st76
	st76:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof76
		}
	st_case_76:
//line plugins/parsers/influx/machine.go:2053
		switch (m.data)[(m.p)] {
		case 10:
			goto tr111
		case 13:
			goto tr112
		case 32:
			goto tr110
		case 44:
			goto tr113
		case 46:
			goto st70
		case 69:
			goto st16
		case 101:
			goto st16
		case 105:
			goto st74
		case 117:
			goto st77
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st73
			}
		case (m.data)[(m.p)] >= 9:
			goto tr110
		}
		goto tr82
	st77:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof77
		}
	st_case_77:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr123
		case 13:
			goto tr124
		case 32:
			goto tr122
		case 44:
			goto tr125
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto tr122
		}
		goto tr82
	tr16:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st78
	st78:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof78
		}
	st_case_78:
//line plugins/parsers/influx/machine.go:2113
		switch (m.data)[(m.p)] {
		case 10:
			goto tr111
		case 13:
			goto tr112
		case 32:
			goto tr110
		case 44:
			goto tr113
		case 46:
			goto st70
		case 69:
			goto st16
		case 101:
			goto st16
		case 105:
			goto st74
		case 117:
			goto st77
		}
		switch {
		case (m.data)[(m.p)] > 12:
			if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 {
				goto st78
			}
		case (m.data)[(m.p)] >= 9:
			goto tr110
		}
		goto tr82
	tr17:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st79
	st79:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof79
		}
	st_case_79:
//line plugins/parsers/influx/machine.go:2154
		switch (m.data)[(m.p)] {
		case 10:
			goto tr128
		case 13:
			goto tr129
		case 32:
			goto tr127
		case 44:
			goto tr130
		case 65:
			goto st18
		case 97:
			goto st21
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto tr127
		}
		goto tr82
	st18:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof18
		}
	st_case_18:
		if (m.data)[(m.p)] == 76 {
			goto st19
		}
		goto tr7
	st19:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof19
		}
	st_case_19:
		if (m.data)[(m.p)] == 83 {
			goto st20
		}
		goto tr7
	st20:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof20
		}
	st_case_20:
		if (m.data)[(m.p)] == 69 {
			goto st80
		}
		goto tr7
	st80:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof80
		}
	st_case_80:
		switch (m.data)[(m.p)] {
		case 10:
			goto tr128
		case 13:
			goto tr129
		case 32:
			goto tr127
		case 44:
			goto tr130
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto tr127
		}
		goto tr82
	st21:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof21
		}
	st_case_21:
		if (m.data)[(m.p)] == 108 {
			goto st22
		}
		goto tr7
	st22:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof22
		}
	st_case_22:
		if (m.data)[(m.p)] == 115 {
			goto st23
		}
		goto tr7
	st23:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof23
		}
	st_case_23:
		if (m.data)[(m.p)] == 101 {
			goto st80
		}
		goto tr7
	tr18:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st81
	st81:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof81
		}
	st_case_81:
//line plugins/parsers/influx/machine.go:2257
		switch (m.data)[(m.p)] {
		case 10:
			goto tr128
		case 13:
			goto tr129
		case 32:
			goto tr127
		case 44:
			goto tr130
		case 82:
			goto st24
		case 114:
			goto st25
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto tr127
		}
		goto tr82
	st24:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof24
		}
	st_case_24:
		if (m.data)[(m.p)] == 85 {
			goto st20
		}
		goto tr7
	st25:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof25
		}
	st_case_25:
		if (m.data)[(m.p)] == 117 {
			goto st23
		}
		goto tr7
	tr19:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st82
	st82:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof82
		}
	st_case_82:
//line plugins/parsers/influx/machine.go:2305
		switch (m.data)[(m.p)] {
		case 10:
			goto tr128
		case 13:
			goto tr129
		case 32:
			goto tr127
		case 44:
			goto tr130
		case 97:
			goto st21
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto tr127
		}
		goto tr82
	tr20:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st83
	st83:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof83
		}
	st_case_83:
//line plugins/parsers/influx/machine.go:2333
		switch (m.data)[(m.p)] {
		case 10:
			goto tr128
		case 13:
			goto tr129
		case 32:
			goto tr127
		case 44:
			goto tr130
		case 114:
			goto st25
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto tr127
		}
		goto tr82
	tr3:
		(m.cs) = 26
//line plugins/parsers/influx/machine.go.rl:86

		err = m.handler.SetMeasurement(m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	tr57:
		(m.cs) = 26
//line plugins/parsers/influx/machine.go.rl:99

		err = m.handler.AddTag(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	st26:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof26
		}
	st_case_26:
//line plugins/parsers/influx/machine.go:2381
		switch (m.data)[(m.p)] {
		case 32:
			goto tr2
		case 44:
			goto tr2
		case 61:
			goto tr2
		case 92:
			goto tr49
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 13 {
			goto tr2
		}
		goto tr48
	tr48:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st27
	st27:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof27
		}
	st_case_27:
//line plugins/parsers/influx/machine.go:2407
		switch (m.data)[(m.p)] {
		case 32:
			goto tr2
		case 44:
			goto tr2
		case 61:
			goto tr51
		case 92:
			goto st32
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 13 {
			goto tr2
		}
		goto st27
	tr51:
//line plugins/parsers/influx/machine.go.rl:95

		m.key = m.text()

		goto st28
	st28:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof28
		}
	st_case_28:
//line plugins/parsers/influx/machine.go:2433
		switch (m.data)[(m.p)] {
		case 32:
			goto tr2
		case 44:
			goto tr2
		case 61:
			goto tr2
		case 92:
			goto tr54
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 13 {
			goto tr2
		}
		goto tr53
	tr53:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st29
	st29:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof29
		}
	st_case_29:
//line plugins/parsers/influx/machine.go:2459
		switch (m.data)[(m.p)] {
		case 10:
			goto tr2
		case 13:
			goto tr2
		case 32:
			goto tr56
		case 44:
			goto tr57
		case 61:
			goto tr2
		case 92:
			goto st30
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto tr56
		}
		goto st29
	tr54:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st30
	st30:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof30
		}
	st_case_30:
//line plugins/parsers/influx/machine.go:2489
		if (m.data)[(m.p)] == 92 {
			goto st31
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 13 {
			goto tr2
		}
		goto st29
	st31:
//line plugins/parsers/influx/machine.go.rl:248
		(m.p)--

		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof31
		}
	st_case_31:
//line plugins/parsers/influx/machine.go:2505
		switch (m.data)[(m.p)] {
		case 10:
			goto tr2
		case 13:
			goto tr2
		case 32:
			goto tr56
		case 44:
			goto tr57
		case 61:
			goto tr2
		case 92:
			goto st30
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto tr56
		}
		goto st29
	tr49:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st32
	st32:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof32
		}
	st_case_32:
//line plugins/parsers/influx/machine.go:2535
		if (m.data)[(m.p)] == 92 {
			goto st33
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 13 {
			goto tr2
		}
		goto st27
	st33:
//line plugins/parsers/influx/machine.go.rl:248
		(m.p)--

		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof33
		}
	st_case_33:
//line plugins/parsers/influx/machine.go:2551
		switch (m.data)[(m.p)] {
		case 32:
			goto tr2
		case 44:
			goto tr2
		case 61:
			goto tr51
		case 92:
			goto st32
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 13 {
			goto tr2
		}
		goto st27
	st34:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof34
		}
	st_case_34:
		if (m.data)[(m.p)] == 10 {
			goto tr62
		}
		goto st34
	tr62:
//line plugins/parsers/influx/machine.go.rl:166

		m.lineno++
		m.sol = m.p
		m.sol++ // next char will be the first column in the line

//line plugins/parsers/influx/machine.go.rl:78

		{
			goto st85
		}

		goto st84
	st84:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof84
		}
	st_case_84:
//line plugins/parsers/influx/machine.go:2592
		goto st0
	st37:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof37
		}
	st_case_37:
		switch (m.data)[(m.p)] {
		case 32:
			goto tr31
		case 35:
			goto tr31
		case 44:
			goto tr31
		case 92:
			goto tr66
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 13 {
			goto tr31
		}
		goto tr65
	tr65:
//line plugins/parsers/influx/machine.go.rl:82

		m.beginMetric = true

//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st86
	st86:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof86
		}
	st_case_86:
//line plugins/parsers/influx/machine.go:2628
		switch (m.data)[(m.p)] {
		case 10:
			goto tr138
		case 13:
			goto tr139
		case 32:
			goto tr2
		case 44:
			goto tr140
		case 92:
			goto st45
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto tr2
		}
		goto st86
	tr67:
//line plugins/parsers/influx/machine.go.rl:166

		m.lineno++
		m.sol = m.p
		m.sol++ // next char will be the first column in the line

		goto st87
	tr138:
		(m.cs) = 87
//line plugins/parsers/influx/machine.go.rl:86

		err = m.handler.SetMeasurement(m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

//line plugins/parsers/influx/machine.go.rl:166

		m.lineno++
		m.sol = m.p
		m.sol++ // next char will be the first column in the line

		goto _again
	tr142:
		(m.cs) = 87
//line plugins/parsers/influx/machine.go.rl:99

		err = m.handler.AddTag(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

//line plugins/parsers/influx/machine.go.rl:166

		m.lineno++
		m.sol = m.p
		m.sol++ // next char will be the first column in the line

		goto _again
	st87:
//line plugins/parsers/influx/machine.go.rl:172

		m.finishMetric = true
		(m.cs) = 85
		{
			(m.p)++
			goto _out
		}

		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof87
		}
	st_case_87:
//line plugins/parsers/influx/machine.go:2702
		goto st0
	tr139:
		(m.cs) = 38
//line plugins/parsers/influx/machine.go.rl:86

		err = m.handler.SetMeasurement(m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	tr143:
		(m.cs) = 38
//line plugins/parsers/influx/machine.go.rl:99

		err = m.handler.AddTag(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	st38:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof38
		}
	st_case_38:
//line plugins/parsers/influx/machine.go:2735
		if (m.data)[(m.p)] == 10 {
			goto tr67
		}
		goto st0
	tr140:
		(m.cs) = 39
//line plugins/parsers/influx/machine.go.rl:86

		err = m.handler.SetMeasurement(m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	tr144:
		(m.cs) = 39
//line plugins/parsers/influx/machine.go.rl:99

		err = m.handler.AddTag(m.key, m.text())
		if err != nil {
			(m.p)--

			(m.cs) = 34
			{
				(m.p)++
				goto _out
			}
		}

		goto _again
	st39:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof39
		}
	st_case_39:
//line plugins/parsers/influx/machine.go:2771
		switch (m.data)[(m.p)] {
		case 32:
			goto tr2
		case 44:
			goto tr2
		case 61:
			goto tr2
		case 92:
			goto tr69
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 13 {
			goto tr2
		}
		goto tr68
	tr68:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st40
	st40:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof40
		}
	st_case_40:
//line plugins/parsers/influx/machine.go:2797
		switch (m.data)[(m.p)] {
		case 32:
			goto tr2
		case 44:
			goto tr2
		case 61:
			goto tr71
		case 92:
			goto st43
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 13 {
			goto tr2
		}
		goto st40
	tr71:
//line plugins/parsers/influx/machine.go.rl:95

		m.key = m.text()

		goto st41
	st41:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof41
		}
	st_case_41:
//line plugins/parsers/influx/machine.go:2823
		switch (m.data)[(m.p)] {
		case 32:
			goto tr2
		case 44:
			goto tr2
		case 61:
			goto tr2
		case 92:
			goto tr74
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 13 {
			goto tr2
		}
		goto tr73
	tr73:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st88
	st88:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof88
		}
	st_case_88:
//line plugins/parsers/influx/machine.go:2849
		switch (m.data)[(m.p)] {
		case 10:
			goto tr142
		case 13:
			goto tr143
		case 32:
			goto tr2
		case 44:
			goto tr144
		case 61:
			goto tr2
		case 92:
			goto st42
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto tr2
		}
		goto st88
	tr74:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st42
	st42:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof42
		}
	st_case_42:
//line plugins/parsers/influx/machine.go:2879
		if (m.data)[(m.p)] == 92 {
			goto st89
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 13 {
			goto tr2
		}
		goto st88
	st89:
//line plugins/parsers/influx/machine.go.rl:248
		(m.p)--

		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof89
		}
	st_case_89:
//line plugins/parsers/influx/machine.go:2895
		switch (m.data)[(m.p)] {
		case 10:
			goto tr142
		case 13:
			goto tr143
		case 32:
			goto tr2
		case 44:
			goto tr144
		case 61:
			goto tr2
		case 92:
			goto st42
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto tr2
		}
		goto st88
	tr69:
//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st43
	st43:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof43
		}
	st_case_43:
//line plugins/parsers/influx/machine.go:2925
		if (m.data)[(m.p)] == 92 {
			goto st44
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 13 {
			goto tr2
		}
		goto st40
	st44:
//line plugins/parsers/influx/machine.go.rl:248
		(m.p)--

		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof44
		}
	st_case_44:
//line plugins/parsers/influx/machine.go:2941
		switch (m.data)[(m.p)] {
		case 32:
			goto tr2
		case 44:
			goto tr2
		case 61:
			goto tr71
		case 92:
			goto st43
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 13 {
			goto tr2
		}
		goto st40
	tr66:
//line plugins/parsers/influx/machine.go.rl:82

		m.beginMetric = true

//line plugins/parsers/influx/machine.go.rl:28

		m.pb = m.p

		goto st45
	st45:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof45
		}
	st_case_45:
//line plugins/parsers/influx/machine.go:2971
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 13 {
			goto st0
		}
		goto st86
	tr63:
//line plugins/parsers/influx/machine.go.rl:166

		m.lineno++
		m.sol = m.p
		m.sol++ // next char will be the first column in the line

		goto st85
	st85:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof85
		}
	st_case_85:
//line plugins/parsers/influx/machine.go:2989
		switch (m.data)[(m.p)] {
		case 10:
			goto tr63
		case 13:
			goto st35
		case 32:
			goto st85
		case 35:
			goto st36
		}
		if 9 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 12 {
			goto st85
		}
		goto tr135
	st35:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof35
		}
	st_case_35:
		if (m.data)[(m.p)] == 10 {
			goto tr63
		}
		goto st0
	st36:
		if (m.p)++; (m.p) == (m.pe) {
			goto _test_eof36
		}
	st_case_36:
		if (m.data)[(m.p)] == 10 {
			goto tr63
		}
		goto st36
	st_out:
	_test_eof46:
		(m.cs) = 46
		goto _test_eof
	_test_eof1:
		(m.cs) = 1
		goto _test_eof
	_test_eof2:
		(m.cs) = 2
		goto _test_eof
	_test_eof3:
		(m.cs) = 3
		goto _test_eof
	_test_eof4:
		(m.cs) = 4
		goto _test_eof
	_test_eof5:
		(m.cs) = 5
		goto _test_eof
	_test_eof6:
		(m.cs) = 6
		goto _test_eof
	_test_eof47:
		(m.cs) = 47
		goto _test_eof
	_test_eof48:
		(m.cs) = 48
		goto _test_eof
	_test_eof49:
		(m.cs) = 49
		goto _test_eof
	_test_eof7:
		(m.cs) = 7
		goto _test_eof
	_test_eof8:
		(m.cs) = 8
		goto _test_eof
	_test_eof9:
		(m.cs) = 9
		goto _test_eof
	_test_eof10:
		(m.cs) = 10
		goto _test_eof
	_test_eof50:
		(m.cs) = 50
		goto _test_eof
	_test_eof51:
		(m.cs) = 51
		goto _test_eof
	_test_eof52:
		(m.cs) = 52
		goto _test_eof
	_test_eof53:
		(m.cs) = 53
		goto _test_eof
	_test_eof54:
		(m.cs) = 54
		goto _test_eof
	_test_eof55:
		(m.cs) = 55
		goto _test_eof
	_test_eof56:
		(m.cs) = 56
		goto _test_eof
	_test_eof57:
		(m.cs) = 57
		goto _test_eof
	_test_eof58:
		(m.cs) = 58
		goto _test_eof
	_test_eof59:
		(m.cs) = 59
		goto _test_eof
	_test_eof60:
		(m.cs) = 60
		goto _test_eof
	_test_eof61:
		(m.cs) = 61
		goto _test_eof
	_test_eof62:
		(m.cs) = 62
		goto _test_eof
	_test_eof63:
		(m.cs) = 63
		goto _test_eof
	_test_eof64:
		(m.cs) = 64
		goto _test_eof
	_test_eof65:
		(m.cs) = 65
		goto _test_eof
	_test_eof66:
		(m.cs) = 66
		goto _test_eof
	_test_eof67:
		(m.cs) = 67
		goto _test_eof
	_test_eof68:
		(m.cs) = 68
		goto _test_eof
	_test_eof69:
		(m.cs) = 69
		goto _test_eof
	_test_eof11:
		(m.cs) = 11
		goto _test_eof
	_test_eof12:
		(m.cs) = 12
		goto _test_eof
	_test_eof13:
		(m.cs) = 13
		goto _test_eof
	_test_eof14:
		(m.cs) = 14
		goto _test_eof
	_test_eof15:
		(m.cs) = 15
		goto _test_eof
	_test_eof70:
		(m.cs) = 70
		goto _test_eof
	_test_eof16:
		(m.cs) = 16
		goto _test_eof
	_test_eof17:
		(m.cs) = 17
		goto _test_eof
	_test_eof71:
		(m.cs) = 71
		goto _test_eof
	_test_eof72:
		(m.cs) = 72
		goto _test_eof
	_test_eof73:
		(m.cs) = 73
		goto _test_eof
	_test_eof74:
		(m.cs) = 74
		goto _test_eof
	_test_eof75:
		(m.cs) = 75
		goto _test_eof
	_test_eof76:
		(m.cs) = 76
		goto _test_eof
	_test_eof77:
		(m.cs) = 77
		goto _test_eof
	_test_eof78:
		(m.cs) = 78
		goto _test_eof
	_test_eof79:
		(m.cs) = 79
		goto _test_eof
	_test_eof18:
		(m.cs) = 18
		goto _test_eof
	_test_eof19:
		(m.cs) = 19
		goto _test_eof
	_test_eof20:
		(m.cs) = 20
		goto _test_eof
	_test_eof80:
		(m.cs) = 80
		goto _test_eof
	_test_eof21:
		(m.cs) = 21
		goto _test_eof
	_test_eof22:
		(m.cs) = 22
		goto _test_eof
	_test_eof23:
		(m.cs) = 23
		goto _test_eof
	_test_eof81:
		(m.cs) = 81
		goto _test_eof
	_test_eof24:
		(m.cs) = 24
		goto _test_eof
	_test_eof25:
		(m.cs) = 25
		goto _test_eof
	_test_eof82:
		(m.cs) = 82
		goto _test_eof
	_test_eof83:
		(m.cs) = 83
		goto _test_eof
	_test_eof26:
		(m.cs) = 26
		goto _test_eof
	_test_eof27:
		(m.cs) = 27
		goto _test_eof
	_test_eof28:
		(m.cs) = 28
		goto _test_eof
	_test_eof29:
		(m.cs) = 29
		goto _test_eof
	_test_eof30:
		(m.cs) = 30
		goto _test_eof
	_test_eof31:
		(m.cs) = 31
		goto _test_eof
	_test_eof32:
		(m.cs) = 32
		goto _test_eof
	_test_eof33:
		(m.cs) = 33
		goto _test_eof
	_test_eof34:
		(m.cs) = 34
		goto _test_eof
	_test_eof84:
		(m.cs) = 84
		goto _test_eof
	_test_eof37:
		(m.cs) = 37
		goto _test_eof
	_test_eof86:
		(m.cs) = 86
		goto _test_eof
	_test_eof87:
		(m.cs) = 87
		goto _test_eof
	_test_eof38:
		(m.cs) = 38
		goto _test_eof
	_test_eof39:
		(m.cs) = 39
		goto _test_eof
	_test_eof40:
		(m.cs) = 40
		goto _test_eof
	_test_eof41:
		(m.cs) = 41
		goto _test_eof
	_test_eof88:
		(m.cs) = 88
		goto _test_eof
	_test_eof42:
		(m.cs) = 42
		goto _test_eof
	_test_eof89:
		(m.cs) = 89
		goto _test_eof
	_test_eof43:
		(m.cs) = 43
		goto _test_eof
	_test_eof44:
		(m.cs) = 44
		goto _test_eof
	_test_eof45:
		(m.cs) = 45
		goto _test_eof
	_test_eof85:
		(m.cs) = 85
		goto _test_eof
	_test_eof35:
		(m.cs) = 35
		goto _test_eof
	_test_eof36:
		(m.cs) = 36
		goto _test_eof

	_test_eof:
		{
		}
		if (m.p) == (m.eof) {
			switch m.cs {
			case 7, 37:
//line plugins/parsers/influx/machine.go.rl:32

				err = ErrNameParse
				(m.p)--

				(m.cs) = 34
				{
					(m.p)++
					(m.cs) = 0
					goto _out
				}

			case 2, 3, 4, 5, 6, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25:
//line plugins/parsers/influx/machine.go.rl:39

				err = ErrFieldParse
				(m.p)--

				(m.cs) = 34
				{
					(m.p)++
					(m.cs) = 0
					goto _out
				}

			case 26, 27, 28, 30, 32, 33, 39, 40, 41, 42, 43, 44:
//line plugins/parsers/influx/machine.go.rl:46

				err = ErrTagParse
				(m.p)--

				(m.cs) = 34
				{
					(m.p)++
					(m.cs) = 0
					goto _out
				}

			case 10:
//line plugins/parsers/influx/machine.go.rl:53

				err = ErrTimestampParse
				(m.p)--

				(m.cs) = 34
				{
					(m.p)++
					(m.cs) = 0
					goto _out
				}

			case 86:
//line plugins/parsers/influx/machine.go.rl:86

				err = m.handler.SetMeasurement(m.text())
				if err != nil {
					(m.p)--

					(m.cs) = 34
					{
						(m.p)++
						(m.cs) = 0
						goto _out
					}
				}

			case 88, 89:
//line plugins/parsers/influx/machine.go.rl:99

				err = m.handler.AddTag(m.key, m.text())
				if err != nil {
					(m.p)--

					(m.cs) = 34
					{
						(m.p)++
						(m.cs) = 0
						goto _out
					}
				}

			case 47, 48, 49, 51:
//line plugins/parsers/influx/machine.go.rl:178

				m.finishMetric = true

			case 46:
//line plugins/parsers/influx/machine.go.rl:82

				m.beginMetric = true

//line plugins/parsers/influx/machine.go.rl:178

				m.finishMetric = true

			case 1:
//line plugins/parsers/influx/machine.go.rl:86

				err = m.handler.SetMeasurement(m.text())
				if err != nil {
					(m.p)--

					(m.cs) = 34
					{
						(m.p)++
						(m.cs) = 0
						goto _out
					}
				}

//line plugins/parsers/influx/machine.go.rl:46

				err = ErrTagParse
				(m.p)--

				(m.cs) = 34
				{
					(m.p)++
					(m.cs) = 0
					goto _out
				}

			case 29, 31:
//line plugins/parsers/influx/machine.go.rl:99

				err = m.handler.AddTag(m.key, m.text())
				if err != nil {
					(m.p)--

					(m.cs) = 34
					{
						(m.p)++
						(m.cs) = 0
						goto _out
					}
				}

//line plugins/parsers/influx/machine.go.rl:46

				err = ErrTagParse
				(m.p)--

				(m.cs) = 34
				{
					(m.p)++
					(m.cs) = 0
					goto _out
				}

			case 74:
//line plugins/parsers/influx/machine.go.rl:112

				err = m.handler.AddInt(m.key, m.text())
				if err != nil {
					(m.p)--

					(m.cs) = 34
					{
						(m.p)++
						(m.cs) = 0
						goto _out
					}
				}

//line plugins/parsers/influx/machine.go.rl:178

				m.finishMetric = true

			case 77:
//line plugins/parsers/influx/machine.go.rl:121

				err = m.handler.AddUint(m.key, m.text())
				if err != nil {
					(m.p)--

					(m.cs) = 34
					{
						(m.p)++
						(m.cs) = 0
						goto _out
					}
				}

//line plugins/parsers/influx/machine.go.rl:178

				m.finishMetric = true

			case 70, 71, 72, 73, 75, 76, 78:
//line plugins/parsers/influx/machine.go.rl:130

				err = m.handler.AddFloat(m.key, m.text())
				if err != nil {
					(m.p)--

					(m.cs) = 34
					{
						(m.p)++
						(m.cs) = 0
						goto _out
					}
				}

//line plugins/parsers/influx/machine.go.rl:178

				m.finishMetric = true

			case 79, 80, 81, 82, 83:
//line plugins/parsers/influx/machine.go.rl:139

				err = m.handler.AddBool(m.key, m.text())
				if err != nil {
					(m.p)--

					(m.cs) = 34
					{
						(m.p)++
						(m.cs) = 0
						goto _out
					}
				}

//line plugins/parsers/influx/machine.go.rl:178

				m.finishMetric = true

			case 50, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69:
//line plugins/parsers/influx/machine.go.rl:157

				err = m.handler.SetTimestamp(m.text())
				if err != nil {
					(m.p)--

					(m.cs) = 34
					{
						(m.p)++
						(m.cs) = 0
						goto _out
					}
				}

//line plugins/parsers/influx/machine.go.rl:178

				m.finishMetric = true

//line plugins/parsers/influx/machine.go:3301
			}
		}

	_out:
		{
		}
	}

//line plugins/parsers/influx/machine.go.rl:415

	if err != nil {
		return err
	}

	// This would indicate an error in the machine that was reported with a
	// more specific error.  We return a generic error but this should
	// possibly be a panic.
	if m.cs == 0 {
		m.cs = LineProtocol_en_discard_line
		return ErrParse
	}

	// If we haven't found a metric line yet and we reached the EOF, report it
	// now.  This happens when the data ends with a comment or whitespace.
	//
	// Otherwise we have successfully parsed a metric line, so if we are at
	// the EOF we will report it the next call.
	if !m.beginMetric && m.p == m.pe && m.pe == m.eof {
		return EOF
	}

	return nil
}

// Position returns the current byte offset into the data.
func (m *machine) Position() int {
	return m.p
}

// LineOffset returns the byte offset of the current line.
func (m *machine) LineOffset() int {
	return m.sol
}

// LineNumber returns the current line number.  Lines are counted based on the
// regular expression `\r?\n`.
func (m *machine) LineNumber() int {
	return m.lineno
}

// Column returns the current column.
func (m *machine) Column() int {
	lineOffset := m.p - m.sol
	return lineOffset + 1
}

func (m *machine) text() []byte {
	return m.data[m.pb:m.p]
}

type streamMachine struct {
	machine *machine
	reader  io.Reader
}

func NewStreamMachine(r io.Reader, handler Handler) *streamMachine {
	m := &streamMachine{
		machine: NewMachine(handler),
		reader:  r,
	}

	m.machine.SetData(make([]byte, 1024))
	m.machine.pe = 0
	m.machine.eof = -1
	return m
}

func (m *streamMachine) Next() error {
	// Check if we are already at EOF, this should only happen if called again
	// after already returning EOF.
	if m.machine.p == m.machine.pe && m.machine.pe == m.machine.eof {
		return EOF
	}

	copy(m.machine.data, m.machine.data[m.machine.p:])
	m.machine.pe = m.machine.pe - m.machine.p
	m.machine.sol = m.machine.sol - m.machine.p
	m.machine.pb = 0
	m.machine.p = 0
	m.machine.eof = -1

	m.machine.key = nil
	m.machine.beginMetric = false
	m.machine.finishMetric = false

	for {
		// Expand the buffer if it is full
		if m.machine.pe == len(m.machine.data) {
			expanded := make([]byte, 2*len(m.machine.data))
			copy(expanded, m.machine.data)
			m.machine.data = expanded
		}

		err := m.machine.exec()
		if err != nil {
			return err
		}

		// If we have successfully parsed a full metric line break out
		if m.machine.finishMetric {
			break
		}

		n, err := m.reader.Read(m.machine.data[m.machine.pe:])
		if n == 0 && err == io.EOF {
			m.machine.eof = m.machine.pe
		} else if err != nil && err != io.EOF {
			// After the reader returns an error this function shouldn't be
			// called again.  This will cause the machine to return EOF this
			// is done.
			m.machine.p = m.machine.pe
			m.machine.eof = m.machine.pe
			return &readErr{Err: err}
		}

		m.machine.pe += n

	}

	return nil
}

// Position returns the current byte offset into the data.
func (m *streamMachine) Position() int {
	return m.machine.Position()
}

// LineOffset returns the byte offset of the current line.
func (m *streamMachine) LineOffset() int {
	return m.machine.LineOffset()
}

// LineNumber returns the current line number.  Lines are counted based on the
// regular expression `\r?\n`.
func (m *streamMachine) LineNumber() int {
	return m.machine.LineNumber()
}

// Column returns the current column.
func (m *streamMachine) Column() int {
	return m.machine.Column()
}

// LineText returns the text of the current line that has been parsed so far.
func (m *streamMachine) LineText() string {
	return string(m.machine.data[0:m.machine.p])
}
