From 4a624f41b14330b7238032bb3f6bae9772de21d0 Mon Sep 17 00:00:00 2001 From: Anton Chirikalov Date: Thu, 16 Jun 2022 22:08:41 +0300 Subject: [PATCH 01/31] sql grammar/lexer/parser/listener --- go.mod | 562 +- go.sum | 703 +- processor/stream_processor/parser/sql.interp | 87 + processor/stream_processor/parser/sql.tokens | 41 + .../stream_processor/parser/sqlLexer.interp | 143 + .../stream_processor/parser/sqlLexer.tokens | 41 + .../parser/sql_base_listener.go | 82 + .../stream_processor/parser/sql_lexer.go | 321 + .../stream_processor/parser/sql_lexer_test.go | 22 + .../stream_processor/parser/sql_listener.go | 70 + .../stream_processor/parser/sql_parser.go | 1764 ++ processor/stream_processor/sql.g4 | 137 + processor/stream_processor/test/Sql.g4 | 980 + .../stream_processor/test/parser/Sql.interp | 431 + .../stream_processor/test/parser/Sql.tokens | 186 + .../test/parser/SqlLexer.interp | 527 + .../test/parser/SqlLexer.tokens | 186 + .../test/parser/sql_base_listener.go | 618 + .../stream_processor/test/parser/sql_lexer.go | 1002 + .../test/parser/sql_lexer_test.go | 22 + .../test/parser/sql_listener.go | 598 + .../test/parser/sql_parser.go | 25479 ++++++++++++++++ 22 files changed, 33377 insertions(+), 625 deletions(-) create mode 100644 processor/stream_processor/parser/sql.interp create mode 100644 processor/stream_processor/parser/sql.tokens create mode 100644 processor/stream_processor/parser/sqlLexer.interp create mode 100644 processor/stream_processor/parser/sqlLexer.tokens create mode 100644 processor/stream_processor/parser/sql_base_listener.go create mode 100644 processor/stream_processor/parser/sql_lexer.go create mode 100644 processor/stream_processor/parser/sql_lexer_test.go create mode 100644 processor/stream_processor/parser/sql_listener.go create mode 100644 processor/stream_processor/parser/sql_parser.go create mode 100644 processor/stream_processor/sql.g4 create mode 100644 processor/stream_processor/test/Sql.g4 create mode 100644 processor/stream_processor/test/parser/Sql.interp create mode 100644 processor/stream_processor/test/parser/Sql.tokens create mode 100644 processor/stream_processor/test/parser/SqlLexer.interp create mode 100644 processor/stream_processor/test/parser/SqlLexer.tokens create mode 100644 processor/stream_processor/test/parser/sql_base_listener.go create mode 100644 processor/stream_processor/test/parser/sql_lexer.go create mode 100644 processor/stream_processor/test/parser/sql_lexer_test.go create mode 100644 processor/stream_processor/test/parser/sql_listener.go create mode 100644 processor/stream_processor/test/parser/sql_parser.go diff --git a/go.mod b/go.mod index 69e187008683..87cc8f3371c3 100644 --- a/go.mod +++ b/go.mod @@ -3,169 +3,160 @@ module github.com/open-telemetry/opentelemetry-collector-contrib go 1.17 require ( - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/alibabacloudlogserviceexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awscloudwatchlogsexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsemfexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awskinesisexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsprometheusremotewriteexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsxrayexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/azuremonitorexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/carbonexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/clickhouseexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/coralogixexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/datadogexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/dynatraceexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/f5cloudexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/googlecloudexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/googlecloudpubsubexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/googlemanagedprometheusexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/honeycombexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/humioexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/influxdbexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerthrifthttpexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/logzioexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/lokiexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/mezmoexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/opencensusexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/opsrampotlpexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/parquetexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/pulsarexporter v0.0.0-00010101000000-000000000000 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sapmexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sentryexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/signalfxexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/skywalkingexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/splunkhecexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sumologicexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/tanzuobservabilityexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/tencentcloudlogserviceexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/zipkinexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/asapauthextension v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/awsproxy v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/bearertokenauthextension v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/fluentbitextension v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecstaskobserver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/hostobserver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/k8sobserver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/oidcauthextension v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextension v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/sigv4authextension v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.56.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/batchmemlimitprocessor v0.0.0-00010101000000-000000000000 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatorateprocessor v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbyattrsprocessor v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sattributesprocessor v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricsgenerationprocessor v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricstransformprocessor v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/probabilisticsamplerprocessor v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/routingprocessor v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/scrubbingprocessor v0.0.0-00010101000000-000000000000 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/aerospikereceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsfirehosereceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/bigipreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/carbonreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/cloudfoundryreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/collectdreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/couchdbreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dockerstatsreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dotnetdiagnosticsreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/elasticsearchreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/expvarreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/flinkmetricsreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/fluentforwardreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/googlecloudpubsubreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/googlecloudspannerreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/iisreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/influxdbreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/journaldreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8seventsreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkametricsreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kubeletstatsreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/memcachedreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbatlasreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mysqlreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nginxreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nsxtreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/podmanreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/postgresqlreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusexecreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/rabbitmqreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/receivercreator v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/riakreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/saphanareceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sapmreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/signalfxreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/simpleprometheusreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/skywalkingreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/solacereceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/splunkhecreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlqueryreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlserverreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/syslogreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/wavefrontreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/windowseventlogreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/windowsperfcountersreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zookeeperreceiver v0.55.0 - github.com/prometheus/prometheus v0.36.2 - github.com/stretchr/testify v1.8.0 - go.opentelemetry.io/collector v0.56.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/alibabacloudlogserviceexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awscloudwatchlogsexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsemfexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awskinesisexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsprometheusremotewriteexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsxrayexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/azuremonitorexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/carbonexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/clickhouseexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/coralogixexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/datadogexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/dynatraceexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/f5cloudexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/googlecloudexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/googlecloudpubsubexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/honeycombexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/humioexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/influxdbexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerthrifthttpexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/logzioexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/lokiexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/mezmoexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/opencensusexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/parquetexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sapmexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sentryexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/signalfxexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/skywalkingexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/splunkhecexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sumologicexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/tanzuobservabilityexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/tencentcloudlogserviceexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/zipkinexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/asapauthextension v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/awsproxy v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/bearertokenauthextension v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/fluentbitextension v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecstaskobserver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/hostobserver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/k8sobserver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/oidcauthextension v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextension v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/sigv4authextension v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatorateprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbyattrsprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sattributesprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricsgenerationprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricstransformprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/probabilisticsamplerprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/routingprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsfirehosereceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/bigipreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/carbonreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/cloudfoundryreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/collectdreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/couchdbreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dockerstatsreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dotnetdiagnosticsreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/elasticsearchreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/flinkmetricsreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/fluentforwardreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/googlecloudpubsubreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/googlecloudspannerreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/iisreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/influxdbreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/journaldreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8seventsreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkametricsreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kubeletstatsreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/memcachedreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbatlasreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mysqlreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nginxreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nsxtreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/podmanreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/postgresqlreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusexecreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/rabbitmqreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/receivercreator v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/riakreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/saphanareceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sapmreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/signalfxreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/simpleprometheusreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/skywalkingreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/splunkhecreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlserverreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/syslogreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/wavefrontreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/windowseventlogreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/windowsperfcountersreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zookeeperreceiver v0.53.0 + github.com/prometheus/prometheus v0.36.0 + github.com/stretchr/testify v1.7.2 + go.opentelemetry.io/collector v0.53.0 go.uber.org/multierr v1.8.0 - golang.org/x/sys v0.0.0-20220624220833-87e55d714810 + golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a ) require ( bitbucket.org/atlassian/go-asap/v2 v2.6.0 // indirect - cloud.google.com/go v0.102.1 // indirect - cloud.google.com/go/compute v1.7.0 // indirect + cloud.google.com/go v0.102.0 // indirect + cloud.google.com/go/compute v1.6.1 // indirect cloud.google.com/go/iam v0.3.0 // indirect cloud.google.com/go/logging v1.4.2 // indirect cloud.google.com/go/monitoring v1.5.0 // indirect - cloud.google.com/go/pubsub v1.23.1 // indirect - cloud.google.com/go/spanner v1.34.1 // indirect + cloud.google.com/go/pubsub v1.22.2 // indirect + cloud.google.com/go/spanner v1.33.0 // indirect cloud.google.com/go/trace v1.2.0 // indirect code.cloudfoundry.org/clock v1.0.0 // indirect code.cloudfoundry.org/go-diodes v0.0.0-20211115184647-b584dd5df32c // indirect @@ -173,12 +164,7 @@ require ( code.cloudfoundry.org/rfc5424 v0.0.0-20201103192249-000122071b78 // indirect contrib.go.opencensus.io/exporter/prometheus v0.4.1 // indirect contrib.go.opencensus.io/exporter/stackdriver v0.13.13 // indirect - github.com/99designs/keyring v1.1.6 // indirect - github.com/AthenZ/athenz v1.10.39 // indirect - github.com/Azure/azure-pipeline-go v0.2.3 // indirect github.com/Azure/azure-sdk-for-go v65.0.0+incompatible // indirect - github.com/Azure/azure-storage-blob-go v0.14.0 // indirect - github.com/Azure/go-amqp v0.17.5 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest v0.11.27 // indirect github.com/Azure/go-autorest/autorest/adal v0.9.20 // indirect @@ -188,56 +174,43 @@ require ( github.com/Azure/go-autorest/logger v0.2.1 // indirect github.com/Azure/go-autorest/tracing v0.6.0 // indirect github.com/ClickHouse/clickhouse-go v1.5.4 // indirect - github.com/DataDog/agent-payload/v5 v5.0.23 // indirect - github.com/DataDog/datadog-agent/pkg/obfuscate v0.38.0-rc.5 // indirect - github.com/DataDog/datadog-agent/pkg/otlp/model v0.38.0-rc.5 // indirect - github.com/DataDog/datadog-agent/pkg/quantile v0.38.0-rc.5 // indirect - github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.38.0-rc.5 // indirect - github.com/DataDog/datadog-agent/pkg/trace v0.38.0-rc.5 // indirect - github.com/DataDog/datadog-go/v5 v5.1.0 // indirect + github.com/DataDog/agent-payload/v5 v5.0.22 // indirect + github.com/DataDog/datadog-agent/pkg/quantile v0.36.0-rc.4.0.20220426134022-b55bccd5073f // indirect + github.com/DataDog/datadog-agent/pkg/trace/exportable v0.0.0-20201016145401-4646cf596b02 // indirect + github.com/DataDog/datadog-agent/pkg/util/log v0.0.0-20201009092105-58e18918b2db // indirect + github.com/DataDog/datadog-go v4.8.2+incompatible // indirect github.com/DataDog/sketches-go v1.4.1 // indirect - github.com/DataDog/zstd v1.5.2 // indirect github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.32.3 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.32.3 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector/googlemanagedprometheus v0.32.3 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.8.3 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.32.3 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.32.1 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.30.2-0.20220512190557-875976f87023 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.6.1 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.30.1 // indirect github.com/Microsoft/go-winio v0.5.2 // indirect github.com/ReneKroon/ttlcache/v2 v2.11.0 // indirect - github.com/SAP/go-hdb v0.106.1 // indirect + github.com/SAP/go-hdb v0.105.5 // indirect github.com/SermoDigital/jose v0.9.2-0.20161205224733-f6df55f235c2 // indirect - github.com/Shopify/sarama v1.34.1 // indirect + github.com/Shopify/sarama v1.34.0 // indirect github.com/Showmax/go-fqdn v1.0.0 // indirect + github.com/StackExchange/wmi v1.2.1 // indirect github.com/VividCortex/gohistogram v1.0.0 // indirect - github.com/aerospike/aerospike-client-go/v5 v5.8.0 // indirect github.com/alecthomas/participle/v2 v2.0.0-alpha9 // indirect github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect - github.com/aliyun/aliyun-log-go-sdk v0.1.37 // indirect + github.com/aliyun/aliyun-log-go-sdk v0.1.36 // indirect github.com/antonmedv/expr v1.9.0 // indirect - github.com/apache/arrow/go/arrow v0.0.0-20211112161151-bc219186db40 // indirect - github.com/apache/pulsar-client-go v0.8.1 // indirect - github.com/apache/pulsar-client-go/oauth2 v0.0.0-20220120090717-25e59572242e // indirect github.com/apache/thrift v0.16.0 // indirect - github.com/ardielle/ardielle-go v1.5.2 // indirect github.com/armon/go-metrics v0.3.10 // indirect - github.com/aws/aws-sdk-go v1.44.54 // indirect - github.com/aws/aws-sdk-go-v2 v1.11.0 // indirect - github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.0.0 // indirect - github.com/aws/aws-sdk-go-v2/config v1.10.1 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.6.1 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.8.0 // indirect - github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.7.1 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.0 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.0.0 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.3.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.5.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.5.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.9.0 // indirect - github.com/aws/aws-sdk-go-v2/service/s3 v1.19.0 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.6.0 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.10.0 // indirect + github.com/avast/retry-go v3.0.0+incompatible // indirect + github.com/aws/aws-sdk-go v1.44.28 // indirect + github.com/aws/aws-sdk-go-v2 v1.9.2 // indirect + github.com/aws/aws-sdk-go-v2/config v1.8.3 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.4.3 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.6.0 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.4.2 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.7.2 // indirect github.com/aws/smithy-go v1.11.0 // indirect + github.com/beeker1121/goque v2.1.0+incompatible // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver v3.5.1+incompatible // indirect github.com/bmatcuk/doublestar/v3 v3.0.0 // indirect @@ -247,6 +220,7 @@ require ( github.com/census-instrumentation/opencensus-proto v0.3.0 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/checkpoint-restore/go-criu/v5 v5.3.0 // indirect + github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 // indirect github.com/cilium/ebpf v0.7.0 // indirect github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 // indirect github.com/cloudfoundry-incubator/uaago v0.0.0-20190307164349-8136b7bbe76e // indirect @@ -259,20 +233,16 @@ require ( github.com/coreos/go-oidc v2.2.1+incompatible // indirect github.com/coreos/go-systemd/v22 v22.3.2 // indirect github.com/cyphar/filepath-securejoin v0.2.3 // indirect - github.com/danieljoos/wincred v1.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/denisenkom/go-mssqldb v0.12.2 // indirect github.com/dennwc/varint v1.0.0 // indirect github.com/dgraph-io/ristretto v0.1.0 // indirect - github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/digitalocean/godo v1.80.0 // indirect github.com/docker/distribution v2.8.1+incompatible // indirect - github.com/docker/docker v20.10.17+incompatible // indirect + github.com/docker/docker v20.10.16+incompatible // indirect github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11 // indirect github.com/docker/go-units v0.4.0 // indirect github.com/dustin/go-humanize v1.0.0 // indirect - github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b // indirect - github.com/dynatrace-oss/dynatrace-metric-utils-go v0.5.0 // indirect + github.com/dynatrace-oss/dynatrace-metric-utils-go v0.3.0 // indirect github.com/eapache/go-resiliency v1.2.0 // indirect github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect github.com/eapache/queue v1.1.0 // indirect @@ -287,11 +257,8 @@ require ( github.com/facebookgo/muster v0.0.0-20150708232844-fd3d7953fd52 // indirect github.com/fatih/color v1.13.0 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect - github.com/form3tech-oss/jwt-go v3.2.5+incompatible // indirect github.com/fsnotify/fsnotify v1.5.4 // indirect - github.com/gabriel-vasile/mimetype v1.4.0 // indirect github.com/getsentry/sentry-go v0.13.0 // indirect - github.com/go-kit/kit v0.12.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.5.1 // indirect github.com/go-logr/logr v1.2.3 // indirect @@ -306,27 +273,21 @@ require ( github.com/go-stack/stack v1.8.1 // indirect github.com/go-zookeeper/zk v1.0.2 // indirect github.com/gobwas/glob v0.2.3 // indirect - github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/godbus/dbus/v5 v5.0.6 // indirect github.com/gofrs/uuid v4.2.0+incompatible // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt v3.2.2+incompatible // indirect github.com/golang-jwt/jwt/v4 v4.2.0 // indirect - github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe // indirect - github.com/golang-sql/sqlexp v0.1.0 // indirect github.com/golang/glog v1.0.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.2 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/cadvisor v0.44.1 // indirect - github.com/google/flatbuffers v2.0.0+incompatible // indirect github.com/google/gnostic v0.5.7-v3refs // indirect github.com/google/go-cmp v0.5.8 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/uuid v1.3.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.1.0 // indirect github.com/googleapis/gax-go/v2 v2.4.0 // indirect github.com/gophercloud/gophercloud v0.24.0 // indirect github.com/gorilla/handlers v1.5.1 // indirect @@ -335,8 +296,7 @@ require ( github.com/grobie/gomemcache v0.0.0-20180201122607-1f779c573665 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect - github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect - github.com/hashicorp/consul/api v1.13.1 // indirect + github.com/hashicorp/consul/api v1.12.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-hclog v1.2.1 // indirect @@ -345,13 +305,13 @@ require ( github.com/hashicorp/go-retryablehttp v0.7.1 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/go-uuid v1.0.2 // indirect - github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/go-version v1.5.0 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/memberlist v0.3.1 // indirect github.com/hashicorp/serf v0.9.7 // indirect github.com/hetznercloud/hcloud-go v1.33.2 // indirect - github.com/honeycombio/libhoney-go v1.16.0 // indirect + github.com/honeycombio/libhoney-go v1.15.8 // indirect github.com/iancoleman/strcase v0.2.0 // indirect github.com/imdario/mergo v0.3.12 // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect @@ -360,7 +320,7 @@ require ( github.com/influxdata/influxdb-observability/influx2otel v0.2.21-0.20220517160208-05f925d616de // indirect github.com/influxdata/influxdb-observability/otel2influx v0.2.21-0.20220517160208-05f925d616de // indirect github.com/influxdata/line-protocol/v2 v2.2.1 // indirect - github.com/ionos-cloud/sdk-go/v6 v6.1.0 // indirect + github.com/ionos-cloud/sdk-go/v6 v6.0.5851 // indirect github.com/jackc/chunkreader/v2 v2.0.1 // indirect github.com/jackc/pgconn v1.12.1 // indirect github.com/jackc/pgio v1.0.0 // indirect @@ -369,7 +329,7 @@ require ( github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect github.com/jackc/pgtype v1.11.0 // indirect github.com/jackc/pgx/v4 v4.16.1 // indirect - github.com/jaegertracing/jaeger v1.36.0 // indirect + github.com/jaegertracing/jaeger v1.35.1 // indirect github.com/jcmturner/aescts/v2 v2.0.0 // indirect github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect github.com/jcmturner/gofork v1.0.0 // indirect @@ -381,19 +341,18 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/karrick/godirwalk v1.16.1 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect - github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d // indirect - github.com/klauspost/compress v1.15.8 // indirect - github.com/knadh/koanf v1.4.2 // indirect + github.com/klauspost/compress v1.15.6 // indirect + github.com/knadh/koanf v1.4.1 // indirect github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b // indirect github.com/leoluk/perflib_exporter v0.1.0 // indirect github.com/lib/pq v1.10.6 // indirect - github.com/linkedin/goavro/v2 v2.9.8 // indirect github.com/linode/linodego v1.5.0 // indirect + github.com/logzio/jaeger-logzio v1.0.6 // indirect + github.com/logzio/logzio-go v1.0.6 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/magiconair/properties v1.8.6 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.12 // indirect - github.com/mattn/go-ieproxy v0.0.1 // indirect github.com/mattn/go-isatty v0.0.14 // indirect github.com/mattn/go-sqlite3 v2.0.3+incompatible // indirect github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect @@ -412,37 +371,36 @@ require ( github.com/mongodb-forks/digest v1.0.4 // indirect github.com/mostynb/go-grpc-compression v1.1.16 // indirect github.com/mrunalp/fileutils v0.5.0 // indirect - github.com/mtibben/percent v0.2.1 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect github.com/nginxinc/nginx-prometheus-exporter v0.8.1-0.20201110005315-f5a5f8086c19 // indirect github.com/observiq/ctimefmt v1.0.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/awsutil v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/containerinsight v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/cwlogs v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/k8s v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/metrics v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/proxy v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/docker v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/kubelet v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/metadataproviders v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/sharedcomponent v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/splunk v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchperresourceattr v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/experimentalmetricmetadata v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/opencensus v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/signalfx v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.55.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters v0.55.0 // indirect + github.com/olivere/elastic v6.2.37+incompatible // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/awsutil v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/containerinsight v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/cwlogs v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/k8s v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/metrics v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/proxy v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/docker v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/kubelet v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/metadataproviders v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/sharedcomponent v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/splunk v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchperresourceattr v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/experimentalmetricmetadata v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/opencensus v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/signalfx v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters v0.53.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.0.2 // indirect github.com/opencontainers/runc v1.1.0 // indirect @@ -454,19 +412,18 @@ require ( github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/openzipkin/zipkin-go v0.4.0 // indirect github.com/patrickmn/go-cache v2.1.0+incompatible // indirect - github.com/pelletier/go-toml v1.9.5 // indirect - github.com/pelletier/go-toml/v2 v2.0.1 // indirect + github.com/pelletier/go-toml v1.9.4 // indirect + github.com/pelletier/go-toml/v2 v2.0.0-beta.8 // indirect github.com/philhofer/fwd v1.1.1 // indirect github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/pierrec/lz4/v4 v4.1.14 // indirect - github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/pquerna/cachecontrol v0.1.0 // indirect github.com/prometheus/client_golang v1.12.2 // indirect github.com/prometheus/client_model v0.2.0 // indirect - github.com/prometheus/common v0.37.0 // indirect + github.com/prometheus/common v0.34.0 // indirect github.com/prometheus/common/sigv4 v0.1.0 // indirect github.com/prometheus/procfs v0.7.3 // indirect github.com/prometheus/statsd_exporter v0.21.0 // indirect @@ -475,31 +432,26 @@ require ( github.com/santhosh-tekuri/jsonschema v1.2.4 // indirect github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9 // indirect github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921 // indirect - github.com/secure-systems-lab/go-securesystemslib v0.3.1 // indirect - github.com/shirou/gopsutil/v3 v3.22.6 // indirect + github.com/shirou/gopsutil/v3 v3.22.5 // indirect github.com/signalfx/com_signalfx_metrics_protobuf v0.0.3 // indirect github.com/signalfx/gohistogram v0.0.0-20160107210732-1ccfd2ff5083 // indirect github.com/signalfx/golib/v3 v3.3.13 // indirect - github.com/signalfx/sapm-proto v0.11.0 // indirect + github.com/signalfx/sapm-proto v0.9.0 // indirect github.com/signalfx/signalfx-agent/pkg/apm v0.0.0-20201202163743-65b4fa925fc8 // indirect - github.com/sijms/go-ora/v2 v2.4.26 // indirect github.com/sirupsen/logrus v1.8.1 // indirect - github.com/smartystreets/assertions v1.0.1 // indirect - github.com/snowflakedb/gosnowflake v1.6.10 // indirect github.com/soheilhy/cmux v0.1.5 // indirect - github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/afero v1.8.2 // indirect github.com/spf13/cast v1.5.0 // indirect - github.com/spf13/cobra v1.5.0 // indirect + github.com/spf13/cobra v1.4.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.12.0 // indirect - github.com/stretchr/objx v0.4.0 // indirect - github.com/subosito/gotenv v1.3.0 // indirect + github.com/spf13/viper v1.11.0 // indirect + github.com/stretchr/objx v0.3.0 // indirect + github.com/subosito/gotenv v1.2.0 // indirect github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.440 // indirect + github.com/syndtr/goleveldb v1.0.0 // indirect + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.413 // indirect github.com/tg123/go-htpasswd v1.2.0 // indirect - github.com/theupdateframework/go-tuf v0.3.0 // indirect github.com/tidwall/gjson v1.12.1 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect @@ -523,7 +475,6 @@ require ( github.com/xdg-go/scram v1.1.1 // indirect github.com/xdg-go/stringprep v1.0.3 // indirect github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect - github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect go.elastic.co/apm v1.15.0 // indirect go.elastic.co/fastjson v1.1.0 // indirect @@ -531,37 +482,37 @@ require ( go.mongodb.org/atlas v0.16.0 // indirect go.mongodb.org/mongo-driver v1.9.1 // indirect go.opencensus.io v0.23.0 // indirect - go.opentelemetry.io/collector/pdata v0.56.0 // indirect - go.opentelemetry.io/collector/semconv v0.56.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.33.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.33.0 // indirect - go.opentelemetry.io/contrib/zpages v0.33.0 // indirect - go.opentelemetry.io/otel v1.8.0 // indirect - go.opentelemetry.io/otel/exporters/prometheus v0.31.0 // indirect - go.opentelemetry.io/otel/metric v0.31.0 // indirect - go.opentelemetry.io/otel/sdk v1.8.0 // indirect - go.opentelemetry.io/otel/sdk/metric v0.31.0 // indirect - go.opentelemetry.io/otel/trace v1.8.0 // indirect + go.opentelemetry.io/collector/pdata v0.53.0 // indirect + go.opentelemetry.io/collector/semconv v0.53.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0 // indirect + go.opentelemetry.io/contrib/zpages v0.32.0 // indirect + go.opentelemetry.io/otel v1.7.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.30.0 // indirect + go.opentelemetry.io/otel/metric v0.30.0 // indirect + go.opentelemetry.io/otel/sdk v1.7.0 // indirect + go.opentelemetry.io/otel/sdk/metric v0.30.0 // indirect + go.opentelemetry.io/otel/trace v1.7.0 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/goleak v1.1.12 // indirect go.uber.org/zap v1.21.0 // indirect golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122 // indirect - golang.org/x/exp v0.0.0-20200908183739-ae8ad444f925 // indirect golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect - golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e // indirect - golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2 // indirect - golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f // indirect + golang.org/x/net v0.0.0-20220526153639-5463443f8c37 // indirect + golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401 // indirect + golang.org/x/sync v0.0.0-20220513210516-0976fa681c29 // indirect golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect golang.org/x/text v0.3.7 // indirect - golang.org/x/time v0.0.0-20220609170525-579cf78fd858 // indirect + golang.org/x/time v0.0.0-20220411224347-583f2d630306 // indirect golang.org/x/tools v0.1.10 // indirect - golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect + golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df // indirect gonum.org/v1/gonum v0.11.0 // indirect - google.golang.org/api v0.87.0 // indirect + google.golang.org/api v0.82.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20220718134204-073382fd740c // indirect - google.golang.org/grpc v1.48.0 // indirect + google.golang.org/genproto v0.0.0-20220527130721-00d5c0f3be58 // indirect + google.golang.org/grpc v1.47.0 // indirect google.golang.org/protobuf v1.28.0 // indirect + gopkg.in/DataDog/dd-trace-go.v1 v1.38.1 // indirect gopkg.in/alexcesaro/statsd.v2 v2.0.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.66.4 // indirect @@ -570,9 +521,9 @@ require ( gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gopkg.in/zorkian/go-datadog-api.v2 v2.30.0 // indirect - k8s.io/api v0.24.3 // indirect - k8s.io/apimachinery v0.24.3 // indirect - k8s.io/client-go v0.24.3 // indirect + k8s.io/api v0.24.1 // indirect + k8s.io/apimachinery v0.24.1 // indirect + k8s.io/client-go v0.24.1 // indirect k8s.io/klog v1.0.0 // indirect k8s.io/klog/v2 v2.60.1 // indirect k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42 // indirect @@ -584,6 +535,13 @@ require ( skywalking.apache.org/repo/goapi v0.0.0-20220121092418-9c455d0dda3f // indirect ) +require ( + github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966 + github.com/go-kit/kit v0.12.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/shirou/gopsutil v3.21.10+incompatible // indirect +) + // Replace references to modules that are in this repository with their relateive paths // so that we always build with current (latest) version of the source code. @@ -653,8 +611,6 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/filee replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/googlecloudexporter => ./exporter/googlecloudexporter -replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/googlemanagedprometheusexporter => ./exporter/googlemanagedprometheusexporter - replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/googlecloudpubsubexporter => ./exporter/googlecloudpubsubexporter replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/honeycombexporter => ./exporter/honeycombexporter @@ -685,8 +641,6 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prome replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter => ./exporter/prometheusremotewriteexporter -replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/pulsarexporter => ./exporter/pulsarexporter - replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sapmexporter => ./exporter/sapmexporter replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sentryexporter => ./exporter/sentryexporter @@ -709,8 +663,6 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elast replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/zipkinexporter => ./exporter/zipkinexporter -replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/opsrampotlpexporter => ./exporter/opsrampotlpexporter - replace github.com/open-telemetry/opentelemetry-collector-contrib/extension/asapauthextension => ./extension/asapauthextension replace github.com/open-telemetry/opentelemetry-collector-contrib/extension/awsproxy => ./extension/awsproxy @@ -757,22 +709,16 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourceto replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza => ./pkg/stanza -replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/telemetryquerylanguage => ./pkg/telemetryquerylanguage - replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger => ./pkg/translator/jaeger replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/opencensus => ./pkg/translator/opencensus -replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus => ./pkg/translator/prometheus - replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite => ./pkg/translator/prometheusremotewrite replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/signalfx => ./pkg/translator/signalfx replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin => ./pkg/translator/zipkin -replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/batchmemlimitprocessor => ./processor/batchmemlimitprocessor - replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor => ./processor/attributesprocessor replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor => ./processor/cumulativetodeltaprocessor/ @@ -809,12 +755,8 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/tran replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/schemaprocessor => ./processor/schemaprocessor -replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/scrubbingprocessor => ./processor/scrubbingprocessor - replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver => ./receiver/activedirectorydsreceiver -replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/aerospikereceiver => ./receiver/aerospikereceiver - replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver => ./receiver/apachereceiver replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver => ./receiver/awscontainerinsightreceiver @@ -843,8 +785,6 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dotne replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/elasticsearchreceiver => ./receiver/elasticsearchreceiver -replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/expvarreceiver => ./receiver/expvarreceiver - replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver => ./receiver/filelogreceiver replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/fluentforwardreceiver => ./receiver/fluentforwardreceiver @@ -915,12 +855,8 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/simpl replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/skywalkingreceiver => ./receiver/skywalkingreceiver -replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/solacereceiver => ./receiver/solacereceiver - replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/splunkhecreceiver => ./receiver/splunkhecreceiver -replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlqueryreceiver => ./receiver/sqlqueryreceiver - replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlserverreceiver => ./receiver/sqlserverreceiver replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver => ./receiver/statsdreceiver diff --git a/go.sum b/go.sum index 7726c9db02c8..f6fe624b5c3e 100644 --- a/go.sum +++ b/go.sum @@ -31,12 +31,13 @@ cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aD cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.101.1/go.mod h1:55HwjsGW4CHD3JrNuMdZtSDsgTs0CuCB/bBTugD+7AA= +cloud.google.com/go v0.102.0 h1:DAq3r8y4mDgyB/ZPJ9v/5VJNqjgJAxTn6ZYLlUywOu8= cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1 h1:vpK6iQWv/2uUeFJth4/cBHsQAGjn1iIE6AAlxipRaA0= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -47,9 +48,8 @@ cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTB cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1 h1:2sMmt8prCn7DPaG4Pmh0N3Inmc8cT8ae5k1M6VJ9Wqc= cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0 h1:v/k9Eueb8aAJ0vZuxKMrgm6kPhCLZU9HxFU+AFDs9Uk= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= @@ -69,16 +69,18 @@ cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2k cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/pubsub v1.23.1 h1:eVtkabVa+1M5ai67fGU+idws0hVb/KEPXiDmSS17+qc= -cloud.google.com/go/pubsub v1.23.1/go.mod h1:ttM6nEGYK/2CnB36ndNySU3ZxPwpBk8cXM6+iOlxH9U= -cloud.google.com/go/spanner v1.34.1 h1:cPGv32sx9zsz72qO4DY4fljIyoBVDS0gsWax7GE02Xc= -cloud.google.com/go/spanner v1.34.1/go.mod h1:oVJCF8EBcPcAdjkQYTErfxZrr+o/JIwDebhFveE7CrU= +cloud.google.com/go/pubsub v1.4.0/go.mod h1:LFrqilwgdw4X2cJS9ALgzYmMu+ULyrUN6IHV3CPK4TM= +cloud.google.com/go/pubsub v1.22.2 h1:e6A4rhtMX4opff/jDWApl4HwLtsCdV9VULVfpFRp6eo= +cloud.google.com/go/pubsub v1.22.2/go.mod h1:LBHGrtgM7+SGKCDKQu2pKIRtGwbZyJvRDkMk0594xdU= +cloud.google.com/go/spanner v1.33.0 h1:YlmTsdo9i8XQuFVYOFAMVtjQyi6Ipszpixlpb4X4yYw= +cloud.google.com/go/spanner v1.33.0/go.mod h1:Gun/bT/uv5FTzD7suMOjSdd1OIowJjw5o6A+TEzrzk0= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.22.0/go.mod h1:GbaLEoMqbVm6sx3Z0R++gSiBlgMv6yUi2q1DeGFKQgE= cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/trace v1.0.0/go.mod h1:4iErSByzxkyHWzzlAj63/Gmjz0NH1ASqhJguHpGcr6A= cloud.google.com/go/trace v1.2.0 h1:oIaB4KahkIUOpLSAAjEJ8y2desbjY/x/RfP4O3KAtTI= @@ -100,25 +102,12 @@ contrib.go.opencensus.io/exporter/stackdriver v0.13.13/go.mod h1:5pSSGY0Bhuk7waT dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= -github.com/99designs/keyring v1.1.6 h1:kVDC2uCgVwecxCk+9zoCt2uEL6dt+dfVzMvGgnVcIuM= -github.com/99designs/keyring v1.1.6/go.mod h1:16e0ds7LGQQcT59QqkTg72Hh5ShM51Byv5PEmW6uoRU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= -github.com/AthenZ/athenz v1.10.39 h1:mtwHTF/v62ewY2Z5KWhuZgVXftBej1/Tn80zx4DcawY= -github.com/AthenZ/athenz v1.10.39/go.mod h1:3Tg8HLsiQZp81BJY58JBeU2BR6B/H4/0MQGfCwhHNEA= -github.com/Azure/azure-pipeline-go v0.2.3 h1:7U9HBg1JFK3jHl5qmo4CTZKFTVgMwdFHMVtCdfBE21U= -github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v63.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v65.0.0+incompatible h1:HzKLt3kIwMm4KeJYTdx9EbjRYTySD/t8i1Ee/W5EGXw= github.com/Azure/azure-sdk-for-go v65.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8= -github.com/Azure/azure-storage-blob-go v0.14.0 h1:1BCg74AmVdYwO3dlKwtFU1V0wU2PZdREkXvAmZJRUlM= -github.com/Azure/azure-storage-blob-go v0.14.0/go.mod h1:SMqIBi+SuiQH32bvyjngEewEeXoPfKMgWlBDaYf6fck= -github.com/Azure/go-amqp v0.17.5 h1:7Lsi9H9ijCAfqOaMiNmQ4c+GL9bdrpCjebNKhV/eQ+c= -github.com/Azure/go-amqp v0.17.5/go.mod h1:9YJ3RhxRT1gquYnzpZO1vcYMMpAdJT+QEg6fwmw9Zlg= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= @@ -126,20 +115,25 @@ github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg6 github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= github.com/Azure/go-autorest/autorest v0.11.12/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= github.com/Azure/go-autorest/autorest v0.11.25/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U= github.com/Azure/go-autorest/autorest v0.11.27 h1:F3R3q42aWytozkV8ihzcgMO4OA4cuqr3bNlsEuF6//A= github.com/Azure/go-autorest/autorest v0.11.27/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= github.com/Azure/go-autorest/autorest/adal v0.9.20 h1:gJ3E98kMpFB1MFqQCvA1yFab8vthOeD4VlFRQULxahg= github.com/Azure/go-autorest/autorest/adal v0.9.20/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw= @@ -148,9 +142,11 @@ github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+X github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= github.com/Azure/go-autorest/autorest/validation v0.3.1 h1:AgyqjAd94fwNAoTjl/WQXg4VvFeRFpO+UhNyRXqF1ac= github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= @@ -161,42 +157,44 @@ github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHg github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/DataDog/agent-payload/v5 v5.0.23 h1:T+xalP3F9XOMZRSokcG4pK1hqyDBbEDPxp68tSBmfhc= -github.com/DataDog/agent-payload/v5 v5.0.23/go.mod h1:2gapp8p4Vd548JI+axD8kCExklNvVI6AMF5/+IfN/4g= -github.com/DataDog/datadog-agent/pkg/obfuscate v0.38.0-rc.5 h1:ETdyRocB4FWxbR8NecdFFvi0C1ryDf1wzu84m+7b06Q= -github.com/DataDog/datadog-agent/pkg/obfuscate v0.38.0-rc.5/go.mod h1:MxVcCIC42tBIjPm93BHdh9/vw2LivRiptj3HygI+GGQ= -github.com/DataDog/datadog-agent/pkg/otlp/model v0.38.0-rc.5 h1:pFNUFrc/1FCdAJ2yVP2NKw4WJdNJdSJKFZwxUhcTDr8= -github.com/DataDog/datadog-agent/pkg/otlp/model v0.38.0-rc.5/go.mod h1:ynMGvihEUJt/JRJy0hGtYCWFW2Hu/fHQ9FmCgLfbKN0= -github.com/DataDog/datadog-agent/pkg/quantile v0.38.0-rc.5 h1:5dB1sDujVuDCOS0dHLalc0oXg2jpGY2OlIiXn9Hfwm4= -github.com/DataDog/datadog-agent/pkg/quantile v0.38.0-rc.5/go.mod h1:jVxOyv395Gf9weXNdmSF6Tp9k/DEc7u+nqYWudznQtQ= -github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.38.0-rc.5 h1:4kPuQxJXGXpJ6xNARDF5bvZypCZzS+oWkP5Sr9viB50= -github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.38.0-rc.5/go.mod h1:3fXOPVYRWzX0lRcoOlFXCGrI12dorDVuwQ9U7+TmaX4= -github.com/DataDog/datadog-agent/pkg/trace v0.38.0-rc.5 h1:n3g2MXsAzc7Mj/mvv7bNOU2VUh7Wfp3KXpUAl8HWI7k= -github.com/DataDog/datadog-agent/pkg/trace v0.38.0-rc.5/go.mod h1:D1h3mwrRUt+IjKABfY/65urUIv6/knW+DqseiY8Hctk= -github.com/DataDog/datadog-go v3.2.0+incompatible h1:qSG2N4FghB1He/r2mFrWKCaL7dXCilEuNEeAn20fdD4= +github.com/DataDog/agent-payload/v5 v5.0.22 h1:XaMYtdvdjRWLwvoQhZM3Se0YmOeMYgEvdKVLwPsxEaU= +github.com/DataDog/agent-payload/v5 v5.0.22/go.mod h1:2gapp8p4Vd548JI+axD8kCExklNvVI6AMF5/+IfN/4g= +github.com/DataDog/datadog-agent/pkg/obfuscate v0.0.0-20211129110424-6491aa3bf583/go.mod h1:EP9f4GqaDJyP1F5jTNMtzdIpw3JpNs3rMSJOnYywCiw= +github.com/DataDog/datadog-agent/pkg/quantile v0.36.0-rc.4.0.20220426134022-b55bccd5073f h1:6TRm46/qdRBGcm9MJz3NRpk8ZnKhNyVTojNvgkCQkzc= +github.com/DataDog/datadog-agent/pkg/quantile v0.36.0-rc.4.0.20220426134022-b55bccd5073f/go.mod h1:jVxOyv395Gf9weXNdmSF6Tp9k/DEc7u+nqYWudznQtQ= +github.com/DataDog/datadog-agent/pkg/trace/exportable v0.0.0-20201016145401-4646cf596b02 h1:N2BRKjJ/c+ipDwt5b+ijqEc2EsmK3zXq2lNeIPnSwMI= +github.com/DataDog/datadog-agent/pkg/trace/exportable v0.0.0-20201016145401-4646cf596b02/go.mod h1:EalMiS87Guu6PkLdxz7gmWqi+dRs9sjYLTOyTrM/aVU= +github.com/DataDog/datadog-agent/pkg/util/log v0.0.0-20201009091607-ce4e57cdf8f4/go.mod h1:cRy7lwapA3jcjnX74kU6NFkXaRGQyB0l/QZA0IwYGEQ= +github.com/DataDog/datadog-agent/pkg/util/log v0.0.0-20201009092105-58e18918b2db h1:anQGy1tCkgx8uhOWks3KDhW5/S2mZ3pqFVoIT1XWaCk= +github.com/DataDog/datadog-agent/pkg/util/log v0.0.0-20201009092105-58e18918b2db/go.mod h1:cRy7lwapA3jcjnX74kU6NFkXaRGQyB0l/QZA0IwYGEQ= +github.com/DataDog/datadog-agent/pkg/util/winutil v0.0.0-20201009092105-58e18918b2db/go.mod h1:EtS4X73GXAyrpVddkLQ4SewSQX+zv284e8iIkVBXgtk= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/datadog-go/v5 v5.1.0 h1:Zmq3tCk9+Tdq8Du73M71Zo6Dyx+cEo9QkCSCqQlHFaQ= -github.com/DataDog/datadog-go/v5 v5.1.0/go.mod h1:KhiYb2Badlv9/rofz+OznKoEF5XKTonWyhx5K83AP8E= +github.com/DataDog/datadog-go v3.5.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/DataDog/datadog-go v4.8.2+incompatible h1:qbcKSx29aBLD+5QLvlQZlGmRMF/FfGqFLFev/1TDzRo= +github.com/DataDog/datadog-go v4.8.2+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/DataDog/datadog-go/v5 v5.0.2/go.mod h1:ZI9JFB4ewXbw1sBnF4sxsR2k1H3xjV+PUAOUsHvKpcU= +github.com/DataDog/gostackparse v0.5.0/go.mod h1:lTfqcJKqS9KnXQGnyQMCugq3u1FP6UZMfWR0aitKFMM= github.com/DataDog/mmh3 v0.0.0-20200805151601-30884ca2197a/go.mod h1:SvsjzyJlSg0rKsqYgdcFxeEVflx3ZNAyFfkUHP0TxXg= +github.com/DataDog/sketches-go v1.0.0/go.mod h1:O+XkJHWk9w4hDwY2ZUDU31ZC9sNYlYo8DiFsxjYeo1k= github.com/DataDog/sketches-go v1.4.1 h1:j5G6as+9FASM2qC36lvpvQAj9qsv/jUs3FtO8CwZNAY= github.com/DataDog/sketches-go v1.4.1/go.mod h1:xJIXldczJyyjnbDop7ZZcLxJdV3+7Kra7H1KMgpgkLk= +github.com/DataDog/zstd v1.3.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= +github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.4.8/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= -github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f/go.mod h1:oXfOhM/Kr8OvqS6tVqJwxPBornV0yrx3bc+l0BDr7PQ= github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962 h1:KeNholpO2xKjgaaSyd+DyQRrsQjhbSeS7qe4nEw8aQw= github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962/go.mod h1:kC29dT1vFpj7py2OvG1khBdQpo3kInWP+6QipLbdngo= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.32.3 h1:fiyErF/p5fz79DvMCca9ayvYiWYsFP1oJbskt9fjo8I= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.32.3/go.mod h1:s7Gpwj0tk7XnVCm4BQEmx/mbS36SuTCY/vMB2SNxe8o= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.32.3 h1:lH3MlsWLJrCZWtXBFPm3x13qGShQZyWN4724Xd5k8tw= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.32.3/go.mod h1:CAeDUmnMG3urxkSYOIbreCYRsiAIo4pqprz8WZevx14= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector/googlemanagedprometheus v0.32.3 h1:WH/XKMguEBZ8lEj/zG4itQHyUFpcw3Qgj2w1iV2UUJ8= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector/googlemanagedprometheus v0.32.3/go.mod h1:w1Uf3fFiijR5jFRnb80E3cAVyZxFpUM0N/Q/+Biu/Xo= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.8.3 h1:i84ZOPT35YCJROyuf97VP/VEdYhQce/8NTLOWq5tqJw= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.8.3/go.mod h1:3+qm+VCJbVmQ9uscVz+8h1rRkJEy9ZNFGgpT1XB9mPg= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.32.3 h1:FhsH8qgWFkkPlPXBZ68uuT/FH/R+DLTtVPxjLEBs1v4= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.32.3/go.mod h1:9a+Opaevo9fybhUvQkEG7fR6Zk7pYrW/s9NC4fODFIQ= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.32.1 h1:v2ey6AUQFjj6vPMdXNL9K1R1/4V20qPBuL3os831jvw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.32.1/go.mod h1:s7Gpwj0tk7XnVCm4BQEmx/mbS36SuTCY/vMB2SNxe8o= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.30.2-0.20220512190557-875976f87023 h1:a5qaC/K40oknHppvTFqQZkLMY7XZSvWyxcG/T6W6DF8= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.30.2-0.20220512190557-875976f87023/go.mod h1:kXt5P2nDYWk6ltkQi+YmcGCNMwS54nnYfLm8jrU0APk= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.6.1 h1:LNl8Tg6N6qChoiM6lKC1Z44Z+CkPAdYx45L/lJDgThs= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.6.1/go.mod h1:ZFRHg4zuQuc6sQyx16A53fB7kxPvPguSeE8GFVpT6rQ= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.30.1 h1:JftlZfpIvptFTzSD/BXuoK9i0nT3D1GSz1EEBr+jjuM= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.30.1/go.mod h1:j+FS9VBW3mwtHBmm9KOJEy5Tq68fCp7fE/R9bV/flIM= +github.com/HdrHistogram/hdrhistogram-go v0.9.0/go.mod h1:nxrse8/Tzg2tg3DZcZjm6qEclQKK70g0KxO61gFFZD4= github.com/HdrHistogram/hdrhistogram-go v1.0.1/go.mod h1:BWJ+nMSHY3L41Zj7CA3uXnloDp7xxV0YvstAE7nKTaM= github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= @@ -243,32 +241,33 @@ github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdko github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/ReneKroon/ttlcache/v2 v2.11.0 h1:OvlcYFYi941SBN3v9dsDcC2N8vRxyHcCmJb3Vl4QMoM= github.com/ReneKroon/ttlcache/v2 v2.11.0/go.mod h1:mBxvsNY+BT8qLLd6CuAJubbKo6r0jh3nb5et22bbfGY= +github.com/SAP/go-hdb v0.105.5 h1:mop9KOZU1ro9PjJLgqseHUZzwoOJh4d7f8Nrvf1a2Uo= github.com/SAP/go-hdb v0.105.5/go.mod h1:xbtJDvjqm9MQhIAnalynGNAbqxolS9W02qQo/vBqyaU= -github.com/SAP/go-hdb v0.106.1 h1:u/pwpiBobIAu+LfhlLhc4tGq6KmdQVnQv3IYONRtyLs= -github.com/SAP/go-hdb v0.106.1/go.mod h1:198ykfuonYvyg7dUUre4lQkokK/kUbhORXpRIuhrL2A= github.com/SermoDigital/jose v0.9.2-0.20161205224733-f6df55f235c2 h1:koK7z0nSsRiRiBWwa+E714Puh+DO+ZRdIyAXiXzL+lg= github.com/SermoDigital/jose v0.9.2-0.20161205224733-f6df55f235c2/go.mod h1:ARgCUhI1MHQH+ONky/PAtmVHQrP5JlGY0F3poXOp/fA= github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/sarama v1.22.0/go.mod h1:lm3THZ8reqBDBQKQyb5HB3sY1lKp3grEbQ81aWSgPp4= +github.com/Shopify/sarama v1.29.1/go.mod h1:mdtqvCSg8JOxk8PmpTNGyo6wzd4BMm4QXSfDnTXmgkE= github.com/Shopify/sarama v1.30.0/go.mod h1:zujlQQx1kzHsh4jfV1USnptCQrHAEZ2Hk8fTKCulPVs= +github.com/Shopify/sarama v1.31.0/go.mod h1:BeW3gXRc/CxgAsrSly2RE9nIXUfC9ezb7QHBPVhvzjI= github.com/Shopify/sarama v1.32.0/go.mod h1:+EmJJKZWVT/faR9RcOxJerP+LId4iWdQPBGLy1Y1Njs= -github.com/Shopify/sarama v1.34.1 h1:pVCQO7BMAK3s1jWhgi5v1W6lwZ6Veiekfc2vsgRS06Y= -github.com/Shopify/sarama v1.34.1/go.mod h1:NZSNswsnStpq8TUdFaqnpXm2Do6KRzTIjdBdVlL1YRM= +github.com/Shopify/sarama v1.34.0 h1:j4zTaFHFnfvuV2fdLZyXqIg0Tu4Mzl9f064Z5/H+o4o= +github.com/Shopify/sarama v1.34.0/go.mod h1:V2ceE9UupUf4/oP1Z38SI49fAnD0/MtkqDDHvolIeeQ= github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/Shopify/toxiproxy/v2 v2.1.6-0.20210914104332-15ea381dcdae/go.mod h1:/cvHQkZ1fst0EmZnA5dFtiQdWCNCFYzb+uE2vqVgvx0= +github.com/Shopify/toxiproxy/v2 v2.3.0 h1:62YkpiP4bzdhKMH+6uC5E95y608k3zDwdzuBMsnn3uQ= github.com/Shopify/toxiproxy/v2 v2.3.0/go.mod h1:KvQTtB6RjCJY4zqNJn7C7JDFgsG5uoHYDirfUfpIm0c= -github.com/Shopify/toxiproxy/v2 v2.4.0 h1:O1e4Jfvr/hefNTNu+8VtdEG5lSeamJRo4aKhMOKNM64= -github.com/Shopify/toxiproxy/v2 v2.4.0/go.mod h1:3ilnjng821bkozDRxNoo64oI/DKqM+rOyJzb564+bvg= github.com/Showmax/go-fqdn v1.0.0 h1:0rG5IbmVliNT5O19Mfuvna9LL7zlHyRfsSvBPZmF9tM= github.com/Showmax/go-fqdn v1.0.0/go.mod h1:SfrFBzmDCtCGrnHhoDjuvFnKsWjEQX/Q9ARZvOrJAko= github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= +github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/a8m/tree v0.0.0-20210115125333-10a5fd5b637d/go.mod h1:FSdwKX97koS5efgm8WevNf7XS3PqtyFkKDDXrz778cg= -github.com/aerospike/aerospike-client-go/v5 v5.8.0 h1:EUV2wG80yIenQqOyUlf5NfyhagPIwoeL09MJIE+xILE= -github.com/aerospike/aerospike-client-go/v5 v5.8.0/go.mod h1:rJ/KpmClE7kiBPfvAPrGw9WuNOiz8v2uKbQaUyYPXtI= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= @@ -289,29 +288,25 @@ github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAu github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= github.com/alexflint/go-filemutex v1.1.0/go.mod h1:7P4iRhttt/nUvUOrYIhcpMzv2G6CY9UnI16Z+UJqRyk= -github.com/aliyun/aliyun-log-go-sdk v0.1.37 h1:GvswbgLqVOHNeMWssQ9zA+R7YVDP6arLUP92bKyGZNw= -github.com/aliyun/aliyun-log-go-sdk v0.1.37/go.mod h1:1QQ59pEJiVVXqKgbHcU6FWIgxT5RKBt+CT8AiQ2bEts= +github.com/aliyun/aliyun-log-go-sdk v0.1.36 h1:ZWhKl1tBOvRn3/sIrFy8gMX+Hfq2u8mee1DeU96jqjc= +github.com/aliyun/aliyun-log-go-sdk v0.1.36/go.mod h1:1QQ59pEJiVVXqKgbHcU6FWIgxT5RKBt+CT8AiQ2bEts= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966 h1:mEzJ8SH4M5wDL8C4a17yX2YeD/FIXV5w8FJekByaBi0= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/antonmedv/expr v1.9.0 h1:j4HI3NHEdgDnN9p6oI6Ndr0G5QryMY0FNxT4ONrFDGU= github.com/antonmedv/expr v1.9.0/go.mod h1:5qsM3oLGDND7sDmQGDXHkYfkjYMUX14qsgqmHhwGEk8= -github.com/apache/arrow/go/arrow v0.0.0-20211112161151-bc219186db40 h1:q4dksr6ICHXqG5hm0ZW5IHyeEJXoIJSOZeBLmWPNeIQ= -github.com/apache/arrow/go/arrow v0.0.0-20211112161151-bc219186db40/go.mod h1:Q7yQnSMnLvcXlZ8RV+jwz/6y1rQTqbX6C82SndT52Zs= -github.com/apache/pulsar-client-go v0.8.1 h1:UZINLbH3I5YtNzqkju7g9vrl4CKrEgYSx2rbpvGufrE= -github.com/apache/pulsar-client-go v0.8.1/go.mod h1:yJNcvn/IurarFDxwmoZvb2Ieylg630ifxeO/iXpk27I= -github.com/apache/pulsar-client-go/oauth2 v0.0.0-20220120090717-25e59572242e h1:EqiJ0Xil8NmcXyupNqXV9oYDBeWntEIegxLahrTr8DY= -github.com/apache/pulsar-client-go/oauth2 v0.0.0-20220120090717-25e59572242e/go.mod h1:Xee4tgYLFpYcPMcTfBYWE1uKRzeciodGTSEDMzsR6i8= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.14.2/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.15.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/apache/thrift v0.16.0 h1:qEy6UW60iVOlUy+b9ZR0d5WzUWYGOo4HfopoyBaNmoY= github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= -github.com/ardielle/ardielle-go v1.5.2 h1:TilHTpHIQJ27R1Tl/iITBzMwiUGSlVfiVhwDNGM3Zj4= -github.com/ardielle/ardielle-go v1.5.2/go.mod h1:I4hy1n795cUhaVt/ojz83SNVCYIGsAFAONtv2Dr7HUI= -github.com/ardielle/ardielle-tools v1.5.4/go.mod h1:oZN+JRMnqGiIhrzkRN9l26Cej9dEx4jeNG6A+AdkShk= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.3.0/go.mod h1:zXjbSimjXTd7vOpY8B0/2LpvNvDoXBuplAD+gJD3GYs= github.com/armon/go-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-metrics v0.3.10 h1:FR+drcQStOe+32sYyJYyZ7FIdgoGGBnwLl+flodp8Uo= @@ -327,10 +322,12 @@ github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:o github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/avast/retry-go v3.0.0+incompatible h1:4SOWQ7Qs+oroOTQOYnAHqelpCO0biHSxpiH9JdtuBj0= +github.com/avast/retry-go v3.0.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= +github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.32.6/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= github.com/aws/aws-sdk-go v1.35.24/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= @@ -339,61 +336,47 @@ github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm github.com/aws/aws-sdk-go v1.43.11/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.43.31/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.20/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.44.54 h1:zfFptZ0iLuk+psnRLk+o0NMgd/pBsALlNE7i40iOmFA= -github.com/aws/aws-sdk-go v1.44.54/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.28 h1:h/OAqEqY18wq//v6h4GNPMmCkxuzSDrWuGyrvSiRqf4= +github.com/aws/aws-sdk-go v1.44.28/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/aws/aws-sdk-go-v2 v1.0.0/go.mod h1:smfAbmpW+tcRVuNUjo3MOArSZmW72t62rkCzc2i0TWM= github.com/aws/aws-sdk-go-v2 v1.7.0/go.mod h1:tb9wi5s61kTDA5qCkcDbt3KRVV74GGslQkl/DRdX/P4= github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= +github.com/aws/aws-sdk-go-v2 v1.9.2 h1:dUFQcMNZMLON4BOe273pl0filK9RqyQMhCK/6xssL6s= github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= -github.com/aws/aws-sdk-go-v2 v1.11.0 h1:HxyD62DyNhCfiFGUHqJ/xITD6rAjJ7Dm/2nLxLmO4Ag= -github.com/aws/aws-sdk-go-v2 v1.11.0/go.mod h1:SQfA+m2ltnu1cA0soUkj4dRSsmITiVQUJvBIZjzfPyQ= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.0.0 h1:yVUAwvJC/0WNPbyl0nA3j1L6CW1CN8wBubCRqtG7JLI= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.0.0/go.mod h1:Xn6sxgRuIDflLRJFj5Ev7UxABIkNbccFPV/p8itDReM= +github.com/aws/aws-sdk-go-v2/config v1.0.0/go.mod h1:WysE/OpUgE37tjtmtJd8GXgT8s1euilE5XtUkRNUQ1w= +github.com/aws/aws-sdk-go-v2/config v1.8.3 h1:o5583X4qUfuRrOGOgmOcDgvr5gJVSu57NK08cWAhIDk= github.com/aws/aws-sdk-go-v2/config v1.8.3/go.mod h1:4AEiLtAb8kLs7vgw2ZV3p2VZ1+hBavOc84hqxVNpCyw= -github.com/aws/aws-sdk-go-v2/config v1.10.1 h1:z/ViqIjW6ZeuLWgTWMTSyZzaVWo/1cWeVf1Uu+RF01E= -github.com/aws/aws-sdk-go-v2/config v1.10.1/go.mod h1:auIv5pIIn3jIBHNRcVQcsczn6Pfa6Dyv80Fai0ueoJU= +github.com/aws/aws-sdk-go-v2/credentials v1.0.0/go.mod h1:/SvsiqBf509hG4Bddigr3NB12MIpfHhZapyBurJe8aY= +github.com/aws/aws-sdk-go-v2/credentials v1.4.3 h1:LTdD5QhK073MpElh9umLLP97wxphkgVC/OjQaEbBwZA= github.com/aws/aws-sdk-go-v2/credentials v1.4.3/go.mod h1:FNNC6nQZQUuyhq5aE5c7ata8o9e4ECGmS4lAXC7o1mQ= -github.com/aws/aws-sdk-go-v2/credentials v1.6.1 h1:A39JYth2fFCx+omN/gib/jIppx3rRnt2r7UKPq7Mh5Y= -github.com/aws/aws-sdk-go-v2/credentials v1.6.1/go.mod h1:QyvQk1IYTqBWSi1T6UgT/W8DMxBVa5pVuLFSRLLhGf8= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.0/go.mod h1:wpMHDCXvOXZxGCRSidyepa8uJHY4vaBGfY2/+oKU/Bc= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.6.0 h1:9tfxW/icbSu98C2pcNynm5jmDwU3/741F11688B6QnU= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.6.0/go.mod h1:gqlclDEZp4aqJOancXK6TN24aKhT0W0Ae9MHk3wzTMM= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.8.0 h1:OpZjuUy8Jt3CA1WgJgBC5Bz+uOjE5Ppx4NFTRaooUuA= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.8.0/go.mod h1:5E1J3/TTYy6z909QNR0QnXGBpfESYGDqd3O0zqONghU= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.7.1 h1:p9Dys1g2YdaqMalnp6AwCA+tpMMdJNGw5YYKP/u3sUk= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.7.1/go.mod h1:wN/mvkow08GauDwJ70jnzJ1e+hE+Q3Q7TwpYLXOe9oI= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.0 h1:zY8cNmbBXt3pzjgWgdIbzpQ6qxoCwt+Nx9JbrAf2mbY= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.0/go.mod h1:NO3Q5ZTTQtO2xIg2+xTXYDiT7knSejfeDm7WGDaOo0U= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.0.0 h1:Z3aR/OXBnkYK9zXkNkfitHX6SmUBzSsx8VMHbH4Lvhw= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.0.0/go.mod h1:anlUzBoEWglcUxUQwZA7HQOEVEnQALVZsizAapB2hq8= +github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4 h1:leSJ6vCqtPpTmBIgE7044B1wql1E4n//McF+mEgNrYg= github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4/go.mod h1:ZcBrrI3zBKlhGFNYWvju0I3TR93I7YIgAfy82Fh4lcQ= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.0 h1:c10Z7fWxtJCoyc8rv06jdh9xrKnu7bAJiRaKWvTb2mU= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.0/go.mod h1:6oXGy4GLpypD3uCh8wcqztigGgmhLToMfjavgh+VySg= github.com/aws/aws-sdk-go-v2/service/appconfig v1.4.2/go.mod h1:FZ3HkCe+b10uFZZkFdvf98LHW21k49W8o8J366lqVKY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.5.0/go.mod h1:acH3+MQoiMzozT/ivU+DbRg7Ooo2298RdRaWcOv+4vM= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.5.0 h1:lPLbw4Gn59uoKqvOfSnkJr54XWk5Ak1NK20ZEiSWb3U= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.5.0/go.mod h1:80NaCIH9YU3rzTTs/J/ECATjXuRqzo/wB6ukO6MZ0XY= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.0/go.mod h1:3jExOmpbjgPnz2FJaMOfbSk1heTkZ66aD3yNtVhnjvI= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2 h1:r7jel2aa4d9Duys7wEmWqDd5ebpC9w6Kxu6wIjjp18E= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72HRZDLMtmVQiLG2tLfQcaWLCssELvGl+Zf2WVxMmR8= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.5.0 h1:qGZWS/WgiFY+Zgad2u0gwBHpJxz6Ne401JE7iQI1nKs= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.5.0/go.mod h1:Mq6AEc+oEjCUlBuLiK5YwW4shSOAKCQ3tXN0sQeYoBA= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.9.0 h1:0BOlTqnNnrEO04oYKzDxMMe68t107pmIotn18HtVonY= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.9.0/go.mod h1:xKCZ4YFSF2s4Hnb/J0TLeOsKuGzICzcElaOKNGrVnx4= -github.com/aws/aws-sdk-go-v2/service/s3 v1.19.0 h1:5mRAms4TjSTOGYsqKYte5kHr1PzpMJSyLThjF3J+hw0= -github.com/aws/aws-sdk-go-v2/service/s3 v1.19.0/go.mod h1:Gwz3aVctJe6mUY9T//bcALArPUaFmNAy2rTB9qN4No8= +github.com/aws/aws-sdk-go-v2/service/sqs v1.0.0/go.mod h1:w5BclCU8ptTbagzXS/fHBr+vAyXUjggg/72qDIURKMk= +github.com/aws/aws-sdk-go-v2/service/sso v1.4.2 h1:pZwkxZbspdqRGzddDB92bkZBoB7lg85sMRE7OqdB3V0= github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk= -github.com/aws/aws-sdk-go-v2/service/sso v1.6.0 h1:JDgKIUZOmLFu/Rv6zXLrVTWCmzA0jcTdvsT8iFIKrAI= -github.com/aws/aws-sdk-go-v2/service/sso v1.6.0/go.mod h1:Q/l0ON1annSU+mc0JybDy1Gy6dnJxIcWjphO6qJPzvM= +github.com/aws/aws-sdk-go-v2/service/sts v1.0.0/go.mod h1:5f+cELGATgill5Pu3/vK3Ebuigstc+qYEHW5MvGWZO4= +github.com/aws/aws-sdk-go-v2/service/sts v1.7.2 h1:ol2Y5DWqnJeKqNd8th7JWzBtqu63xpOfs1Is+n1t8/4= github.com/aws/aws-sdk-go-v2/service/sts v1.7.2/go.mod h1:8EzeIqfWt2wWT4rJVu3f21TfrhJ8AEMzVybRNSb/b4g= -github.com/aws/aws-sdk-go-v2/service/sts v1.10.0 h1:1jh8J+JjYRp+QWKOsaZt7rGUgoyrqiiVwIm+w0ymeUw= -github.com/aws/aws-sdk-go-v2/service/sts v1.10.0/go.mod h1:jLKCFqS+1T4i7HDqCP9GM4Uk75YW1cS0o82LdxpMyOE= +github.com/aws/smithy-go v1.0.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= github.com/aws/smithy-go v1.5.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= -github.com/aws/smithy-go v1.9.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= github.com/aws/smithy-go v1.11.0 h1:nOfSDwiiH232f90OuevPnAEQO5ZqH+xnn8uGVsvBCw4= github.com/aws/smithy-go v1.11.0/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/basgys/goxml2json v1.1.0 h1:4ln5i4rseYfXNd86lGEB+Vi652IsIXIvggKM/BhUKVw= github.com/basgys/goxml2json v1.1.0/go.mod h1:wH7a5Np/Q4QoECFIU8zTQlZwZkrilY0itPfecMw41Dw= -github.com/beefsack/go-rate v0.0.0-20220214233405-116f4ca011a0/go.mod h1:6YNgTHLutezwnBvyneBbwvB8C82y3dcoOj5EQJIdGXA= +github.com/beeker1121/goque v2.1.0+incompatible h1:m5pZ5b8nqzojS2DF2ioZphFYQUqGYsDORq6uefUItPM= +github.com/beeker1121/goque v2.1.0+incompatible/go.mod h1:L6dOWBhDOnxUVQsb0wkLve0VCnt2xJW/MI8pdRX4ANw= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= @@ -418,9 +401,9 @@ github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2y github.com/bmatcuk/doublestar/v3 v3.0.0 h1:TQtVPlDnAYwcrVNB2JiGuMc++H5qzWZd9PhkNo5WyHI= github.com/bmatcuk/doublestar/v3 v3.0.0/go.mod h1:6PcTVMw80pCY1RVuoqu3V++99uQB3vsSYKPTd8AWA0k= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= -github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b/go.mod h1:ac9efd0D1fsDb3EJvhqgXRbFx7bs2wqZ10HQPeU8U/Q= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/bradfitz/gomemcache v0.0.0-20220106215444-fb4bf637b56d/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= github.com/bsm/sarama-cluster v2.1.13+incompatible/go.mod h1:r7ao+4tTNXvWm+VRpRJchr2kQhqxgmAp2iEX5W96gMM= github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= @@ -459,6 +442,8 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 h1:kHaBemcxl8o/pQ5VM1c8PVE1PubbNx3mjUr09OqWGCs= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575/go.mod h1:9d6lWj8KzO/fd/NrVaLscBKmPigpZpn5YawRPw+e3Yo= github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= @@ -494,8 +479,8 @@ github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= +github.com/confluentinc/confluent-kafka-go v1.4.0/go.mod h1:u2zNLny2xq+5rWeTQjFHbDzzNuba4P1vo31r9r4uAdg= github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= @@ -628,7 +613,6 @@ github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwc github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -640,19 +624,21 @@ github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1S github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= -github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU= -github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= +github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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/denisenkom/go-mssqldb v0.12.2 h1:1OcPn5GBIobjWNd+8yjfHNIaFX14B1pWI3F9HZy5KXw= -github.com/denisenkom/go-mssqldb v0.12.2/go.mod h1:lnIw1mZukFRZDJYQ0Pb833QS2IaC3l5HkEfra2LJ+sk= +github.com/denisenkom/go-mssqldb v0.0.0-20200428022330-06a60b6afbbc/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= +github.com/denisenkom/go-mssqldb v0.11.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE= github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= +github.com/dgraph-io/badger/v3 v3.2103.0/go.mod h1:GHMCYxuDWyzbHkh4k3yyg4PM61tJPFfEGSMbE3Vd5QE= github.com/dgraph-io/badger/v3 v3.2103.2/go.mod h1:RHo4/GmYcKKh5Lxu63wLEMHJ70Pac2JqZRYGhlyAo2M= +github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/ristretto v0.0.4-0.20210309073149-3836124cdc5a/go.mod h1:MIonLggsKgZLUSt414ExgwNtlOL5MuEoAJP514mwGe8= github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI= github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug= github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= @@ -660,13 +646,12 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/digitalocean/godo v1.78.0/go.mod h1:GBmu8MkjZmNARE7IXRPmkbbnocNN8+uBm0xbEVw2LCs= github.com/digitalocean/godo v1.80.0 h1:ZULJ/fWDM97YtO7Fa+K6hzJLd7+smCu4N+0n+B/xtj4= github.com/digitalocean/godo v1.80.0/go.mod h1:BPCqvwbjbGqxuUnIKB4EvS/AX7IDnNmt5fwvIkWo+ew= -github.com/dimfeld/httptreemux v5.0.1+incompatible h1:Qj3gVcDNoOthBAqftuD596rm4wg/adLLz5xh5CmpiCA= -github.com/dimfeld/httptreemux v5.0.1+incompatible/go.mod h1:rbUlSV+CCpv/SuqUTP/8Bk2O3LyUV436/yaRGkhP6Z0= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= @@ -682,9 +667,9 @@ github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r github.com/docker/docker v20.10.11+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.12+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.14+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.15+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.16+incompatible h1:2Db6ZR/+FUR3hqPMwnogOPHFn405crbpxvWzKovETOQ= github.com/docker/docker v20.10.16+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.17+incompatible h1:JYCuMrWaVNophQTOrMMoSwudOVEfcegoZZrleKc1xwE= -github.com/docker/docker v20.10.17+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11 h1:IPrmumsT9t5BS7XcPhgsCTlkWbYg80SEXUzDpReaU6Y= @@ -705,10 +690,8 @@ github.com/dropbox/godropbox v0.0.0-20180512210157-31879d3884b9/go.mod h1:glr97h github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b h1:HBah4D48ypg3J7Np4N+HY/ZR76fx3HEUGxDU6Uk39oQ= -github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= -github.com/dynatrace-oss/dynatrace-metric-utils-go v0.5.0 h1:wHGPJSXvwKQVf/XfhjUPyrhpcPKWNy8F3ikH+eiwoBg= -github.com/dynatrace-oss/dynatrace-metric-utils-go v0.5.0/go.mod h1:PseHFo8Leko7J4A/TfZ6kkHdkzKBLUta6hRZR/OEbbc= +github.com/dynatrace-oss/dynatrace-metric-utils-go v0.3.0 h1:q2Ayh9s6Cr75bS5URiOUAoyFXemgKQaBJphbhAaJHCY= +github.com/dynatrace-oss/dynatrace-metric-utils-go v0.3.0/go.mod h1:qw0E9EJ0PnSlhWawDNuqE0zhc1hqOBUCFIAj3dd9DNw= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-resiliency v1.2.0 h1:v7g92e/KSN71Rq7vSThKaWIq68fL4YHvWyiUKorFR1Q= github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= @@ -719,6 +702,7 @@ github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFP github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= +github.com/elastic/go-elasticsearch/v6 v6.8.5/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI= github.com/elastic/go-elasticsearch/v7 v7.17.1 h1:49mHcHx7lpCL8cW1aioEwSEVKQF3s+Igi4Ye/QTWwmk= github.com/elastic/go-elasticsearch/v7 v7.17.1/go.mod h1:OJ4wdbtDNk5g503kvlHLyErCgQwwzmDtaFC4XyOxXA4= github.com/elastic/go-licenser v0.3.1 h1:RmRukU/JUmts+rpexAw0Fvt2ly7VVu6mw8z4HrEzObU= @@ -729,6 +713,7 @@ github.com/elastic/go-sysinfo v1.1.1 h1:ZVlaLDyhVkDfjwPGU55CQRCRolNpc7P0BbyhhQZQ github.com/elastic/go-sysinfo v1.1.1/go.mod h1:i1ZYdU10oLNfRzq4vq62BEwD2fH8KaWh6eh0ikPT9F0= github.com/elastic/go-windows v1.0.0 h1:qLURgZFkkrYyTTkvYpsZIgf83AUsdIHfvlJaqaZ7aSY= github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6CcloAxnPgU= +github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible h1:spTtZBk5DYEvbxMVutUuTyh1Ao2r4iyvLdACqsl/Ljk= @@ -749,9 +734,11 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= github.com/envoyproxy/protoc-gen-validate v0.6.7 h1:qcZcULcd/abmQg6dwigimCNEyi4gg31M/xaciQlDml8= github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= +github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= github.com/euank/go-kmsg-parser v2.0.0+incompatible h1:cHD53+PLQuuQyLZeriD1V/esuG4MuU0Pjs5y6iknohY= github.com/euank/go-kmsg-parser v2.0.0+incompatible/go.mod h1:MhmAMZ8V4CYH4ybgdRwPr2TU5ThnS43puaKEMpja1uw= +github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= @@ -781,13 +768,10 @@ github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/flynn/go-docopt v0.0.0-20140912013429-f6dd2ebbb31e/go.mod h1:HyVoz1Mz5Co8TFO8EupIdlcpwShBmY98dkT2xeHkvEI= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/form3tech-oss/jwt-go v3.2.5+incompatible h1:/l4kBbb4/vGSsdtB5nUe8L7B9mImVMaBPw9L/0TBHU8= -github.com/form3tech-oss/jwt-go v3.2.5+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= @@ -809,9 +793,8 @@ github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5 github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= -github.com/gabriel-vasile/mimetype v1.4.0 h1:Cn9dkdYsMIu56tGho+fqzh7XmvY2YyGU0FnbhiOsEro= -github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8= github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= +github.com/garyburd/redigo v1.6.3/go.mod h1:rTb6epsqigu3kYKBnaF028A7Tf/Aw5s0cqA47doKKqw= github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= github.com/gdamore/tcell v1.3.0/go.mod h1:Hjvr+Ofd+gLglo7RYKxxnzCBmev3BzsS67MebKS4zMM= @@ -823,10 +806,14 @@ github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2H github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= +github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= +github.com/go-chi/chi v1.5.0/go.mod h1:REp24E+25iKvxgeTfHmdUoL5x15kBiDBlnIl5bCwe2k= +github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= @@ -851,6 +838,7 @@ github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBj github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= +github.com/go-ldap/ldap/v3 v3.1.3/go.mod h1:3rbOH3jRS2u6jg2rJnKAMLE/xQyCKIveG2Sa/Cohzb8= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= @@ -870,6 +858,7 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= +github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= @@ -891,6 +880,7 @@ github.com/go-openapi/errors v0.19.6/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpX github.com/go-openapi/errors v0.19.7/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/errors v0.20.0/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.20.1/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= @@ -927,7 +917,9 @@ github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29g github.com/go-openapi/runtime v0.19.15/go.mod h1:dhGWCTKRXlAfGnQG0ONViOZpjfg0m2gUt9nTQPQZuoo= github.com/go-openapi/runtime v0.19.16/go.mod h1:5P9104EJgYcizotuXhEuUrzVc+j1RiSjahULvYmlv98= github.com/go-openapi/runtime v0.19.24/go.mod h1:Lm9YGCeecBnUUkFTxPC4s1+lwrkJ0pthx8YvyjCfkgk= +github.com/go-openapi/runtime v0.19.28/go.mod h1:BvrQtn6iVb2QmiVXRsFAm6ZCAZBpbVKFfN6QWCp582M= github.com/go-openapi/runtime v0.21.0/go.mod h1:aQg+kaIQEn+A2CRSY1TxbM8+sT9g2V3aLc1FbIAnbbs= +github.com/go-openapi/runtime v0.22.0/go.mod h1:aQg+kaIQEn+A2CRSY1TxbM8+sT9g2V3aLc1FbIAnbbs= github.com/go-openapi/runtime v0.23.1/go.mod h1:AKurw9fNre+h3ELZfk6ILsfvPN+bvvlaU/M9q/r9hpk= github.com/go-openapi/runtime v0.23.3/go.mod h1:AKurw9fNre+h3ELZfk6ILsfvPN+bvvlaU/M9q/r9hpk= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= @@ -944,7 +936,6 @@ github.com/go-openapi/spec v0.20.1/go.mod h1:93x7oh+d+FQsmsieroS4cmR3u0p/ywH649a github.com/go-openapi/spec v0.20.3/go.mod h1:gG4F8wdEDN+YPBMVnzE85Rbhf+Th2DTvA9nFPQ5AYEg= github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= github.com/go-openapi/spec v0.20.5/go.mod h1:QbfOSIVt3/sac+a1wzmKbbcLXm5NdZnyBZYtCijp43o= -github.com/go-openapi/spec v0.20.6/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= @@ -954,6 +945,7 @@ github.com/go-openapi/strfmt v0.19.4/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= github.com/go-openapi/strfmt v0.19.11/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc= github.com/go-openapi/strfmt v0.20.0/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc= +github.com/go-openapi/strfmt v0.20.1/go.mod h1:43urheQI9dNtE5lTZQfuFJvjYJKPrxicATpEfZwHUNk= github.com/go-openapi/strfmt v0.20.2/go.mod h1:43urheQI9dNtE5lTZQfuFJvjYJKPrxicATpEfZwHUNk= github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg= github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= @@ -978,11 +970,13 @@ github.com/go-openapi/validate v0.19.10/go.mod h1:RKEZTUWDkxKQxN2jDT7ZnZi2bhZlbN github.com/go-openapi/validate v0.19.12/go.mod h1:Rzou8hA/CBw8donlS6WNEUQupNvUZ0waH08tGe6kAQ4= github.com/go-openapi/validate v0.19.15/go.mod h1:tbn/fdOwYHgrhPBzidZfJC2MIVvs9GA7monOmWBbeCI= github.com/go-openapi/validate v0.20.1/go.mod h1:b60iJT+xNNLfaQJUqLI7946tYiFEOuE9E4k54HpKcJ0= +github.com/go-openapi/validate v0.20.2/go.mod h1:e7OJoKNgd0twXZwIn0A43tHbvIcr/rZIVCbJBpTUoY0= github.com/go-openapi/validate v0.20.3/go.mod h1:goDdqVGiigM3jChcrYJxD2joalke3ZXeftD16byIjA4= github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= -github.com/go-openapi/validate v0.22.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-pg/pg/v10 v10.0.0/go.mod h1:XHU1AkQW534GFuUdSiQ46+Xw6Ah+9+b8DlT4YwhiXL8= +github.com/go-pg/zerochecker v0.2.0/go.mod h1:NJZ4wKL0NmTtz0GKCoJ8kym6Xn/EQzXRl2OnAe7MmDo= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= @@ -991,8 +985,10 @@ github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+ github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg= github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= +github.com/go-redis/redis/v7 v7.1.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= github.com/go-redis/redis/v7 v7.4.1 h1:PASvf36gyUpr2zdOUS/9Zqc80GbM+9BDyiJSJDDOrTI= github.com/go-redis/redis/v7 v7.4.1/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= +github.com/go-redis/redis/v8 v8.0.0/go.mod h1:isLoQT/NFSP7V67lyvM9GmdvLdyZ7pEhsXvvyQtnQTo= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48 h1:JVrqSeQfdhYRFk24TvhTZWU0q8lfCojxZQFi3Ou7+uY= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= @@ -1004,6 +1000,7 @@ github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/go-zookeeper/zk v1.0.2 h1:4mx0EYENAdX/B/rbunjlt5+4RTA/a9SMHBRuSKdGxPM= @@ -1040,15 +1037,17 @@ github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/E github.com/goccy/go-yaml v1.9.5/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA= github.com/gocql/gocql v0.0.0-20200228163523-cd4b606dd2fb/go.mod h1:DL0ekTmBSTdlNF25Orwt/JMzqIq3EJ4MVa/J/uK64OY= github.com/gocql/gocql v0.0.0-20211222173705-d73e6b1002a7/go.mod h1:3gM2c4D3AnkISwBxGnMMsS8Oy4y2lhbPRsH4xnJrHG8= +github.com/gocql/gocql v0.0.0-20220224095938-0eacd3183625/go.mod h1:3gM2c4D3AnkISwBxGnMMsS8Oy4y2lhbPRsH4xnJrHG8= github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e h1:BWhy2j3IXJhjCbC68FptL43tDKIq8FladmaTs3Xs7Z8= github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= -github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.6 h1:mkgN1ofwASrYnJ5W6U/BxG15eXXXjirgZc7CLqkcaro= github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofiber/fiber/v2 v2.11.0/go.mod h1:oZTLWqYnqpMMuF922SjGbsYZsdpE1MCfh416HNdweIM= +github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0= @@ -1068,16 +1067,12 @@ github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXP github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= -github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= -github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= @@ -1098,6 +1093,7 @@ github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -1122,6 +1118,7 @@ github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gomodule/redigo v1.7.0/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/addlicense v0.0.0-20190510175307-22550fa7c1b0/go.mod h1:QtPG26W17m+OIQgE6gQ24gC1M6pUaMBAbFrTIDtwG/E= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -1130,9 +1127,8 @@ github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/cadvisor v0.44.1 h1:hsAxDZOY+5xSCXH12d/G9cxYTfP+32cMT3J7aatrgDY= github.com/google/cadvisor v0.44.1/go.mod h1:GQ9KQfz0iNHQk3D6ftzJWK4TXabfIgM10Oy3FkR+Gzg= +github.com/google/flatbuffers v1.12.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/flatbuffers v2.0.0+incompatible h1:dicJ2oXwypfwUGnB2/TYWYEKiuk9eYQlQO/AnOHl5mI= -github.com/google/flatbuffers v2.0.0+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -1154,6 +1150,7 @@ github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYV github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= +github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= @@ -1162,6 +1159,7 @@ github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXi github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -1174,7 +1172,7 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210423192551-a2663126120b/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= @@ -1188,9 +1186,6 @@ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0 h1:zO8WHNx/MYiAKJ3d5spxZXZE6KHmIQGQcAzwUzV7qQw= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= @@ -1199,6 +1194,7 @@ github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/Oth github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= github.com/googleapis/gax-go/v2 v2.4.0 h1:dS9eYAjhrE2RjmzYw2XAPvcXfmcQLtFEQWn0CR82awk= github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= @@ -1206,6 +1202,7 @@ github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+ github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/googleinterns/cloud-operations-api-mock v0.0.0-20200709193332-a1e58c29bdd3 h1:eHv/jVY/JNop1xg2J9cBb4EzyMpWZoNCP1BslSAIkOI= github.com/googleinterns/cloud-operations-api-mock v0.0.0-20200709193332-a1e58c29bdd3/go.mod h1:h/KNeRx7oYU4SpA4SoY7W2/NxDKEEVuwA6j9A27L4OI= +github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gophercloud/gophercloud v0.24.0 h1:jDsIMGJ1KZpAjYfQgGI2coNQj5Q83oPzuiGJRFWgMzw= github.com/gophercloud/gophercloud v0.24.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= @@ -1214,10 +1211,10 @@ github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51 github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= +github.com/gorilla/mux v1.5.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= @@ -1228,6 +1225,7 @@ github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2 h1:uirlL/j72L93RhV4+mkWhjv0cov2I0MIgPOG9rMDr1k= github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= +github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grobie/gomemcache v0.0.0-20180201122607-1f779c573665 h1:LONJvPBBd9wBmzSUmNHI7XpLE2qQ5tzUimeBadiVDuA= github.com/grobie/gomemcache v0.0.0-20180201122607-1f779c573665/go.mod h1:L69/dBlPQlWkcnU76WgcppK5e4rrxzQdi6LhLnK/ytA= @@ -1243,22 +1241,21 @@ github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFb github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.2/go.mod h1:chrfS3YoLAlKTRE5cFWvCbt8uGAjshktT4PveTUpsFQ= github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= -github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= -github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= +github.com/hashicorp/consul/api v1.0.0/go.mod h1:mbFwfRxOTDHZpT3iUsMAFcLNoVm6Xbe1xZ6KiSm8FY0= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/api v1.8.1/go.mod h1:sDjTOq0yUyv5G4h+BqSea7Fn6BU+XbolEz1952UB+mk= github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= +github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= +github.com/hashicorp/consul/api v1.12.0 h1:k3y1FYv6nuKyNTqj6w9gXOx5r5CfLj/k/euUeBXj1OY= github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= -github.com/hashicorp/consul/api v1.13.1 h1:r5cPdVFUy+pFF7nt+0ArLD9hm+E39OewJkvNdjKXcL4= -github.com/hashicorp/consul/api v1.13.1/go.mod h1:+1VcOos0TVdQFqXxphG4zmGcwQB4KVGkp1maPqnkDpE= +github.com/hashicorp/consul/internal v0.1.0/go.mod h1:zi9bMZYbiPHyAjgBWo7kCUcy5l2NrTdrkVupCc7Oo6c= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.7.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM= +github.com/hashicorp/consul/sdk v0.8.0 h1:OJtKBtEjboEZvG6AOUdh4Z1Zbyu0WcxQ0qatRrZHTVU= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= -github.com/hashicorp/consul/sdk v0.10.0 h1:rGLEh2AWK4K0KCMvqWAz2EYxQqgciIfMagWZ0nVe5MI= -github.com/hashicorp/consul/sdk v0.10.0/go.mod h1:yPkX5Q6CsxTFMjQQDJwzeNmUUF5NUGGbrDsv9wTb8cw= github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= @@ -1273,7 +1270,10 @@ github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrj github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.12.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v0.16.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v1.1.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v1.2.1 h1:YQsLlGDJgwhXFpucSPyVbCBviQtjlHv3jLTlp8YmtEw= github.com/hashicorp/go-hclog v1.2.1/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= @@ -1281,6 +1281,7 @@ github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjh github.com/hashicorp/go-immutable-radix v1.2.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-kms-wrapping/entropy v0.1.0/go.mod h1:d1g9WGtAunDNpek8jUIEJnBlbgKS1N2Q61QkHiZyR1g= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-msgpack v0.5.5 h1:i9R9JSrqIz0QVLz3sz+i3YJdT7TTSLcfLLzJi9aZTuI= github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= @@ -1290,10 +1291,12 @@ github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= +github.com/hashicorp/go-plugin v1.4.2/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ= github.com/hashicorp/go-plugin v1.4.3/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ= github.com/hashicorp/go-plugin v1.4.4/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-retryablehttp v0.7.1 h1:sUiuQAnLlbvmExtFQs72iFW/HXeUn8Z1aJLQ4LJJbTQ= github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= @@ -1310,8 +1313,8 @@ github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2I github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= -github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.5.0 h1:O293SZ2Eg+AAYijkVK3jR786Am1bhDEh2GHT0tIVE5E= +github.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -1324,25 +1327,29 @@ github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0m github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/memberlist v0.1.6/go.mod h1:5VDNHjqFMgEcclnwmkCnC99IPwxBmIsxwY8qn+Nl0H4= github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/memberlist v0.3.1 h1:MXgUXLqva1QvpVEDQW1IQLG0wivQAtmFlHRQ+1vWZfM= github.com/hashicorp/memberlist v0.3.1/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/serf v0.8.6/go.mod h1:P/AVgr4UHsUYqVHG1y9eFhz8S35pqhGhLZaDpfGKIMo= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hashicorp/serf v0.9.7 h1:hkdgbqizGQHuU5IPqYM1JdSMV8nKfpuOnZYXssk9muY= github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q= +github.com/hashicorp/vault/api v1.1.0/go.mod h1:R3Umvhlxi2TN7Ex2hzOowyeNb+SfbVWI973N+ctaFMk= github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= +github.com/hashicorp/vault/sdk v0.1.14-0.20200519221838-e0cfd64bc267/go.mod h1:WX57W2PwkrOPQ6rVQk+dy5/htHIaB4aBM70EwKThu10= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20190923154419-df201c70410d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hetznercloud/hcloud-go v1.33.1/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME= github.com/hetznercloud/hcloud-go v1.33.2 h1:ptWKVYLW7YtjXzsqTFKFxwpVo3iM9UMkVPBYQE4teLU= github.com/hetznercloud/hcloud-go v1.33.2/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME= -github.com/honeycombio/libhoney-go v1.16.0 h1:kPpqoz6vbOzgp7jC6SR7SkNj7rua7rgxvznI6M3KdHc= -github.com/honeycombio/libhoney-go v1.16.0/go.mod h1:izP4fbREuZ3vqC4HlCAmPrcPT9gxyxejRjGtCYpmBn0= +github.com/honeycombio/libhoney-go v1.15.8 h1:TECEltZ48K6J4NG1JVYqmi0vCJNnHYooFor83fgKesA= +github.com/honeycombio/libhoney-go v1.15.8/go.mod h1:+tnL2etFnJmVx30yqmoUkVyQjp7uRJw0a2QGu48lSyY= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo= @@ -1380,9 +1387,8 @@ github.com/influxdata/line-protocol/v2 v2.1.0/go.mod h1:QKw43hdUBg3GTk2iC3iyCxks github.com/influxdata/line-protocol/v2 v2.2.1 h1:EAPkqJ9Km4uAxtMRgUubJyqAr6zgWM0dznKMLRauQRE= github.com/influxdata/line-protocol/v2 v2.2.1/go.mod h1:DmB3Cnh+3oxmG6LOBIxce4oaL4CPj3OmMPgvauXh+tM= github.com/intel/goresctrl v0.2.0/go.mod h1:+CZdzouYFn5EsxgqAQTEzMfwKwuc0fVdMrT9FCCAVRQ= +github.com/ionos-cloud/sdk-go/v6 v6.0.5851 h1:Xjdta3uR5SDLXXl0oahgVIJ+AQNFCyOCuAwxPAXFUCM= github.com/ionos-cloud/sdk-go/v6 v6.0.5851/go.mod h1:UE3V/2DjnqD5doOqtjYqzJRMpI1RiwrvuuSEPX1pdnk= -github.com/ionos-cloud/sdk-go/v6 v6.1.0 h1:0EZz5H+t6W23zHt6dgHYkKavr72/30O9nA97E3FZaS4= -github.com/ionos-cloud/sdk-go/v6 v6.1.0/go.mod h1:Ox3W0iiEz0GHnfY9e5LmAxwklsxguuNFEUSu0gVRTME= github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= @@ -1398,9 +1404,14 @@ github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgO github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= +github.com/jackc/pgconn v1.4.0/go.mod h1:Y2O3ZDF0q4mMacyWV3AstPJpeHXWGEetiFttmq5lahk= +github.com/jackc/pgconn v1.5.0/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI= +github.com/jackc/pgconn v1.5.1-0.20200601181101-fa742c524853/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI= +github.com/jackc/pgconn v1.6.4/go.mod h1:w2pne1C2tZgP+TvjqLpOigGzNqjBgQW9dUw/4Chex78= github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= +github.com/jackc/pgconn v1.10.1/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= github.com/jackc/pgconn v1.12.1 h1:rsDFzIpRk7xT4B8FufgpCCeyjdNpKyghZeSefViE5W8= github.com/jackc/pgconn v1.12.1/go.mod h1:ZkhRC59Llhrq3oSfrikvwQ5NaxYExr6twkdkMLaKono= github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= @@ -1417,35 +1428,51 @@ github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.0.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.2.0/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgproto3/v2 v2.3.0 h1:brH0pCGBDkBW07HWlN/oSBXrmo3WB0UvZd1pIuDcL8Y= github.com/jackc/pgproto3/v2 v2.3.0/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg= github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= +github.com/jackc/pgtype v1.2.0/go.mod h1:5m2OfMh1wTK7x+Fk952IDmI4nw3nPrvtQdM0ZT4WpC0= +github.com/jackc/pgtype v1.3.1-0.20200510190516-8cd94a14c75a/go.mod h1:vaogEUkALtxZMCH411K+tKzNpwzCKU+AnPzBKZ+I+Po= +github.com/jackc/pgtype v1.3.1-0.20200606141011-f6355165a91c/go.mod h1:cvk9Bgu/VzJ9/lxTO5R5sf80p0DiucVtN7ZxvaC4GmQ= +github.com/jackc/pgtype v1.4.2/go.mod h1:JCULISAZBFGrHaOXIIFiyfzW5VY0GRitRr8NeJsrdig= github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= +github.com/jackc/pgtype v1.9.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= github.com/jackc/pgtype v1.11.0 h1:u4uiGPz/1hryuXzyaBhSk6dnIyyG2683olG2OV+UUgs= github.com/jackc/pgtype v1.11.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= +github.com/jackc/pgx/v4 v4.5.0/go.mod h1:EpAKPLdnTorwmPUUsqrPxy5fphV18j9q3wrfRXgo+kA= +github.com/jackc/pgx/v4 v4.6.1-0.20200510190926-94ba730bb1e9/go.mod h1:t3/cdRQl6fOLDxqtlyhe9UWgfIi9R8+8v8GKV5TRA/o= +github.com/jackc/pgx/v4 v4.6.1-0.20200606145419-4e5062306904/go.mod h1:ZDaNWkt9sW1JMiNn0kdYBaLelIhw7Pg4qd+Vk6tw7Hg= +github.com/jackc/pgx/v4 v4.8.1/go.mod h1:4HOLxrl8wToZJReD04/yB20GDwf4KBYETvlHciCnwW0= github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= +github.com/jackc/pgx/v4 v4.14.0/go.mod h1:jT3ibf/A0ZVCp89rtCIN0zCJxcE74ypROmHEZYsG/j8= github.com/jackc/pgx/v4 v4.16.1 h1:JzTglcal01DrghUqt+PmzWsZx/Yh7SC/CTQmSBMTd0Y= github.com/jackc/pgx/v4 v4.16.1/go.mod h1:SIhx0D5hoADaiXZVyv+3gSm3LCIIINTVO0PficsvWGQ= github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.1.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.2.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v1.2.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jaegertracing/jaeger v1.15.1/go.mod h1:LUWPSnzNPGRubM8pk0inANGitpiMOOxihXx0+53llXI= +github.com/jaegertracing/jaeger v1.24.0/go.mod h1:mqdtFDA447va5j0UewDaAWyNlGreGQyhGxXVhbF58gQ= github.com/jaegertracing/jaeger v1.28.0/go.mod h1:CfqVll05gkdPxNc5xrCnR44UmeVYZoYJtO4Ub8qn2wI= -github.com/jaegertracing/jaeger v1.35.2/go.mod h1:e7FBVZ14ptsRjwiHEnLyxvOa4bSnZA0BDFE1OcvNiHs= -github.com/jaegertracing/jaeger v1.36.0 h1:2S7otDbeCUXvOBieTIcxHfuj3x+WvHYZzizr4wzQfOo= -github.com/jaegertracing/jaeger v1.36.0/go.mod h1:67uyR2zQgEk7EfguOR3eZOGvGDRzY5Yos6n2aaXxq1Y= -github.com/jawher/mow.cli v1.0.4/go.mod h1:5hQj2V8g+qYmLUVWqu4Wuja1pI57M83EChYLVZ0sMKk= -github.com/jawher/mow.cli v1.2.0/go.mod h1:y+pcA3jBAdo/GIZx/0rFjw/K2bVEODP9rfZOfaiq8Ko= +github.com/jaegertracing/jaeger v1.31.0/go.mod h1:KukZMhuamI3NVbzWmngcmXbcnxiB3WyaNf0nxio+sUw= +github.com/jaegertracing/jaeger v1.35.1 h1:Jb7/5anKF70V4FQSJRJ3AYBcA/hJDfWy45kE/9nFSe8= +github.com/jaegertracing/jaeger v1.35.1/go.mod h1:e7FBVZ14ptsRjwiHEnLyxvOa4bSnZA0BDFE1OcvNiHs= github.com/jcchavezs/porto v0.1.0 h1:Xmxxn25zQMmgE7/yHYmh19KcItG81hIwfbEEFnd6w/Q= github.com/jcchavezs/porto v0.1.0/go.mod h1:fESH0gzDHiutHRdX2hv27ojnOVFco37hg1W6E9EZF4A= github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= @@ -1463,10 +1490,13 @@ github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJk github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= +github.com/jinzhu/gorm v1.9.1/go.mod h1:Vla75njaFJ8clLU1W44h34PjIkijhjHIYnZxMqCdxqo= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jinzhu/now v1.1.3/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= @@ -1483,6 +1513,7 @@ github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8Hm github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -1499,6 +1530,7 @@ github.com/juju/errors v0.0.0-20181012004132-a4583d0a56ea h1:g2k+8WR7cHch4g0tBDh github.com/juju/errors v0.0.0-20181012004132-a4583d0a56ea/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= github.com/juju/testing v0.0.0-20191001232224-ce9dec17d28b/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= +github.com/julienschmidt/httprouter v1.1.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= @@ -1514,8 +1546,6 @@ github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7 github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= -github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM= -github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -1523,25 +1553,23 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.10.8/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.12/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.12.2/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.14.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.14.2/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.14.4/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.15.0/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.15.4/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/compress v1.15.6 h1:6D9PcO8QWu0JyaQ2zUMmu16T1T+zjjEpP91guRsvDfY= github.com/klauspost/compress v1.15.6/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/klauspost/compress v1.15.7/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/klauspost/compress v1.15.8 h1:JahtItbkWjf2jzm/T+qgMxkP9EMHsqEUA6vCMGmXvhA= -github.com/klauspost/compress v1.15.8/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/knadh/koanf v1.4.1 h1:Z0VGW/uo8NJmjd+L1Dc3S5frq6c62w5xQ9Yf4Mg3wFQ= github.com/knadh/koanf v1.4.1/go.mod h1:1cfH5223ZeZUOs8FU2UdTmaNfHpqgtjV0+NHjRO43gs= -github.com/knadh/koanf v1.4.2 h1:2itp+cdC6miId4pO4Jw7c/3eiYD26Z/Sz3ATJMwHxIs= -github.com/knadh/koanf v1.4.2/go.mod h1:4NCo0q4pmU398vF9vq2jStF9MWQZ8JEDcDMHlDCr4h0= github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b h1:iNjcivnc6lhbvJA3LD622NPrUponluJrBWPIwGG/3Bg= github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -1561,8 +1589,11 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/labstack/echo v3.3.10+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s= +github.com/labstack/echo/v4 v4.2.0/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= github.com/leesper/go_rng v0.0.0-20190531154944-a612b043e353 h1:X/79QL0b4YJVO5+OsPH9rF2u428CIrGL/jLmPsoOQQ4= github.com/leesper/go_rng v0.0.0-20190531154944-a612b043e353/go.mod h1:N0SVk0uhy+E1PZ3C9ctsPRlvOPAFPkCNlcPBDkt0N3U= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= @@ -1573,17 +1604,20 @@ github.com/leoluk/perflib_exporter v0.1.0/go.mod h1:rpV0lYj7lemdTm31t7zpCqYqPnw7 github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linkedin/goavro/v2 v2.9.8 h1:jN50elxBsGBDGVDEKqUlDuU1cFwJ11K/yrJCBMe/7Wg= -github.com/linkedin/goavro/v2 v2.9.8/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA= github.com/linode/linodego v1.4.0/go.mod h1:PVsRxSlOiJyvG4/scTszpmZDTdgS+to3X6eS8pRrWI8= github.com/linode/linodego v1.5.0 h1:p1TgkDsz0ubaIPLNviZBTIjlsX3PdvqZQ4eO2r0L1Hk= github.com/linode/linodego v1.5.0/go.mod h1:9lmhBsOupR6ke7D9Ioj1bq/ny9pfgFkCLiX7ubq0r08= github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= +github.com/logzio/jaeger-logzio v1.0.6 h1:Xh6pw7jDUseVy1MjW/hojPj+SW+CZskvebQsOGLsgM0= +github.com/logzio/jaeger-logzio v1.0.6/go.mod h1:yNkT0BX0pn/ZLTiotRRpaU4pgqpDtsdYH/yTLsoScYQ= +github.com/logzio/logzio-go v1.0.6 h1:BIVu5TWDZc0vlEkwSDjoxPlV/aMJV2LdM3k+CjdzFDg= +github.com/logzio/logzio-go v1.0.6/go.mod h1:ljlI3Zfi3hntJiHqCqWSUPT9cZP6yvDHUzDl5ZLGYRE= github.com/lucasb-eyer/go-colorful v1.0.2/go.mod h1:0MS4r+7BZKSJ5mw4/S5MPN+qHFF1fYclkSPilDOKW0s= github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= @@ -1597,6 +1631,7 @@ github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPK github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20180730094502-03f2033d19d5/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -1614,13 +1649,12 @@ github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcncea github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-ieproxy v0.0.1 h1:qiyop7gCflfhwCzGyeT0gro3sF9AIg9HU98JORTkqfI= -github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= @@ -1639,6 +1673,7 @@ github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vq github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U= github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= @@ -1651,6 +1686,7 @@ github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/le github.com/microsoft/ApplicationInsights-Go v0.4.4 h1:G4+H9WNs6ygSCe6sUyxRc2U81TI5Es90b2t/MwX5KqY= github.com/microsoft/ApplicationInsights-Go v0.4.4/go.mod h1:fKRUseBqkw6bDiXTs3ESTiU/4YTIHsQS4W3fP2ieF4U= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.25/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= @@ -1675,6 +1711,8 @@ github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/hashstructure v1.1.0 h1:P6P1hdjqAAknpY/M1CGipelZgp+4y9ja9kmUZPXP+H0= @@ -1694,6 +1732,7 @@ github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQ github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mjibson/esc v0.2.0/go.mod h1:9Hw9gxxfHulMF5OJKCyhYD7PzlSdhzXyaGEBRPH1OPs= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/sys/mount v0.2.0 h1:WhCW5B355jtxndN5ovugJlMFJawbUODuW8fSnEH6SSM= @@ -1712,6 +1751,7 @@ github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6U github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= @@ -1726,10 +1766,9 @@ github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7P github.com/mostynb/go-grpc-compression v1.1.16 h1:D9tGUINmcII049pxOj9dl32Fzhp26TrDVQXECoKJqQg= github.com/mostynb/go-grpc-compression v1.1.16/go.mod h1:xxa6UoYynYS2h+5HB/Hglu81iYAp87ARaNmhhwi0s1s= github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= +github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= github.com/mrunalp/fileutils v0.5.0 h1:NKzVxiH7eSk+OQ4M+ZYW1K6h27RUV3MI6NUTsHhU6Z4= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= -github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= -github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= @@ -1753,6 +1792,7 @@ github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nkeys v0.2.0/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= github.com/nginxinc/nginx-plus-go-client v0.6.0/go.mod h1:DBAmdDP71tOhgFPdCMVusegzdKmLVpVL0nVcMX17pbY= github.com/nginxinc/nginx-prometheus-exporter v0.8.1-0.20201110005315-f5a5f8086c19 h1:jR4KbeVA+KYmPq+amRe6AdB4mIfEaSOZGY2zCpqt/p8= @@ -1772,6 +1812,9 @@ github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DV github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olivere/elastic v6.2.35+incompatible/go.mod h1:J+q1zQJTgAz9woqsbVRqGeB5G1iqDKVBWLNSYW8yfJ8= +github.com/olivere/elastic v6.2.36+incompatible/go.mod h1:J+q1zQJTgAz9woqsbVRqGeB5G1iqDKVBWLNSYW8yfJ8= +github.com/olivere/elastic v6.2.37+incompatible h1:UfSGJem5czY+x/LqxgeCBgjDn6St+z8OnsCuxwD3L0U= github.com/olivere/elastic v6.2.37+incompatible/go.mod h1:J+q1zQJTgAz9woqsbVRqGeB5G1iqDKVBWLNSYW8yfJ8= github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -1790,7 +1833,6 @@ github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvw github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -1804,9 +1846,8 @@ github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDs github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.17.0 h1:9Luw4uT5HTjHTN8+aNcSThgH1vdXnmdJ8xIfZ4wyTRE= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= -github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -1850,6 +1891,7 @@ github.com/openshift/client-go v0.0.0-20210521082421-73d9475a9142 h1:ZHRIMCFIJN1 github.com/openshift/client-go v0.0.0-20210521082421-73d9475a9142/go.mod h1:fjS8r9mqDVsPb5td3NehsNOAWa4uiFkYEfVZioQ2gH0= github.com/opentracing-contrib/go-grpc v0.0.0-20191001143057-db30781987df/go.mod h1:DYR5Eij8rJl8h7gblRrOZ8g0kW1umSpKqYIBTgeDtLo= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing-contrib/go-stdlib v0.0.0-20190519235532-cf7a6c988dc9/go.mod h1:PLldrQSroqzH70Xl+1DQcGnefIbqsKR7UDaiux3zV+w= github.com/opentracing-contrib/go-stdlib v1.0.0/go.mod h1:qtI1ogk+2JhVPIXVc6q+NHziSmy2W5GbdQZFUHADCBU= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -1876,36 +1918,32 @@ github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUr github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= -github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml/v2 v2.0.0-beta.8 h1:dy81yyLYJDwMTifq24Oi/IslOslRrDSb3jwDggjz3Z0= github.com/pelletier/go-toml/v2 v2.0.0-beta.8/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= -github.com/pelletier/go-toml/v2 v2.0.1 h1:8e3L2cCQzLFi2CR4g7vGFuFxX7Jl1kKX8gW+iV0GUKU= -github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/philhofer/fwd v1.1.1 h1:GdGcTjf5RNAxwS4QLsiMzJYj5KEvPJD3Abr261yRQXQ= github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/pierrec/cmdflag v0.0.2/go.mod h1:a3zKGZ3cdQUfxjd0RGMLZr8xI3nvpJOB+m6o/1X5BmU= +github.com/pierrec/lz4 v0.0.0-20190327172049-315a67e90e41/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pierrec/lz4 v2.5.2+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.6.0+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4/v3 v3.3.4/go.mod h1:280XNCGS8jAcG++AHdd6SeWnzyJ1w9oow2vbORyey8Q= -github.com/pierrec/lz4/v4 v4.1.8/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= -github.com/pierrec/lz4/v4 v4.1.11/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pierrec/lz4/v4 v4.1.14 h1:+fL8AQEZtz/ijeNnpduH0bROTu0O3NZAlPjQxGn8LwE= github.com/pierrec/lz4/v4 v4.1.14/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= -github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= -github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -1966,12 +2004,9 @@ github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+ github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.34.0 h1:RBmGO9d/FVjqHT0yUGQwBJhkwKV+wPCn7KGpvfab0uE= github.com/prometheus/common v0.34.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= -github.com/prometheus/common v0.35.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE= -github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= github.com/prometheus/common/assets v0.1.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= -github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4= github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= github.com/prometheus/exporter-toolkit v0.7.1/go.mod h1:ZUBIj498ePooX9t/2xtDjeQYwvRpiPP2lh5u4iblj2g= @@ -1993,8 +2028,8 @@ github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/prometheus v0.35.0/go.mod h1:7HaLx5kEPKJ0GDgbODG0fZgXbQ8K/XjZNJXQmbmgQlY= -github.com/prometheus/prometheus v0.36.2 h1:ZMqiEKdamv/YgI/7V5WtQGWbwEerCsXJ26CZgeXDUXM= -github.com/prometheus/prometheus v0.36.2/go.mod h1:GBcYMr17Nr2/iDIrWmiy9wC5GKl0NOQ5R9XynB1HAG8= +github.com/prometheus/prometheus v0.36.0 h1:d1OWo3gTs5apWUMP5luhZTmXKmwrUUz9DqWlGCQJBAE= +github.com/prometheus/prometheus v0.36.0/go.mod h1:g5VjDTKGDiTs249GQVBbbWdHLkkIOgme3HxyUwIzlwY= github.com/prometheus/statsd_exporter v0.21.0 h1:hA05Q5RFeIjgwKIYEdFd59xu5Wwaznf33yKI+pyX6T8= github.com/prometheus/statsd_exporter v0.21.0/go.mod h1:rbT83sZq2V+p73lHhPZfMc3MLCHmSHelCh9hSGYNLTQ= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= @@ -2035,8 +2070,9 @@ github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIH github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= +github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig= +github.com/sagikazarmark/crypt v0.4.0/go.mod h1:ALv2SRj7GxYV4HO9elxH9nS6M9gW+xDNxqmyJ6RfDFM= github.com/sagikazarmark/crypt v0.5.0/go.mod h1:l+nzl7KWh51rpzp2h7t4MZWyiEWdhNpOAnclKvg+mdA= -github.com/sagikazarmark/crypt v0.6.0/go.mod h1:U8+INwJo3nBv1m6A/8OBXAq7Jnpspk5AxSgDyEQcea8= github.com/samuel/go-zookeeper v0.0.0-20190810000440-0ceca61e4d75/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sanity-io/litter v1.2.0/go.mod h1:JF6pZUFgu2Q0sBZ+HSV35P8TVPI1TTzEwyu9FXAw2W4= @@ -2054,18 +2090,20 @@ github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921 h1:58EBmR2dMNL2n/FnbQewK3D14nXr0V9CObDSvMJLq+Y= github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= -github.com/secure-systems-lab/go-securesystemslib v0.3.1 h1:LJuyMziazadwmQRRu1M7GMUo5S1oH1+YxU9FjuSFU8k= -github.com/secure-systems-lab/go-securesystemslib v0.3.1/go.mod h1:o8hhjkbNl2gOamKUA/eNW3xUrntHT9L4W89W1nfj43U= +github.com/securego/gosec v0.0.0-20200203094520-d13bb6d2420c/go.mod h1:gp0gaHj0WlmPh9BdsTmo1aq6C27yIPWdxCKGFGdVKBE= +github.com/segmentio/kafka-go v0.4.29/go.mod h1:m1lXeqJtIFYZayv0shM/tjrAFljvWLTprxBHd+3PnaU= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shirou/gopsutil v2.18.10+incompatible h1:cy84jW6EVRPa5g9HAHrlbxMSIjBhDSX0OFYyMYminYs= github.com/shirou/gopsutil v2.18.10+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil v2.20.9+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil v3.21.10+incompatible h1:AL2kpVykjkqeN+MFe1WcwSBVUjGjvdU8/ubvCuXAjrU= +github.com/shirou/gopsutil v3.21.10+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil/v3 v3.22.3/go.mod h1:D01hZJ4pVHPpCTZ3m3T2+wDF2YAGfd+H4ifUguaQzHM= github.com/shirou/gopsutil/v3 v3.22.4/go.mod h1:D01hZJ4pVHPpCTZ3m3T2+wDF2YAGfd+H4ifUguaQzHM= +github.com/shirou/gopsutil/v3 v3.22.5 h1:atX36I/IXgFiB81687vSiBI5zrMsxcIBkP9cQMJQoJA= github.com/shirou/gopsutil/v3 v3.22.5/go.mod h1:so9G9VzeHt/hsd0YwqprnjHnfARAUktauykSbr+y2gA= -github.com/shirou/gopsutil/v3 v3.22.6 h1:FnHOFOh+cYAM0C30P+zysPISzlknLC5Z1G4EAElznfQ= -github.com/shirou/gopsutil/v3 v3.22.6/go.mod h1:EdIubSnZhbAvBS1yJ7Xi+AShB/hxwLHOMz4MCYz7yMs= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= @@ -2080,12 +2118,10 @@ github.com/signalfx/golib/v3 v3.3.13 h1:Q+WDU2CeOGAJ2uZtb3Ov5cIUKS6tyvR2KU87SjVl github.com/signalfx/golib/v3 v3.3.13/go.mod h1:LKKCrEw4rU8ZL/8dVwX5i1+kqm4utB7uaHQpRx587rs= github.com/signalfx/gomemcache v0.0.0-20180823214636-4f7ef64c72a9/go.mod h1:Ytb8KfCSyuwy/VILnROdgCvbQLA5ch0nkbG7lKT0BXw= github.com/signalfx/sapm-proto v0.4.0/go.mod h1:x3gtwJ1GRejtkghB4nYpwixh2zqJrLbPU959ZNhM0Fk= -github.com/signalfx/sapm-proto v0.11.0 h1:TIbJNKJ/J00yyASLlbF1DlVZv+X1bY4/BiaYSU7wfxc= -github.com/signalfx/sapm-proto v0.11.0/go.mod h1:bYZgdl2ZoMriE4arrRThWH8M6DkVbN7+xsxg4v2HP8Q= +github.com/signalfx/sapm-proto v0.9.0 h1:x4EfhzOZtBGyt2x8gc/C23Id9B+3lf1zE59VUWLKbpQ= +github.com/signalfx/sapm-proto v0.9.0/go.mod h1:OmhyyGyhBzoKQn6G2wM1vpEsGKGo0lym/kj0G41KqZk= github.com/signalfx/signalfx-agent/pkg/apm v0.0.0-20201202163743-65b4fa925fc8 h1:pK1/PlwhBPVa2+SqAo7nVfwE/zbGz1p3WlcqwcoLSBk= github.com/signalfx/signalfx-agent/pkg/apm v0.0.0-20201202163743-65b4fa925fc8/go.mod h1:pNaqfprM2bSCBhE8sTT2NtasSWEsIJbrmnIF0ap/Cvg= -github.com/sijms/go-ora/v2 v2.4.26 h1:nHDCq1jROHU5r+hGh0wxrIJ32qTUtDuEoo3x/XTGNRY= -github.com/sijms/go-ora/v2 v2.4.26/go.mod h1:EHxlY6x7y9HAsdfumurRfTd+v8NrEOTR3Xl4FWlH6xk= github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -2096,21 +2132,18 @@ github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrf github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/assertions v1.0.1 h1:voD4ITNjPL5jjBfgR/r8fPIIBrliWrWHeiJApdr3r4w= -github.com/smartystreets/assertions v1.0.1/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= +github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4-0.20190306220146-200a235640ff/go.mod h1:KSQcGKpxUMHk3nbYzs/tIBAM2iDooCn0BmttHOJEbLs= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/snowflakedb/gosnowflake v1.6.10 h1:pEppkXSSkN7F2eyEjGiMp8LC6Dm2cToU2RV9RzNBOZ8= -github.com/snowflakedb/gosnowflake v1.6.10/go.mod h1:BoZ0gnLERaUEiziH4Dumim10LN8cvoaCKovsAfhxzrE= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= @@ -2126,12 +2159,13 @@ github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155 github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v0.0.7/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= +github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4= +github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= -github.com/spf13/cobra v1.5.0 h1:X+jTBEBqF0bHN+9cSMgmfuvv2VHJ9ezmFNf9Y/XstYU= -github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -2146,9 +2180,10 @@ github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/y github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= +github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM= +github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8qy1rU= +github.com/spf13/viper v1.11.0 h1:7OX/1FS6n7jHD1zGrZTM7WtY13ZELRyosK4k93oPr44= github.com/spf13/viper v1.11.0/go.mod h1:djo0X/bA5+tYVoCn+C7cAYJGcVn/qYLFTG8gdUsX7Zk= -github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= -github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -2160,8 +2195,9 @@ github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.3.0 h1:NGXK3lHquSN08v5vWalVI/L8XU9hdzE/G6xsrze47As= +github.com/stretchr/objx v0.3.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -2171,41 +2207,48 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/subosito/gotenv v1.3.0 h1:mjC+YW8QpAdXibNi+vNWgzmgBH4+5l5dCXv8cNysBLI= -github.com/subosito/gotenv v1.3.0/go.mod h1:YzJjq/33h7nrwdY+iHMhEOEEbW0ovIz0tB6t6PwAXzs= github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= +github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE= +github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= github.com/tedsuo/ifrit v0.0.0-20180802180643-bea94bb476cc/go.mod h1:eyZnKCc955uh98WQvzOm0dgAeLnf2O0Rz0LPoC5ze+0= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.440 h1:/Rne//HadzOso7yJ9UbvI2E8l6b+n79ZKGXgBC5hBmY= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.440/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.413 h1:DvydszksqriOr0Zze9OREt8OrIrtMSFcVD8lz3xNAQA= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.413/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/testcontainers/testcontainers-go v0.13.0 h1:OUujSlEGsXVo/ykPVZk3KanBNGN0TYb/7oKIPVn15JA= github.com/testcontainers/testcontainers-go v0.13.0/go.mod h1:z1abufU633Eb/FmSBTzV6ntZAC1eZBYPtaFsn4nPuDk= github.com/tg123/go-htpasswd v1.2.0 h1:UKp34m9H467/xklxUxU15wKRru7fwXoTojtxg25ITF0= github.com/tg123/go-htpasswd v1.2.0/go.mod h1:h7IzlfpvIWnVJhNZ0nQ9HaFxHb7pn5uFJYLlEUJa2sM= -github.com/theupdateframework/go-tuf v0.3.0 h1:od2sc5+BSkKZhmUG2o2rmruy0BGSmhrbDhCnpxh87X8= -github.com/theupdateframework/go-tuf v0.3.0/go.mod h1:E5XP0wXitrFUHe4b8cUcAAdxBW4LbfnqF4WXXGLgWNo= +github.com/tidwall/btree v0.3.0/go.mod h1:huei1BkDWJ3/sLXmO+bsCNELL+Bp2Kks9OLyQFkzvA8= +github.com/tidwall/btree v1.1.0/go.mod h1:TzIRzen6yHbibdSfK6t8QimqbUnoxUSrZfeW7Uob0q4= +github.com/tidwall/buntdb v1.2.0/go.mod h1:XLza/dhlwzO6dc5o/KWor4kfZSt3BP8QV+77ZMKfI58= +github.com/tidwall/gjson v1.6.7/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI= +github.com/tidwall/gjson v1.6.8/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI= github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.12.1 h1:ikuZsLdhr8Ws0IdROXUS1Gi4v9Z4pGqpX/CvJkxvfpo= github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/grect v0.1.0/go.mod h1:sa5O42oP6jWfTShL9ka6Sgmg3TgIK649veZe05B7+J8= +github.com/tidwall/grect v0.1.4/go.mod h1:9FBsaYRaR0Tcy4UwefBX/UDcDcDy9V5jUcxHzv2jd5Q= +github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/rtred v0.1.2/go.mod h1:hd69WNXQ5RP9vHd7dqekAz+RIdtfBogmglkZSRxCHFQ= github.com/tidwall/tinylru v1.1.0 h1:XY6IUfzVTU9rpwdhKUF6nQdChgCdGjkMfLzbWyiau6I= github.com/tidwall/tinylru v1.1.0/go.mod h1:3+bX+TJ2baOLMWTnlyNWHh4QMnFyARg2TLTQ6OFbzw8= +github.com/tidwall/tinyqueue v0.1.1/go.mod h1:O/QNHwrnjqr6IHItYrzoHAKYhBkLI67Q096fQP5zMYw= github.com/tidwall/wal v1.1.7 h1:emc1TRjIVsdKKSnpwGBAcsAGg0767SvUk8+ygx7Bb+4= github.com/tidwall/wal v1.1.7/go.mod h1:r6lR1j27W9EPalgHiB7zLJDYu3mzW5BQP5KrzBpYY/E= +github.com/tinylib/msgp v1.1.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tinylib/msgp v1.1.6 h1:i+SbKraHhnrf9M5MYmvQhFnbLhAXSDWF8WWsuyRdocw= github.com/tinylib/msgp v1.1.6/go.mod h1:75BAfg2hauQhs3qedfdDZmWAPcFMAvJE5b9rGOMufyw= github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw= @@ -2215,8 +2258,10 @@ github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hM github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc/go.mod h1:bciPuU6GHm1iF1pBvUfxfsH0Wmnc2VbpgvbI9ZWuIRs= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= +github.com/twitchtv/twirp v8.1.1+incompatible/go.mod h1:RRJoFSAmTEh2weEqWtpPE3vFK5YBhA6bqp2l1kfCC5A= github.com/uber/jaeger-client-go v2.29.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= @@ -2234,11 +2279,15 @@ github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/X github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= +github.com/valyala/fasthttp v1.26.0/go.mod h1:cmWIqlu99AO/RKcp1HWaViTqc57FswJOfYYdPJBl8BA= +github.com/valyala/fasthttp v1.32.0/go.mod h1:2rsYD01CKFrjjsvFxx75KlEUNpWNBY9JWD3K/7o2Cus= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= +github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= github.com/vaughan0/go-ini v0.0.0-20130923145212-a98ad7ee00ec/go.mod h1:owBmyHYMLkxyrugmfwE/DLJyW8Ro9mkphwuVErQ0iUw= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= +github.com/vektra/mockery v0.0.0-20181123154057-e78b021dcbb5/go.mod h1:ppEjwdhyy7Y31EnHRDm1JkChoC7LXIJ7Ex0VYLWtZtQ= github.com/vincent-petithory/dataurl v1.0.0 h1:cXw+kPto8NLuJtlMsI152irrVw9fRDX8AbShPRpg2CI= github.com/vincent-petithory/dataurl v1.0.0/go.mod h1:FHafX5vmDzyP+1CQATJn7WFKc9CvnvxyvZy6I1MrG/U= github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= @@ -2251,8 +2300,12 @@ github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17 github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f h1:p4VB7kIXpOQvVn1ZaTIVp+3vuYAXFe3OJEvjbUYJLaA= github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/vmihailenco/bufpool v0.1.11/go.mod h1:AFf/MOy3l2CFTKbxwt0mp2MwnqjNEs5H/UxrkA5jxTQ= +github.com/vmihailenco/msgpack/v4 v4.3.11/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= +github.com/vmihailenco/msgpack/v5 v5.0.0-beta.1/go.mod h1:xlngVLeyQ/Qi05oQxhQ+oTuqa03RjMwMfk/7/TCs+QI= +github.com/vmihailenco/msgpack/v5 v5.3.4/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU= github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= @@ -2267,6 +2320,7 @@ github.com/vmware/govmomi v0.28.0/go.mod h1:F7adsVewLNHsW/IIm7ziFURaXDaHEwcc+ym4 github.com/vmware/vmw-guestinfo v0.0.0-20170707015358-25eff159a728/go.mod h1:x9oS4Wk2s2u4tS29nEaDLdzvuHdB19CvSGJjPgkZJNk= github.com/vultr/govultr/v2 v2.17.0 h1:BHa6MQvQn4YNOw+ecfrbISOf4+3cvgofEQHKBSXt6t0= github.com/vultr/govultr/v2 v2.17.0/go.mod h1:ZFOKGWmgjytfyjeyAdhQlSWwTjh2ig+X49cAp50dzXI= +github.com/wadey/gocovmerge v0.0.0-20160331181800-b5bfa59ec0ad/go.mod h1:Hy8o65+MXnS6EwGElrSRjUzQDLXreJlzYLlWiHtt8hM= github.com/wavefronthq/wavefront-sdk-go v0.9.11 h1:3qv/yyNNyLKPQftQWFrfHGUv50e/gMxKlUQnILlvHKw= github.com/wavefronthq/wavefront-sdk-go v0.9.11/go.mod h1:AcW8zJJcYodB7B9KYzoxVH6K0fmYd6MgpmXE1LMo+OU= github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= @@ -2281,7 +2335,10 @@ github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6 github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCOIs= github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= +github.com/xdg/scram v1.0.3/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= +github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= +github.com/xdg/stringprep v1.0.3/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= @@ -2300,14 +2357,13 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da h1:NimzV1aGyq29m5ukMK0AMWEhFaL/lrEOaephfuoiARg= -github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= +github.com/zenazn/goji v1.0.1/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/zorkian/go-datadog-api v2.30.0+incompatible h1:R4ryGocppDqZZbnNc5EDR8xGWF/z/MxzWnqTUijDQes= github.com/zorkian/go-datadog-api v2.30.0+incompatible/go.mod h1:PkXwHX9CUQa/FpB9ZwAD45N1uhCW4MT/Wj7m36PbKss= go.elastic.co/apm v1.15.0 h1:uPk2g/whK7c7XiZyz/YCUnAUBNPiyNeE3ARX3G6Gx7Q= @@ -2323,16 +2379,15 @@ go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/api/v3 v3.5.2/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= -go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/pkg/v3 v3.5.2/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= go.etcd.io/etcd/client/v2 v2.305.2/go.mod h1:2D7ZejHVMIfog1221iLSYlQRzrtECw3kz4I4VAQm3qI= -go.etcd.io/etcd/client/v2 v2.305.4/go.mod h1:Ud+VUwIi9/uQHOMA+4ekToJ12lTxlv0zB/+DHwTGEbU= go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= -go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= @@ -2346,6 +2401,7 @@ go.mongodb.org/mongo-driver v1.4.3/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4S go.mongodb.org/mongo-driver v1.4.4/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= go.mongodb.org/mongo-driver v1.4.6/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= go.mongodb.org/mongo-driver v1.5.1/go.mod h1:gRXCHX4Jo7J0IJ1oDQyUxF7jfy19UfxniMS4xxMmUqw= +go.mongodb.org/mongo-driver v1.5.2/go.mod h1:gRXCHX4Jo7J0IJ1oDQyUxF7jfy19UfxniMS4xxMmUqw= go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= @@ -2363,49 +2419,43 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/collector v0.52.0/go.mod h1:a9GvaOhyc0nVOUzqvdv5mxyWghCSso/WRO2GgRl4I1g= +go.opentelemetry.io/collector v0.53.0 h1:p4XwnAltBnw/gCRTk+DHTJVGYLzD5cPHp+0XK/KKE/s= go.opentelemetry.io/collector v0.53.0/go.mod h1:MMSqz2ImXjLrZB26cC8vrtgnjsza3hpc760NNjsmjwE= -go.opentelemetry.io/collector v0.54.0/go.mod h1:FgNzyfb4sAGb5cqusB5znETJ8Pz4OQUBGbOeGIZ2rlQ= -go.opentelemetry.io/collector v0.55.0/go.mod h1:q12RmApzWIfOc+ao73+UmSyTy6X8pHXi2B7CeLJxnbk= -go.opentelemetry.io/collector v0.55.1-0.20220711160057-6133c820fd50/go.mod h1:WGblGSkPop43LISmNshA8GzobQKqvvGM5M8vvq2zpfA= -go.opentelemetry.io/collector v0.56.0 h1:p9lLKYyWgX0PBdNP4EScZfMpk8XYSj+MuIhS0dSWzq8= -go.opentelemetry.io/collector v0.56.0/go.mod h1:zYv4Ds01+96vPhYIwhYb3unemGriZ4OQBWeMT6JoVEQ= go.opentelemetry.io/collector/model v0.38.0/go.mod h1:gS8A27wi+8gM3hrXL+dEjTbrbLxktjHjAwwqI31ELgQ= +go.opentelemetry.io/collector/model v0.44.0/go.mod h1:4jo1R8uBDspLCxUGhQ0k3v/EFXFbW7s0AIy3LuGLbcU= +go.opentelemetry.io/collector/model v0.45.0/go.mod h1:uyiyyq8lV45zrJ94MnLip26sorfNLP6J9XmOvaEmy7w= go.opentelemetry.io/collector/pdata v0.51.0/go.mod h1:FsowYKNmf8CgsHgOfJv8V3KjALmy6FYQRHtXAOY3fho= go.opentelemetry.io/collector/pdata v0.52.0/go.mod h1:GJUTfTv8mlYpHRjcmHXVbvJr48EW/q/P/HuBvpXAE58= +go.opentelemetry.io/collector/pdata v0.53.0 h1:jezCyHu/LXs4P/GzKObCabU2/OUTivNBlQHGPAo/dZo= go.opentelemetry.io/collector/pdata v0.53.0/go.mod h1:25b+xH0uJwp8H3f0a1V+OQfxbhYVds6Rf1Ul+HFCGo4= -go.opentelemetry.io/collector/pdata v0.54.0/go.mod h1:1nSelv/YqGwdHHaIKNW9ZOHSMqicDX7W4/7TjNCm6N8= -go.opentelemetry.io/collector/pdata v0.55.0/go.mod h1:f/jo/rDlHowf1T4XIAU+4XGhxaBDaAnKg+3tl3VnQGM= -go.opentelemetry.io/collector/pdata v0.55.1-0.20220711160057-6133c820fd50/go.mod h1:f/jo/rDlHowf1T4XIAU+4XGhxaBDaAnKg+3tl3VnQGM= -go.opentelemetry.io/collector/pdata v0.56.0 h1:JD8KjQ7dNZ441xMuVZVu5NRYmkA4vOYGV7w8tkCdyrE= -go.opentelemetry.io/collector/pdata v0.56.0/go.mod h1:mYcCREWiIJyHss0dbU+GSiz2tmGZ6u09vtfkKTciog4= +go.opentelemetry.io/collector/semconv v0.51.0/go.mod h1:SxK0rUnUP7YeDakexzbE/vhimTOHwE6m/4aKKd9e27Q= go.opentelemetry.io/collector/semconv v0.52.0/go.mod h1:SxK0rUnUP7YeDakexzbE/vhimTOHwE6m/4aKKd9e27Q= +go.opentelemetry.io/collector/semconv v0.53.0 h1:J1lVnFp1VyNKU63rc7csY9/54Tjm9BlLylXLjPimf7s= go.opentelemetry.io/collector/semconv v0.53.0/go.mod h1:SxK0rUnUP7YeDakexzbE/vhimTOHwE6m/4aKKd9e27Q= -go.opentelemetry.io/collector/semconv v0.54.0/go.mod h1:HAGkPKNMhc4kEHevEqVIEtUuvsRQMIbUWBb8yBrqEwk= -go.opentelemetry.io/collector/semconv v0.55.1-0.20220711160057-6133c820fd50/go.mod h1:EH1wbDvTyqKpKBBpoMIe0KQk2plCcFS66Mo17WtR7CQ= -go.opentelemetry.io/collector/semconv v0.56.0 h1:zpQ6IBimBsiVsJibsSM2/13vKtaeteFFIx4bmIiOS6E= -go.opentelemetry.io/collector/semconv v0.56.0/go.mod h1:EH1wbDvTyqKpKBBpoMIe0KQk2plCcFS66Mo17WtR7CQ= go.opentelemetry.io/contrib v0.20.0 h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9p0= go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.28.0/go.mod h1:vEhqr0m4eTc+DWxfsXoXue2GBgV2uUwVznkGIHW/e5w= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0 h1:WenoaOMNP71oq3KkMZ/jnxI9xU/JSCLw8yZILSI2lfU= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0/go.mod h1:J0dBVrt7dPS/lKJyQoW0xzQiUr4r2Ik1VwPjAUWnofI= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.33.0 h1:z6rnla1Asjzn0FrhohzIbDi4bxbtc6EMmQ7f5ZPn+pA= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.33.0/go.mod h1:y/SlJpJQPd2UzfBCj0E9Flk9FDCtTyqUmaCB41qFrWI= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.29.0/go.mod h1:tLYsuf2v8fZreBVwp9gVMhefZlLFZaUiNVSq8QxXRII= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.31.0/go.mod h1:PFmBsWbldL1kiWZk9+0LBZz2brhByaGsvp6pRICMlPE= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0 h1:mac9BKRqwaX6zxHPDe3pvmWpwuuIM0vuXv2juCnQevE= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0/go.mod h1:5eCOqeGphOyz6TsY3ZDNjE33SM/TFAK3RGuCL2naTgY= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.33.0 h1:Z0lVKLXU+jxGf3ANoh+UWx9Ai5bjpQVnZXI1zEzvqS0= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.33.0/go.mod h1:U5rUt7Rw6zuORsWNfpMRy8XMNKLrmIlv/4HgLVW/d5M= +go.opentelemetry.io/contrib/zpages v0.32.0 h1:AVKTx5ppWDaem7A61HFsO1T3CK/t6kFRQoZQMj0/TW4= go.opentelemetry.io/contrib/zpages v0.32.0/go.mod h1:Jx75I61RDcZU3d/1WrP6UdINlzGGLAwFNdQ3bCTb+qw= -go.opentelemetry.io/contrib/zpages v0.33.0 h1:0JATTp4rT56Mrfrq1icN9GqrI+1uFjq2NwJJRl8m3fk= -go.opentelemetry.io/contrib/zpages v0.33.0/go.mod h1:ddmD63NkBVE29GucaBBCR8/b/TRlY+PkpIbF3m2JF7Y= +go.opentelemetry.io/otel v0.11.0/go.mod h1:G8UCk+KooF2HLkgo8RHX9epABH/aRGYET7gQOqBVdB0= go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= +go.opentelemetry.io/otel v1.4.0/go.mod h1:jeAqMFKy2uLIxCtKxoFj0FAL5zAPKQagc3+GtBWakzk= +go.opentelemetry.io/otel v1.4.1/go.mod h1:StM6F/0fSwpd8dKWDCdRr7uRvEPYdW0hBSlbdTiUde4= go.opentelemetry.io/otel v1.6.0/go.mod h1:bfJD2DZVw0LBxghOTlgnlI0CV3hLDu9XF/QKOUXMTQQ= go.opentelemetry.io/otel v1.6.1/go.mod h1:blzUabWHkX6LJewxvadmzafgh/wnvBSDBdOuwkAtrWQ= +go.opentelemetry.io/otel v1.6.2/go.mod h1:MUBZHaB2cm6CahEBHQPq9Anos7IXynP/noVpjsxQTSc= +go.opentelemetry.io/otel v1.6.3/go.mod h1:7BgNga5fNlF/iZjG06hM3yofffp0ofKCDwSXx1GC4dI= +go.opentelemetry.io/otel v1.7.0 h1:Z2lA3Tdch0iDcrhJXDIlC94XE+bxok1F9B+4Lz/lGsM= go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= -go.opentelemetry.io/otel v1.8.0 h1:zcvBFizPbpa1q7FehvFiHbQwGzmPILebO0tyqIR5Djg= -go.opentelemetry.io/otel v1.8.0/go.mod h1:2pkj+iMj0o03Y+cW6/m8Y4WkRdYN3AvCXCnzRMp9yvM= go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.6.1/go.mod h1:NEu79Xo32iVb+0gVNV8PMd7GoWqnyDXRlj04yFjqz40= @@ -2419,38 +2469,40 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.7.0/go.mod h1 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.3.0/go.mod h1:QNX1aly8ehqqX1LEa6YniTU7VY9I6R3X/oPxhGdTceE= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.6.1/go.mod h1:DAKwdo06hFLc0U88O10x4xnb5sc7dDRDqRuiN+io8JE= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.7.0/go.mod h1:aFXT9Ng2seM9eizF+LfKiyPBGy8xIZKwhusC1gIu3hA= +go.opentelemetry.io/otel/exporters/prometheus v0.30.0 h1:YXo5ZY5nofaEYMCMTTMaRH2cLDZB8+0UGuk5RwMfIo0= go.opentelemetry.io/otel/exporters/prometheus v0.30.0/go.mod h1:qN5feW+0/d661KDtJuATEmHtw5bKBK7NSvNEP927zSs= -go.opentelemetry.io/otel/exporters/prometheus v0.31.0 h1:jwtnOGBM8dIty5AVZ+9ZCzZexCea3aVKmUfZAQcHqxs= -go.opentelemetry.io/otel/exporters/prometheus v0.31.0/go.mod h1:QarXIB8L79IwIPoNgG3A6zNvBgVmcppeFogV1d8612s= +go.opentelemetry.io/otel/internal/metric v0.27.0/go.mod h1:n1CVxRqKqYZtqyTh9U/onvKapPGv7y/rpyOTI+LFNzw= go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= +go.opentelemetry.io/otel/metric v0.27.0/go.mod h1:raXDJ7uP2/Jc0nVZWQjJtzoyssOYWu/+pjZqRzfvZ7g= go.opentelemetry.io/otel/metric v0.28.0/go.mod h1:TrzsfQAmQaB1PDcdhBauLMk7nyyg9hm+GoQq/ekE9Iw= +go.opentelemetry.io/otel/metric v0.30.0 h1:Hs8eQZ8aQgs0U49diZoaS6Uaxw3+bBE3lcMUKBFIk3c= go.opentelemetry.io/otel/metric v0.30.0/go.mod h1:/ShZ7+TS4dHzDFmfi1kSXMhMVubNoP0oIaBp70J6UXU= -go.opentelemetry.io/otel/metric v0.31.0 h1:6SiklT+gfWAwWUR0meEMxQBtihpiEs4c+vL9spDTqUs= -go.opentelemetry.io/otel/metric v0.31.0/go.mod h1:ohmwj9KTSIeBnDBm/ZwH2PSZxZzoOaG2xZeekTRzL5A= go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= go.opentelemetry.io/otel/sdk v1.6.1/go.mod h1:IVYrddmFZ+eJqu2k38qD3WezFR2pymCzm8tdxyh3R4E= +go.opentelemetry.io/otel/sdk v1.6.2/go.mod h1:M2r4VCm1Yurk4E+fWtP2p+QzFDHMFEqhGdbtQ7zRf+k= +go.opentelemetry.io/otel/sdk v1.7.0 h1:4OmStpcKVOfvDOgCt7UriAPtKolwIhxpnSNI/yK+1B0= go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU= -go.opentelemetry.io/otel/sdk v1.8.0 h1:xwu69/fNuwbSHWe/0PGS888RmjWY181OmcXDQKu7ZQk= -go.opentelemetry.io/otel/sdk v1.8.0/go.mod h1:uPSfc+yfDH2StDM/Rm35WE8gXSNdvCg023J6HeGNO0c= go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= +go.opentelemetry.io/otel/sdk/metric v0.30.0 h1:XTqQ4y3erR2Oj8xSAOL5ovO5011ch2ELg51z4fVkpME= go.opentelemetry.io/otel/sdk/metric v0.30.0/go.mod h1:8AKFRi5HyvTR0RRty3paN1aMC9HMT+NzcEhw/BLkLX8= -go.opentelemetry.io/otel/sdk/metric v0.31.0 h1:2sZx4R43ZMhJdteKAlKoHvRgrMp53V1aRxvEf5lCq8Q= -go.opentelemetry.io/otel/sdk/metric v0.31.0/go.mod h1:fl0SmNnX9mN9xgU6OLYLMBMrNAsaZQi7qBwprwO3abk= go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk= +go.opentelemetry.io/otel/trace v1.4.0/go.mod h1:uc3eRsqDfWs9R7b92xbQbU42/eTNz4N+gLP8qJCi4aE= +go.opentelemetry.io/otel/trace v1.4.1/go.mod h1:iYEVbroFCNut9QkwEczV9vMRPHNKSSwYZjulEtsmhFc= go.opentelemetry.io/otel/trace v1.6.0/go.mod h1:qs7BrU5cZ8dXQHBGxHMOxwME/27YH2qEp4/+tZLLwJE= go.opentelemetry.io/otel/trace v1.6.1/go.mod h1:RkFRM1m0puWIq10oxImnGEduNBzxiN7TXluRBtE+5j0= +go.opentelemetry.io/otel/trace v1.6.2/go.mod h1:RMqfw8Mclba1p7sXDmEDBvrB8jw65F6GOoN1fyyXTzk= +go.opentelemetry.io/otel/trace v1.6.3/go.mod h1:GNJQusJlUgZl9/TQBPKU/Y/ty+0iVB5fjhKeJGZPGFs= +go.opentelemetry.io/otel/trace v1.7.0 h1:O37Iogk1lEkMRXewVtZ1BBTVn5JEp8GrJvP92bJqC6o= go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= -go.opentelemetry.io/otel/trace v1.8.0 h1:cSy0DF9eGI5WIfNwZ1q2iUyGj00tGzP24dE1lOlHrfY= -go.opentelemetry.io/otel/trace v1.8.0/go.mod h1:0Bt3PXY8w+3pheS3hQUt+wow8b1ojPaTBoTCh2zIFI4= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg3NAKnUGl9YpQ= +go.opentelemetry.io/proto/otlp v0.12.0/go.mod h1:TsIjwGWIx5VFYv9KGVlOpxoBl5Dy+63SUguV7GGvlSQ= go.opentelemetry.io/proto/otlp v0.12.1/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.16.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.opentelemetry.io/proto/otlp v0.18.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -2478,20 +2530,28 @@ go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= +go.uber.org/zap v1.20.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190506204251-e1dfcc566284/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -2499,6 +2559,7 @@ golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -2506,8 +2567,8 @@ golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= @@ -2515,6 +2576,7 @@ golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= @@ -2522,11 +2584,9 @@ golang.org/x/crypto v0.0.0-20210915214749-c084706c2272/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20211202192323-5770296d904e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122 h1:NvGWuYG8dkDHFSKksI1P9faiVJ9rayE6l0+ouWVIDs8= golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= @@ -2545,6 +2605,7 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +golang.org/x/exp v0.0.0-20200901203048-c4f52b2c50aa/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200908183739-ae8ad444f925 h1:5XVKs2rlCg8EFyRcvO8/XFwYxh1oKJO1Q3X5vttIf9c= golang.org/x/exp v0.0.0-20200908183739-ae8ad444f925/go.mod h1:1phAWC201xIgDyaFpmDeZkgf70Q4Pd/CNqfRtVPtxNw= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= @@ -2589,6 +2650,7 @@ golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2620,7 +2682,6 @@ golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190921015927-1a5e07d1ff72/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -2636,8 +2697,8 @@ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -2654,33 +2715,31 @@ golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211020060615-d418f374d309/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211108170745-6635138e15ea/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211118161319-6a13c67c3ce4/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220105145211-5b0dc2dfae98/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e h1:TsQ7F31D3bUCLeqPT0u+yjp1guoArKaNKmCr22PYgTQ= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220526153639-5463443f8c37 h1:lUkvobShwKsOesNfWWlCS5q7fnbG1MEliIzwu886fn8= +golang.org/x/net v0.0.0-20220526153639-5463443f8c37/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2703,9 +2762,8 @@ golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2 h1:+jnHzr9VPj32ykQVai5DNahi9+NSp7yYuCsl5eAQtL0= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401 h1:zwrSfklXn0gxyLRX/aR+q6cgHbV/ItVyzbPlbA+dkAw= +golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2718,9 +2776,9 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220513210516-0976fa681c29 h1:w8s32wxx3sY+OjLlv9qltkLU5yvJzxjjgiHWLjdIcw4= golang.org/x/sync v0.0.0-20220513210516-0976fa681c29/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f h1:Ax0t5p6N38Ga0dThY21weqDEyz2oklo4IvDkpigvkD8= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2732,7 +2790,7 @@ golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2754,7 +2812,6 @@ golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626150813-e07cf5db2756/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2771,7 +2828,6 @@ golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191025021431-6c3a3bfe00ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2802,9 +2858,8 @@ golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200828194041-157a740278f4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2843,7 +2898,6 @@ golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210611083646-a4fc73990273/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2859,31 +2913,31 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220307203707-22a9840ba4d7/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810 h1:rHZQSjJdAI4Xf5Qzeh2bBc5YJIkPFVM6oDtMFYmgws0= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2905,17 +2959,18 @@ golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220411224347-583f2d630306 h1:+gHMid33q6pen7kv9xvT+JRinntgeXO2AeZVd0AWD3w= golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220609170525-579cf78fd858 h1:Dpdu/EMxGMFgq0CeYMh4fazTD2vtlZRYE7wyynxJb9U= -golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181112210238-4b1f3b6b1646/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -2963,6 +3018,7 @@ golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200203023011-6f24f261dadb/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -2976,6 +3032,7 @@ golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200527183253-8e7acdbce89d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -3012,9 +3069,8 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df h1:5Pf6pFKu98ODmgnpvkJ3kFUOQGGLIzLIkbzUHp47618= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz0MXhXXS1KgF41eUdBNvxK0= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.7.0/go.mod h1:L02bwd0sqlsvRv41G7wGWFCsVNZFv/k1xzGIxeANHGM= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= @@ -3040,6 +3096,7 @@ google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/ google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.25.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= @@ -3061,19 +3118,19 @@ google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdr google.golang.org/api v0.58.0/go.mod h1:cAbP2FsxoGVNwtgNAmmn3y5G1TWAiVYRmg4yku3lv+E= google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= google.golang.org/api v0.81.0/go.mod h1:FA6Mb/bZxj706H2j+j2d6mHEEaHBmbbWnkfvmorOCko= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.87.0 h1:pUQVF/F+X7Tl1lo4LJoJf5BOpjtmINU80p9XpYTU2p4= -google.golang.org/api v0.87.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.82.0 h1:h6EGeZuzhoKSS7BUznzkW+2wHZ+4Ubd6rsVvvh3dRkw= +google.golang.org/api v0.82.0/go.mod h1:Ld58BeTlL9DIYr2M2ajvoSqmGLei0BMn+kVBmkam1os= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -3117,8 +3174,10 @@ google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200528110217-3d3490e7e671/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200605102947-12044bf5ea91/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200726014623-da3ae01ef02d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -3144,7 +3203,6 @@ google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxH google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210630183607-d20f26d13c79/go.mod h1:yiaVoXHpRzHGyxV3o4DktVWY4mSUErTKaeEOq6C3t3U= google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= @@ -3162,6 +3220,8 @@ google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ6 google.golang.org/genproto v0.0.0-20211018162055-cf77aa76bad2/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= @@ -3179,17 +3239,14 @@ google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220524023933-508584e28198/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220718134204-073382fd740c h1:xDUAhRezFnKF6wopxkOfdWYvz2XCiRQzndyDdpwFgbc= -google.golang.org/genproto v0.0.0-20220718134204-073382fd740c/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220527130721-00d5c0f3be58 h1:a221mAAEAzq4Lz6ZWRkcS8ptb2mxoxYSt4N68aRyQHM= +google.golang.org/genproto v0.0.0-20220527130721-00d5c0f3be58/go.mod h1:yKyY4AMRwFiC8yMMNaMi+RkCnjZJt9LoWuvhXjMs+To= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -3213,6 +3270,7 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= @@ -3233,9 +3291,8 @@ google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ5 google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0 h1:9n77onPX5F3qfFCqjy9dhn8PbNQsIKeVU04J9G7umt8= google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0 h1:rQOsyJ/8+ufEDJd/Gdsz7HG220Mh9HAhFHRGnIjda0w= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -3252,6 +3309,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/DataDog/dd-trace-go.v1 v1.38.1 h1:nAKgcpJLXRHF56cKCP3bN8gTTQmmNAZFEblbyGKhKTo= +gopkg.in/DataDog/dd-trace-go.v1 v1.38.1/go.mod h1:GBhK4yaMJ1h329ivtKAqRNe1EZ944UnZwtz5lh7CnJc= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/statsd.v2 v2.0.0 h1:FXkZSCZIH17vLCO5sO2UucTHsH9pc+17F6pl3JVCwMc= @@ -3278,16 +3337,19 @@ gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4= gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/jinzhu/gorm.v1 v1.9.1/go.mod h1:56JJPUzbikvTVnoyP1nppSkbJ2L8sunqTBDY2fDrmFg= gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/olivere/elastic.v3 v3.0.75/go.mod h1:yDEuSnrM51Pc8dM5ov7U8aI/ToR3PG0llA8aRv2qmw0= +gopkg.in/olivere/elastic.v5 v5.0.84/go.mod h1:LXF6q9XNBxpMqrcgax95C6xyARXWbbCXUrtTxrNrxJI= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.4.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w= gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/telebot.v3 v3.0.0/go.mod h1:7rExV8/0mDDNu9epSrDm/8j22KLaActH1Tbee6YjzWg= @@ -3314,6 +3376,12 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/zorkian/go-datadog-api.v2 v2.30.0 h1:umQdVO0Ytx+kYadhuJNjFtDgIsIEBnKrOTvNuu8ClKI= gopkg.in/zorkian/go-datadog-api.v2 v2.30.0/go.mod h1:kx0CSMRpzEZfx/nFH62GLU4stZjparh/BRpM89t4XCQ= +gorm.io/driver/mysql v1.0.1/go.mod h1:KtqSthtg55lFp3S5kUXqlGaelnWpKitn4k1xZTnoiPw= +gorm.io/driver/postgres v1.0.0/go.mod h1:wtMFcOzmuA5QigNsgEIb7O5lhvH1tHAF1RbWmLWV4to= +gorm.io/driver/sqlserver v1.0.4/go.mod h1:ciEo5btfITTBCj9BkoUVDvgQbUdLWQNqdFY5OGuGnRg= +gorm.io/gorm v1.9.19/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= +gorm.io/gorm v1.20.0/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= +gorm.io/gorm v1.20.6/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/gotestsum v1.7.0/go.mod h1:V1m4Jw3eBerhI/A6qCxUE07RnCg7ACkKj9BYcAm09V8= @@ -3331,8 +3399,10 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +honnef.co/go/tools v0.2.0/go.mod h1:lPVVZ2BS5TfnjLyizF7o7hv7j9/L+8cZY2hLyjP9cGY= howett.net/plist v0.0.0-20181124034731-591f970eefbb h1:jhnBjNi9UFpfpl8YZhA9CrOqpnJdvzuiHsl/dnxl11M= howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= +k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= @@ -3340,23 +3410,24 @@ k8s.io/api v0.21.1/go.mod h1:FstGROTmsSHBarKc8bylzXih8BLNYTiS3TZcsoEDg2s= k8s.io/api v0.22.5/go.mod h1:mEhXyLaSD1qTOf40rRiKXkc+2iCem09rWLlFwhCEiAs= k8s.io/api v0.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8= k8s.io/api v0.24.0/go.mod h1:5Jl90IUrJHUJYEMANRURMiVvJ0g7Ax7r3R1bqO8zx8I= -k8s.io/api v0.24.3 h1:tt55QEmKd6L2k5DP6G/ZzdMQKvG5ro4H4teClqm0sTY= -k8s.io/api v0.24.3/go.mod h1:elGR/XSZrS7z7cSZPzVWaycpJuGIw57j9b95/1PdJNI= +k8s.io/api v0.24.1 h1:BjCMRDcyEYz03joa3K1+rbshwh1Ay6oB53+iUx2H8UY= +k8s.io/api v0.24.1/go.mod h1:JhoOvNiLXKTPQ60zh2g0ewpA+bnEYf5q44Flhquh4vQ= +k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= k8s.io/apimachinery v0.21.1/go.mod h1:jbreFvJo3ov9rj7eWT7+sYiRx+qZuCYXwWT1bcDswPY= -k8s.io/apimachinery v0.21.5/go.mod h1:3PfBV+4PPXNs0aueD+7fHcGyhdkFFYqXeshQtsKCi+4= k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= k8s.io/apimachinery v0.22.5/go.mod h1:xziclGKwuuJ2RM5/rSFQSYAj0zdbci3DH8kj+WvyN0U= k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= k8s.io/apimachinery v0.24.0/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= -k8s.io/apimachinery v0.24.3 h1:hrFiNSA2cBZqllakVYyH/VyEh4B581bQRmqATJSeQTg= -k8s.io/apimachinery v0.24.3/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= +k8s.io/apimachinery v0.24.1 h1:ShD4aDxTQKN5zNf8K1RQ2u98ELLdIW7jEnlO9uAMX/I= +k8s.io/apimachinery v0.24.1/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= k8s.io/apiserver v0.22.5/go.mod h1:s2WbtgZAkTKt679sYtSudEQrTGWUSQAPe6MupLnlmaQ= +k8s.io/client-go v0.17.0/go.mod h1:TYgR6EUHs6k45hb6KWjVD6jFZvJV4gHDikv/It0xz+k= k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= @@ -3364,8 +3435,8 @@ k8s.io/client-go v0.21.1/go.mod h1:/kEw4RgW+3xnBGzvp9IWxKSNA+lXn3A7AuH3gdOAzLs= k8s.io/client-go v0.22.5/go.mod h1:cs6yf/61q2T1SdQL5Rdcjg9J1ElXSwbjSrW2vFImM4Y= k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4= k8s.io/client-go v0.24.0/go.mod h1:VFPQET+cAFpYxh6Bq6f4xyMY80G6jKKktU6G0m00VDw= -k8s.io/client-go v0.24.3 h1:Nl1840+6p4JqkFWEW2LnMKU667BUxw03REfLAVhuKQY= -k8s.io/client-go v0.24.3/go.mod h1:AAovolf5Z9bY1wIg2FZ8LPQlEdKHjLI7ZD4rw920BJw= +k8s.io/client-go v0.24.1 h1:w1hNdI9PFrzu3OlovVeTnf4oHDt+FJLd9Ndluvnb42E= +k8s.io/client-go v0.24.1/go.mod h1:f1kIDqcEYmwXS/vTbbhopMUbhKp2JhOeVTfxgaCIlF8= k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= k8s.io/code-generator v0.21.1/go.mod h1:hUlps5+9QaTrKx+jiM4rmq7YmH8wPOIko64uZCHDh6Q= k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= @@ -3378,11 +3449,14 @@ k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= k8s.io/cri-api v0.23.1/go.mod h1:REJE3PSU0h/LOV1APBrupxrEJqnoxZC8KWzkBUHwrK4= +k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= @@ -3394,6 +3468,7 @@ k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.60.1 h1:VW25q3bZx9uE3vvdL6M8ezOX79vA2Aq1nEWLqNQclHc= k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE= @@ -3405,6 +3480,7 @@ k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdi k8s.io/kubelet v0.24.0 h1:fH+D6mSr4DGIeHp/O2+mCEJhkVq3Gpgv9BVOHI+GrWY= k8s.io/kubelet v0.24.0/go.mod h1:p3BBacmHTCMpUf+nluhlyzuGHmONKAspqCvpu9oPAyA= k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= +k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= @@ -3412,6 +3488,7 @@ k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/ k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc= k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +mellium.im/sasl v0.2.1/go.mod h1:ROaEDLQNuf9vjKqE1SrAfnsobm2YKXT1gnN1uDp1PjQ= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= @@ -3422,6 +3499,8 @@ sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyz sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 h1:kDi4JBNAsJWfz1aEXhO8Jg87JJaPNLh5tIzYHgStQ9Y= sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= +sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e h1:4Z09Hglb792X0kfOBBJUPFEyvVfQWrYT/l8h5EKA6JQ= +sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= diff --git a/processor/stream_processor/parser/sql.interp b/processor/stream_processor/parser/sql.interp new file mode 100644 index 000000000000..5715cebdcc30 --- /dev/null +++ b/processor/stream_processor/parser/sql.interp @@ -0,0 +1,87 @@ +token literal names: +null +null +',' +'(' +')' +';' +null +null +null +null +null +null +null +null +'=' +'>' +'<' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +'*' + +token symbolic names: +null +SPACE +COMMA +L_BRACKET +R_BRACKET +EOQ +K_SELECT +K_WHERE +K_WINDOW_TUMBLING +K_GROUP_BY +K_AND +K_OR +K_IS +K_LIKE +K_EQUAL +K_GREATER +K_LESS +K_LESS_EQUAL +K_GREATER_EQUAL +K_NOT_EQUAL +K_NULL +K_IS_NULL +K_IS_NOT_NULL +K_NOT +K_NOT_IN +K_IN +K_COUNT +K_MIN +K_MAX +K_AVG +IDENTIFIER +NUMERIC_LITERAL +STRING_LITERAL +STAR + +rule names: +sqlQuery +selectQuery +resultColumns +column +whereStatement +groupBy +avg +expr +comparisonOperator +literalValue + + +atn: +[4, 1, 33, 92, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 27, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 4, 2, 34, 8, 2, 11, 2, 12, 2, 35, 1, 2, 1, 2, 1, 2, 4, 2, 41, 8, 2, 11, 2, 12, 2, 42, 1, 2, 3, 2, 46, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 52, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 58, 8, 4, 1, 4, 3, 4, 61, 8, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 78, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 83, 8, 7, 10, 7, 12, 7, 86, 9, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 0, 1, 14, 10, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 0, 5, 1, 0, 26, 29, 1, 0, 21, 22, 1, 0, 10, 11, 2, 0, 12, 19, 24, 25, 1, 0, 31, 32, 91, 0, 20, 1, 0, 0, 0, 2, 23, 1, 0, 0, 0, 4, 45, 1, 0, 0, 0, 6, 47, 1, 0, 0, 0, 8, 60, 1, 0, 0, 0, 10, 62, 1, 0, 0, 0, 12, 65, 1, 0, 0, 0, 14, 77, 1, 0, 0, 0, 16, 87, 1, 0, 0, 0, 18, 89, 1, 0, 0, 0, 20, 21, 3, 2, 1, 0, 21, 22, 5, 0, 0, 1, 22, 1, 1, 0, 0, 0, 23, 24, 5, 6, 0, 0, 24, 26, 3, 4, 2, 0, 25, 27, 3, 8, 4, 0, 26, 25, 1, 0, 0, 0, 26, 27, 1, 0, 0, 0, 27, 28, 1, 0, 0, 0, 28, 29, 5, 5, 0, 0, 29, 3, 1, 0, 0, 0, 30, 33, 3, 6, 3, 0, 31, 32, 5, 2, 0, 0, 32, 34, 3, 6, 3, 0, 33, 31, 1, 0, 0, 0, 34, 35, 1, 0, 0, 0, 35, 33, 1, 0, 0, 0, 35, 36, 1, 0, 0, 0, 36, 46, 1, 0, 0, 0, 37, 40, 3, 12, 6, 0, 38, 39, 5, 2, 0, 0, 39, 41, 3, 12, 6, 0, 40, 38, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 40, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 46, 1, 0, 0, 0, 44, 46, 5, 33, 0, 0, 45, 30, 1, 0, 0, 0, 45, 37, 1, 0, 0, 0, 45, 44, 1, 0, 0, 0, 46, 5, 1, 0, 0, 0, 47, 48, 5, 30, 0, 0, 48, 7, 1, 0, 0, 0, 49, 50, 5, 7, 0, 0, 50, 52, 3, 14, 7, 0, 51, 49, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 61, 1, 0, 0, 0, 53, 54, 5, 8, 0, 0, 54, 57, 5, 31, 0, 0, 55, 56, 5, 7, 0, 0, 56, 58, 3, 14, 7, 0, 57, 55, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 61, 3, 10, 5, 0, 60, 51, 1, 0, 0, 0, 60, 53, 1, 0, 0, 0, 61, 9, 1, 0, 0, 0, 62, 63, 5, 9, 0, 0, 63, 64, 3, 6, 3, 0, 64, 11, 1, 0, 0, 0, 65, 66, 7, 0, 0, 0, 66, 67, 5, 3, 0, 0, 67, 68, 3, 6, 3, 0, 68, 69, 5, 4, 0, 0, 69, 13, 1, 0, 0, 0, 70, 71, 6, 7, -1, 0, 71, 72, 5, 30, 0, 0, 72, 73, 3, 16, 8, 0, 73, 74, 3, 18, 9, 0, 74, 78, 1, 0, 0, 0, 75, 76, 5, 30, 0, 0, 76, 78, 7, 1, 0, 0, 77, 70, 1, 0, 0, 0, 77, 75, 1, 0, 0, 0, 78, 84, 1, 0, 0, 0, 79, 80, 10, 2, 0, 0, 80, 81, 7, 2, 0, 0, 81, 83, 3, 14, 7, 3, 82, 79, 1, 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 15, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 88, 7, 3, 0, 0, 88, 17, 1, 0, 0, 0, 89, 90, 7, 4, 0, 0, 90, 19, 1, 0, 0, 0, 9, 26, 35, 42, 45, 51, 57, 60, 77, 84] \ No newline at end of file diff --git a/processor/stream_processor/parser/sql.tokens b/processor/stream_processor/parser/sql.tokens new file mode 100644 index 000000000000..5c4b5e8edba0 --- /dev/null +++ b/processor/stream_processor/parser/sql.tokens @@ -0,0 +1,41 @@ +SPACE=1 +COMMA=2 +L_BRACKET=3 +R_BRACKET=4 +EOQ=5 +K_SELECT=6 +K_WHERE=7 +K_WINDOW_TUMBLING=8 +K_GROUP_BY=9 +K_AND=10 +K_OR=11 +K_IS=12 +K_LIKE=13 +K_EQUAL=14 +K_GREATER=15 +K_LESS=16 +K_LESS_EQUAL=17 +K_GREATER_EQUAL=18 +K_NOT_EQUAL=19 +K_NULL=20 +K_IS_NULL=21 +K_IS_NOT_NULL=22 +K_NOT=23 +K_NOT_IN=24 +K_IN=25 +K_COUNT=26 +K_MIN=27 +K_MAX=28 +K_AVG=29 +IDENTIFIER=30 +NUMERIC_LITERAL=31 +STRING_LITERAL=32 +STAR=33 +','=2 +'('=3 +')'=4 +';'=5 +'='=14 +'>'=15 +'<'=16 +'*'=33 diff --git a/processor/stream_processor/parser/sqlLexer.interp b/processor/stream_processor/parser/sqlLexer.interp new file mode 100644 index 000000000000..424787f5f654 --- /dev/null +++ b/processor/stream_processor/parser/sqlLexer.interp @@ -0,0 +1,143 @@ +token literal names: +null +null +',' +'(' +')' +';' +null +null +null +null +null +null +null +null +'=' +'>' +'<' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +'*' + +token symbolic names: +null +SPACE +COMMA +L_BRACKET +R_BRACKET +EOQ +K_SELECT +K_WHERE +K_WINDOW_TUMBLING +K_GROUP_BY +K_AND +K_OR +K_IS +K_LIKE +K_EQUAL +K_GREATER +K_LESS +K_LESS_EQUAL +K_GREATER_EQUAL +K_NOT_EQUAL +K_NULL +K_IS_NULL +K_IS_NOT_NULL +K_NOT +K_NOT_IN +K_IN +K_COUNT +K_MIN +K_MAX +K_AVG +IDENTIFIER +NUMERIC_LITERAL +STRING_LITERAL +STAR + +rule names: +SPACE +COMMA +L_BRACKET +R_BRACKET +EOQ +K_SELECT +K_WHERE +K_WINDOW_TUMBLING +K_GROUP_BY +K_AND +K_OR +K_IS +K_LIKE +K_EQUAL +K_GREATER +K_LESS +K_LESS_EQUAL +K_GREATER_EQUAL +K_NOT_EQUAL +K_NULL +K_IS_NULL +K_IS_NOT_NULL +K_NOT +K_NOT_IN +K_IN +K_COUNT +K_MIN +K_MAX +K_AVG +IDENTIFIER +NUMERIC_LITERAL +STRING_LITERAL +STAR +DIGIT +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +X +Y +Z + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[4, 0, 33, 394, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 251, 8, 29, 10, 29, 12, 29, 254, 9, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 261, 8, 29, 10, 29, 12, 29, 264, 9, 29, 1, 29, 1, 29, 1, 29, 5, 29, 269, 8, 29, 10, 29, 12, 29, 272, 9, 29, 1, 29, 1, 29, 1, 29, 5, 29, 277, 8, 29, 10, 29, 12, 29, 280, 9, 29, 3, 29, 282, 8, 29, 1, 30, 4, 30, 285, 8, 30, 11, 30, 12, 30, 286, 1, 30, 1, 30, 5, 30, 291, 8, 30, 10, 30, 12, 30, 294, 9, 30, 3, 30, 296, 8, 30, 1, 30, 1, 30, 3, 30, 300, 8, 30, 1, 30, 4, 30, 303, 8, 30, 11, 30, 12, 30, 304, 3, 30, 307, 8, 30, 1, 30, 1, 30, 4, 30, 311, 8, 30, 11, 30, 12, 30, 312, 1, 30, 1, 30, 3, 30, 317, 8, 30, 1, 30, 4, 30, 320, 8, 30, 11, 30, 12, 30, 321, 3, 30, 324, 8, 30, 3, 30, 326, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 332, 8, 31, 10, 31, 12, 31, 335, 9, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 0, 0, 60, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 0, 69, 0, 71, 0, 73, 0, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 1, 0, 35, 3, 0, 9, 11, 13, 13, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 388, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 1, 121, 1, 0, 0, 0, 3, 125, 1, 0, 0, 0, 5, 127, 1, 0, 0, 0, 7, 129, 1, 0, 0, 0, 9, 131, 1, 0, 0, 0, 11, 133, 1, 0, 0, 0, 13, 140, 1, 0, 0, 0, 15, 146, 1, 0, 0, 0, 17, 162, 1, 0, 0, 0, 19, 171, 1, 0, 0, 0, 21, 175, 1, 0, 0, 0, 23, 178, 1, 0, 0, 0, 25, 181, 1, 0, 0, 0, 27, 186, 1, 0, 0, 0, 29, 188, 1, 0, 0, 0, 31, 190, 1, 0, 0, 0, 33, 192, 1, 0, 0, 0, 35, 195, 1, 0, 0, 0, 37, 198, 1, 0, 0, 0, 39, 201, 1, 0, 0, 0, 41, 206, 1, 0, 0, 0, 43, 210, 1, 0, 0, 0, 45, 216, 1, 0, 0, 0, 47, 220, 1, 0, 0, 0, 49, 225, 1, 0, 0, 0, 51, 228, 1, 0, 0, 0, 53, 234, 1, 0, 0, 0, 55, 238, 1, 0, 0, 0, 57, 242, 1, 0, 0, 0, 59, 281, 1, 0, 0, 0, 61, 325, 1, 0, 0, 0, 63, 327, 1, 0, 0, 0, 65, 338, 1, 0, 0, 0, 67, 340, 1, 0, 0, 0, 69, 342, 1, 0, 0, 0, 71, 344, 1, 0, 0, 0, 73, 346, 1, 0, 0, 0, 75, 348, 1, 0, 0, 0, 77, 350, 1, 0, 0, 0, 79, 352, 1, 0, 0, 0, 81, 354, 1, 0, 0, 0, 83, 356, 1, 0, 0, 0, 85, 358, 1, 0, 0, 0, 87, 360, 1, 0, 0, 0, 89, 362, 1, 0, 0, 0, 91, 364, 1, 0, 0, 0, 93, 366, 1, 0, 0, 0, 95, 368, 1, 0, 0, 0, 97, 370, 1, 0, 0, 0, 99, 372, 1, 0, 0, 0, 101, 374, 1, 0, 0, 0, 103, 376, 1, 0, 0, 0, 105, 378, 1, 0, 0, 0, 107, 380, 1, 0, 0, 0, 109, 382, 1, 0, 0, 0, 111, 384, 1, 0, 0, 0, 113, 386, 1, 0, 0, 0, 115, 388, 1, 0, 0, 0, 117, 390, 1, 0, 0, 0, 119, 392, 1, 0, 0, 0, 121, 122, 7, 0, 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 6, 0, 0, 0, 124, 2, 1, 0, 0, 0, 125, 126, 5, 44, 0, 0, 126, 4, 1, 0, 0, 0, 127, 128, 5, 40, 0, 0, 128, 6, 1, 0, 0, 0, 129, 130, 5, 41, 0, 0, 130, 8, 1, 0, 0, 0, 131, 132, 5, 59, 0, 0, 132, 10, 1, 0, 0, 0, 133, 134, 3, 105, 52, 0, 134, 135, 3, 77, 38, 0, 135, 136, 3, 91, 45, 0, 136, 137, 3, 77, 38, 0, 137, 138, 3, 73, 36, 0, 138, 139, 3, 107, 53, 0, 139, 12, 1, 0, 0, 0, 140, 141, 3, 113, 56, 0, 141, 142, 3, 83, 41, 0, 142, 143, 3, 77, 38, 0, 143, 144, 3, 103, 51, 0, 144, 145, 3, 77, 38, 0, 145, 14, 1, 0, 0, 0, 146, 147, 3, 113, 56, 0, 147, 148, 3, 85, 42, 0, 148, 149, 3, 95, 47, 0, 149, 150, 3, 75, 37, 0, 150, 151, 3, 97, 48, 0, 151, 152, 3, 113, 56, 0, 152, 153, 3, 1, 0, 0, 153, 154, 3, 107, 53, 0, 154, 155, 3, 109, 54, 0, 155, 156, 3, 93, 46, 0, 156, 157, 3, 71, 35, 0, 157, 158, 3, 91, 45, 0, 158, 159, 3, 85, 42, 0, 159, 160, 3, 95, 47, 0, 160, 161, 3, 81, 40, 0, 161, 16, 1, 0, 0, 0, 162, 163, 3, 81, 40, 0, 163, 164, 3, 103, 51, 0, 164, 165, 3, 97, 48, 0, 165, 166, 3, 109, 54, 0, 166, 167, 3, 99, 49, 0, 167, 168, 3, 1, 0, 0, 168, 169, 3, 71, 35, 0, 169, 170, 3, 117, 58, 0, 170, 18, 1, 0, 0, 0, 171, 172, 3, 69, 34, 0, 172, 173, 3, 95, 47, 0, 173, 174, 3, 75, 37, 0, 174, 20, 1, 0, 0, 0, 175, 176, 3, 97, 48, 0, 176, 177, 3, 103, 51, 0, 177, 22, 1, 0, 0, 0, 178, 179, 3, 85, 42, 0, 179, 180, 3, 105, 52, 0, 180, 24, 1, 0, 0, 0, 181, 182, 3, 91, 45, 0, 182, 183, 3, 85, 42, 0, 183, 184, 3, 89, 44, 0, 184, 185, 3, 77, 38, 0, 185, 26, 1, 0, 0, 0, 186, 187, 5, 61, 0, 0, 187, 28, 1, 0, 0, 0, 188, 189, 5, 62, 0, 0, 189, 30, 1, 0, 0, 0, 190, 191, 5, 60, 0, 0, 191, 32, 1, 0, 0, 0, 192, 193, 3, 31, 15, 0, 193, 194, 3, 27, 13, 0, 194, 34, 1, 0, 0, 0, 195, 196, 3, 29, 14, 0, 196, 197, 3, 27, 13, 0, 197, 36, 1, 0, 0, 0, 198, 199, 5, 33, 0, 0, 199, 200, 3, 27, 13, 0, 200, 38, 1, 0, 0, 0, 201, 202, 3, 95, 47, 0, 202, 203, 3, 109, 54, 0, 203, 204, 3, 91, 45, 0, 204, 205, 3, 91, 45, 0, 205, 40, 1, 0, 0, 0, 206, 207, 3, 23, 11, 0, 207, 208, 3, 1, 0, 0, 208, 209, 3, 39, 19, 0, 209, 42, 1, 0, 0, 0, 210, 211, 3, 23, 11, 0, 211, 212, 3, 1, 0, 0, 212, 213, 3, 45, 22, 0, 213, 214, 3, 1, 0, 0, 214, 215, 3, 39, 19, 0, 215, 44, 1, 0, 0, 0, 216, 217, 3, 95, 47, 0, 217, 218, 3, 97, 48, 0, 218, 219, 3, 107, 53, 0, 219, 46, 1, 0, 0, 0, 220, 221, 3, 45, 22, 0, 221, 222, 3, 1, 0, 0, 222, 223, 3, 85, 42, 0, 223, 224, 3, 95, 47, 0, 224, 48, 1, 0, 0, 0, 225, 226, 3, 85, 42, 0, 226, 227, 3, 95, 47, 0, 227, 50, 1, 0, 0, 0, 228, 229, 3, 73, 36, 0, 229, 230, 3, 97, 48, 0, 230, 231, 3, 109, 54, 0, 231, 232, 3, 95, 47, 0, 232, 233, 3, 107, 53, 0, 233, 52, 1, 0, 0, 0, 234, 235, 3, 93, 46, 0, 235, 236, 3, 85, 42, 0, 236, 237, 3, 95, 47, 0, 237, 54, 1, 0, 0, 0, 238, 239, 3, 93, 46, 0, 239, 240, 3, 69, 34, 0, 240, 241, 3, 115, 57, 0, 241, 56, 1, 0, 0, 0, 242, 243, 3, 69, 34, 0, 243, 244, 3, 111, 55, 0, 244, 245, 3, 81, 40, 0, 245, 58, 1, 0, 0, 0, 246, 252, 5, 34, 0, 0, 247, 251, 8, 1, 0, 0, 248, 249, 5, 34, 0, 0, 249, 251, 5, 34, 0, 0, 250, 247, 1, 0, 0, 0, 250, 248, 1, 0, 0, 0, 251, 254, 1, 0, 0, 0, 252, 250, 1, 0, 0, 0, 252, 253, 1, 0, 0, 0, 253, 255, 1, 0, 0, 0, 254, 252, 1, 0, 0, 0, 255, 282, 5, 34, 0, 0, 256, 262, 5, 96, 0, 0, 257, 261, 8, 2, 0, 0, 258, 259, 5, 96, 0, 0, 259, 261, 5, 96, 0, 0, 260, 257, 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 261, 264, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 265, 1, 0, 0, 0, 264, 262, 1, 0, 0, 0, 265, 282, 5, 96, 0, 0, 266, 270, 5, 91, 0, 0, 267, 269, 8, 3, 0, 0, 268, 267, 1, 0, 0, 0, 269, 272, 1, 0, 0, 0, 270, 268, 1, 0, 0, 0, 270, 271, 1, 0, 0, 0, 271, 273, 1, 0, 0, 0, 272, 270, 1, 0, 0, 0, 273, 282, 5, 93, 0, 0, 274, 278, 7, 4, 0, 0, 275, 277, 7, 5, 0, 0, 276, 275, 1, 0, 0, 0, 277, 280, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 282, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 246, 1, 0, 0, 0, 281, 256, 1, 0, 0, 0, 281, 266, 1, 0, 0, 0, 281, 274, 1, 0, 0, 0, 282, 60, 1, 0, 0, 0, 283, 285, 3, 67, 33, 0, 284, 283, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286, 284, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 295, 1, 0, 0, 0, 288, 292, 5, 46, 0, 0, 289, 291, 3, 67, 33, 0, 290, 289, 1, 0, 0, 0, 291, 294, 1, 0, 0, 0, 292, 290, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 296, 1, 0, 0, 0, 294, 292, 1, 0, 0, 0, 295, 288, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 306, 1, 0, 0, 0, 297, 299, 3, 77, 38, 0, 298, 300, 7, 6, 0, 0, 299, 298, 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 302, 1, 0, 0, 0, 301, 303, 3, 67, 33, 0, 302, 301, 1, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 307, 1, 0, 0, 0, 306, 297, 1, 0, 0, 0, 306, 307, 1, 0, 0, 0, 307, 326, 1, 0, 0, 0, 308, 310, 5, 46, 0, 0, 309, 311, 3, 67, 33, 0, 310, 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 310, 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 323, 1, 0, 0, 0, 314, 316, 3, 77, 38, 0, 315, 317, 7, 6, 0, 0, 316, 315, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 319, 1, 0, 0, 0, 318, 320, 3, 67, 33, 0, 319, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 324, 1, 0, 0, 0, 323, 314, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, 326, 1, 0, 0, 0, 325, 284, 1, 0, 0, 0, 325, 308, 1, 0, 0, 0, 326, 62, 1, 0, 0, 0, 327, 333, 5, 39, 0, 0, 328, 332, 8, 7, 0, 0, 329, 330, 5, 39, 0, 0, 330, 332, 5, 39, 0, 0, 331, 328, 1, 0, 0, 0, 331, 329, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 336, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 337, 5, 39, 0, 0, 337, 64, 1, 0, 0, 0, 338, 339, 5, 42, 0, 0, 339, 66, 1, 0, 0, 0, 340, 341, 7, 8, 0, 0, 341, 68, 1, 0, 0, 0, 342, 343, 7, 9, 0, 0, 343, 70, 1, 0, 0, 0, 344, 345, 7, 10, 0, 0, 345, 72, 1, 0, 0, 0, 346, 347, 7, 11, 0, 0, 347, 74, 1, 0, 0, 0, 348, 349, 7, 12, 0, 0, 349, 76, 1, 0, 0, 0, 350, 351, 7, 13, 0, 0, 351, 78, 1, 0, 0, 0, 352, 353, 7, 14, 0, 0, 353, 80, 1, 0, 0, 0, 354, 355, 7, 15, 0, 0, 355, 82, 1, 0, 0, 0, 356, 357, 7, 16, 0, 0, 357, 84, 1, 0, 0, 0, 358, 359, 7, 17, 0, 0, 359, 86, 1, 0, 0, 0, 360, 361, 7, 18, 0, 0, 361, 88, 1, 0, 0, 0, 362, 363, 7, 19, 0, 0, 363, 90, 1, 0, 0, 0, 364, 365, 7, 20, 0, 0, 365, 92, 1, 0, 0, 0, 366, 367, 7, 21, 0, 0, 367, 94, 1, 0, 0, 0, 368, 369, 7, 22, 0, 0, 369, 96, 1, 0, 0, 0, 370, 371, 7, 23, 0, 0, 371, 98, 1, 0, 0, 0, 372, 373, 7, 24, 0, 0, 373, 100, 1, 0, 0, 0, 374, 375, 7, 25, 0, 0, 375, 102, 1, 0, 0, 0, 376, 377, 7, 26, 0, 0, 377, 104, 1, 0, 0, 0, 378, 379, 7, 27, 0, 0, 379, 106, 1, 0, 0, 0, 380, 381, 7, 28, 0, 0, 381, 108, 1, 0, 0, 0, 382, 383, 7, 29, 0, 0, 383, 110, 1, 0, 0, 0, 384, 385, 7, 30, 0, 0, 385, 112, 1, 0, 0, 0, 386, 387, 7, 31, 0, 0, 387, 114, 1, 0, 0, 0, 388, 389, 7, 32, 0, 0, 389, 116, 1, 0, 0, 0, 390, 391, 7, 33, 0, 0, 391, 118, 1, 0, 0, 0, 392, 393, 7, 34, 0, 0, 393, 120, 1, 0, 0, 0, 21, 0, 250, 252, 260, 262, 270, 278, 281, 286, 292, 295, 299, 304, 306, 312, 316, 321, 323, 325, 331, 333, 1, 0, 1, 0] \ No newline at end of file diff --git a/processor/stream_processor/parser/sqlLexer.tokens b/processor/stream_processor/parser/sqlLexer.tokens new file mode 100644 index 000000000000..5c4b5e8edba0 --- /dev/null +++ b/processor/stream_processor/parser/sqlLexer.tokens @@ -0,0 +1,41 @@ +SPACE=1 +COMMA=2 +L_BRACKET=3 +R_BRACKET=4 +EOQ=5 +K_SELECT=6 +K_WHERE=7 +K_WINDOW_TUMBLING=8 +K_GROUP_BY=9 +K_AND=10 +K_OR=11 +K_IS=12 +K_LIKE=13 +K_EQUAL=14 +K_GREATER=15 +K_LESS=16 +K_LESS_EQUAL=17 +K_GREATER_EQUAL=18 +K_NOT_EQUAL=19 +K_NULL=20 +K_IS_NULL=21 +K_IS_NOT_NULL=22 +K_NOT=23 +K_NOT_IN=24 +K_IN=25 +K_COUNT=26 +K_MIN=27 +K_MAX=28 +K_AVG=29 +IDENTIFIER=30 +NUMERIC_LITERAL=31 +STRING_LITERAL=32 +STAR=33 +','=2 +'('=3 +')'=4 +';'=5 +'='=14 +'>'=15 +'<'=16 +'*'=33 diff --git a/processor/stream_processor/parser/sql_base_listener.go b/processor/stream_processor/parser/sql_base_listener.go new file mode 100644 index 000000000000..eab0cc0960f8 --- /dev/null +++ b/processor/stream_processor/parser/sql_base_listener.go @@ -0,0 +1,82 @@ +// Code generated from sql.g4 by ANTLR 4.10.1. DO NOT EDIT. + +package parser // sql + +import "github.com/antlr/antlr4/runtime/Go/antlr" + +// BasesqlListener is a complete listener for a parse tree produced by sqlParser. +type BasesqlListener struct{} + +var _ sqlListener = &BasesqlListener{} + +// VisitTerminal is called when a terminal node is visited. +func (s *BasesqlListener) VisitTerminal(node antlr.TerminalNode) {} + +// VisitErrorNode is called when an error node is visited. +func (s *BasesqlListener) VisitErrorNode(node antlr.ErrorNode) {} + +// EnterEveryRule is called when any rule is entered. +func (s *BasesqlListener) EnterEveryRule(ctx antlr.ParserRuleContext) {} + +// ExitEveryRule is called when any rule is exited. +func (s *BasesqlListener) ExitEveryRule(ctx antlr.ParserRuleContext) {} + +// EnterSqlQuery is called when production sqlQuery is entered. +func (s *BasesqlListener) EnterSqlQuery(ctx *SqlQueryContext) {} + +// ExitSqlQuery is called when production sqlQuery is exited. +func (s *BasesqlListener) ExitSqlQuery(ctx *SqlQueryContext) {} + +// EnterSelectQuery is called when production selectQuery is entered. +func (s *BasesqlListener) EnterSelectQuery(ctx *SelectQueryContext) {} + +// ExitSelectQuery is called when production selectQuery is exited. +func (s *BasesqlListener) ExitSelectQuery(ctx *SelectQueryContext) {} + +// EnterResultColumns is called when production resultColumns is entered. +func (s *BasesqlListener) EnterResultColumns(ctx *ResultColumnsContext) {} + +// ExitResultColumns is called when production resultColumns is exited. +func (s *BasesqlListener) ExitResultColumns(ctx *ResultColumnsContext) {} + +// EnterColumn is called when production column is entered. +func (s *BasesqlListener) EnterColumn(ctx *ColumnContext) {} + +// ExitColumn is called when production column is exited. +func (s *BasesqlListener) ExitColumn(ctx *ColumnContext) {} + +// EnterWhereStatement is called when production whereStatement is entered. +func (s *BasesqlListener) EnterWhereStatement(ctx *WhereStatementContext) {} + +// ExitWhereStatement is called when production whereStatement is exited. +func (s *BasesqlListener) ExitWhereStatement(ctx *WhereStatementContext) {} + +// EnterGroupBy is called when production groupBy is entered. +func (s *BasesqlListener) EnterGroupBy(ctx *GroupByContext) {} + +// ExitGroupBy is called when production groupBy is exited. +func (s *BasesqlListener) ExitGroupBy(ctx *GroupByContext) {} + +// EnterAvg is called when production avg is entered. +func (s *BasesqlListener) EnterAvg(ctx *AvgContext) {} + +// ExitAvg is called when production avg is exited. +func (s *BasesqlListener) ExitAvg(ctx *AvgContext) {} + +// EnterExpr is called when production expr is entered. +func (s *BasesqlListener) EnterExpr(ctx *ExprContext) {} + +// ExitExpr is called when production expr is exited. +func (s *BasesqlListener) ExitExpr(ctx *ExprContext) {} + +// EnterComparisonOperator is called when production comparisonOperator is entered. +func (s *BasesqlListener) EnterComparisonOperator(ctx *ComparisonOperatorContext) {} + +// ExitComparisonOperator is called when production comparisonOperator is exited. +func (s *BasesqlListener) ExitComparisonOperator(ctx *ComparisonOperatorContext) {} + +// EnterLiteralValue is called when production literalValue is entered. +func (s *BasesqlListener) EnterLiteralValue(ctx *LiteralValueContext) {} + +// ExitLiteralValue is called when production literalValue is exited. +func (s *BasesqlListener) ExitLiteralValue(ctx *LiteralValueContext) {} diff --git a/processor/stream_processor/parser/sql_lexer.go b/processor/stream_processor/parser/sql_lexer.go new file mode 100644 index 000000000000..17f65aaa0567 --- /dev/null +++ b/processor/stream_processor/parser/sql_lexer.go @@ -0,0 +1,321 @@ +// Code generated from sql.g4 by ANTLR 4.10.1. DO NOT EDIT. + +package parser + +import ( + "fmt" + "sync" + "unicode" + + "github.com/antlr/antlr4/runtime/Go/antlr" +) + +// Suppress unused import error +var _ = fmt.Printf +var _ = sync.Once{} +var _ = unicode.IsLetter + +type sqlLexer struct { + *antlr.BaseLexer + channelNames []string + modeNames []string + // TODO: EOF string +} + +var sqllexerLexerStaticData struct { + once sync.Once + serializedATN []int32 + channelNames []string + modeNames []string + literalNames []string + symbolicNames []string + ruleNames []string + predictionContextCache *antlr.PredictionContextCache + atn *antlr.ATN + decisionToDFA []*antlr.DFA +} + +func sqllexerLexerInit() { + staticData := &sqllexerLexerStaticData + staticData.channelNames = []string{ + "DEFAULT_TOKEN_CHANNEL", "HIDDEN", + } + staticData.modeNames = []string{ + "DEFAULT_MODE", + } + staticData.literalNames = []string{ + "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", "", + "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "'*'", + } + staticData.symbolicNames = []string{ + "", "SPACE", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", "K_WHERE", + "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", "K_LIKE", + "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", + "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", + "K_IN", "K_COUNT", "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", "NUMERIC_LITERAL", + "STRING_LITERAL", "STAR", + } + staticData.ruleNames = []string{ + "SPACE", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", "K_WHERE", + "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", "K_LIKE", + "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", + "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", + "K_IN", "K_COUNT", "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", "NUMERIC_LITERAL", + "STRING_LITERAL", "STAR", "DIGIT", "A", "B", "C", "D", "E", "F", "G", + "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", + "V", "W", "X", "Y", "Z", + } + staticData.predictionContextCache = antlr.NewPredictionContextCache() + staticData.serializedATN = []int32{ + 4, 0, 33, 394, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, + 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, + 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, + 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, + 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, + 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, + 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, + 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, + 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, + 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, + 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, + 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, + 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, + 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, + 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, + 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, + 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, + 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, + 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, + 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, + 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, + 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, + 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, + 29, 1, 29, 5, 29, 251, 8, 29, 10, 29, 12, 29, 254, 9, 29, 1, 29, 1, 29, + 1, 29, 1, 29, 1, 29, 5, 29, 261, 8, 29, 10, 29, 12, 29, 264, 9, 29, 1, + 29, 1, 29, 1, 29, 5, 29, 269, 8, 29, 10, 29, 12, 29, 272, 9, 29, 1, 29, + 1, 29, 1, 29, 5, 29, 277, 8, 29, 10, 29, 12, 29, 280, 9, 29, 3, 29, 282, + 8, 29, 1, 30, 4, 30, 285, 8, 30, 11, 30, 12, 30, 286, 1, 30, 1, 30, 5, + 30, 291, 8, 30, 10, 30, 12, 30, 294, 9, 30, 3, 30, 296, 8, 30, 1, 30, 1, + 30, 3, 30, 300, 8, 30, 1, 30, 4, 30, 303, 8, 30, 11, 30, 12, 30, 304, 3, + 30, 307, 8, 30, 1, 30, 1, 30, 4, 30, 311, 8, 30, 11, 30, 12, 30, 312, 1, + 30, 1, 30, 3, 30, 317, 8, 30, 1, 30, 4, 30, 320, 8, 30, 11, 30, 12, 30, + 321, 3, 30, 324, 8, 30, 3, 30, 326, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, + 5, 31, 332, 8, 31, 10, 31, 12, 31, 335, 9, 31, 1, 31, 1, 31, 1, 32, 1, + 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, + 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, + 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, + 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, + 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, + 1, 59, 1, 59, 0, 0, 60, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, + 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, + 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, + 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 0, 69, 0, 71, + 0, 73, 0, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, + 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, + 0, 113, 0, 115, 0, 117, 0, 119, 0, 1, 0, 35, 3, 0, 9, 11, 13, 13, 32, 32, + 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, + 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, + 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, + 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, + 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, + 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, + 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, + 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, + 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, + 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, + 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 388, 0, 1, 1, + 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, + 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, + 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, + 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, + 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, + 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, + 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, + 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, + 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 1, 121, 1, 0, 0, 0, 3, 125, 1, 0, 0, 0, + 5, 127, 1, 0, 0, 0, 7, 129, 1, 0, 0, 0, 9, 131, 1, 0, 0, 0, 11, 133, 1, + 0, 0, 0, 13, 140, 1, 0, 0, 0, 15, 146, 1, 0, 0, 0, 17, 162, 1, 0, 0, 0, + 19, 171, 1, 0, 0, 0, 21, 175, 1, 0, 0, 0, 23, 178, 1, 0, 0, 0, 25, 181, + 1, 0, 0, 0, 27, 186, 1, 0, 0, 0, 29, 188, 1, 0, 0, 0, 31, 190, 1, 0, 0, + 0, 33, 192, 1, 0, 0, 0, 35, 195, 1, 0, 0, 0, 37, 198, 1, 0, 0, 0, 39, 201, + 1, 0, 0, 0, 41, 206, 1, 0, 0, 0, 43, 210, 1, 0, 0, 0, 45, 216, 1, 0, 0, + 0, 47, 220, 1, 0, 0, 0, 49, 225, 1, 0, 0, 0, 51, 228, 1, 0, 0, 0, 53, 234, + 1, 0, 0, 0, 55, 238, 1, 0, 0, 0, 57, 242, 1, 0, 0, 0, 59, 281, 1, 0, 0, + 0, 61, 325, 1, 0, 0, 0, 63, 327, 1, 0, 0, 0, 65, 338, 1, 0, 0, 0, 67, 340, + 1, 0, 0, 0, 69, 342, 1, 0, 0, 0, 71, 344, 1, 0, 0, 0, 73, 346, 1, 0, 0, + 0, 75, 348, 1, 0, 0, 0, 77, 350, 1, 0, 0, 0, 79, 352, 1, 0, 0, 0, 81, 354, + 1, 0, 0, 0, 83, 356, 1, 0, 0, 0, 85, 358, 1, 0, 0, 0, 87, 360, 1, 0, 0, + 0, 89, 362, 1, 0, 0, 0, 91, 364, 1, 0, 0, 0, 93, 366, 1, 0, 0, 0, 95, 368, + 1, 0, 0, 0, 97, 370, 1, 0, 0, 0, 99, 372, 1, 0, 0, 0, 101, 374, 1, 0, 0, + 0, 103, 376, 1, 0, 0, 0, 105, 378, 1, 0, 0, 0, 107, 380, 1, 0, 0, 0, 109, + 382, 1, 0, 0, 0, 111, 384, 1, 0, 0, 0, 113, 386, 1, 0, 0, 0, 115, 388, + 1, 0, 0, 0, 117, 390, 1, 0, 0, 0, 119, 392, 1, 0, 0, 0, 121, 122, 7, 0, + 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 6, 0, 0, 0, 124, 2, 1, 0, 0, 0, 125, + 126, 5, 44, 0, 0, 126, 4, 1, 0, 0, 0, 127, 128, 5, 40, 0, 0, 128, 6, 1, + 0, 0, 0, 129, 130, 5, 41, 0, 0, 130, 8, 1, 0, 0, 0, 131, 132, 5, 59, 0, + 0, 132, 10, 1, 0, 0, 0, 133, 134, 3, 105, 52, 0, 134, 135, 3, 77, 38, 0, + 135, 136, 3, 91, 45, 0, 136, 137, 3, 77, 38, 0, 137, 138, 3, 73, 36, 0, + 138, 139, 3, 107, 53, 0, 139, 12, 1, 0, 0, 0, 140, 141, 3, 113, 56, 0, + 141, 142, 3, 83, 41, 0, 142, 143, 3, 77, 38, 0, 143, 144, 3, 103, 51, 0, + 144, 145, 3, 77, 38, 0, 145, 14, 1, 0, 0, 0, 146, 147, 3, 113, 56, 0, 147, + 148, 3, 85, 42, 0, 148, 149, 3, 95, 47, 0, 149, 150, 3, 75, 37, 0, 150, + 151, 3, 97, 48, 0, 151, 152, 3, 113, 56, 0, 152, 153, 3, 1, 0, 0, 153, + 154, 3, 107, 53, 0, 154, 155, 3, 109, 54, 0, 155, 156, 3, 93, 46, 0, 156, + 157, 3, 71, 35, 0, 157, 158, 3, 91, 45, 0, 158, 159, 3, 85, 42, 0, 159, + 160, 3, 95, 47, 0, 160, 161, 3, 81, 40, 0, 161, 16, 1, 0, 0, 0, 162, 163, + 3, 81, 40, 0, 163, 164, 3, 103, 51, 0, 164, 165, 3, 97, 48, 0, 165, 166, + 3, 109, 54, 0, 166, 167, 3, 99, 49, 0, 167, 168, 3, 1, 0, 0, 168, 169, + 3, 71, 35, 0, 169, 170, 3, 117, 58, 0, 170, 18, 1, 0, 0, 0, 171, 172, 3, + 69, 34, 0, 172, 173, 3, 95, 47, 0, 173, 174, 3, 75, 37, 0, 174, 20, 1, + 0, 0, 0, 175, 176, 3, 97, 48, 0, 176, 177, 3, 103, 51, 0, 177, 22, 1, 0, + 0, 0, 178, 179, 3, 85, 42, 0, 179, 180, 3, 105, 52, 0, 180, 24, 1, 0, 0, + 0, 181, 182, 3, 91, 45, 0, 182, 183, 3, 85, 42, 0, 183, 184, 3, 89, 44, + 0, 184, 185, 3, 77, 38, 0, 185, 26, 1, 0, 0, 0, 186, 187, 5, 61, 0, 0, + 187, 28, 1, 0, 0, 0, 188, 189, 5, 62, 0, 0, 189, 30, 1, 0, 0, 0, 190, 191, + 5, 60, 0, 0, 191, 32, 1, 0, 0, 0, 192, 193, 3, 31, 15, 0, 193, 194, 3, + 27, 13, 0, 194, 34, 1, 0, 0, 0, 195, 196, 3, 29, 14, 0, 196, 197, 3, 27, + 13, 0, 197, 36, 1, 0, 0, 0, 198, 199, 5, 33, 0, 0, 199, 200, 3, 27, 13, + 0, 200, 38, 1, 0, 0, 0, 201, 202, 3, 95, 47, 0, 202, 203, 3, 109, 54, 0, + 203, 204, 3, 91, 45, 0, 204, 205, 3, 91, 45, 0, 205, 40, 1, 0, 0, 0, 206, + 207, 3, 23, 11, 0, 207, 208, 3, 1, 0, 0, 208, 209, 3, 39, 19, 0, 209, 42, + 1, 0, 0, 0, 210, 211, 3, 23, 11, 0, 211, 212, 3, 1, 0, 0, 212, 213, 3, + 45, 22, 0, 213, 214, 3, 1, 0, 0, 214, 215, 3, 39, 19, 0, 215, 44, 1, 0, + 0, 0, 216, 217, 3, 95, 47, 0, 217, 218, 3, 97, 48, 0, 218, 219, 3, 107, + 53, 0, 219, 46, 1, 0, 0, 0, 220, 221, 3, 45, 22, 0, 221, 222, 3, 1, 0, + 0, 222, 223, 3, 85, 42, 0, 223, 224, 3, 95, 47, 0, 224, 48, 1, 0, 0, 0, + 225, 226, 3, 85, 42, 0, 226, 227, 3, 95, 47, 0, 227, 50, 1, 0, 0, 0, 228, + 229, 3, 73, 36, 0, 229, 230, 3, 97, 48, 0, 230, 231, 3, 109, 54, 0, 231, + 232, 3, 95, 47, 0, 232, 233, 3, 107, 53, 0, 233, 52, 1, 0, 0, 0, 234, 235, + 3, 93, 46, 0, 235, 236, 3, 85, 42, 0, 236, 237, 3, 95, 47, 0, 237, 54, + 1, 0, 0, 0, 238, 239, 3, 93, 46, 0, 239, 240, 3, 69, 34, 0, 240, 241, 3, + 115, 57, 0, 241, 56, 1, 0, 0, 0, 242, 243, 3, 69, 34, 0, 243, 244, 3, 111, + 55, 0, 244, 245, 3, 81, 40, 0, 245, 58, 1, 0, 0, 0, 246, 252, 5, 34, 0, + 0, 247, 251, 8, 1, 0, 0, 248, 249, 5, 34, 0, 0, 249, 251, 5, 34, 0, 0, + 250, 247, 1, 0, 0, 0, 250, 248, 1, 0, 0, 0, 251, 254, 1, 0, 0, 0, 252, + 250, 1, 0, 0, 0, 252, 253, 1, 0, 0, 0, 253, 255, 1, 0, 0, 0, 254, 252, + 1, 0, 0, 0, 255, 282, 5, 34, 0, 0, 256, 262, 5, 96, 0, 0, 257, 261, 8, + 2, 0, 0, 258, 259, 5, 96, 0, 0, 259, 261, 5, 96, 0, 0, 260, 257, 1, 0, + 0, 0, 260, 258, 1, 0, 0, 0, 261, 264, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, + 262, 263, 1, 0, 0, 0, 263, 265, 1, 0, 0, 0, 264, 262, 1, 0, 0, 0, 265, + 282, 5, 96, 0, 0, 266, 270, 5, 91, 0, 0, 267, 269, 8, 3, 0, 0, 268, 267, + 1, 0, 0, 0, 269, 272, 1, 0, 0, 0, 270, 268, 1, 0, 0, 0, 270, 271, 1, 0, + 0, 0, 271, 273, 1, 0, 0, 0, 272, 270, 1, 0, 0, 0, 273, 282, 5, 93, 0, 0, + 274, 278, 7, 4, 0, 0, 275, 277, 7, 5, 0, 0, 276, 275, 1, 0, 0, 0, 277, + 280, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 282, + 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 246, 1, 0, 0, 0, 281, 256, 1, 0, + 0, 0, 281, 266, 1, 0, 0, 0, 281, 274, 1, 0, 0, 0, 282, 60, 1, 0, 0, 0, + 283, 285, 3, 67, 33, 0, 284, 283, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286, + 284, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 295, 1, 0, 0, 0, 288, 292, + 5, 46, 0, 0, 289, 291, 3, 67, 33, 0, 290, 289, 1, 0, 0, 0, 291, 294, 1, + 0, 0, 0, 292, 290, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 296, 1, 0, 0, + 0, 294, 292, 1, 0, 0, 0, 295, 288, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, + 306, 1, 0, 0, 0, 297, 299, 3, 77, 38, 0, 298, 300, 7, 6, 0, 0, 299, 298, + 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 302, 1, 0, 0, 0, 301, 303, 3, 67, + 33, 0, 302, 301, 1, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, + 304, 305, 1, 0, 0, 0, 305, 307, 1, 0, 0, 0, 306, 297, 1, 0, 0, 0, 306, + 307, 1, 0, 0, 0, 307, 326, 1, 0, 0, 0, 308, 310, 5, 46, 0, 0, 309, 311, + 3, 67, 33, 0, 310, 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 310, 1, + 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 323, 1, 0, 0, 0, 314, 316, 3, 77, 38, + 0, 315, 317, 7, 6, 0, 0, 316, 315, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, + 319, 1, 0, 0, 0, 318, 320, 3, 67, 33, 0, 319, 318, 1, 0, 0, 0, 320, 321, + 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 324, 1, 0, + 0, 0, 323, 314, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, 326, 1, 0, 0, 0, + 325, 284, 1, 0, 0, 0, 325, 308, 1, 0, 0, 0, 326, 62, 1, 0, 0, 0, 327, 333, + 5, 39, 0, 0, 328, 332, 8, 7, 0, 0, 329, 330, 5, 39, 0, 0, 330, 332, 5, + 39, 0, 0, 331, 328, 1, 0, 0, 0, 331, 329, 1, 0, 0, 0, 332, 335, 1, 0, 0, + 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 336, 1, 0, 0, 0, 335, + 333, 1, 0, 0, 0, 336, 337, 5, 39, 0, 0, 337, 64, 1, 0, 0, 0, 338, 339, + 5, 42, 0, 0, 339, 66, 1, 0, 0, 0, 340, 341, 7, 8, 0, 0, 341, 68, 1, 0, + 0, 0, 342, 343, 7, 9, 0, 0, 343, 70, 1, 0, 0, 0, 344, 345, 7, 10, 0, 0, + 345, 72, 1, 0, 0, 0, 346, 347, 7, 11, 0, 0, 347, 74, 1, 0, 0, 0, 348, 349, + 7, 12, 0, 0, 349, 76, 1, 0, 0, 0, 350, 351, 7, 13, 0, 0, 351, 78, 1, 0, + 0, 0, 352, 353, 7, 14, 0, 0, 353, 80, 1, 0, 0, 0, 354, 355, 7, 15, 0, 0, + 355, 82, 1, 0, 0, 0, 356, 357, 7, 16, 0, 0, 357, 84, 1, 0, 0, 0, 358, 359, + 7, 17, 0, 0, 359, 86, 1, 0, 0, 0, 360, 361, 7, 18, 0, 0, 361, 88, 1, 0, + 0, 0, 362, 363, 7, 19, 0, 0, 363, 90, 1, 0, 0, 0, 364, 365, 7, 20, 0, 0, + 365, 92, 1, 0, 0, 0, 366, 367, 7, 21, 0, 0, 367, 94, 1, 0, 0, 0, 368, 369, + 7, 22, 0, 0, 369, 96, 1, 0, 0, 0, 370, 371, 7, 23, 0, 0, 371, 98, 1, 0, + 0, 0, 372, 373, 7, 24, 0, 0, 373, 100, 1, 0, 0, 0, 374, 375, 7, 25, 0, + 0, 375, 102, 1, 0, 0, 0, 376, 377, 7, 26, 0, 0, 377, 104, 1, 0, 0, 0, 378, + 379, 7, 27, 0, 0, 379, 106, 1, 0, 0, 0, 380, 381, 7, 28, 0, 0, 381, 108, + 1, 0, 0, 0, 382, 383, 7, 29, 0, 0, 383, 110, 1, 0, 0, 0, 384, 385, 7, 30, + 0, 0, 385, 112, 1, 0, 0, 0, 386, 387, 7, 31, 0, 0, 387, 114, 1, 0, 0, 0, + 388, 389, 7, 32, 0, 0, 389, 116, 1, 0, 0, 0, 390, 391, 7, 33, 0, 0, 391, + 118, 1, 0, 0, 0, 392, 393, 7, 34, 0, 0, 393, 120, 1, 0, 0, 0, 21, 0, 250, + 252, 260, 262, 270, 278, 281, 286, 292, 295, 299, 304, 306, 312, 316, 321, + 323, 325, 331, 333, 1, 0, 1, 0, + } + deserializer := antlr.NewATNDeserializer(nil) + staticData.atn = deserializer.Deserialize(staticData.serializedATN) + atn := staticData.atn + staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) + decisionToDFA := staticData.decisionToDFA + for index, state := range atn.DecisionToState { + decisionToDFA[index] = antlr.NewDFA(state, index) + } +} + +// sqlLexerInit initializes any static state used to implement sqlLexer. By default the +// static state used to implement the lexer is lazily initialized during the first call to +// NewsqlLexer(). You can call this function if you wish to initialize the static state ahead +// of time. +func SqlLexerInit() { + staticData := &sqllexerLexerStaticData + staticData.once.Do(sqllexerLexerInit) +} + +// NewsqlLexer produces a new lexer instance for the optional input antlr.CharStream. +func NewsqlLexer(input antlr.CharStream) *sqlLexer { + SqlLexerInit() + l := new(sqlLexer) + l.BaseLexer = antlr.NewBaseLexer(input) + staticData := &sqllexerLexerStaticData + l.Interpreter = antlr.NewLexerATNSimulator(l, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) + l.channelNames = staticData.channelNames + l.modeNames = staticData.modeNames + l.RuleNames = staticData.ruleNames + l.LiteralNames = staticData.literalNames + l.SymbolicNames = staticData.symbolicNames + l.GrammarFileName = "sql.g4" + // TODO: l.EOF = antlr.TokenEOF + + return l +} + +// sqlLexer tokens. +const ( + sqlLexerSPACE = 1 + sqlLexerCOMMA = 2 + sqlLexerL_BRACKET = 3 + sqlLexerR_BRACKET = 4 + sqlLexerEOQ = 5 + sqlLexerK_SELECT = 6 + sqlLexerK_WHERE = 7 + sqlLexerK_WINDOW_TUMBLING = 8 + sqlLexerK_GROUP_BY = 9 + sqlLexerK_AND = 10 + sqlLexerK_OR = 11 + sqlLexerK_IS = 12 + sqlLexerK_LIKE = 13 + sqlLexerK_EQUAL = 14 + sqlLexerK_GREATER = 15 + sqlLexerK_LESS = 16 + sqlLexerK_LESS_EQUAL = 17 + sqlLexerK_GREATER_EQUAL = 18 + sqlLexerK_NOT_EQUAL = 19 + sqlLexerK_NULL = 20 + sqlLexerK_IS_NULL = 21 + sqlLexerK_IS_NOT_NULL = 22 + sqlLexerK_NOT = 23 + sqlLexerK_NOT_IN = 24 + sqlLexerK_IN = 25 + sqlLexerK_COUNT = 26 + sqlLexerK_MIN = 27 + sqlLexerK_MAX = 28 + sqlLexerK_AVG = 29 + sqlLexerIDENTIFIER = 30 + sqlLexerNUMERIC_LITERAL = 31 + sqlLexerSTRING_LITERAL = 32 + sqlLexerSTAR = 33 +) diff --git a/processor/stream_processor/parser/sql_lexer_test.go b/processor/stream_processor/parser/sql_lexer_test.go new file mode 100644 index 000000000000..2330b42b7cfc --- /dev/null +++ b/processor/stream_processor/parser/sql_lexer_test.go @@ -0,0 +1,22 @@ +package parser + +import ( + "fmt" + "github.com/antlr/antlr4/runtime/Go/antlr" + "testing" +) + +func TestSelectExpr(t *testing.T) { + is := antlr.NewInputStream(`SELECT field1, min(field2) WHERE field3 <= 3 and field4 is not null `) + lexer := NewsqlLexer(is) + + for { + t := lexer.NextToken() + if t.GetTokenType() == antlr.TokenEOF { + break + } + fmt.Printf("%s (%q)\n", + lexer.SymbolicNames[t.GetTokenType()], t.GetText()) + } + +} diff --git a/processor/stream_processor/parser/sql_listener.go b/processor/stream_processor/parser/sql_listener.go new file mode 100644 index 000000000000..4e8bfde019cc --- /dev/null +++ b/processor/stream_processor/parser/sql_listener.go @@ -0,0 +1,70 @@ +// Code generated from sql.g4 by ANTLR 4.10.1. DO NOT EDIT. + +package parser // sql + +import "github.com/antlr/antlr4/runtime/Go/antlr" + +// sqlListener is a complete listener for a parse tree produced by sqlParser. +type sqlListener interface { + antlr.ParseTreeListener + + // EnterSqlQuery is called when entering the sqlQuery production. + EnterSqlQuery(c *SqlQueryContext) + + // EnterSelectQuery is called when entering the selectQuery production. + EnterSelectQuery(c *SelectQueryContext) + + // EnterResultColumns is called when entering the resultColumns production. + EnterResultColumns(c *ResultColumnsContext) + + // EnterColumn is called when entering the column production. + EnterColumn(c *ColumnContext) + + // EnterWhereStatement is called when entering the whereStatement production. + EnterWhereStatement(c *WhereStatementContext) + + // EnterGroupBy is called when entering the groupBy production. + EnterGroupBy(c *GroupByContext) + + // EnterAvg is called when entering the avg production. + EnterAvg(c *AvgContext) + + // EnterExpr is called when entering the expr production. + EnterExpr(c *ExprContext) + + // EnterComparisonOperator is called when entering the comparisonOperator production. + EnterComparisonOperator(c *ComparisonOperatorContext) + + // EnterLiteralValue is called when entering the literalValue production. + EnterLiteralValue(c *LiteralValueContext) + + // ExitSqlQuery is called when exiting the sqlQuery production. + ExitSqlQuery(c *SqlQueryContext) + + // ExitSelectQuery is called when exiting the selectQuery production. + ExitSelectQuery(c *SelectQueryContext) + + // ExitResultColumns is called when exiting the resultColumns production. + ExitResultColumns(c *ResultColumnsContext) + + // ExitColumn is called when exiting the column production. + ExitColumn(c *ColumnContext) + + // ExitWhereStatement is called when exiting the whereStatement production. + ExitWhereStatement(c *WhereStatementContext) + + // ExitGroupBy is called when exiting the groupBy production. + ExitGroupBy(c *GroupByContext) + + // ExitAvg is called when exiting the avg production. + ExitAvg(c *AvgContext) + + // ExitExpr is called when exiting the expr production. + ExitExpr(c *ExprContext) + + // ExitComparisonOperator is called when exiting the comparisonOperator production. + ExitComparisonOperator(c *ComparisonOperatorContext) + + // ExitLiteralValue is called when exiting the literalValue production. + ExitLiteralValue(c *LiteralValueContext) +} diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go new file mode 100644 index 000000000000..aacef8c5d518 --- /dev/null +++ b/processor/stream_processor/parser/sql_parser.go @@ -0,0 +1,1764 @@ +// Code generated from sql.g4 by ANTLR 4.10.1. DO NOT EDIT. + +package parser // sql + +import ( + "fmt" + "strconv" + "sync" + + "github.com/antlr/antlr4/runtime/Go/antlr" +) + +// Suppress unused import errors +var _ = fmt.Printf +var _ = strconv.Itoa +var _ = sync.Once{} + +type sqlParser struct { + *antlr.BaseParser +} + +var sqlParserStaticData struct { + once sync.Once + serializedATN []int32 + literalNames []string + symbolicNames []string + ruleNames []string + predictionContextCache *antlr.PredictionContextCache + atn *antlr.ATN + decisionToDFA []*antlr.DFA +} + +func sqlParserInit() { + staticData := &sqlParserStaticData + staticData.literalNames = []string{ + "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", "", + "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "'*'", + } + staticData.symbolicNames = []string{ + "", "SPACE", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", "K_WHERE", + "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", "K_LIKE", + "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", + "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", + "K_IN", "K_COUNT", "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", "NUMERIC_LITERAL", + "STRING_LITERAL", "STAR", + } + staticData.ruleNames = []string{ + "sqlQuery", "selectQuery", "resultColumns", "column", "whereStatement", + "groupBy", "avg", "expr", "comparisonOperator", "literalValue", + } + staticData.predictionContextCache = antlr.NewPredictionContextCache() + staticData.serializedATN = []int32{ + 4, 1, 33, 92, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 1, 0, 1, + 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 27, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, + 4, 2, 34, 8, 2, 11, 2, 12, 2, 35, 1, 2, 1, 2, 1, 2, 4, 2, 41, 8, 2, 11, + 2, 12, 2, 42, 1, 2, 3, 2, 46, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 52, 8, + 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 58, 8, 4, 1, 4, 3, 4, 61, 8, 4, 1, 5, + 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, + 1, 7, 1, 7, 3, 7, 78, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 83, 8, 7, 10, 7, 12, + 7, 86, 9, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 0, 1, 14, 10, 0, 2, 4, 6, 8, + 10, 12, 14, 16, 18, 0, 5, 1, 0, 26, 29, 1, 0, 21, 22, 1, 0, 10, 11, 2, + 0, 12, 19, 24, 25, 1, 0, 31, 32, 91, 0, 20, 1, 0, 0, 0, 2, 23, 1, 0, 0, + 0, 4, 45, 1, 0, 0, 0, 6, 47, 1, 0, 0, 0, 8, 60, 1, 0, 0, 0, 10, 62, 1, + 0, 0, 0, 12, 65, 1, 0, 0, 0, 14, 77, 1, 0, 0, 0, 16, 87, 1, 0, 0, 0, 18, + 89, 1, 0, 0, 0, 20, 21, 3, 2, 1, 0, 21, 22, 5, 0, 0, 1, 22, 1, 1, 0, 0, + 0, 23, 24, 5, 6, 0, 0, 24, 26, 3, 4, 2, 0, 25, 27, 3, 8, 4, 0, 26, 25, + 1, 0, 0, 0, 26, 27, 1, 0, 0, 0, 27, 28, 1, 0, 0, 0, 28, 29, 5, 5, 0, 0, + 29, 3, 1, 0, 0, 0, 30, 33, 3, 6, 3, 0, 31, 32, 5, 2, 0, 0, 32, 34, 3, 6, + 3, 0, 33, 31, 1, 0, 0, 0, 34, 35, 1, 0, 0, 0, 35, 33, 1, 0, 0, 0, 35, 36, + 1, 0, 0, 0, 36, 46, 1, 0, 0, 0, 37, 40, 3, 12, 6, 0, 38, 39, 5, 2, 0, 0, + 39, 41, 3, 12, 6, 0, 40, 38, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 40, 1, + 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 46, 1, 0, 0, 0, 44, 46, 5, 33, 0, 0, 45, + 30, 1, 0, 0, 0, 45, 37, 1, 0, 0, 0, 45, 44, 1, 0, 0, 0, 46, 5, 1, 0, 0, + 0, 47, 48, 5, 30, 0, 0, 48, 7, 1, 0, 0, 0, 49, 50, 5, 7, 0, 0, 50, 52, + 3, 14, 7, 0, 51, 49, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 61, 1, 0, 0, 0, + 53, 54, 5, 8, 0, 0, 54, 57, 5, 31, 0, 0, 55, 56, 5, 7, 0, 0, 56, 58, 3, + 14, 7, 0, 57, 55, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, + 61, 3, 10, 5, 0, 60, 51, 1, 0, 0, 0, 60, 53, 1, 0, 0, 0, 61, 9, 1, 0, 0, + 0, 62, 63, 5, 9, 0, 0, 63, 64, 3, 6, 3, 0, 64, 11, 1, 0, 0, 0, 65, 66, + 7, 0, 0, 0, 66, 67, 5, 3, 0, 0, 67, 68, 3, 6, 3, 0, 68, 69, 5, 4, 0, 0, + 69, 13, 1, 0, 0, 0, 70, 71, 6, 7, -1, 0, 71, 72, 5, 30, 0, 0, 72, 73, 3, + 16, 8, 0, 73, 74, 3, 18, 9, 0, 74, 78, 1, 0, 0, 0, 75, 76, 5, 30, 0, 0, + 76, 78, 7, 1, 0, 0, 77, 70, 1, 0, 0, 0, 77, 75, 1, 0, 0, 0, 78, 84, 1, + 0, 0, 0, 79, 80, 10, 2, 0, 0, 80, 81, 7, 2, 0, 0, 81, 83, 3, 14, 7, 3, + 82, 79, 1, 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, + 0, 0, 0, 85, 15, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 88, 7, 3, 0, 0, 88, + 17, 1, 0, 0, 0, 89, 90, 7, 4, 0, 0, 90, 19, 1, 0, 0, 0, 9, 26, 35, 42, + 45, 51, 57, 60, 77, 84, + } + deserializer := antlr.NewATNDeserializer(nil) + staticData.atn = deserializer.Deserialize(staticData.serializedATN) + atn := staticData.atn + staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) + decisionToDFA := staticData.decisionToDFA + for index, state := range atn.DecisionToState { + decisionToDFA[index] = antlr.NewDFA(state, index) + } +} + +// sqlParserInit initializes any static state used to implement sqlParser. By default the +// static state used to implement the parser is lazily initialized during the first call to +// NewsqlParser(). You can call this function if you wish to initialize the static state ahead +// of time. +func SqlParserInit() { + staticData := &sqlParserStaticData + staticData.once.Do(sqlParserInit) +} + +// NewsqlParser produces a new parser instance for the optional input antlr.TokenStream. +func NewsqlParser(input antlr.TokenStream) *sqlParser { + SqlParserInit() + this := new(sqlParser) + this.BaseParser = antlr.NewBaseParser(input) + staticData := &sqlParserStaticData + this.Interpreter = antlr.NewParserATNSimulator(this, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) + this.RuleNames = staticData.ruleNames + this.LiteralNames = staticData.literalNames + this.SymbolicNames = staticData.symbolicNames + this.GrammarFileName = "sql.g4" + + return this +} + +// sqlParser tokens. +const ( + sqlParserEOF = antlr.TokenEOF + sqlParserSPACE = 1 + sqlParserCOMMA = 2 + sqlParserL_BRACKET = 3 + sqlParserR_BRACKET = 4 + sqlParserEOQ = 5 + sqlParserK_SELECT = 6 + sqlParserK_WHERE = 7 + sqlParserK_WINDOW_TUMBLING = 8 + sqlParserK_GROUP_BY = 9 + sqlParserK_AND = 10 + sqlParserK_OR = 11 + sqlParserK_IS = 12 + sqlParserK_LIKE = 13 + sqlParserK_EQUAL = 14 + sqlParserK_GREATER = 15 + sqlParserK_LESS = 16 + sqlParserK_LESS_EQUAL = 17 + sqlParserK_GREATER_EQUAL = 18 + sqlParserK_NOT_EQUAL = 19 + sqlParserK_NULL = 20 + sqlParserK_IS_NULL = 21 + sqlParserK_IS_NOT_NULL = 22 + sqlParserK_NOT = 23 + sqlParserK_NOT_IN = 24 + sqlParserK_IN = 25 + sqlParserK_COUNT = 26 + sqlParserK_MIN = 27 + sqlParserK_MAX = 28 + sqlParserK_AVG = 29 + sqlParserIDENTIFIER = 30 + sqlParserNUMERIC_LITERAL = 31 + sqlParserSTRING_LITERAL = 32 + sqlParserSTAR = 33 +) + +// sqlParser rules. +const ( + sqlParserRULE_sqlQuery = 0 + sqlParserRULE_selectQuery = 1 + sqlParserRULE_resultColumns = 2 + sqlParserRULE_column = 3 + sqlParserRULE_whereStatement = 4 + sqlParserRULE_groupBy = 5 + sqlParserRULE_avg = 6 + sqlParserRULE_expr = 7 + sqlParserRULE_comparisonOperator = 8 + sqlParserRULE_literalValue = 9 +) + +// ISqlQueryContext is an interface to support dynamic dispatch. +type ISqlQueryContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSqlQueryContext differentiates from other interfaces. + IsSqlQueryContext() +} + +type SqlQueryContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySqlQueryContext() *SqlQueryContext { + var p = new(SqlQueryContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = sqlParserRULE_sqlQuery + return p +} + +func (*SqlQueryContext) IsSqlQueryContext() {} + +func NewSqlQueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SqlQueryContext { + var p = new(SqlQueryContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = sqlParserRULE_sqlQuery + + return p +} + +func (s *SqlQueryContext) GetParser() antlr.Parser { return s.parser } + +func (s *SqlQueryContext) SelectQuery() ISelectQueryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelectQueryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISelectQueryContext) +} + +func (s *SqlQueryContext) EOF() antlr.TerminalNode { + return s.GetToken(sqlParserEOF, 0) +} + +func (s *SqlQueryContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SqlQueryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SqlQueryContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.EnterSqlQuery(s) + } +} + +func (s *SqlQueryContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.ExitSqlQuery(s) + } +} + +func (p *sqlParser) SqlQuery() (localctx ISqlQueryContext) { + this := p + _ = this + + localctx = NewSqlQueryContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 0, sqlParserRULE_sqlQuery) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(20) + p.SelectQuery() + } + { + p.SetState(21) + p.Match(sqlParserEOF) + } + + return localctx +} + +// ISelectQueryContext is an interface to support dynamic dispatch. +type ISelectQueryContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSelectQueryContext differentiates from other interfaces. + IsSelectQueryContext() +} + +type SelectQueryContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySelectQueryContext() *SelectQueryContext { + var p = new(SelectQueryContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = sqlParserRULE_selectQuery + return p +} + +func (*SelectQueryContext) IsSelectQueryContext() {} + +func NewSelectQueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectQueryContext { + var p = new(SelectQueryContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = sqlParserRULE_selectQuery + + return p +} + +func (s *SelectQueryContext) GetParser() antlr.Parser { return s.parser } + +func (s *SelectQueryContext) K_SELECT() antlr.TerminalNode { + return s.GetToken(sqlParserK_SELECT, 0) +} + +func (s *SelectQueryContext) EOQ() antlr.TerminalNode { + return s.GetToken(sqlParserEOQ, 0) +} + +func (s *SelectQueryContext) ResultColumns() IResultColumnsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IResultColumnsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IResultColumnsContext) +} + +func (s *SelectQueryContext) WhereStatement() IWhereStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWhereStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IWhereStatementContext) +} + +func (s *SelectQueryContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SelectQueryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SelectQueryContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.EnterSelectQuery(s) + } +} + +func (s *SelectQueryContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.ExitSelectQuery(s) + } +} + +func (p *sqlParser) SelectQuery() (localctx ISelectQueryContext) { + this := p + _ = this + + localctx = NewSelectQueryContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 2, sqlParserRULE_selectQuery) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(23) + p.Match(sqlParserK_SELECT) + } + + { + p.SetState(24) + p.ResultColumns() + } + + p.SetState(26) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 0, p.GetParserRuleContext()) == 1 { + { + p.SetState(25) + p.WhereStatement() + } + + } + { + p.SetState(28) + p.Match(sqlParserEOQ) + } + + return localctx +} + +// IResultColumnsContext is an interface to support dynamic dispatch. +type IResultColumnsContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsResultColumnsContext differentiates from other interfaces. + IsResultColumnsContext() +} + +type ResultColumnsContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyResultColumnsContext() *ResultColumnsContext { + var p = new(ResultColumnsContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = sqlParserRULE_resultColumns + return p +} + +func (*ResultColumnsContext) IsResultColumnsContext() {} + +func NewResultColumnsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ResultColumnsContext { + var p = new(ResultColumnsContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = sqlParserRULE_resultColumns + + return p +} + +func (s *ResultColumnsContext) GetParser() antlr.Parser { return s.parser } + +func (s *ResultColumnsContext) AllColumn() []IColumnContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumnContext); ok { + len++ + } + } + + tst := make([]IColumnContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumnContext); ok { + tst[i] = t.(IColumnContext) + i++ + } + } + + return tst +} + +func (s *ResultColumnsContext) Column(i int) IColumnContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumnContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumnContext) +} + +func (s *ResultColumnsContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(sqlParserCOMMA) +} + +func (s *ResultColumnsContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(sqlParserCOMMA, i) +} + +func (s *ResultColumnsContext) AllAvg() []IAvgContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IAvgContext); ok { + len++ + } + } + + tst := make([]IAvgContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IAvgContext); ok { + tst[i] = t.(IAvgContext) + i++ + } + } + + return tst +} + +func (s *ResultColumnsContext) Avg(i int) IAvgContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAvgContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IAvgContext) +} + +func (s *ResultColumnsContext) STAR() antlr.TerminalNode { + return s.GetToken(sqlParserSTAR, 0) +} + +func (s *ResultColumnsContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ResultColumnsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ResultColumnsContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.EnterResultColumns(s) + } +} + +func (s *ResultColumnsContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.ExitResultColumns(s) + } +} + +func (p *sqlParser) ResultColumns() (localctx IResultColumnsContext) { + this := p + _ = this + + localctx = NewResultColumnsContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 4, sqlParserRULE_resultColumns) + var _la int + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(45) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case sqlParserIDENTIFIER: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(30) + p.Column() + } + p.SetState(33) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + for ok := true; ok; ok = _la == sqlParserCOMMA { + { + p.SetState(31) + p.Match(sqlParserCOMMA) + } + { + p.SetState(32) + p.Column() + } + + p.SetState(35) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + case sqlParserK_COUNT, sqlParserK_MIN, sqlParserK_MAX, sqlParserK_AVG: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(37) + p.Avg() + } + p.SetState(40) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + for ok := true; ok; ok = _la == sqlParserCOMMA { + { + p.SetState(38) + p.Match(sqlParserCOMMA) + } + { + p.SetState(39) + p.Avg() + } + + p.SetState(42) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + case sqlParserSTAR: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(44) + p.Match(sqlParserSTAR) + } + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + return localctx +} + +// IColumnContext is an interface to support dynamic dispatch. +type IColumnContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumnContext differentiates from other interfaces. + IsColumnContext() +} + +type ColumnContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumnContext() *ColumnContext { + var p = new(ColumnContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = sqlParserRULE_column + return p +} + +func (*ColumnContext) IsColumnContext() {} + +func NewColumnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ColumnContext { + var p = new(ColumnContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = sqlParserRULE_column + + return p +} + +func (s *ColumnContext) GetParser() antlr.Parser { return s.parser } + +func (s *ColumnContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(sqlParserIDENTIFIER, 0) +} + +func (s *ColumnContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ColumnContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ColumnContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.EnterColumn(s) + } +} + +func (s *ColumnContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.ExitColumn(s) + } +} + +func (p *sqlParser) Column() (localctx IColumnContext) { + this := p + _ = this + + localctx = NewColumnContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 6, sqlParserRULE_column) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(47) + p.Match(sqlParserIDENTIFIER) + } + + return localctx +} + +// IWhereStatementContext is an interface to support dynamic dispatch. +type IWhereStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsWhereStatementContext differentiates from other interfaces. + IsWhereStatementContext() +} + +type WhereStatementContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyWhereStatementContext() *WhereStatementContext { + var p = new(WhereStatementContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = sqlParserRULE_whereStatement + return p +} + +func (*WhereStatementContext) IsWhereStatementContext() {} + +func NewWhereStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *WhereStatementContext { + var p = new(WhereStatementContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = sqlParserRULE_whereStatement + + return p +} + +func (s *WhereStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *WhereStatementContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(sqlParserK_WHERE, 0) +} + +func (s *WhereStatementContext) Expr() IExprContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *WhereStatementContext) K_WINDOW_TUMBLING() antlr.TerminalNode { + return s.GetToken(sqlParserK_WINDOW_TUMBLING, 0) +} + +func (s *WhereStatementContext) NUMERIC_LITERAL() antlr.TerminalNode { + return s.GetToken(sqlParserNUMERIC_LITERAL, 0) +} + +func (s *WhereStatementContext) GroupBy() IGroupByContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGroupByContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGroupByContext) +} + +func (s *WhereStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *WhereStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *WhereStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.EnterWhereStatement(s) + } +} + +func (s *WhereStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.ExitWhereStatement(s) + } +} + +func (p *sqlParser) WhereStatement() (localctx IWhereStatementContext) { + this := p + _ = this + + localctx = NewWhereStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 8, sqlParserRULE_whereStatement) + var _la int + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(60) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case sqlParserEOQ, sqlParserK_WHERE: + p.EnterOuterAlt(localctx, 1) + p.SetState(51) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + if _la == sqlParserK_WHERE { + { + p.SetState(49) + p.Match(sqlParserK_WHERE) + } + { + p.SetState(50) + p.expr(0) + } + + } + + case sqlParserK_WINDOW_TUMBLING: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(53) + p.Match(sqlParserK_WINDOW_TUMBLING) + } + { + p.SetState(54) + p.Match(sqlParserNUMERIC_LITERAL) + } + p.SetState(57) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + if _la == sqlParserK_WHERE { + { + p.SetState(55) + p.Match(sqlParserK_WHERE) + } + { + p.SetState(56) + p.expr(0) + } + + } + + { + p.SetState(59) + p.GroupBy() + } + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + return localctx +} + +// IGroupByContext is an interface to support dynamic dispatch. +type IGroupByContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsGroupByContext differentiates from other interfaces. + IsGroupByContext() +} + +type GroupByContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGroupByContext() *GroupByContext { + var p = new(GroupByContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = sqlParserRULE_groupBy + return p +} + +func (*GroupByContext) IsGroupByContext() {} + +func NewGroupByContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GroupByContext { + var p = new(GroupByContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = sqlParserRULE_groupBy + + return p +} + +func (s *GroupByContext) GetParser() antlr.Parser { return s.parser } + +func (s *GroupByContext) K_GROUP_BY() antlr.TerminalNode { + return s.GetToken(sqlParserK_GROUP_BY, 0) +} + +func (s *GroupByContext) Column() IColumnContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumnContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IColumnContext) +} + +func (s *GroupByContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GroupByContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GroupByContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.EnterGroupBy(s) + } +} + +func (s *GroupByContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.ExitGroupBy(s) + } +} + +func (p *sqlParser) GroupBy() (localctx IGroupByContext) { + this := p + _ = this + + localctx = NewGroupByContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 10, sqlParserRULE_groupBy) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(62) + p.Match(sqlParserK_GROUP_BY) + } + { + p.SetState(63) + p.Column() + } + + return localctx +} + +// IAvgContext is an interface to support dynamic dispatch. +type IAvgContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsAvgContext differentiates from other interfaces. + IsAvgContext() +} + +type AvgContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAvgContext() *AvgContext { + var p = new(AvgContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = sqlParserRULE_avg + return p +} + +func (*AvgContext) IsAvgContext() {} + +func NewAvgContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AvgContext { + var p = new(AvgContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = sqlParserRULE_avg + + return p +} + +func (s *AvgContext) GetParser() antlr.Parser { return s.parser } + +func (s *AvgContext) L_BRACKET() antlr.TerminalNode { + return s.GetToken(sqlParserL_BRACKET, 0) +} + +func (s *AvgContext) Column() IColumnContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumnContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IColumnContext) +} + +func (s *AvgContext) R_BRACKET() antlr.TerminalNode { + return s.GetToken(sqlParserR_BRACKET, 0) +} + +func (s *AvgContext) K_MIN() antlr.TerminalNode { + return s.GetToken(sqlParserK_MIN, 0) +} + +func (s *AvgContext) K_MAX() antlr.TerminalNode { + return s.GetToken(sqlParserK_MAX, 0) +} + +func (s *AvgContext) K_COUNT() antlr.TerminalNode { + return s.GetToken(sqlParserK_COUNT, 0) +} + +func (s *AvgContext) K_AVG() antlr.TerminalNode { + return s.GetToken(sqlParserK_AVG, 0) +} + +func (s *AvgContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AvgContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AvgContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.EnterAvg(s) + } +} + +func (s *AvgContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.ExitAvg(s) + } +} + +func (p *sqlParser) Avg() (localctx IAvgContext) { + this := p + _ = this + + localctx = NewAvgContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 12, sqlParserRULE_avg) + var _la int + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(65) + _la = p.GetTokenStream().LA(1) + + if !(((_la)&-(0x1f+1)) == 0 && ((1< channel(HIDDEN) + ; + +COMMA : ',' ; +L_BRACKET : '(' ; +R_BRACKET : ')' ; + +EOQ: ';'; + +K_SELECT : S E L E C T; +K_WHERE : W H E R E; +K_WINDOW_TUMBLING : W I N D O W SPACE T U M B L I N G; +K_GROUP_BY : G R O U P SPACE B Y; +K_AND : A N D; +K_OR : O R; +K_IS : I S; +K_LIKE : L I K E; +K_EQUAL : '='; +K_GREATER : '>'; +K_LESS : '<'; +K_LESS_EQUAL : (K_LESS K_EQUAL); +K_GREATER_EQUAL : (K_GREATER K_EQUAL); +K_NOT_EQUAL : ('!' K_EQUAL); +K_NULL : N U L L; +K_IS_NULL : (K_IS SPACE K_NULL); +K_IS_NOT_NULL : (K_IS SPACE K_NOT SPACE K_NULL); +K_NOT : N O T; +K_NOT_IN : (K_NOT SPACE I N); +K_IN : I N; + +K_COUNT : C O U N T; +K_MIN : M I N; +K_MAX : M A X; +K_AVG : A V G; + +IDENTIFIER + : '"' (~'"' | '""')* '"' + | '`' (~'`' | '``')* '`' + | '[' ~']'* ']' + | [a-zA-Z_] [a-zA-Z_0-9]* + ; + +expr + : IDENTIFIER comparisonOperator literalValue + | expr ( K_AND | K_OR ) expr + | IDENTIFIER (K_IS_NULL | K_IS_NOT_NULL) + ; + + + +comparisonOperator + : K_EQUAL | K_GREATER | K_LESS | K_LESS_EQUAL | K_GREATER_EQUAL | K_NOT_EQUAL | K_LIKE | K_IN | K_IS | K_NOT_IN + ; + + +literalValue + : NUMERIC_LITERAL + | STRING_LITERAL + ; + + +NUMERIC_LITERAL + : DIGIT+ ( '.' DIGIT* )? ( E [-+]? DIGIT+ )? + | '.' DIGIT+ ( E [-+]? DIGIT+ )? + ; + +STRING_LITERAL + : '\'' ( ~'\'' | '\'\'' )* '\'' + ; + + +STAR : '*'; + +fragment DIGIT : [0-9]; +fragment A : [aA]; +fragment B : [bB]; +fragment C : [cC]; +fragment D : [dD]; +fragment E : [eE]; +fragment F : [fF]; +fragment G : [gG]; +fragment H : [hH]; +fragment I : [iI]; +fragment J : [jJ]; +fragment K : [kK]; +fragment L : [lL]; +fragment M : [mM]; +fragment N : [nN]; +fragment O : [oO]; +fragment P : [pP]; +fragment Q : [qQ]; +fragment R : [rR]; +fragment S : [sS]; +fragment T : [tT]; +fragment U : [uU]; +fragment V : [vV]; +fragment W : [wW]; +fragment X : [xX]; +fragment Y : [yY]; +fragment Z : [zZ]; diff --git a/processor/stream_processor/test/Sql.g4 b/processor/stream_processor/test/Sql.g4 new file mode 100644 index 000000000000..2022d75525a2 --- /dev/null +++ b/processor/stream_processor/test/Sql.g4 @@ -0,0 +1,980 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2014 by Bart Kiers + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Project : sqlite-parser; an ANTLR4 grammar for SQLite + * https://github.com/bkiers/sqlite-parser + * Developed by : Bart Kiers, bart@big-o.nl + */ +grammar Sql; + +parse + : ( sql_stmt_list | error )* EOF + ; + +error + : UNEXPECTED_CHAR + { + throw new RuntimeException("UNEXPECTED_CHAR=" + $UNEXPECTED_CHAR.text); + } + ; + +sql_stmt_list + : ';'* sql_stmt ( ';'+ sql_stmt )* ';'* + ; + +sql_stmt + : ( K_EXPLAIN ( K_QUERY K_PLAN )? )? ( alter_table_stmt + | analyze_stmt + | attach_stmt + | begin_stmt + | commit_stmt + | compound_select_stmt + | create_index_stmt + | create_table_stmt + | create_trigger_stmt + | create_view_stmt + | create_virtual_table_stmt + | delete_stmt + | delete_stmt_limited + | detach_stmt + | drop_index_stmt + | drop_table_stmt + | drop_trigger_stmt + | drop_view_stmt + | factored_select_stmt + | insert_stmt + | pragma_stmt + | reindex_stmt + | release_stmt + | rollback_stmt + | savepoint_stmt + | simple_select_stmt + | select_stmt + | update_stmt + | update_stmt_limited + | vacuum_stmt ) + ; + +alter_table_stmt + : K_ALTER K_TABLE K_ONLY? ( database_name '.' )? source_table_name + ( K_RENAME K_TO new_table_name + | alter_table_add + | alter_table_add_constraint + | K_ADD K_COLUMN? column_def + ) + K_ENABLE? (unknown)? + ; + +alter_table_add_constraint + : K_ADD K_CONSTRAINT any_name table_constraint + ; + +alter_table_add + : K_ADD table_constraint + ; + +analyze_stmt + : K_ANALYZE ( database_name | table_or_index_name | database_name '.' table_or_index_name )? + ; + +attach_stmt + : K_ATTACH K_DATABASE? expr K_AS database_name + ; + +begin_stmt + : K_BEGIN ( K_DEFERRED | K_IMMEDIATE | K_EXCLUSIVE )? ( K_TRANSACTION transaction_name? )? + ; + +commit_stmt + : ( K_COMMIT | K_END ) ( K_TRANSACTION transaction_name? )? + ; + +compound_select_stmt + : ( K_WITH K_RECURSIVE? common_table_expression ( ',' common_table_expression )* )? + select_core ( ( K_UNION K_ALL? | K_INTERSECT | K_EXCEPT ) select_core )+ + ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? + ( K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? )? + ; + +create_index_stmt + : K_CREATE K_UNIQUE? K_INDEX ( K_IF K_NOT K_EXISTS )? + ( database_name '.' )? index_name K_ON table_name '(' indexed_column ( ',' indexed_column )* ')' + ( K_WHERE expr )? + ; + +create_table_stmt + : K_CREATE ( K_TEMP | K_TEMPORARY )? K_TABLE ( K_IF K_NOT K_EXISTS )? + ( database_name '.' )? table_name + ( '(' column_def ( ',' table_constraint | ',' column_def )* ')' ( K_WITHOUT IDENTIFIER )? + | K_AS select_stmt + ) (unknown)? + ; + +create_trigger_stmt + : K_CREATE ( K_TEMP | K_TEMPORARY )? K_TRIGGER ( K_IF K_NOT K_EXISTS )? + ( database_name '.' )? trigger_name ( K_BEFORE | K_AFTER | K_INSTEAD K_OF )? + ( K_DELETE | K_INSERT | K_UPDATE ( K_OF column_name ( ',' column_name )* )? ) K_ON ( database_name '.' )? table_name + ( K_FOR K_EACH K_ROW )? ( K_WHEN expr )? + K_BEGIN ( ( update_stmt | insert_stmt | delete_stmt | select_stmt ) ';' )+ K_END + ; + +create_view_stmt + : K_CREATE ( K_TEMP | K_TEMPORARY )? K_VIEW ( K_IF K_NOT K_EXISTS )? + ( database_name '.' )? view_name K_AS select_stmt + ; + +create_virtual_table_stmt + : K_CREATE K_VIRTUAL K_TABLE ( K_IF K_NOT K_EXISTS )? + ( database_name '.' )? table_name + K_USING module_name ( '(' module_argument ( ',' module_argument )* ')' )? + ; + +delete_stmt + : with_clause? K_DELETE K_FROM qualified_table_name + ( K_WHERE expr )? + ; + +delete_stmt_limited + : with_clause? K_DELETE K_FROM qualified_table_name + ( K_WHERE expr )? + ( ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? + K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? + )? + ; + +detach_stmt + : K_DETACH K_DATABASE? database_name + ; + +drop_index_stmt + : K_DROP K_INDEX ( K_IF K_EXISTS )? ( database_name '.' )? index_name + ; + +drop_table_stmt + : K_DROP K_TABLE ( K_IF K_EXISTS )? ( database_name '.' )? table_name + ; + +drop_trigger_stmt + : K_DROP K_TRIGGER ( K_IF K_EXISTS )? ( database_name '.' )? trigger_name + ; + +drop_view_stmt + : K_DROP K_VIEW ( K_IF K_EXISTS )? ( database_name '.' )? view_name + ; + +factored_select_stmt + : ( K_WITH K_RECURSIVE? common_table_expression ( ',' common_table_expression )* )? + select_core ( compound_operator select_core )* + ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? + ( K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? )? + ; + +insert_stmt + : with_clause? ( K_INSERT + | K_REPLACE + | K_INSERT K_OR K_REPLACE + | K_INSERT K_OR K_ROLLBACK + | K_INSERT K_OR K_ABORT + | K_INSERT K_OR K_FAIL + | K_INSERT K_OR K_IGNORE ) K_INTO + ( database_name '.' )? table_name ( '(' column_name ( ',' column_name )* ')' )? + ( K_VALUES '(' expr ( ',' expr )* ')' ( ',' '(' expr ( ',' expr )* ')' )* + | select_stmt + | K_DEFAULT K_VALUES + ) + ; + +pragma_stmt + : K_PRAGMA ( database_name '.' )? pragma_name ( '=' pragma_value + | '(' pragma_value ')' )? + ; + +reindex_stmt + : K_REINDEX ( collation_name + | ( database_name '.' )? ( table_name | index_name ) + )? + ; + +release_stmt + : K_RELEASE K_SAVEPOINT? savepoint_name + ; + +rollback_stmt + : K_ROLLBACK ( K_TRANSACTION transaction_name? )? ( K_TO K_SAVEPOINT? savepoint_name )? + ; + +savepoint_stmt + : K_SAVEPOINT savepoint_name + ; + +simple_select_stmt + : ( K_WITH K_RECURSIVE? common_table_expression ( ',' common_table_expression )* )? + select_core ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? + ( K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? )? + ; + +select_stmt + : ( K_WITH K_RECURSIVE? common_table_expression ( ',' common_table_expression )* )? + select_or_values ( compound_operator select_or_values )* + ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? + ( K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? )? + ; + +select_or_values + : K_SELECT ( K_DISTINCT | K_ALL )? result_column ( ',' result_column )* + ( K_FROM ( table_or_subquery ( ',' table_or_subquery )* | join_clause ) )? + ( K_WHERE expr )? + ( K_GROUP K_BY expr ( ',' expr )* ( K_HAVING expr )? )? + | K_VALUES '(' expr ( ',' expr )* ')' ( ',' '(' expr ( ',' expr )* ')' )* + ; + +update_stmt + : with_clause? K_UPDATE ( K_OR K_ROLLBACK + | K_OR K_ABORT + | K_OR K_REPLACE + | K_OR K_FAIL + | K_OR K_IGNORE )? qualified_table_name + K_SET column_name '=' expr ( ',' column_name '=' expr )* ( K_WHERE expr )? + ; + +update_stmt_limited + : with_clause? K_UPDATE ( K_OR K_ROLLBACK + | K_OR K_ABORT + | K_OR K_REPLACE + | K_OR K_FAIL + | K_OR K_IGNORE )? qualified_table_name + K_SET column_name '=' expr ( ',' column_name '=' expr )* ( K_WHERE expr )? + ( ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? + K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? + )? + ; + +vacuum_stmt + : K_VACUUM + ; + +column_def + : column_name ( column_constraint | type_name )* + ; + +type_name + : name ( '(' signed_number (any_name)? ')' + | '(' signed_number (any_name)? ',' signed_number (any_name)? ')' )? + ; + +column_constraint + : ( K_CONSTRAINT name )? + ( column_constraint_primary_key + | column_constraint_foreign_key + | column_constraint_not_null + | column_constraint_null + | K_UNIQUE conflict_clause + | K_CHECK '(' expr ')' + | column_default + | K_COLLATE collation_name + ) + ; + +column_constraint_primary_key + : K_PRIMARY K_KEY ( K_ASC | K_DESC )? conflict_clause K_AUTOINCREMENT? + ; + +column_constraint_foreign_key + : foreign_key_clause + ; + +column_constraint_not_null + : K_NOT K_NULL conflict_clause + ; + +column_constraint_null + : K_NULL conflict_clause + ; + +column_default + : K_DEFAULT (column_default_value | '(' expr ')' | K_NEXTVAL '(' expr ')' | any_name ) ( '::' any_name+ )? + ; + +column_default_value + : ( signed_number | literal_value ) + ; + +conflict_clause + : ( K_ON K_CONFLICT ( K_ROLLBACK + | K_ABORT + | K_FAIL + | K_IGNORE + | K_REPLACE + ) + )? + ; + +/* + SQLite understands the following binary operators, in order from highest to + lowest precedence: + + || + * / % + + - + << >> & | + < <= > >= + = == != <> IS IS NOT IN LIKE GLOB MATCH REGEXP + AND + OR +*/ +expr + : literal_value + | BIND_PARAMETER + | ( ( database_name '.' )? table_name '.' )? column_name + | unary_operator expr + | expr '||' expr + | expr ( '*' | '/' | '%' ) expr + | expr ( '+' | '-' ) expr + | expr ( '<<' | '>>' | '&' | '|' ) expr + | expr ( '<' | '<=' | '>' | '>=' ) expr + | expr ( '=' | '==' | '!=' | '<>' | K_IS | K_IS K_NOT | K_IN | K_LIKE | K_GLOB | K_MATCH | K_REGEXP ) expr + | expr K_AND expr + | expr K_OR expr + | function_name '(' ( K_DISTINCT? expr ( ',' expr )* | '*' )? ')' + | '(' expr ')' + | K_CAST '(' expr K_AS type_name ')' + | expr K_COLLATE collation_name + | expr K_NOT? ( K_LIKE | K_GLOB | K_REGEXP | K_MATCH ) expr ( K_ESCAPE expr )? + | expr ( K_ISNULL | K_NOTNULL | K_NOT K_NULL ) + | expr K_IS K_NOT? expr + | expr K_NOT? K_BETWEEN expr K_AND expr + | expr K_NOT? K_IN ( '(' ( select_stmt + | expr ( ',' expr )* + )? + ')' + | ( database_name '.' )? table_name ) + | ( ( K_NOT )? K_EXISTS )? '(' select_stmt ')' + | K_CASE expr? ( K_WHEN expr K_THEN expr )+ ( K_ELSE expr )? K_END + | raise_function + ; + +foreign_key_clause + : K_REFERENCES ( database_name '.' )? foreign_table ( '(' fk_target_column_name ( ',' fk_target_column_name )* ')' )? + ( ( K_ON ( K_DELETE | K_UPDATE ) ( K_SET K_NULL + | K_SET K_DEFAULT + | K_CASCADE + | K_RESTRICT + | K_NO K_ACTION ) + | K_MATCH name + ) + )* + ( K_NOT? K_DEFERRABLE ( K_INITIALLY K_DEFERRED | K_INITIALLY K_IMMEDIATE )? K_ENABLE? )? + ; + +fk_target_column_name + : name + ; + +raise_function + : K_RAISE '(' ( K_IGNORE + | ( K_ROLLBACK | K_ABORT | K_FAIL ) ',' error_message ) + ')' + ; + +indexed_column + : column_name ( K_COLLATE collation_name )? ( K_ASC | K_DESC )? + ; + +table_constraint + : ( K_CONSTRAINT name )? + ( table_constraint_primary_key + | table_constraint_key + | table_constraint_unique + | K_CHECK '(' expr ')' + | table_constraint_foreign_key + ) + ; + +table_constraint_primary_key + : K_PRIMARY K_KEY '(' indexed_column ( ',' indexed_column )* ')' conflict_clause + ; + +table_constraint_foreign_key + : K_FOREIGN K_KEY '(' fk_origin_column_name ( ',' fk_origin_column_name )* ')' foreign_key_clause + ; + +table_constraint_unique + : K_UNIQUE K_KEY? name? '(' indexed_column ( ',' indexed_column )* ')' conflict_clause + ; + +table_constraint_key + : K_KEY name? '(' indexed_column ( ',' indexed_column )* ')' conflict_clause + ; + +fk_origin_column_name + : column_name + ; + +with_clause + : K_WITH K_RECURSIVE? cte_table_name K_AS '(' select_stmt ')' ( ',' cte_table_name K_AS '(' select_stmt ')' )* + ; + +qualified_table_name + : ( database_name '.' )? table_name ( K_INDEXED K_BY index_name + | K_NOT K_INDEXED )? + ; + +ordering_term + : expr ( K_COLLATE collation_name )? ( K_ASC | K_DESC )? + ; + +pragma_value + : signed_number + | name + | STRING_LITERAL + ; + +common_table_expression + : table_name ( '(' column_name ( ',' column_name )* ')' )? K_AS '(' select_stmt ')' + ; + +result_column + : '*' + | table_name '.' '*' + | expr ( K_AS? column_alias )? + ; + +table_or_subquery + : ( database_name '.' )? table_name ( K_AS? table_alias )? + ( K_INDEXED K_BY index_name + | K_NOT K_INDEXED )? + | '(' ( table_or_subquery ( ',' table_or_subquery )* + | join_clause ) + ')' ( K_AS? table_alias )? + | '(' select_stmt ')' ( K_AS? table_alias )? + ; + +join_clause + : table_or_subquery ( join_operator table_or_subquery join_constraint )* + ; + +join_operator + : ',' + | K_NATURAL? ( K_LEFT K_OUTER? | K_INNER | K_CROSS )? K_JOIN + ; + +join_constraint + : ( K_ON expr + | K_USING '(' column_name ( ',' column_name )* ')' )? + ; + +select_core + : K_SELECT ( K_DISTINCT | K_ALL )? result_column ( ',' result_column )* + ( K_FROM ( table_or_subquery ( ',' table_or_subquery )* | join_clause ) )? + ( K_WHERE expr )? + ( K_GROUP K_BY expr ( ',' expr )* ( K_HAVING expr )? )? + | K_VALUES '(' expr ( ',' expr )* ')' ( ',' '(' expr ( ',' expr )* ')' )* + ; + +compound_operator + : K_UNION + | K_UNION K_ALL + | K_INTERSECT + | K_EXCEPT + ; + +cte_table_name + : table_name ( '(' column_name ( ',' column_name )* ')' )? + ; + +signed_number + : ( ( '+' | '-' )? NUMERIC_LITERAL | '*' ) + ; + +literal_value + : NUMERIC_LITERAL + | STRING_LITERAL + | BLOB_LITERAL + | K_NULL + | K_CURRENT_TIME + | K_CURRENT_DATE + | K_CURRENT_TIMESTAMP + ; + +unary_operator + : '-' + | '+' + | '~' + | K_NOT + ; + +error_message + : STRING_LITERAL + ; + +module_argument // TODO check what exactly is permitted here + : expr + | column_def + ; + +column_alias + : IDENTIFIER + | STRING_LITERAL + ; + +keyword + : K_ABORT + | K_ACTION + | K_ADD + | K_AFTER + | K_ALL + | K_ALTER + | K_ANALYZE + | K_AND + | K_AS + | K_ASC + | K_ATTACH + | K_AUTOINCREMENT + | K_BEFORE + | K_BEGIN + | K_BETWEEN + | K_BY + | K_CASCADE + | K_CASE + | K_CAST + | K_CHECK + | K_COLLATE + | K_COLUMN + | K_COMMIT + | K_CONFLICT + | K_CONSTRAINT + | K_CREATE + | K_CROSS + | K_CURRENT_DATE + | K_CURRENT_TIME + | K_CURRENT_TIMESTAMP + | K_DATABASE + | K_DEFAULT + | K_DEFERRABLE + | K_DEFERRED + | K_DELETE + | K_DESC + | K_DETACH + | K_DISTINCT + | K_DROP + | K_EACH + | K_ELSE + | K_END + | K_ENABLE + | K_ESCAPE + | K_EXCEPT + | K_EXCLUSIVE + | K_EXISTS + | K_EXPLAIN + | K_FAIL + | K_FOR + | K_FOREIGN + | K_FROM + | K_FULL + | K_GLOB + | K_GROUP + | K_HAVING + | K_IF + | K_IGNORE + | K_IMMEDIATE + | K_IN + | K_INDEX + | K_INDEXED + | K_INITIALLY + | K_INNER + | K_INSERT + | K_INSTEAD + | K_INTERSECT + | K_INTO + | K_IS + | K_ISNULL + | K_JOIN + | K_KEY + | K_LEFT + | K_LIKE + | K_LIMIT + | K_MATCH + | K_NATURAL + | K_NO + | K_NOT + | K_NOTNULL + | K_NULL + | K_OF + | K_OFFSET + | K_ON + | K_OR + | K_ORDER + | K_OUTER + | K_PLAN + | K_PRAGMA + | K_PRIMARY + | K_QUERY + | K_RAISE + | K_RECURSIVE + | K_REFERENCES + | K_REGEXP + | K_REINDEX + | K_RELEASE + | K_RENAME + | K_REPLACE + | K_RESTRICT + | K_RIGHT + | K_ROLLBACK + | K_ROW + | K_SAVEPOINT + | K_SELECT + | K_SET + | K_TABLE + | K_TEMP + | K_TEMPORARY + | K_THEN + | K_TO + | K_TRANSACTION + | K_TRIGGER + | K_UNION + | K_UNIQUE + | K_UPDATE + | K_USING + | K_VACUUM + | K_VALUES + | K_VIEW + | K_VIRTUAL + | K_WHEN + | K_WHERE + | K_WITH + | K_WITHOUT + | K_NEXTVAL + ; + +// TODO check all names below + +//[a-zA-Z_0-9\t \-\[\]\=]+ +unknown + : .+ + ; + +name + : any_name + ; + +function_name + : any_name + ; + +database_name + : any_name + ; + +source_table_name + : any_name + ; + +table_name + : any_name + ; + +table_or_index_name + : any_name + ; + +new_table_name + : any_name + ; + +column_name + : any_name + ; + +collation_name + : any_name + ; + +foreign_table + : any_name + ; + +index_name + : any_name + ; + +trigger_name + : any_name + ; + +view_name + : any_name + ; + +module_name + : any_name + ; + +pragma_name + : any_name + ; + +savepoint_name + : any_name + ; + +table_alias + : any_name + ; + +transaction_name + : any_name + ; + +any_name + : IDENTIFIER + | keyword + | STRING_LITERAL + | '(' any_name ')' + ; + +SCOL : ';'; +DOT : '.'; +OPEN_PAR : '('; +CLOSE_PAR : ')'; +COMMA : ','; +ASSIGN : '='; +STAR : '*'; +PLUS : '+'; +MINUS : '-'; +TILDE : '~'; +PIPE2 : '||'; +DIV : '/'; +MOD : '%'; +LT2 : '<<'; +GT2 : '>>'; +AMP : '&'; +PIPE : '|'; +LT : '<'; +LT_EQ : '<='; +GT : '>'; +GT_EQ : '>='; +EQ : '=='; +NOT_EQ1 : '!='; +NOT_EQ2 : '<>'; + +// http://www.sqlite.org/lang_keywords.html +K_ABORT : A B O R T; +K_ACTION : A C T I O N; +K_ADD : A D D; +K_AFTER : A F T E R; +K_ALL : A L L; +K_ALTER : A L T E R; +K_ANALYZE : A N A L Y Z E; +K_AND : A N D; +K_AS : A S; +K_ASC : A S C; +K_ATTACH : A T T A C H; +K_AUTOINCREMENT : A U T O I N C R E M E N T; +K_BEFORE : B E F O R E; +K_BEGIN : B E G I N; +K_BETWEEN : B E T W E E N; +K_BY : B Y; +K_CASCADE : C A S C A D E; +K_CASE : C A S E; +K_CAST : C A S T; +K_CHECK : C H E C K; +K_COLLATE : C O L L A T E; +K_COLUMN : C O L U M N; +K_COMMIT : C O M M I T; +K_CONFLICT : C O N F L I C T; +K_CONSTRAINT : C O N S T R A I N T; +K_CREATE : C R E A T E; +K_CROSS : C R O S S; +K_CURRENT_DATE : C U R R E N T '_' D A T E; +K_CURRENT_TIME : C U R R E N T '_' T I M E; +K_CURRENT_TIMESTAMP : C U R R E N T '_' T I M E S T A M P; +K_DATABASE : D A T A B A S E; +K_DEFAULT : D E F A U L T; +K_DEFERRABLE : D E F E R R A B L E; +K_DEFERRED : D E F E R R E D; +K_DELETE : D E L E T E; +K_DESC : D E S C; +K_DETACH : D E T A C H; +K_DISTINCT : D I S T I N C T; +K_DROP : D R O P; +K_EACH : E A C H; +K_ELSE : E L S E; +K_END : E N D; +K_ENABLE : E N A B L E; +K_ESCAPE : E S C A P E; +K_EXCEPT : E X C E P T; +K_EXCLUSIVE : E X C L U S I V E; +K_EXISTS : E X I S T S; +K_EXPLAIN : E X P L A I N; +K_FAIL : F A I L; +K_FOR : F O R; +K_FOREIGN : F O R E I G N; +K_FROM : F R O M; +K_FULL : F U L L; +K_GLOB : G L O B; +K_GROUP : G R O U P; +K_HAVING : H A V I N G; +K_IF : I F; +K_IGNORE : I G N O R E; +K_IMMEDIATE : I M M E D I A T E; +K_IN : I N; +K_INDEX : I N D E X; +K_INDEXED : I N D E X E D; +K_INITIALLY : I N I T I A L L Y; +K_INNER : I N N E R; +K_INSERT : I N S E R T; +K_INSTEAD : I N S T E A D; +K_INTERSECT : I N T E R S E C T; +K_INTO : I N T O; +K_IS : I S; +K_ISNULL : I S N U L L; +K_JOIN : J O I N; +K_KEY : K E Y; +K_LEFT : L E F T; +K_LIKE : L I K E; +K_LIMIT : L I M I T; +K_MATCH : M A T C H; +K_NATURAL : N A T U R A L; +K_NEXTVAL : N E X T V A L; +K_NO : N O; +K_NOT : N O T; +K_NOTNULL : N O T N U L L; +K_NULL : N U L L; +K_OF : O F; +K_OFFSET : O F F S E T; +K_ON : O N; +K_ONLY : O N L Y; +K_OR : O R; +K_ORDER : O R D E R; +K_OUTER : O U T E R; +K_PLAN : P L A N; +K_PRAGMA : P R A G M A; +K_PRIMARY : P R I M A R Y; +K_QUERY : Q U E R Y; +K_RAISE : R A I S E; +K_RECURSIVE : R E C U R S I V E; +K_REFERENCES : R E F E R E N C E S; +K_REGEXP : R E G E X P; +K_REINDEX : R E I N D E X; +K_RELEASE : R E L E A S E; +K_RENAME : R E N A M E; +K_REPLACE : R E P L A C E; +K_RESTRICT : R E S T R I C T; +K_RIGHT : R I G H T; +K_ROLLBACK : R O L L B A C K; +K_ROW : R O W; +K_SAVEPOINT : S A V E P O I N T; +K_SELECT : S E L E C T; +K_SET : S E T; +K_TABLE : T A B L E; +K_TEMP : T E M P; +K_TEMPORARY : T E M P O R A R Y; +K_THEN : T H E N; +K_TO : T O; +K_TRANSACTION : T R A N S A C T I O N; +K_TRIGGER : T R I G G E R; +K_UNION : U N I O N; +K_UNIQUE : U N I Q U E; +K_UPDATE : U P D A T E; +K_USING : U S I N G; +K_VACUUM : V A C U U M; +K_VALUES : V A L U E S; +K_VIEW : V I E W; +K_VIRTUAL : V I R T U A L; +K_WHEN : W H E N; +K_WHERE : W H E R E; +K_WITH : W I T H; +K_WITHOUT : W I T H O U T; + +IDENTIFIER + : '"' (~'"' | '""')* '"' + | '`' (~'`' | '``')* '`' + | '[' ~']'* ']' + | [a-zA-Z_] [a-zA-Z_0-9]* // TODO check: needs more chars in set + ; + +NUMERIC_LITERAL + : DIGIT+ ( '.' DIGIT* )? ( E [-+]? DIGIT+ )? + | '.' DIGIT+ ( E [-+]? DIGIT+ )? + ; + +BIND_PARAMETER + : '?' DIGIT* + | [:@$] IDENTIFIER + ; + +STRING_LITERAL + : '\'' ( ~'\'' | '\'\'' )* '\'' + ; + +BLOB_LITERAL + : X STRING_LITERAL + ; + +SINGLE_LINE_COMMENT + : '--' ~[\r\n]* -> channel(HIDDEN) + ; + +MULTILINE_COMMENT + : '/*' .*? ( '*/' | EOF ) -> channel(HIDDEN) + ; + +SPACES + : [ \u000B\t\r\n] -> channel(HIDDEN) + ; + +UNEXPECTED_CHAR + : . + ; + +fragment DIGIT : [0-9]; + +fragment A : [aA]; +fragment B : [bB]; +fragment C : [cC]; +fragment D : [dD]; +fragment E : [eE]; +fragment F : [fF]; +fragment G : [gG]; +fragment H : [hH]; +fragment I : [iI]; +fragment J : [jJ]; +fragment K : [kK]; +fragment L : [lL]; +fragment M : [mM]; +fragment N : [nN]; +fragment O : [oO]; +fragment P : [pP]; +fragment Q : [qQ]; +fragment R : [rR]; +fragment S : [sS]; +fragment T : [tT]; +fragment U : [uU]; +fragment V : [vV]; +fragment W : [wW]; +fragment X : [xX]; +fragment Y : [yY]; +fragment Z : [zZ]; \ No newline at end of file diff --git a/processor/stream_processor/test/parser/Sql.interp b/processor/stream_processor/test/parser/Sql.interp new file mode 100644 index 000000000000..2390b99ed92a --- /dev/null +++ b/processor/stream_processor/test/parser/Sql.interp @@ -0,0 +1,431 @@ +token literal names: +null +'::' +';' +'.' +'(' +')' +',' +'=' +'*' +'+' +'-' +'~' +'||' +'/' +'%' +'<<' +'>>' +'&' +'|' +'<' +'<=' +'>' +'>=' +'==' +'!=' +'<>' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null + +token symbolic names: +null +null +SCOL +DOT +OPEN_PAR +CLOSE_PAR +COMMA +ASSIGN +STAR +PLUS +MINUS +TILDE +PIPE2 +DIV +MOD +LT2 +GT2 +AMP +PIPE +LT +LT_EQ +GT +GT_EQ +EQ +NOT_EQ1 +NOT_EQ2 +K_ABORT +K_ACTION +K_ADD +K_AFTER +K_ALL +K_ALTER +K_ANALYZE +K_AND +K_AS +K_ASC +K_ATTACH +K_AUTOINCREMENT +K_BEFORE +K_BEGIN +K_BETWEEN +K_BY +K_CASCADE +K_CASE +K_CAST +K_CHECK +K_COLLATE +K_COLUMN +K_COMMIT +K_CONFLICT +K_CONSTRAINT +K_CREATE +K_CROSS +K_CURRENT_DATE +K_CURRENT_TIME +K_CURRENT_TIMESTAMP +K_DATABASE +K_DEFAULT +K_DEFERRABLE +K_DEFERRED +K_DELETE +K_DESC +K_DETACH +K_DISTINCT +K_DROP +K_EACH +K_ELSE +K_END +K_ENABLE +K_ESCAPE +K_EXCEPT +K_EXCLUSIVE +K_EXISTS +K_EXPLAIN +K_FAIL +K_FOR +K_FOREIGN +K_FROM +K_FULL +K_GLOB +K_GROUP +K_HAVING +K_IF +K_IGNORE +K_IMMEDIATE +K_IN +K_INDEX +K_INDEXED +K_INITIALLY +K_INNER +K_INSERT +K_INSTEAD +K_INTERSECT +K_INTO +K_IS +K_ISNULL +K_JOIN +K_KEY +K_LEFT +K_LIKE +K_LIMIT +K_MATCH +K_NATURAL +K_NEXTVAL +K_NO +K_NOT +K_NOTNULL +K_NULL +K_OF +K_OFFSET +K_ON +K_ONLY +K_OR +K_ORDER +K_OUTER +K_PLAN +K_PRAGMA +K_PRIMARY +K_QUERY +K_RAISE +K_RECURSIVE +K_REFERENCES +K_REGEXP +K_REINDEX +K_RELEASE +K_RENAME +K_REPLACE +K_RESTRICT +K_RIGHT +K_ROLLBACK +K_ROW +K_SAVEPOINT +K_SELECT +K_SET +K_TABLE +K_TEMP +K_TEMPORARY +K_THEN +K_TO +K_TRANSACTION +K_TRIGGER +K_UNION +K_UNIQUE +K_UPDATE +K_USING +K_VACUUM +K_VALUES +K_VIEW +K_VIRTUAL +K_WHEN +K_WHERE +K_WITH +K_WITHOUT +IDENTIFIER +NUMERIC_LITERAL +BIND_PARAMETER +STRING_LITERAL +BLOB_LITERAL +SINGLE_LINE_COMMENT +MULTILINE_COMMENT +SPACES +UNEXPECTED_CHAR + +rule names: +parse +error +sql_stmt_list +sql_stmt +alter_table_stmt +alter_table_add_constraint +alter_table_add +analyze_stmt +attach_stmt +begin_stmt +commit_stmt +compound_select_stmt +create_index_stmt +create_table_stmt +create_trigger_stmt +create_view_stmt +create_virtual_table_stmt +delete_stmt +delete_stmt_limited +detach_stmt +drop_index_stmt +drop_table_stmt +drop_trigger_stmt +drop_view_stmt +factored_select_stmt +insert_stmt +pragma_stmt +reindex_stmt +release_stmt +rollback_stmt +savepoint_stmt +simple_select_stmt +select_stmt +select_or_values +update_stmt +update_stmt_limited +vacuum_stmt +column_def +type_name +column_constraint +column_constraint_primary_key +column_constraint_foreign_key +column_constraint_not_null +column_constraint_null +column_default +column_default_value +conflict_clause +expr +foreign_key_clause +fk_target_column_name +raise_function +indexed_column +table_constraint +table_constraint_primary_key +table_constraint_foreign_key +table_constraint_unique +table_constraint_key +fk_origin_column_name +with_clause +qualified_table_name +ordering_term +pragma_value +common_table_expression +result_column +table_or_subquery +join_clause +join_operator +join_constraint +select_core +compound_operator +cte_table_name +signed_number +literal_value +unary_operator +error_message +module_argument +column_alias +keyword +unknown +name +function_name +database_name +source_table_name +table_name +table_or_index_name +new_table_name +column_name +collation_name +foreign_table +index_name +trigger_name +view_name +module_name +pragma_name +savepoint_name +table_alias +transaction_name +any_name + + +atn: +[4, 1, 161, 1866, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 1, 0, 1, 0, 5, 0, 199, 8, 0, 10, 0, 12, 0, 202, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 5, 2, 210, 8, 2, 10, 2, 12, 2, 213, 9, 2, 1, 2, 1, 2, 4, 2, 217, 8, 2, 11, 2, 12, 2, 218, 1, 2, 5, 2, 222, 8, 2, 10, 2, 12, 2, 225, 9, 2, 1, 2, 5, 2, 228, 8, 2, 10, 2, 12, 2, 231, 9, 2, 1, 3, 1, 3, 1, 3, 3, 3, 236, 8, 3, 3, 3, 238, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 270, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 275, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 280, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 290, 8, 4, 1, 4, 3, 4, 293, 8, 4, 1, 4, 3, 4, 296, 8, 4, 1, 4, 3, 4, 299, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 316, 8, 7, 1, 8, 1, 8, 3, 8, 320, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 3, 9, 328, 8, 9, 1, 9, 1, 9, 3, 9, 332, 8, 9, 3, 9, 334, 8, 9, 1, 10, 1, 10, 1, 10, 3, 10, 339, 8, 10, 3, 10, 341, 8, 10, 1, 11, 1, 11, 3, 11, 345, 8, 11, 1, 11, 1, 11, 1, 11, 5, 11, 350, 8, 11, 10, 11, 12, 11, 353, 9, 11, 3, 11, 355, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 360, 8, 11, 1, 11, 1, 11, 3, 11, 364, 8, 11, 1, 11, 4, 11, 367, 8, 11, 11, 11, 12, 11, 368, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 376, 8, 11, 10, 11, 12, 11, 379, 9, 11, 3, 11, 381, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 387, 8, 11, 3, 11, 389, 8, 11, 1, 12, 1, 12, 3, 12, 393, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 399, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 404, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 413, 8, 12, 10, 12, 12, 12, 416, 9, 12, 1, 12, 1, 12, 1, 12, 3, 12, 421, 8, 12, 1, 13, 1, 13, 3, 13, 425, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 431, 8, 13, 1, 13, 1, 13, 1, 13, 3, 13, 436, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 445, 8, 13, 10, 13, 12, 13, 448, 9, 13, 1, 13, 1, 13, 1, 13, 3, 13, 453, 8, 13, 1, 13, 1, 13, 3, 13, 457, 8, 13, 1, 13, 3, 13, 460, 8, 13, 1, 14, 1, 14, 3, 14, 464, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 470, 8, 14, 1, 14, 1, 14, 1, 14, 3, 14, 475, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 482, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 491, 8, 14, 10, 14, 12, 14, 494, 9, 14, 3, 14, 496, 8, 14, 3, 14, 498, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 504, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 510, 8, 14, 1, 14, 1, 14, 3, 14, 514, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 521, 8, 14, 1, 14, 1, 14, 4, 14, 525, 8, 14, 11, 14, 12, 14, 526, 1, 14, 1, 14, 1, 15, 1, 15, 3, 15, 533, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 539, 8, 15, 1, 15, 1, 15, 1, 15, 3, 15, 544, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 556, 8, 16, 1, 16, 1, 16, 1, 16, 3, 16, 561, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 570, 8, 16, 10, 16, 12, 16, 573, 9, 16, 1, 16, 1, 16, 3, 16, 577, 8, 16, 1, 17, 3, 17, 580, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 587, 8, 17, 1, 18, 3, 18, 590, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 597, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 604, 8, 18, 10, 18, 12, 18, 607, 9, 18, 3, 18, 609, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 615, 8, 18, 3, 18, 617, 8, 18, 1, 19, 1, 19, 3, 19, 621, 8, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 629, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 634, 8, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 642, 8, 21, 1, 21, 1, 21, 1, 21, 3, 21, 647, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 655, 8, 22, 1, 22, 1, 22, 1, 22, 3, 22, 660, 8, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 668, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 673, 8, 23, 1, 23, 1, 23, 1, 24, 1, 24, 3, 24, 679, 8, 24, 1, 24, 1, 24, 1, 24, 5, 24, 684, 8, 24, 10, 24, 12, 24, 687, 9, 24, 3, 24, 689, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 695, 8, 24, 10, 24, 12, 24, 698, 9, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 705, 8, 24, 10, 24, 12, 24, 708, 9, 24, 3, 24, 710, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 716, 8, 24, 3, 24, 718, 8, 24, 1, 25, 3, 25, 721, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 740, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 746, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 753, 8, 25, 10, 25, 12, 25, 756, 9, 25, 1, 25, 1, 25, 3, 25, 760, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 767, 8, 25, 10, 25, 12, 25, 770, 9, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 778, 8, 25, 10, 25, 12, 25, 781, 9, 25, 1, 25, 1, 25, 5, 25, 785, 8, 25, 10, 25, 12, 25, 788, 9, 25, 1, 25, 1, 25, 1, 25, 3, 25, 793, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 799, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 808, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 815, 8, 27, 1, 27, 1, 27, 3, 27, 819, 8, 27, 3, 27, 821, 8, 27, 1, 28, 1, 28, 3, 28, 825, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 3, 29, 832, 8, 29, 3, 29, 834, 8, 29, 1, 29, 1, 29, 3, 29, 838, 8, 29, 1, 29, 3, 29, 841, 8, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 3, 31, 848, 8, 31, 1, 31, 1, 31, 1, 31, 5, 31, 853, 8, 31, 10, 31, 12, 31, 856, 9, 31, 3, 31, 858, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 866, 8, 31, 10, 31, 12, 31, 869, 9, 31, 3, 31, 871, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 877, 8, 31, 3, 31, 879, 8, 31, 1, 32, 1, 32, 3, 32, 883, 8, 32, 1, 32, 1, 32, 1, 32, 5, 32, 888, 8, 32, 10, 32, 12, 32, 891, 9, 32, 3, 32, 893, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 899, 8, 32, 10, 32, 12, 32, 902, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 909, 8, 32, 10, 32, 12, 32, 912, 9, 32, 3, 32, 914, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 920, 8, 32, 3, 32, 922, 8, 32, 1, 33, 1, 33, 3, 33, 926, 8, 33, 1, 33, 1, 33, 1, 33, 5, 33, 931, 8, 33, 10, 33, 12, 33, 934, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 940, 8, 33, 10, 33, 12, 33, 943, 9, 33, 1, 33, 3, 33, 946, 8, 33, 3, 33, 948, 8, 33, 1, 33, 1, 33, 3, 33, 952, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 959, 8, 33, 10, 33, 12, 33, 962, 9, 33, 1, 33, 1, 33, 3, 33, 966, 8, 33, 3, 33, 968, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 975, 8, 33, 10, 33, 12, 33, 978, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 986, 8, 33, 10, 33, 12, 33, 989, 9, 33, 1, 33, 1, 33, 5, 33, 993, 8, 33, 10, 33, 12, 33, 996, 9, 33, 3, 33, 998, 8, 33, 1, 34, 3, 34, 1001, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 1014, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 1026, 8, 34, 10, 34, 12, 34, 1029, 9, 34, 1, 34, 1, 34, 3, 34, 1033, 8, 34, 1, 35, 3, 35, 1036, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1049, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 1061, 8, 35, 10, 35, 12, 35, 1064, 9, 35, 1, 35, 1, 35, 3, 35, 1068, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 1075, 8, 35, 10, 35, 12, 35, 1078, 9, 35, 3, 35, 1080, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1086, 8, 35, 3, 35, 1088, 8, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 5, 37, 1095, 8, 37, 10, 37, 12, 37, 1098, 9, 37, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1104, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1111, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1116, 8, 38, 1, 38, 1, 38, 3, 38, 1120, 8, 38, 1, 39, 1, 39, 3, 39, 1124, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1140, 8, 39, 1, 40, 1, 40, 1, 40, 3, 40, 1145, 8, 40, 1, 40, 1, 40, 3, 40, 1149, 8, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1172, 8, 44, 1, 44, 1, 44, 4, 44, 1176, 8, 44, 11, 44, 12, 44, 1177, 3, 44, 1180, 8, 44, 1, 45, 1, 45, 3, 45, 1184, 8, 45, 1, 46, 1, 46, 1, 46, 3, 46, 1189, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1197, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1202, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1211, 8, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1216, 8, 47, 10, 47, 12, 47, 1219, 9, 47, 1, 47, 3, 47, 1222, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1238, 8, 47, 1, 47, 3, 47, 1241, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1249, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 4, 47, 1256, 8, 47, 11, 47, 12, 47, 1257, 1, 47, 1, 47, 3, 47, 1262, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1267, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1297, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1309, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1314, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1326, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1332, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1339, 8, 47, 1, 47, 1, 47, 3, 47, 1343, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1351, 8, 47, 10, 47, 12, 47, 1354, 9, 47, 3, 47, 1356, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1362, 8, 47, 1, 47, 3, 47, 1365, 8, 47, 5, 47, 1367, 8, 47, 10, 47, 12, 47, 1370, 9, 47, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1376, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 5, 48, 1383, 8, 48, 10, 48, 12, 48, 1386, 9, 48, 1, 48, 1, 48, 3, 48, 1390, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1402, 8, 48, 1, 48, 1, 48, 3, 48, 1406, 8, 48, 5, 48, 1408, 8, 48, 10, 48, 12, 48, 1411, 9, 48, 1, 48, 3, 48, 1414, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1421, 8, 48, 1, 48, 3, 48, 1424, 8, 48, 3, 48, 1426, 8, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1436, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 3, 51, 1443, 8, 51, 1, 51, 3, 51, 1446, 8, 51, 1, 52, 1, 52, 3, 52, 1450, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1461, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1469, 8, 53, 10, 53, 12, 53, 1472, 9, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1483, 8, 54, 10, 54, 12, 54, 1486, 9, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 3, 55, 1493, 8, 55, 1, 55, 3, 55, 1496, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1502, 8, 55, 10, 55, 12, 55, 1505, 9, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 3, 56, 1512, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 5, 56, 1518, 8, 56, 10, 56, 12, 56, 1521, 9, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 3, 58, 1530, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 1544, 8, 58, 10, 58, 12, 58, 1547, 9, 58, 1, 59, 1, 59, 1, 59, 3, 59, 1552, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1560, 8, 59, 1, 60, 1, 60, 1, 60, 3, 60, 1565, 8, 60, 1, 60, 3, 60, 1568, 8, 60, 1, 61, 1, 61, 1, 61, 3, 61, 1573, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 1580, 8, 62, 10, 62, 12, 62, 1583, 9, 62, 1, 62, 1, 62, 3, 62, 1587, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1601, 8, 63, 1, 63, 3, 63, 1604, 8, 63, 3, 63, 1606, 8, 63, 1, 64, 1, 64, 1, 64, 3, 64, 1611, 8, 64, 1, 64, 1, 64, 3, 64, 1615, 8, 64, 1, 64, 3, 64, 1618, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1625, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 1631, 8, 64, 10, 64, 12, 64, 1634, 9, 64, 1, 64, 3, 64, 1637, 8, 64, 1, 64, 1, 64, 3, 64, 1641, 8, 64, 1, 64, 3, 64, 1644, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1650, 8, 64, 1, 64, 3, 64, 1653, 8, 64, 3, 64, 1655, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 1662, 8, 65, 10, 65, 12, 65, 1665, 9, 65, 1, 66, 1, 66, 3, 66, 1669, 8, 66, 1, 66, 1, 66, 3, 66, 1673, 8, 66, 1, 66, 1, 66, 3, 66, 1677, 8, 66, 1, 66, 3, 66, 1680, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 1689, 8, 67, 10, 67, 12, 67, 1692, 9, 67, 1, 67, 1, 67, 3, 67, 1696, 8, 67, 1, 68, 1, 68, 3, 68, 1700, 8, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1705, 8, 68, 10, 68, 12, 68, 1708, 9, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1714, 8, 68, 10, 68, 12, 68, 1717, 9, 68, 1, 68, 3, 68, 1720, 8, 68, 3, 68, 1722, 8, 68, 1, 68, 1, 68, 3, 68, 1726, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1733, 8, 68, 10, 68, 12, 68, 1736, 9, 68, 1, 68, 1, 68, 3, 68, 1740, 8, 68, 3, 68, 1742, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1749, 8, 68, 10, 68, 12, 68, 1752, 9, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1760, 8, 68, 10, 68, 12, 68, 1763, 9, 68, 1, 68, 1, 68, 5, 68, 1767, 8, 68, 10, 68, 12, 68, 1770, 9, 68, 3, 68, 1772, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1779, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 1786, 8, 70, 10, 70, 12, 70, 1789, 9, 70, 1, 70, 1, 70, 3, 70, 1793, 8, 70, 1, 71, 3, 71, 1796, 8, 71, 1, 71, 1, 71, 3, 71, 1800, 8, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 75, 1, 75, 3, 75, 1810, 8, 75, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 4, 78, 1817, 8, 78, 11, 78, 12, 78, 1818, 1, 79, 1, 79, 1, 80, 1, 80, 1, 81, 1, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, 95, 1, 95, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 1864, 8, 97, 1, 97, 0, 1, 94, 98, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 0, 18, 3, 0, 59, 59, 71, 71, 84, 84, 2, 0, 48, 48, 67, 67, 2, 0, 6, 6, 109, 109, 1, 0, 135, 136, 2, 0, 30, 30, 63, 63, 2, 0, 35, 35, 61, 61, 5, 0, 26, 26, 74, 74, 83, 83, 126, 126, 129, 129, 2, 0, 8, 8, 13, 14, 1, 0, 9, 10, 1, 0, 15, 18, 1, 0, 19, 22, 4, 0, 79, 79, 99, 99, 101, 101, 122, 122, 2, 0, 60, 60, 143, 143, 3, 0, 26, 26, 74, 74, 129, 129, 4, 0, 53, 55, 107, 107, 154, 154, 156, 157, 2, 0, 9, 11, 105, 105, 2, 0, 153, 153, 156, 156, 2, 0, 26, 110, 112, 152, 2141, 0, 200, 1, 0, 0, 0, 2, 205, 1, 0, 0, 0, 4, 211, 1, 0, 0, 0, 6, 237, 1, 0, 0, 0, 8, 271, 1, 0, 0, 0, 10, 300, 1, 0, 0, 0, 12, 305, 1, 0, 0, 0, 14, 308, 1, 0, 0, 0, 16, 317, 1, 0, 0, 0, 18, 325, 1, 0, 0, 0, 20, 335, 1, 0, 0, 0, 22, 354, 1, 0, 0, 0, 24, 390, 1, 0, 0, 0, 26, 422, 1, 0, 0, 0, 28, 461, 1, 0, 0, 0, 30, 530, 1, 0, 0, 0, 32, 549, 1, 0, 0, 0, 34, 579, 1, 0, 0, 0, 36, 589, 1, 0, 0, 0, 38, 618, 1, 0, 0, 0, 40, 624, 1, 0, 0, 0, 42, 637, 1, 0, 0, 0, 44, 650, 1, 0, 0, 0, 46, 663, 1, 0, 0, 0, 48, 688, 1, 0, 0, 0, 50, 720, 1, 0, 0, 0, 52, 794, 1, 0, 0, 0, 54, 809, 1, 0, 0, 0, 56, 822, 1, 0, 0, 0, 58, 828, 1, 0, 0, 0, 60, 842, 1, 0, 0, 0, 62, 857, 1, 0, 0, 0, 64, 892, 1, 0, 0, 0, 66, 997, 1, 0, 0, 0, 68, 1000, 1, 0, 0, 0, 70, 1035, 1, 0, 0, 0, 72, 1089, 1, 0, 0, 0, 74, 1091, 1, 0, 0, 0, 76, 1099, 1, 0, 0, 0, 78, 1123, 1, 0, 0, 0, 80, 1141, 1, 0, 0, 0, 82, 1150, 1, 0, 0, 0, 84, 1152, 1, 0, 0, 0, 86, 1156, 1, 0, 0, 0, 88, 1159, 1, 0, 0, 0, 90, 1183, 1, 0, 0, 0, 92, 1188, 1, 0, 0, 0, 94, 1266, 1, 0, 0, 0, 96, 1371, 1, 0, 0, 0, 98, 1427, 1, 0, 0, 0, 100, 1429, 1, 0, 0, 0, 102, 1439, 1, 0, 0, 0, 104, 1449, 1, 0, 0, 0, 106, 1462, 1, 0, 0, 0, 108, 1476, 1, 0, 0, 0, 110, 1490, 1, 0, 0, 0, 112, 1509, 1, 0, 0, 0, 114, 1525, 1, 0, 0, 0, 116, 1527, 1, 0, 0, 0, 118, 1551, 1, 0, 0, 0, 120, 1561, 1, 0, 0, 0, 122, 1572, 1, 0, 0, 0, 124, 1574, 1, 0, 0, 0, 126, 1605, 1, 0, 0, 0, 128, 1654, 1, 0, 0, 0, 130, 1656, 1, 0, 0, 0, 132, 1679, 1, 0, 0, 0, 134, 1695, 1, 0, 0, 0, 136, 1771, 1, 0, 0, 0, 138, 1778, 1, 0, 0, 0, 140, 1780, 1, 0, 0, 0, 142, 1799, 1, 0, 0, 0, 144, 1801, 1, 0, 0, 0, 146, 1803, 1, 0, 0, 0, 148, 1805, 1, 0, 0, 0, 150, 1809, 1, 0, 0, 0, 152, 1811, 1, 0, 0, 0, 154, 1813, 1, 0, 0, 0, 156, 1816, 1, 0, 0, 0, 158, 1820, 1, 0, 0, 0, 160, 1822, 1, 0, 0, 0, 162, 1824, 1, 0, 0, 0, 164, 1826, 1, 0, 0, 0, 166, 1828, 1, 0, 0, 0, 168, 1830, 1, 0, 0, 0, 170, 1832, 1, 0, 0, 0, 172, 1834, 1, 0, 0, 0, 174, 1836, 1, 0, 0, 0, 176, 1838, 1, 0, 0, 0, 178, 1840, 1, 0, 0, 0, 180, 1842, 1, 0, 0, 0, 182, 1844, 1, 0, 0, 0, 184, 1846, 1, 0, 0, 0, 186, 1848, 1, 0, 0, 0, 188, 1850, 1, 0, 0, 0, 190, 1852, 1, 0, 0, 0, 192, 1854, 1, 0, 0, 0, 194, 1863, 1, 0, 0, 0, 196, 199, 3, 4, 2, 0, 197, 199, 3, 2, 1, 0, 198, 196, 1, 0, 0, 0, 198, 197, 1, 0, 0, 0, 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 203, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 204, 5, 0, 0, 1, 204, 1, 1, 0, 0, 0, 205, 206, 5, 161, 0, 0, 206, 207, 6, 1, -1, 0, 207, 3, 1, 0, 0, 0, 208, 210, 5, 2, 0, 0, 209, 208, 1, 0, 0, 0, 210, 213, 1, 0, 0, 0, 211, 209, 1, 0, 0, 0, 211, 212, 1, 0, 0, 0, 212, 214, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 214, 223, 3, 6, 3, 0, 215, 217, 5, 2, 0, 0, 216, 215, 1, 0, 0, 0, 217, 218, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 222, 3, 6, 3, 0, 221, 216, 1, 0, 0, 0, 222, 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 229, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 228, 5, 2, 0, 0, 227, 226, 1, 0, 0, 0, 228, 231, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 5, 1, 0, 0, 0, 231, 229, 1, 0, 0, 0, 232, 235, 5, 73, 0, 0, 233, 234, 5, 118, 0, 0, 234, 236, 5, 115, 0, 0, 235, 233, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 238, 1, 0, 0, 0, 237, 232, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 269, 1, 0, 0, 0, 239, 270, 3, 8, 4, 0, 240, 270, 3, 14, 7, 0, 241, 270, 3, 16, 8, 0, 242, 270, 3, 18, 9, 0, 243, 270, 3, 20, 10, 0, 244, 270, 3, 22, 11, 0, 245, 270, 3, 24, 12, 0, 246, 270, 3, 26, 13, 0, 247, 270, 3, 28, 14, 0, 248, 270, 3, 30, 15, 0, 249, 270, 3, 32, 16, 0, 250, 270, 3, 34, 17, 0, 251, 270, 3, 36, 18, 0, 252, 270, 3, 38, 19, 0, 253, 270, 3, 40, 20, 0, 254, 270, 3, 42, 21, 0, 255, 270, 3, 44, 22, 0, 256, 270, 3, 46, 23, 0, 257, 270, 3, 48, 24, 0, 258, 270, 3, 50, 25, 0, 259, 270, 3, 52, 26, 0, 260, 270, 3, 54, 27, 0, 261, 270, 3, 56, 28, 0, 262, 270, 3, 58, 29, 0, 263, 270, 3, 60, 30, 0, 264, 270, 3, 62, 31, 0, 265, 270, 3, 64, 32, 0, 266, 270, 3, 68, 34, 0, 267, 270, 3, 70, 35, 0, 268, 270, 3, 72, 36, 0, 269, 239, 1, 0, 0, 0, 269, 240, 1, 0, 0, 0, 269, 241, 1, 0, 0, 0, 269, 242, 1, 0, 0, 0, 269, 243, 1, 0, 0, 0, 269, 244, 1, 0, 0, 0, 269, 245, 1, 0, 0, 0, 269, 246, 1, 0, 0, 0, 269, 247, 1, 0, 0, 0, 269, 248, 1, 0, 0, 0, 269, 249, 1, 0, 0, 0, 269, 250, 1, 0, 0, 0, 269, 251, 1, 0, 0, 0, 269, 252, 1, 0, 0, 0, 269, 253, 1, 0, 0, 0, 269, 254, 1, 0, 0, 0, 269, 255, 1, 0, 0, 0, 269, 256, 1, 0, 0, 0, 269, 257, 1, 0, 0, 0, 269, 258, 1, 0, 0, 0, 269, 259, 1, 0, 0, 0, 269, 260, 1, 0, 0, 0, 269, 261, 1, 0, 0, 0, 269, 262, 1, 0, 0, 0, 269, 263, 1, 0, 0, 0, 269, 264, 1, 0, 0, 0, 269, 265, 1, 0, 0, 0, 269, 266, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 269, 268, 1, 0, 0, 0, 270, 7, 1, 0, 0, 0, 271, 272, 5, 31, 0, 0, 272, 274, 5, 134, 0, 0, 273, 275, 5, 111, 0, 0, 274, 273, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 279, 1, 0, 0, 0, 276, 277, 3, 162, 81, 0, 277, 278, 5, 3, 0, 0, 278, 280, 1, 0, 0, 0, 279, 276, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 292, 3, 164, 82, 0, 282, 283, 5, 125, 0, 0, 283, 284, 5, 138, 0, 0, 284, 293, 3, 170, 85, 0, 285, 293, 3, 12, 6, 0, 286, 293, 3, 10, 5, 0, 287, 289, 5, 28, 0, 0, 288, 290, 5, 47, 0, 0, 289, 288, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 291, 1, 0, 0, 0, 291, 293, 3, 74, 37, 0, 292, 282, 1, 0, 0, 0, 292, 285, 1, 0, 0, 0, 292, 286, 1, 0, 0, 0, 292, 287, 1, 0, 0, 0, 293, 295, 1, 0, 0, 0, 294, 296, 5, 68, 0, 0, 295, 294, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 298, 1, 0, 0, 0, 297, 299, 3, 156, 78, 0, 298, 297, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, 299, 9, 1, 0, 0, 0, 300, 301, 5, 28, 0, 0, 301, 302, 5, 50, 0, 0, 302, 303, 3, 194, 97, 0, 303, 304, 3, 104, 52, 0, 304, 11, 1, 0, 0, 0, 305, 306, 5, 28, 0, 0, 306, 307, 3, 104, 52, 0, 307, 13, 1, 0, 0, 0, 308, 315, 5, 32, 0, 0, 309, 316, 3, 162, 81, 0, 310, 316, 3, 168, 84, 0, 311, 312, 3, 162, 81, 0, 312, 313, 5, 3, 0, 0, 313, 314, 3, 168, 84, 0, 314, 316, 1, 0, 0, 0, 315, 309, 1, 0, 0, 0, 315, 310, 1, 0, 0, 0, 315, 311, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 15, 1, 0, 0, 0, 317, 319, 5, 36, 0, 0, 318, 320, 5, 56, 0, 0, 319, 318, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 322, 3, 94, 47, 0, 322, 323, 5, 34, 0, 0, 323, 324, 3, 162, 81, 0, 324, 17, 1, 0, 0, 0, 325, 327, 5, 39, 0, 0, 326, 328, 7, 0, 0, 0, 327, 326, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 333, 1, 0, 0, 0, 329, 331, 5, 139, 0, 0, 330, 332, 3, 192, 96, 0, 331, 330, 1, 0, 0, 0, 331, 332, 1, 0, 0, 0, 332, 334, 1, 0, 0, 0, 333, 329, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 19, 1, 0, 0, 0, 335, 340, 7, 1, 0, 0, 336, 338, 5, 139, 0, 0, 337, 339, 3, 192, 96, 0, 338, 337, 1, 0, 0, 0, 338, 339, 1, 0, 0, 0, 339, 341, 1, 0, 0, 0, 340, 336, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 21, 1, 0, 0, 0, 342, 344, 5, 151, 0, 0, 343, 345, 5, 120, 0, 0, 344, 343, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 351, 3, 124, 62, 0, 347, 348, 5, 6, 0, 0, 348, 350, 3, 124, 62, 0, 349, 347, 1, 0, 0, 0, 350, 353, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 355, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 354, 342, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 366, 3, 136, 68, 0, 357, 359, 5, 141, 0, 0, 358, 360, 5, 30, 0, 0, 359, 358, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 364, 1, 0, 0, 0, 361, 364, 5, 92, 0, 0, 362, 364, 5, 70, 0, 0, 363, 357, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 363, 362, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 367, 3, 136, 68, 0, 366, 363, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 380, 1, 0, 0, 0, 370, 371, 5, 113, 0, 0, 371, 372, 5, 41, 0, 0, 372, 377, 3, 120, 60, 0, 373, 374, 5, 6, 0, 0, 374, 376, 3, 120, 60, 0, 375, 373, 1, 0, 0, 0, 376, 379, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 381, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 380, 370, 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 388, 1, 0, 0, 0, 382, 383, 5, 100, 0, 0, 383, 386, 3, 94, 47, 0, 384, 385, 7, 2, 0, 0, 385, 387, 3, 94, 47, 0, 386, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 389, 1, 0, 0, 0, 388, 382, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 23, 1, 0, 0, 0, 390, 392, 5, 51, 0, 0, 391, 393, 5, 142, 0, 0, 392, 391, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 394, 1, 0, 0, 0, 394, 398, 5, 86, 0, 0, 395, 396, 5, 82, 0, 0, 396, 397, 5, 105, 0, 0, 397, 399, 5, 72, 0, 0, 398, 395, 1, 0, 0, 0, 398, 399, 1, 0, 0, 0, 399, 403, 1, 0, 0, 0, 400, 401, 3, 162, 81, 0, 401, 402, 5, 3, 0, 0, 402, 404, 1, 0, 0, 0, 403, 400, 1, 0, 0, 0, 403, 404, 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, 406, 3, 178, 89, 0, 406, 407, 5, 110, 0, 0, 407, 408, 3, 166, 83, 0, 408, 409, 5, 4, 0, 0, 409, 414, 3, 102, 51, 0, 410, 411, 5, 6, 0, 0, 411, 413, 3, 102, 51, 0, 412, 410, 1, 0, 0, 0, 413, 416, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 417, 1, 0, 0, 0, 416, 414, 1, 0, 0, 0, 417, 420, 5, 5, 0, 0, 418, 419, 5, 150, 0, 0, 419, 421, 3, 94, 47, 0, 420, 418, 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 421, 25, 1, 0, 0, 0, 422, 424, 5, 51, 0, 0, 423, 425, 7, 3, 0, 0, 424, 423, 1, 0, 0, 0, 424, 425, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 430, 5, 134, 0, 0, 427, 428, 5, 82, 0, 0, 428, 429, 5, 105, 0, 0, 429, 431, 5, 72, 0, 0, 430, 427, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 435, 1, 0, 0, 0, 432, 433, 3, 162, 81, 0, 433, 434, 5, 3, 0, 0, 434, 436, 1, 0, 0, 0, 435, 432, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 437, 1, 0, 0, 0, 437, 456, 3, 166, 83, 0, 438, 439, 5, 4, 0, 0, 439, 446, 3, 74, 37, 0, 440, 441, 5, 6, 0, 0, 441, 445, 3, 104, 52, 0, 442, 443, 5, 6, 0, 0, 443, 445, 3, 74, 37, 0, 444, 440, 1, 0, 0, 0, 444, 442, 1, 0, 0, 0, 445, 448, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 449, 1, 0, 0, 0, 448, 446, 1, 0, 0, 0, 449, 452, 5, 5, 0, 0, 450, 451, 5, 152, 0, 0, 451, 453, 5, 153, 0, 0, 452, 450, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 457, 1, 0, 0, 0, 454, 455, 5, 34, 0, 0, 455, 457, 3, 64, 32, 0, 456, 438, 1, 0, 0, 0, 456, 454, 1, 0, 0, 0, 457, 459, 1, 0, 0, 0, 458, 460, 3, 156, 78, 0, 459, 458, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 27, 1, 0, 0, 0, 461, 463, 5, 51, 0, 0, 462, 464, 7, 3, 0, 0, 463, 462, 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 469, 5, 140, 0, 0, 466, 467, 5, 82, 0, 0, 467, 468, 5, 105, 0, 0, 468, 470, 5, 72, 0, 0, 469, 466, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 474, 1, 0, 0, 0, 471, 472, 3, 162, 81, 0, 472, 473, 5, 3, 0, 0, 473, 475, 1, 0, 0, 0, 474, 471, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 481, 3, 180, 90, 0, 477, 482, 5, 38, 0, 0, 478, 482, 5, 29, 0, 0, 479, 480, 5, 91, 0, 0, 480, 482, 5, 108, 0, 0, 481, 477, 1, 0, 0, 0, 481, 478, 1, 0, 0, 0, 481, 479, 1, 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 497, 1, 0, 0, 0, 483, 498, 5, 60, 0, 0, 484, 498, 5, 90, 0, 0, 485, 495, 5, 143, 0, 0, 486, 487, 5, 108, 0, 0, 487, 492, 3, 172, 86, 0, 488, 489, 5, 6, 0, 0, 489, 491, 3, 172, 86, 0, 490, 488, 1, 0, 0, 0, 491, 494, 1, 0, 0, 0, 492, 490, 1, 0, 0, 0, 492, 493, 1, 0, 0, 0, 493, 496, 1, 0, 0, 0, 494, 492, 1, 0, 0, 0, 495, 486, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 498, 1, 0, 0, 0, 497, 483, 1, 0, 0, 0, 497, 484, 1, 0, 0, 0, 497, 485, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 503, 5, 110, 0, 0, 500, 501, 3, 162, 81, 0, 501, 502, 5, 3, 0, 0, 502, 504, 1, 0, 0, 0, 503, 500, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 509, 3, 166, 83, 0, 506, 507, 5, 75, 0, 0, 507, 508, 5, 65, 0, 0, 508, 510, 5, 130, 0, 0, 509, 506, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 513, 1, 0, 0, 0, 511, 512, 5, 149, 0, 0, 512, 514, 3, 94, 47, 0, 513, 511, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 524, 5, 39, 0, 0, 516, 521, 3, 68, 34, 0, 517, 521, 3, 50, 25, 0, 518, 521, 3, 34, 17, 0, 519, 521, 3, 64, 32, 0, 520, 516, 1, 0, 0, 0, 520, 517, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 520, 519, 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 523, 5, 2, 0, 0, 523, 525, 1, 0, 0, 0, 524, 520, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 524, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 529, 5, 67, 0, 0, 529, 29, 1, 0, 0, 0, 530, 532, 5, 51, 0, 0, 531, 533, 7, 3, 0, 0, 532, 531, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534, 538, 5, 147, 0, 0, 535, 536, 5, 82, 0, 0, 536, 537, 5, 105, 0, 0, 537, 539, 5, 72, 0, 0, 538, 535, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 543, 1, 0, 0, 0, 540, 541, 3, 162, 81, 0, 541, 542, 5, 3, 0, 0, 542, 544, 1, 0, 0, 0, 543, 540, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 3, 182, 91, 0, 546, 547, 5, 34, 0, 0, 547, 548, 3, 64, 32, 0, 548, 31, 1, 0, 0, 0, 549, 550, 5, 51, 0, 0, 550, 551, 5, 148, 0, 0, 551, 555, 5, 134, 0, 0, 552, 553, 5, 82, 0, 0, 553, 554, 5, 105, 0, 0, 554, 556, 5, 72, 0, 0, 555, 552, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 560, 1, 0, 0, 0, 557, 558, 3, 162, 81, 0, 558, 559, 5, 3, 0, 0, 559, 561, 1, 0, 0, 0, 560, 557, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 3, 166, 83, 0, 563, 564, 5, 144, 0, 0, 564, 576, 3, 184, 92, 0, 565, 566, 5, 4, 0, 0, 566, 571, 3, 150, 75, 0, 567, 568, 5, 6, 0, 0, 568, 570, 3, 150, 75, 0, 569, 567, 1, 0, 0, 0, 570, 573, 1, 0, 0, 0, 571, 569, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 574, 1, 0, 0, 0, 573, 571, 1, 0, 0, 0, 574, 575, 5, 5, 0, 0, 575, 577, 1, 0, 0, 0, 576, 565, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 33, 1, 0, 0, 0, 578, 580, 3, 116, 58, 0, 579, 578, 1, 0, 0, 0, 579, 580, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 5, 60, 0, 0, 582, 583, 5, 77, 0, 0, 583, 586, 3, 118, 59, 0, 584, 585, 5, 150, 0, 0, 585, 587, 3, 94, 47, 0, 586, 584, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 35, 1, 0, 0, 0, 588, 590, 3, 116, 58, 0, 589, 588, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 592, 5, 60, 0, 0, 592, 593, 5, 77, 0, 0, 593, 596, 3, 118, 59, 0, 594, 595, 5, 150, 0, 0, 595, 597, 3, 94, 47, 0, 596, 594, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 616, 1, 0, 0, 0, 598, 599, 5, 113, 0, 0, 599, 600, 5, 41, 0, 0, 600, 605, 3, 120, 60, 0, 601, 602, 5, 6, 0, 0, 602, 604, 3, 120, 60, 0, 603, 601, 1, 0, 0, 0, 604, 607, 1, 0, 0, 0, 605, 603, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 609, 1, 0, 0, 0, 607, 605, 1, 0, 0, 0, 608, 598, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 611, 5, 100, 0, 0, 611, 614, 3, 94, 47, 0, 612, 613, 7, 2, 0, 0, 613, 615, 3, 94, 47, 0, 614, 612, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 617, 1, 0, 0, 0, 616, 608, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 37, 1, 0, 0, 0, 618, 620, 5, 62, 0, 0, 619, 621, 5, 56, 0, 0, 620, 619, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 622, 1, 0, 0, 0, 622, 623, 3, 162, 81, 0, 623, 39, 1, 0, 0, 0, 624, 625, 5, 64, 0, 0, 625, 628, 5, 86, 0, 0, 626, 627, 5, 82, 0, 0, 627, 629, 5, 72, 0, 0, 628, 626, 1, 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 633, 1, 0, 0, 0, 630, 631, 3, 162, 81, 0, 631, 632, 5, 3, 0, 0, 632, 634, 1, 0, 0, 0, 633, 630, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 636, 3, 178, 89, 0, 636, 41, 1, 0, 0, 0, 637, 638, 5, 64, 0, 0, 638, 641, 5, 134, 0, 0, 639, 640, 5, 82, 0, 0, 640, 642, 5, 72, 0, 0, 641, 639, 1, 0, 0, 0, 641, 642, 1, 0, 0, 0, 642, 646, 1, 0, 0, 0, 643, 644, 3, 162, 81, 0, 644, 645, 5, 3, 0, 0, 645, 647, 1, 0, 0, 0, 646, 643, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 648, 1, 0, 0, 0, 648, 649, 3, 166, 83, 0, 649, 43, 1, 0, 0, 0, 650, 651, 5, 64, 0, 0, 651, 654, 5, 140, 0, 0, 652, 653, 5, 82, 0, 0, 653, 655, 5, 72, 0, 0, 654, 652, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 659, 1, 0, 0, 0, 656, 657, 3, 162, 81, 0, 657, 658, 5, 3, 0, 0, 658, 660, 1, 0, 0, 0, 659, 656, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 661, 1, 0, 0, 0, 661, 662, 3, 180, 90, 0, 662, 45, 1, 0, 0, 0, 663, 664, 5, 64, 0, 0, 664, 667, 5, 147, 0, 0, 665, 666, 5, 82, 0, 0, 666, 668, 5, 72, 0, 0, 667, 665, 1, 0, 0, 0, 667, 668, 1, 0, 0, 0, 668, 672, 1, 0, 0, 0, 669, 670, 3, 162, 81, 0, 670, 671, 5, 3, 0, 0, 671, 673, 1, 0, 0, 0, 672, 669, 1, 0, 0, 0, 672, 673, 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 675, 3, 182, 91, 0, 675, 47, 1, 0, 0, 0, 676, 678, 5, 151, 0, 0, 677, 679, 5, 120, 0, 0, 678, 677, 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 685, 3, 124, 62, 0, 681, 682, 5, 6, 0, 0, 682, 684, 3, 124, 62, 0, 683, 681, 1, 0, 0, 0, 684, 687, 1, 0, 0, 0, 685, 683, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, 689, 1, 0, 0, 0, 687, 685, 1, 0, 0, 0, 688, 676, 1, 0, 0, 0, 688, 689, 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 696, 3, 136, 68, 0, 691, 692, 3, 138, 69, 0, 692, 693, 3, 136, 68, 0, 693, 695, 1, 0, 0, 0, 694, 691, 1, 0, 0, 0, 695, 698, 1, 0, 0, 0, 696, 694, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 709, 1, 0, 0, 0, 698, 696, 1, 0, 0, 0, 699, 700, 5, 113, 0, 0, 700, 701, 5, 41, 0, 0, 701, 706, 3, 120, 60, 0, 702, 703, 5, 6, 0, 0, 703, 705, 3, 120, 60, 0, 704, 702, 1, 0, 0, 0, 705, 708, 1, 0, 0, 0, 706, 704, 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 710, 1, 0, 0, 0, 708, 706, 1, 0, 0, 0, 709, 699, 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 710, 717, 1, 0, 0, 0, 711, 712, 5, 100, 0, 0, 712, 715, 3, 94, 47, 0, 713, 714, 7, 2, 0, 0, 714, 716, 3, 94, 47, 0, 715, 713, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 718, 1, 0, 0, 0, 717, 711, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 49, 1, 0, 0, 0, 719, 721, 3, 116, 58, 0, 720, 719, 1, 0, 0, 0, 720, 721, 1, 0, 0, 0, 721, 739, 1, 0, 0, 0, 722, 740, 5, 90, 0, 0, 723, 740, 5, 126, 0, 0, 724, 725, 5, 90, 0, 0, 725, 726, 5, 112, 0, 0, 726, 740, 5, 126, 0, 0, 727, 728, 5, 90, 0, 0, 728, 729, 5, 112, 0, 0, 729, 740, 5, 129, 0, 0, 730, 731, 5, 90, 0, 0, 731, 732, 5, 112, 0, 0, 732, 740, 5, 26, 0, 0, 733, 734, 5, 90, 0, 0, 734, 735, 5, 112, 0, 0, 735, 740, 5, 74, 0, 0, 736, 737, 5, 90, 0, 0, 737, 738, 5, 112, 0, 0, 738, 740, 5, 83, 0, 0, 739, 722, 1, 0, 0, 0, 739, 723, 1, 0, 0, 0, 739, 724, 1, 0, 0, 0, 739, 727, 1, 0, 0, 0, 739, 730, 1, 0, 0, 0, 739, 733, 1, 0, 0, 0, 739, 736, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 745, 5, 93, 0, 0, 742, 743, 3, 162, 81, 0, 743, 744, 5, 3, 0, 0, 744, 746, 1, 0, 0, 0, 745, 742, 1, 0, 0, 0, 745, 746, 1, 0, 0, 0, 746, 747, 1, 0, 0, 0, 747, 759, 3, 166, 83, 0, 748, 749, 5, 4, 0, 0, 749, 754, 3, 172, 86, 0, 750, 751, 5, 6, 0, 0, 751, 753, 3, 172, 86, 0, 752, 750, 1, 0, 0, 0, 753, 756, 1, 0, 0, 0, 754, 752, 1, 0, 0, 0, 754, 755, 1, 0, 0, 0, 755, 757, 1, 0, 0, 0, 756, 754, 1, 0, 0, 0, 757, 758, 5, 5, 0, 0, 758, 760, 1, 0, 0, 0, 759, 748, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 792, 1, 0, 0, 0, 761, 762, 5, 146, 0, 0, 762, 763, 5, 4, 0, 0, 763, 768, 3, 94, 47, 0, 764, 765, 5, 6, 0, 0, 765, 767, 3, 94, 47, 0, 766, 764, 1, 0, 0, 0, 767, 770, 1, 0, 0, 0, 768, 766, 1, 0, 0, 0, 768, 769, 1, 0, 0, 0, 769, 771, 1, 0, 0, 0, 770, 768, 1, 0, 0, 0, 771, 786, 5, 5, 0, 0, 772, 773, 5, 6, 0, 0, 773, 774, 5, 4, 0, 0, 774, 779, 3, 94, 47, 0, 775, 776, 5, 6, 0, 0, 776, 778, 3, 94, 47, 0, 777, 775, 1, 0, 0, 0, 778, 781, 1, 0, 0, 0, 779, 777, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 782, 1, 0, 0, 0, 781, 779, 1, 0, 0, 0, 782, 783, 5, 5, 0, 0, 783, 785, 1, 0, 0, 0, 784, 772, 1, 0, 0, 0, 785, 788, 1, 0, 0, 0, 786, 784, 1, 0, 0, 0, 786, 787, 1, 0, 0, 0, 787, 793, 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, 789, 793, 3, 64, 32, 0, 790, 791, 5, 57, 0, 0, 791, 793, 5, 146, 0, 0, 792, 761, 1, 0, 0, 0, 792, 789, 1, 0, 0, 0, 792, 790, 1, 0, 0, 0, 793, 51, 1, 0, 0, 0, 794, 798, 5, 116, 0, 0, 795, 796, 3, 162, 81, 0, 796, 797, 5, 3, 0, 0, 797, 799, 1, 0, 0, 0, 798, 795, 1, 0, 0, 0, 798, 799, 1, 0, 0, 0, 799, 800, 1, 0, 0, 0, 800, 807, 3, 186, 93, 0, 801, 802, 5, 7, 0, 0, 802, 808, 3, 122, 61, 0, 803, 804, 5, 4, 0, 0, 804, 805, 3, 122, 61, 0, 805, 806, 5, 5, 0, 0, 806, 808, 1, 0, 0, 0, 807, 801, 1, 0, 0, 0, 807, 803, 1, 0, 0, 0, 807, 808, 1, 0, 0, 0, 808, 53, 1, 0, 0, 0, 809, 820, 5, 123, 0, 0, 810, 821, 3, 174, 87, 0, 811, 812, 3, 162, 81, 0, 812, 813, 5, 3, 0, 0, 813, 815, 1, 0, 0, 0, 814, 811, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 818, 1, 0, 0, 0, 816, 819, 3, 166, 83, 0, 817, 819, 3, 178, 89, 0, 818, 816, 1, 0, 0, 0, 818, 817, 1, 0, 0, 0, 819, 821, 1, 0, 0, 0, 820, 810, 1, 0, 0, 0, 820, 814, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 55, 1, 0, 0, 0, 822, 824, 5, 124, 0, 0, 823, 825, 5, 131, 0, 0, 824, 823, 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 826, 1, 0, 0, 0, 826, 827, 3, 188, 94, 0, 827, 57, 1, 0, 0, 0, 828, 833, 5, 129, 0, 0, 829, 831, 5, 139, 0, 0, 830, 832, 3, 192, 96, 0, 831, 830, 1, 0, 0, 0, 831, 832, 1, 0, 0, 0, 832, 834, 1, 0, 0, 0, 833, 829, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, 840, 1, 0, 0, 0, 835, 837, 5, 138, 0, 0, 836, 838, 5, 131, 0, 0, 837, 836, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 841, 3, 188, 94, 0, 840, 835, 1, 0, 0, 0, 840, 841, 1, 0, 0, 0, 841, 59, 1, 0, 0, 0, 842, 843, 5, 131, 0, 0, 843, 844, 3, 188, 94, 0, 844, 61, 1, 0, 0, 0, 845, 847, 5, 151, 0, 0, 846, 848, 5, 120, 0, 0, 847, 846, 1, 0, 0, 0, 847, 848, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 854, 3, 124, 62, 0, 850, 851, 5, 6, 0, 0, 851, 853, 3, 124, 62, 0, 852, 850, 1, 0, 0, 0, 853, 856, 1, 0, 0, 0, 854, 852, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 858, 1, 0, 0, 0, 856, 854, 1, 0, 0, 0, 857, 845, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 870, 3, 136, 68, 0, 860, 861, 5, 113, 0, 0, 861, 862, 5, 41, 0, 0, 862, 867, 3, 120, 60, 0, 863, 864, 5, 6, 0, 0, 864, 866, 3, 120, 60, 0, 865, 863, 1, 0, 0, 0, 866, 869, 1, 0, 0, 0, 867, 865, 1, 0, 0, 0, 867, 868, 1, 0, 0, 0, 868, 871, 1, 0, 0, 0, 869, 867, 1, 0, 0, 0, 870, 860, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871, 878, 1, 0, 0, 0, 872, 873, 5, 100, 0, 0, 873, 876, 3, 94, 47, 0, 874, 875, 7, 2, 0, 0, 875, 877, 3, 94, 47, 0, 876, 874, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 879, 1, 0, 0, 0, 878, 872, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 63, 1, 0, 0, 0, 880, 882, 5, 151, 0, 0, 881, 883, 5, 120, 0, 0, 882, 881, 1, 0, 0, 0, 882, 883, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 889, 3, 124, 62, 0, 885, 886, 5, 6, 0, 0, 886, 888, 3, 124, 62, 0, 887, 885, 1, 0, 0, 0, 888, 891, 1, 0, 0, 0, 889, 887, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 893, 1, 0, 0, 0, 891, 889, 1, 0, 0, 0, 892, 880, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 900, 3, 66, 33, 0, 895, 896, 3, 138, 69, 0, 896, 897, 3, 66, 33, 0, 897, 899, 1, 0, 0, 0, 898, 895, 1, 0, 0, 0, 899, 902, 1, 0, 0, 0, 900, 898, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 913, 1, 0, 0, 0, 902, 900, 1, 0, 0, 0, 903, 904, 5, 113, 0, 0, 904, 905, 5, 41, 0, 0, 905, 910, 3, 120, 60, 0, 906, 907, 5, 6, 0, 0, 907, 909, 3, 120, 60, 0, 908, 906, 1, 0, 0, 0, 909, 912, 1, 0, 0, 0, 910, 908, 1, 0, 0, 0, 910, 911, 1, 0, 0, 0, 911, 914, 1, 0, 0, 0, 912, 910, 1, 0, 0, 0, 913, 903, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 921, 1, 0, 0, 0, 915, 916, 5, 100, 0, 0, 916, 919, 3, 94, 47, 0, 917, 918, 7, 2, 0, 0, 918, 920, 3, 94, 47, 0, 919, 917, 1, 0, 0, 0, 919, 920, 1, 0, 0, 0, 920, 922, 1, 0, 0, 0, 921, 915, 1, 0, 0, 0, 921, 922, 1, 0, 0, 0, 922, 65, 1, 0, 0, 0, 923, 925, 5, 132, 0, 0, 924, 926, 7, 4, 0, 0, 925, 924, 1, 0, 0, 0, 925, 926, 1, 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 932, 3, 126, 63, 0, 928, 929, 5, 6, 0, 0, 929, 931, 3, 126, 63, 0, 930, 928, 1, 0, 0, 0, 931, 934, 1, 0, 0, 0, 932, 930, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 947, 1, 0, 0, 0, 934, 932, 1, 0, 0, 0, 935, 945, 5, 77, 0, 0, 936, 941, 3, 128, 64, 0, 937, 938, 5, 6, 0, 0, 938, 940, 3, 128, 64, 0, 939, 937, 1, 0, 0, 0, 940, 943, 1, 0, 0, 0, 941, 939, 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 946, 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 944, 946, 3, 130, 65, 0, 945, 936, 1, 0, 0, 0, 945, 944, 1, 0, 0, 0, 946, 948, 1, 0, 0, 0, 947, 935, 1, 0, 0, 0, 947, 948, 1, 0, 0, 0, 948, 951, 1, 0, 0, 0, 949, 950, 5, 150, 0, 0, 950, 952, 3, 94, 47, 0, 951, 949, 1, 0, 0, 0, 951, 952, 1, 0, 0, 0, 952, 967, 1, 0, 0, 0, 953, 954, 5, 80, 0, 0, 954, 955, 5, 41, 0, 0, 955, 960, 3, 94, 47, 0, 956, 957, 5, 6, 0, 0, 957, 959, 3, 94, 47, 0, 958, 956, 1, 0, 0, 0, 959, 962, 1, 0, 0, 0, 960, 958, 1, 0, 0, 0, 960, 961, 1, 0, 0, 0, 961, 965, 1, 0, 0, 0, 962, 960, 1, 0, 0, 0, 963, 964, 5, 81, 0, 0, 964, 966, 3, 94, 47, 0, 965, 963, 1, 0, 0, 0, 965, 966, 1, 0, 0, 0, 966, 968, 1, 0, 0, 0, 967, 953, 1, 0, 0, 0, 967, 968, 1, 0, 0, 0, 968, 998, 1, 0, 0, 0, 969, 970, 5, 146, 0, 0, 970, 971, 5, 4, 0, 0, 971, 976, 3, 94, 47, 0, 972, 973, 5, 6, 0, 0, 973, 975, 3, 94, 47, 0, 974, 972, 1, 0, 0, 0, 975, 978, 1, 0, 0, 0, 976, 974, 1, 0, 0, 0, 976, 977, 1, 0, 0, 0, 977, 979, 1, 0, 0, 0, 978, 976, 1, 0, 0, 0, 979, 994, 5, 5, 0, 0, 980, 981, 5, 6, 0, 0, 981, 982, 5, 4, 0, 0, 982, 987, 3, 94, 47, 0, 983, 984, 5, 6, 0, 0, 984, 986, 3, 94, 47, 0, 985, 983, 1, 0, 0, 0, 986, 989, 1, 0, 0, 0, 987, 985, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 990, 1, 0, 0, 0, 989, 987, 1, 0, 0, 0, 990, 991, 5, 5, 0, 0, 991, 993, 1, 0, 0, 0, 992, 980, 1, 0, 0, 0, 993, 996, 1, 0, 0, 0, 994, 992, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 998, 1, 0, 0, 0, 996, 994, 1, 0, 0, 0, 997, 923, 1, 0, 0, 0, 997, 969, 1, 0, 0, 0, 998, 67, 1, 0, 0, 0, 999, 1001, 3, 116, 58, 0, 1000, 999, 1, 0, 0, 0, 1000, 1001, 1, 0, 0, 0, 1001, 1002, 1, 0, 0, 0, 1002, 1013, 5, 143, 0, 0, 1003, 1004, 5, 112, 0, 0, 1004, 1014, 5, 129, 0, 0, 1005, 1006, 5, 112, 0, 0, 1006, 1014, 5, 26, 0, 0, 1007, 1008, 5, 112, 0, 0, 1008, 1014, 5, 126, 0, 0, 1009, 1010, 5, 112, 0, 0, 1010, 1014, 5, 74, 0, 0, 1011, 1012, 5, 112, 0, 0, 1012, 1014, 5, 83, 0, 0, 1013, 1003, 1, 0, 0, 0, 1013, 1005, 1, 0, 0, 0, 1013, 1007, 1, 0, 0, 0, 1013, 1009, 1, 0, 0, 0, 1013, 1011, 1, 0, 0, 0, 1013, 1014, 1, 0, 0, 0, 1014, 1015, 1, 0, 0, 0, 1015, 1016, 3, 118, 59, 0, 1016, 1017, 5, 133, 0, 0, 1017, 1018, 3, 172, 86, 0, 1018, 1019, 5, 7, 0, 0, 1019, 1027, 3, 94, 47, 0, 1020, 1021, 5, 6, 0, 0, 1021, 1022, 3, 172, 86, 0, 1022, 1023, 5, 7, 0, 0, 1023, 1024, 3, 94, 47, 0, 1024, 1026, 1, 0, 0, 0, 1025, 1020, 1, 0, 0, 0, 1026, 1029, 1, 0, 0, 0, 1027, 1025, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 1032, 1, 0, 0, 0, 1029, 1027, 1, 0, 0, 0, 1030, 1031, 5, 150, 0, 0, 1031, 1033, 3, 94, 47, 0, 1032, 1030, 1, 0, 0, 0, 1032, 1033, 1, 0, 0, 0, 1033, 69, 1, 0, 0, 0, 1034, 1036, 3, 116, 58, 0, 1035, 1034, 1, 0, 0, 0, 1035, 1036, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1048, 5, 143, 0, 0, 1038, 1039, 5, 112, 0, 0, 1039, 1049, 5, 129, 0, 0, 1040, 1041, 5, 112, 0, 0, 1041, 1049, 5, 26, 0, 0, 1042, 1043, 5, 112, 0, 0, 1043, 1049, 5, 126, 0, 0, 1044, 1045, 5, 112, 0, 0, 1045, 1049, 5, 74, 0, 0, 1046, 1047, 5, 112, 0, 0, 1047, 1049, 5, 83, 0, 0, 1048, 1038, 1, 0, 0, 0, 1048, 1040, 1, 0, 0, 0, 1048, 1042, 1, 0, 0, 0, 1048, 1044, 1, 0, 0, 0, 1048, 1046, 1, 0, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 1050, 1, 0, 0, 0, 1050, 1051, 3, 118, 59, 0, 1051, 1052, 5, 133, 0, 0, 1052, 1053, 3, 172, 86, 0, 1053, 1054, 5, 7, 0, 0, 1054, 1062, 3, 94, 47, 0, 1055, 1056, 5, 6, 0, 0, 1056, 1057, 3, 172, 86, 0, 1057, 1058, 5, 7, 0, 0, 1058, 1059, 3, 94, 47, 0, 1059, 1061, 1, 0, 0, 0, 1060, 1055, 1, 0, 0, 0, 1061, 1064, 1, 0, 0, 0, 1062, 1060, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1067, 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1065, 1066, 5, 150, 0, 0, 1066, 1068, 3, 94, 47, 0, 1067, 1065, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1087, 1, 0, 0, 0, 1069, 1070, 5, 113, 0, 0, 1070, 1071, 5, 41, 0, 0, 1071, 1076, 3, 120, 60, 0, 1072, 1073, 5, 6, 0, 0, 1073, 1075, 3, 120, 60, 0, 1074, 1072, 1, 0, 0, 0, 1075, 1078, 1, 0, 0, 0, 1076, 1074, 1, 0, 0, 0, 1076, 1077, 1, 0, 0, 0, 1077, 1080, 1, 0, 0, 0, 1078, 1076, 1, 0, 0, 0, 1079, 1069, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 1082, 5, 100, 0, 0, 1082, 1085, 3, 94, 47, 0, 1083, 1084, 7, 2, 0, 0, 1084, 1086, 3, 94, 47, 0, 1085, 1083, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 1088, 1, 0, 0, 0, 1087, 1079, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, 71, 1, 0, 0, 0, 1089, 1090, 5, 145, 0, 0, 1090, 73, 1, 0, 0, 0, 1091, 1096, 3, 172, 86, 0, 1092, 1095, 3, 78, 39, 0, 1093, 1095, 3, 76, 38, 0, 1094, 1092, 1, 0, 0, 0, 1094, 1093, 1, 0, 0, 0, 1095, 1098, 1, 0, 0, 0, 1096, 1094, 1, 0, 0, 0, 1096, 1097, 1, 0, 0, 0, 1097, 75, 1, 0, 0, 0, 1098, 1096, 1, 0, 0, 0, 1099, 1119, 3, 158, 79, 0, 1100, 1101, 5, 4, 0, 0, 1101, 1103, 3, 142, 71, 0, 1102, 1104, 3, 194, 97, 0, 1103, 1102, 1, 0, 0, 0, 1103, 1104, 1, 0, 0, 0, 1104, 1105, 1, 0, 0, 0, 1105, 1106, 5, 5, 0, 0, 1106, 1120, 1, 0, 0, 0, 1107, 1108, 5, 4, 0, 0, 1108, 1110, 3, 142, 71, 0, 1109, 1111, 3, 194, 97, 0, 1110, 1109, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, 1112, 1, 0, 0, 0, 1112, 1113, 5, 6, 0, 0, 1113, 1115, 3, 142, 71, 0, 1114, 1116, 3, 194, 97, 0, 1115, 1114, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1117, 1, 0, 0, 0, 1117, 1118, 5, 5, 0, 0, 1118, 1120, 1, 0, 0, 0, 1119, 1100, 1, 0, 0, 0, 1119, 1107, 1, 0, 0, 0, 1119, 1120, 1, 0, 0, 0, 1120, 77, 1, 0, 0, 0, 1121, 1122, 5, 50, 0, 0, 1122, 1124, 3, 158, 79, 0, 1123, 1121, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1139, 1, 0, 0, 0, 1125, 1140, 3, 80, 40, 0, 1126, 1140, 3, 82, 41, 0, 1127, 1140, 3, 84, 42, 0, 1128, 1140, 3, 86, 43, 0, 1129, 1130, 5, 142, 0, 0, 1130, 1140, 3, 92, 46, 0, 1131, 1132, 5, 45, 0, 0, 1132, 1133, 5, 4, 0, 0, 1133, 1134, 3, 94, 47, 0, 1134, 1135, 5, 5, 0, 0, 1135, 1140, 1, 0, 0, 0, 1136, 1140, 3, 88, 44, 0, 1137, 1138, 5, 46, 0, 0, 1138, 1140, 3, 174, 87, 0, 1139, 1125, 1, 0, 0, 0, 1139, 1126, 1, 0, 0, 0, 1139, 1127, 1, 0, 0, 0, 1139, 1128, 1, 0, 0, 0, 1139, 1129, 1, 0, 0, 0, 1139, 1131, 1, 0, 0, 0, 1139, 1136, 1, 0, 0, 0, 1139, 1137, 1, 0, 0, 0, 1140, 79, 1, 0, 0, 0, 1141, 1142, 5, 117, 0, 0, 1142, 1144, 5, 97, 0, 0, 1143, 1145, 7, 5, 0, 0, 1144, 1143, 1, 0, 0, 0, 1144, 1145, 1, 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1148, 3, 92, 46, 0, 1147, 1149, 5, 37, 0, 0, 1148, 1147, 1, 0, 0, 0, 1148, 1149, 1, 0, 0, 0, 1149, 81, 1, 0, 0, 0, 1150, 1151, 3, 96, 48, 0, 1151, 83, 1, 0, 0, 0, 1152, 1153, 5, 105, 0, 0, 1153, 1154, 5, 107, 0, 0, 1154, 1155, 3, 92, 46, 0, 1155, 85, 1, 0, 0, 0, 1156, 1157, 5, 107, 0, 0, 1157, 1158, 3, 92, 46, 0, 1158, 87, 1, 0, 0, 0, 1159, 1171, 5, 57, 0, 0, 1160, 1172, 3, 90, 45, 0, 1161, 1162, 5, 4, 0, 0, 1162, 1163, 3, 94, 47, 0, 1163, 1164, 5, 5, 0, 0, 1164, 1172, 1, 0, 0, 0, 1165, 1166, 5, 103, 0, 0, 1166, 1167, 5, 4, 0, 0, 1167, 1168, 3, 94, 47, 0, 1168, 1169, 5, 5, 0, 0, 1169, 1172, 1, 0, 0, 0, 1170, 1172, 3, 194, 97, 0, 1171, 1160, 1, 0, 0, 0, 1171, 1161, 1, 0, 0, 0, 1171, 1165, 1, 0, 0, 0, 1171, 1170, 1, 0, 0, 0, 1172, 1179, 1, 0, 0, 0, 1173, 1175, 5, 1, 0, 0, 1174, 1176, 3, 194, 97, 0, 1175, 1174, 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 1175, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 1180, 1, 0, 0, 0, 1179, 1173, 1, 0, 0, 0, 1179, 1180, 1, 0, 0, 0, 1180, 89, 1, 0, 0, 0, 1181, 1184, 3, 142, 71, 0, 1182, 1184, 3, 144, 72, 0, 1183, 1181, 1, 0, 0, 0, 1183, 1182, 1, 0, 0, 0, 1184, 91, 1, 0, 0, 0, 1185, 1186, 5, 110, 0, 0, 1186, 1187, 5, 49, 0, 0, 1187, 1189, 7, 6, 0, 0, 1188, 1185, 1, 0, 0, 0, 1188, 1189, 1, 0, 0, 0, 1189, 93, 1, 0, 0, 0, 1190, 1191, 6, 47, -1, 0, 1191, 1267, 3, 144, 72, 0, 1192, 1267, 5, 155, 0, 0, 1193, 1194, 3, 162, 81, 0, 1194, 1195, 5, 3, 0, 0, 1195, 1197, 1, 0, 0, 0, 1196, 1193, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1198, 1, 0, 0, 0, 1198, 1199, 3, 166, 83, 0, 1199, 1200, 5, 3, 0, 0, 1200, 1202, 1, 0, 0, 0, 1201, 1196, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1202, 1203, 1, 0, 0, 0, 1203, 1267, 3, 172, 86, 0, 1204, 1205, 3, 146, 73, 0, 1205, 1206, 3, 94, 47, 21, 1206, 1267, 1, 0, 0, 0, 1207, 1208, 3, 160, 80, 0, 1208, 1221, 5, 4, 0, 0, 1209, 1211, 5, 63, 0, 0, 1210, 1209, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1217, 3, 94, 47, 0, 1213, 1214, 5, 6, 0, 0, 1214, 1216, 3, 94, 47, 0, 1215, 1213, 1, 0, 0, 0, 1216, 1219, 1, 0, 0, 0, 1217, 1215, 1, 0, 0, 0, 1217, 1218, 1, 0, 0, 0, 1218, 1222, 1, 0, 0, 0, 1219, 1217, 1, 0, 0, 0, 1220, 1222, 5, 8, 0, 0, 1221, 1210, 1, 0, 0, 0, 1221, 1220, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1224, 5, 5, 0, 0, 1224, 1267, 1, 0, 0, 0, 1225, 1226, 5, 4, 0, 0, 1226, 1227, 3, 94, 47, 0, 1227, 1228, 5, 5, 0, 0, 1228, 1267, 1, 0, 0, 0, 1229, 1230, 5, 44, 0, 0, 1230, 1231, 5, 4, 0, 0, 1231, 1232, 3, 94, 47, 0, 1232, 1233, 5, 34, 0, 0, 1233, 1234, 3, 76, 38, 0, 1234, 1235, 5, 5, 0, 0, 1235, 1267, 1, 0, 0, 0, 1236, 1238, 5, 105, 0, 0, 1237, 1236, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, 1, 0, 0, 0, 1239, 1241, 5, 72, 0, 0, 1240, 1237, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 1242, 1, 0, 0, 0, 1242, 1243, 5, 4, 0, 0, 1243, 1244, 3, 64, 32, 0, 1244, 1245, 5, 5, 0, 0, 1245, 1267, 1, 0, 0, 0, 1246, 1248, 5, 43, 0, 0, 1247, 1249, 3, 94, 47, 0, 1248, 1247, 1, 0, 0, 0, 1248, 1249, 1, 0, 0, 0, 1249, 1255, 1, 0, 0, 0, 1250, 1251, 5, 149, 0, 0, 1251, 1252, 3, 94, 47, 0, 1252, 1253, 5, 137, 0, 0, 1253, 1254, 3, 94, 47, 0, 1254, 1256, 1, 0, 0, 0, 1255, 1250, 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, 1255, 1, 0, 0, 0, 1257, 1258, 1, 0, 0, 0, 1258, 1261, 1, 0, 0, 0, 1259, 1260, 5, 66, 0, 0, 1260, 1262, 3, 94, 47, 0, 1261, 1259, 1, 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1264, 5, 67, 0, 0, 1264, 1267, 1, 0, 0, 0, 1265, 1267, 3, 100, 50, 0, 1266, 1190, 1, 0, 0, 0, 1266, 1192, 1, 0, 0, 0, 1266, 1201, 1, 0, 0, 0, 1266, 1204, 1, 0, 0, 0, 1266, 1207, 1, 0, 0, 0, 1266, 1225, 1, 0, 0, 0, 1266, 1229, 1, 0, 0, 0, 1266, 1240, 1, 0, 0, 0, 1266, 1246, 1, 0, 0, 0, 1266, 1265, 1, 0, 0, 0, 1267, 1368, 1, 0, 0, 0, 1268, 1269, 10, 20, 0, 0, 1269, 1270, 5, 12, 0, 0, 1270, 1367, 3, 94, 47, 21, 1271, 1272, 10, 19, 0, 0, 1272, 1273, 7, 7, 0, 0, 1273, 1367, 3, 94, 47, 20, 1274, 1275, 10, 18, 0, 0, 1275, 1276, 7, 8, 0, 0, 1276, 1367, 3, 94, 47, 19, 1277, 1278, 10, 17, 0, 0, 1278, 1279, 7, 9, 0, 0, 1279, 1367, 3, 94, 47, 18, 1280, 1281, 10, 16, 0, 0, 1281, 1282, 7, 10, 0, 0, 1282, 1367, 3, 94, 47, 17, 1283, 1296, 10, 15, 0, 0, 1284, 1297, 5, 7, 0, 0, 1285, 1297, 5, 23, 0, 0, 1286, 1297, 5, 24, 0, 0, 1287, 1297, 5, 25, 0, 0, 1288, 1297, 5, 94, 0, 0, 1289, 1290, 5, 94, 0, 0, 1290, 1297, 5, 105, 0, 0, 1291, 1297, 5, 85, 0, 0, 1292, 1297, 5, 99, 0, 0, 1293, 1297, 5, 79, 0, 0, 1294, 1297, 5, 101, 0, 0, 1295, 1297, 5, 122, 0, 0, 1296, 1284, 1, 0, 0, 0, 1296, 1285, 1, 0, 0, 0, 1296, 1286, 1, 0, 0, 0, 1296, 1287, 1, 0, 0, 0, 1296, 1288, 1, 0, 0, 0, 1296, 1289, 1, 0, 0, 0, 1296, 1291, 1, 0, 0, 0, 1296, 1292, 1, 0, 0, 0, 1296, 1293, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1295, 1, 0, 0, 0, 1297, 1298, 1, 0, 0, 0, 1298, 1367, 3, 94, 47, 16, 1299, 1300, 10, 14, 0, 0, 1300, 1301, 5, 33, 0, 0, 1301, 1367, 3, 94, 47, 15, 1302, 1303, 10, 13, 0, 0, 1303, 1304, 5, 112, 0, 0, 1304, 1367, 3, 94, 47, 14, 1305, 1306, 10, 6, 0, 0, 1306, 1308, 5, 94, 0, 0, 1307, 1309, 5, 105, 0, 0, 1308, 1307, 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1367, 3, 94, 47, 7, 1311, 1313, 10, 5, 0, 0, 1312, 1314, 5, 105, 0, 0, 1313, 1312, 1, 0, 0, 0, 1313, 1314, 1, 0, 0, 0, 1314, 1315, 1, 0, 0, 0, 1315, 1316, 5, 40, 0, 0, 1316, 1317, 3, 94, 47, 0, 1317, 1318, 5, 33, 0, 0, 1318, 1319, 3, 94, 47, 6, 1319, 1367, 1, 0, 0, 0, 1320, 1321, 10, 9, 0, 0, 1321, 1322, 5, 46, 0, 0, 1322, 1367, 3, 174, 87, 0, 1323, 1325, 10, 8, 0, 0, 1324, 1326, 5, 105, 0, 0, 1325, 1324, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1328, 7, 11, 0, 0, 1328, 1331, 3, 94, 47, 0, 1329, 1330, 5, 69, 0, 0, 1330, 1332, 3, 94, 47, 0, 1331, 1329, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1367, 1, 0, 0, 0, 1333, 1338, 10, 7, 0, 0, 1334, 1339, 5, 95, 0, 0, 1335, 1339, 5, 106, 0, 0, 1336, 1337, 5, 105, 0, 0, 1337, 1339, 5, 107, 0, 0, 1338, 1334, 1, 0, 0, 0, 1338, 1335, 1, 0, 0, 0, 1338, 1336, 1, 0, 0, 0, 1339, 1367, 1, 0, 0, 0, 1340, 1342, 10, 4, 0, 0, 1341, 1343, 5, 105, 0, 0, 1342, 1341, 1, 0, 0, 0, 1342, 1343, 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1364, 5, 85, 0, 0, 1345, 1355, 5, 4, 0, 0, 1346, 1356, 3, 64, 32, 0, 1347, 1352, 3, 94, 47, 0, 1348, 1349, 5, 6, 0, 0, 1349, 1351, 3, 94, 47, 0, 1350, 1348, 1, 0, 0, 0, 1351, 1354, 1, 0, 0, 0, 1352, 1350, 1, 0, 0, 0, 1352, 1353, 1, 0, 0, 0, 1353, 1356, 1, 0, 0, 0, 1354, 1352, 1, 0, 0, 0, 1355, 1346, 1, 0, 0, 0, 1355, 1347, 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1365, 5, 5, 0, 0, 1358, 1359, 3, 162, 81, 0, 1359, 1360, 5, 3, 0, 0, 1360, 1362, 1, 0, 0, 0, 1361, 1358, 1, 0, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, 1363, 1, 0, 0, 0, 1363, 1365, 3, 166, 83, 0, 1364, 1345, 1, 0, 0, 0, 1364, 1361, 1, 0, 0, 0, 1365, 1367, 1, 0, 0, 0, 1366, 1268, 1, 0, 0, 0, 1366, 1271, 1, 0, 0, 0, 1366, 1274, 1, 0, 0, 0, 1366, 1277, 1, 0, 0, 0, 1366, 1280, 1, 0, 0, 0, 1366, 1283, 1, 0, 0, 0, 1366, 1299, 1, 0, 0, 0, 1366, 1302, 1, 0, 0, 0, 1366, 1305, 1, 0, 0, 0, 1366, 1311, 1, 0, 0, 0, 1366, 1320, 1, 0, 0, 0, 1366, 1323, 1, 0, 0, 0, 1366, 1333, 1, 0, 0, 0, 1366, 1340, 1, 0, 0, 0, 1367, 1370, 1, 0, 0, 0, 1368, 1366, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0, 1369, 95, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1371, 1375, 5, 121, 0, 0, 1372, 1373, 3, 162, 81, 0, 1373, 1374, 5, 3, 0, 0, 1374, 1376, 1, 0, 0, 0, 1375, 1372, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, 1376, 1377, 1, 0, 0, 0, 1377, 1389, 3, 176, 88, 0, 1378, 1379, 5, 4, 0, 0, 1379, 1384, 3, 98, 49, 0, 1380, 1381, 5, 6, 0, 0, 1381, 1383, 3, 98, 49, 0, 1382, 1380, 1, 0, 0, 0, 1383, 1386, 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 1387, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1388, 5, 5, 0, 0, 1388, 1390, 1, 0, 0, 0, 1389, 1378, 1, 0, 0, 0, 1389, 1390, 1, 0, 0, 0, 1390, 1409, 1, 0, 0, 0, 1391, 1392, 5, 110, 0, 0, 1392, 1401, 7, 12, 0, 0, 1393, 1394, 5, 133, 0, 0, 1394, 1402, 5, 107, 0, 0, 1395, 1396, 5, 133, 0, 0, 1396, 1402, 5, 57, 0, 0, 1397, 1402, 5, 42, 0, 0, 1398, 1402, 5, 127, 0, 0, 1399, 1400, 5, 104, 0, 0, 1400, 1402, 5, 27, 0, 0, 1401, 1393, 1, 0, 0, 0, 1401, 1395, 1, 0, 0, 0, 1401, 1397, 1, 0, 0, 0, 1401, 1398, 1, 0, 0, 0, 1401, 1399, 1, 0, 0, 0, 1402, 1406, 1, 0, 0, 0, 1403, 1404, 5, 101, 0, 0, 1404, 1406, 3, 158, 79, 0, 1405, 1391, 1, 0, 0, 0, 1405, 1403, 1, 0, 0, 0, 1406, 1408, 1, 0, 0, 0, 1407, 1405, 1, 0, 0, 0, 1408, 1411, 1, 0, 0, 0, 1409, 1407, 1, 0, 0, 0, 1409, 1410, 1, 0, 0, 0, 1410, 1425, 1, 0, 0, 0, 1411, 1409, 1, 0, 0, 0, 1412, 1414, 5, 105, 0, 0, 1413, 1412, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1415, 1, 0, 0, 0, 1415, 1420, 5, 58, 0, 0, 1416, 1417, 5, 88, 0, 0, 1417, 1421, 5, 59, 0, 0, 1418, 1419, 5, 88, 0, 0, 1419, 1421, 5, 84, 0, 0, 1420, 1416, 1, 0, 0, 0, 1420, 1418, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1423, 1, 0, 0, 0, 1422, 1424, 5, 68, 0, 0, 1423, 1422, 1, 0, 0, 0, 1423, 1424, 1, 0, 0, 0, 1424, 1426, 1, 0, 0, 0, 1425, 1413, 1, 0, 0, 0, 1425, 1426, 1, 0, 0, 0, 1426, 97, 1, 0, 0, 0, 1427, 1428, 3, 158, 79, 0, 1428, 99, 1, 0, 0, 0, 1429, 1430, 5, 119, 0, 0, 1430, 1435, 5, 4, 0, 0, 1431, 1436, 5, 83, 0, 0, 1432, 1433, 7, 13, 0, 0, 1433, 1434, 5, 6, 0, 0, 1434, 1436, 3, 148, 74, 0, 1435, 1431, 1, 0, 0, 0, 1435, 1432, 1, 0, 0, 0, 1436, 1437, 1, 0, 0, 0, 1437, 1438, 5, 5, 0, 0, 1438, 101, 1, 0, 0, 0, 1439, 1442, 3, 172, 86, 0, 1440, 1441, 5, 46, 0, 0, 1441, 1443, 3, 174, 87, 0, 1442, 1440, 1, 0, 0, 0, 1442, 1443, 1, 0, 0, 0, 1443, 1445, 1, 0, 0, 0, 1444, 1446, 7, 5, 0, 0, 1445, 1444, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, 103, 1, 0, 0, 0, 1447, 1448, 5, 50, 0, 0, 1448, 1450, 3, 158, 79, 0, 1449, 1447, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1460, 1, 0, 0, 0, 1451, 1461, 3, 106, 53, 0, 1452, 1461, 3, 112, 56, 0, 1453, 1461, 3, 110, 55, 0, 1454, 1455, 5, 45, 0, 0, 1455, 1456, 5, 4, 0, 0, 1456, 1457, 3, 94, 47, 0, 1457, 1458, 5, 5, 0, 0, 1458, 1461, 1, 0, 0, 0, 1459, 1461, 3, 108, 54, 0, 1460, 1451, 1, 0, 0, 0, 1460, 1452, 1, 0, 0, 0, 1460, 1453, 1, 0, 0, 0, 1460, 1454, 1, 0, 0, 0, 1460, 1459, 1, 0, 0, 0, 1461, 105, 1, 0, 0, 0, 1462, 1463, 5, 117, 0, 0, 1463, 1464, 5, 97, 0, 0, 1464, 1465, 5, 4, 0, 0, 1465, 1470, 3, 102, 51, 0, 1466, 1467, 5, 6, 0, 0, 1467, 1469, 3, 102, 51, 0, 1468, 1466, 1, 0, 0, 0, 1469, 1472, 1, 0, 0, 0, 1470, 1468, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1473, 1, 0, 0, 0, 1472, 1470, 1, 0, 0, 0, 1473, 1474, 5, 5, 0, 0, 1474, 1475, 3, 92, 46, 0, 1475, 107, 1, 0, 0, 0, 1476, 1477, 5, 76, 0, 0, 1477, 1478, 5, 97, 0, 0, 1478, 1479, 5, 4, 0, 0, 1479, 1484, 3, 114, 57, 0, 1480, 1481, 5, 6, 0, 0, 1481, 1483, 3, 114, 57, 0, 1482, 1480, 1, 0, 0, 0, 1483, 1486, 1, 0, 0, 0, 1484, 1482, 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 1487, 1, 0, 0, 0, 1486, 1484, 1, 0, 0, 0, 1487, 1488, 5, 5, 0, 0, 1488, 1489, 3, 96, 48, 0, 1489, 109, 1, 0, 0, 0, 1490, 1492, 5, 142, 0, 0, 1491, 1493, 5, 97, 0, 0, 1492, 1491, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1495, 1, 0, 0, 0, 1494, 1496, 3, 158, 79, 0, 1495, 1494, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 1498, 5, 4, 0, 0, 1498, 1503, 3, 102, 51, 0, 1499, 1500, 5, 6, 0, 0, 1500, 1502, 3, 102, 51, 0, 1501, 1499, 1, 0, 0, 0, 1502, 1505, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1506, 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1507, 5, 5, 0, 0, 1507, 1508, 3, 92, 46, 0, 1508, 111, 1, 0, 0, 0, 1509, 1511, 5, 97, 0, 0, 1510, 1512, 3, 158, 79, 0, 1511, 1510, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1514, 5, 4, 0, 0, 1514, 1519, 3, 102, 51, 0, 1515, 1516, 5, 6, 0, 0, 1516, 1518, 3, 102, 51, 0, 1517, 1515, 1, 0, 0, 0, 1518, 1521, 1, 0, 0, 0, 1519, 1517, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1522, 1, 0, 0, 0, 1521, 1519, 1, 0, 0, 0, 1522, 1523, 5, 5, 0, 0, 1523, 1524, 3, 92, 46, 0, 1524, 113, 1, 0, 0, 0, 1525, 1526, 3, 172, 86, 0, 1526, 115, 1, 0, 0, 0, 1527, 1529, 5, 151, 0, 0, 1528, 1530, 5, 120, 0, 0, 1529, 1528, 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1532, 3, 140, 70, 0, 1532, 1533, 5, 34, 0, 0, 1533, 1534, 5, 4, 0, 0, 1534, 1535, 3, 64, 32, 0, 1535, 1545, 5, 5, 0, 0, 1536, 1537, 5, 6, 0, 0, 1537, 1538, 3, 140, 70, 0, 1538, 1539, 5, 34, 0, 0, 1539, 1540, 5, 4, 0, 0, 1540, 1541, 3, 64, 32, 0, 1541, 1542, 5, 5, 0, 0, 1542, 1544, 1, 0, 0, 0, 1543, 1536, 1, 0, 0, 0, 1544, 1547, 1, 0, 0, 0, 1545, 1543, 1, 0, 0, 0, 1545, 1546, 1, 0, 0, 0, 1546, 117, 1, 0, 0, 0, 1547, 1545, 1, 0, 0, 0, 1548, 1549, 3, 162, 81, 0, 1549, 1550, 5, 3, 0, 0, 1550, 1552, 1, 0, 0, 0, 1551, 1548, 1, 0, 0, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1559, 3, 166, 83, 0, 1554, 1555, 5, 87, 0, 0, 1555, 1556, 5, 41, 0, 0, 1556, 1560, 3, 178, 89, 0, 1557, 1558, 5, 105, 0, 0, 1558, 1560, 5, 87, 0, 0, 1559, 1554, 1, 0, 0, 0, 1559, 1557, 1, 0, 0, 0, 1559, 1560, 1, 0, 0, 0, 1560, 119, 1, 0, 0, 0, 1561, 1564, 3, 94, 47, 0, 1562, 1563, 5, 46, 0, 0, 1563, 1565, 3, 174, 87, 0, 1564, 1562, 1, 0, 0, 0, 1564, 1565, 1, 0, 0, 0, 1565, 1567, 1, 0, 0, 0, 1566, 1568, 7, 5, 0, 0, 1567, 1566, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 121, 1, 0, 0, 0, 1569, 1573, 3, 142, 71, 0, 1570, 1573, 3, 158, 79, 0, 1571, 1573, 5, 156, 0, 0, 1572, 1569, 1, 0, 0, 0, 1572, 1570, 1, 0, 0, 0, 1572, 1571, 1, 0, 0, 0, 1573, 123, 1, 0, 0, 0, 1574, 1586, 3, 166, 83, 0, 1575, 1576, 5, 4, 0, 0, 1576, 1581, 3, 172, 86, 0, 1577, 1578, 5, 6, 0, 0, 1578, 1580, 3, 172, 86, 0, 1579, 1577, 1, 0, 0, 0, 1580, 1583, 1, 0, 0, 0, 1581, 1579, 1, 0, 0, 0, 1581, 1582, 1, 0, 0, 0, 1582, 1584, 1, 0, 0, 0, 1583, 1581, 1, 0, 0, 0, 1584, 1585, 5, 5, 0, 0, 1585, 1587, 1, 0, 0, 0, 1586, 1575, 1, 0, 0, 0, 1586, 1587, 1, 0, 0, 0, 1587, 1588, 1, 0, 0, 0, 1588, 1589, 5, 34, 0, 0, 1589, 1590, 5, 4, 0, 0, 1590, 1591, 3, 64, 32, 0, 1591, 1592, 5, 5, 0, 0, 1592, 125, 1, 0, 0, 0, 1593, 1606, 5, 8, 0, 0, 1594, 1595, 3, 166, 83, 0, 1595, 1596, 5, 3, 0, 0, 1596, 1597, 5, 8, 0, 0, 1597, 1606, 1, 0, 0, 0, 1598, 1603, 3, 94, 47, 0, 1599, 1601, 5, 34, 0, 0, 1600, 1599, 1, 0, 0, 0, 1600, 1601, 1, 0, 0, 0, 1601, 1602, 1, 0, 0, 0, 1602, 1604, 3, 152, 76, 0, 1603, 1600, 1, 0, 0, 0, 1603, 1604, 1, 0, 0, 0, 1604, 1606, 1, 0, 0, 0, 1605, 1593, 1, 0, 0, 0, 1605, 1594, 1, 0, 0, 0, 1605, 1598, 1, 0, 0, 0, 1606, 127, 1, 0, 0, 0, 1607, 1608, 3, 162, 81, 0, 1608, 1609, 5, 3, 0, 0, 1609, 1611, 1, 0, 0, 0, 1610, 1607, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1617, 3, 166, 83, 0, 1613, 1615, 5, 34, 0, 0, 1614, 1613, 1, 0, 0, 0, 1614, 1615, 1, 0, 0, 0, 1615, 1616, 1, 0, 0, 0, 1616, 1618, 3, 190, 95, 0, 1617, 1614, 1, 0, 0, 0, 1617, 1618, 1, 0, 0, 0, 1618, 1624, 1, 0, 0, 0, 1619, 1620, 5, 87, 0, 0, 1620, 1621, 5, 41, 0, 0, 1621, 1625, 3, 178, 89, 0, 1622, 1623, 5, 105, 0, 0, 1623, 1625, 5, 87, 0, 0, 1624, 1619, 1, 0, 0, 0, 1624, 1622, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, 1625, 1655, 1, 0, 0, 0, 1626, 1636, 5, 4, 0, 0, 1627, 1632, 3, 128, 64, 0, 1628, 1629, 5, 6, 0, 0, 1629, 1631, 3, 128, 64, 0, 1630, 1628, 1, 0, 0, 0, 1631, 1634, 1, 0, 0, 0, 1632, 1630, 1, 0, 0, 0, 1632, 1633, 1, 0, 0, 0, 1633, 1637, 1, 0, 0, 0, 1634, 1632, 1, 0, 0, 0, 1635, 1637, 3, 130, 65, 0, 1636, 1627, 1, 0, 0, 0, 1636, 1635, 1, 0, 0, 0, 1637, 1638, 1, 0, 0, 0, 1638, 1643, 5, 5, 0, 0, 1639, 1641, 5, 34, 0, 0, 1640, 1639, 1, 0, 0, 0, 1640, 1641, 1, 0, 0, 0, 1641, 1642, 1, 0, 0, 0, 1642, 1644, 3, 190, 95, 0, 1643, 1640, 1, 0, 0, 0, 1643, 1644, 1, 0, 0, 0, 1644, 1655, 1, 0, 0, 0, 1645, 1646, 5, 4, 0, 0, 1646, 1647, 3, 64, 32, 0, 1647, 1652, 5, 5, 0, 0, 1648, 1650, 5, 34, 0, 0, 1649, 1648, 1, 0, 0, 0, 1649, 1650, 1, 0, 0, 0, 1650, 1651, 1, 0, 0, 0, 1651, 1653, 3, 190, 95, 0, 1652, 1649, 1, 0, 0, 0, 1652, 1653, 1, 0, 0, 0, 1653, 1655, 1, 0, 0, 0, 1654, 1610, 1, 0, 0, 0, 1654, 1626, 1, 0, 0, 0, 1654, 1645, 1, 0, 0, 0, 1655, 129, 1, 0, 0, 0, 1656, 1663, 3, 128, 64, 0, 1657, 1658, 3, 132, 66, 0, 1658, 1659, 3, 128, 64, 0, 1659, 1660, 3, 134, 67, 0, 1660, 1662, 1, 0, 0, 0, 1661, 1657, 1, 0, 0, 0, 1662, 1665, 1, 0, 0, 0, 1663, 1661, 1, 0, 0, 0, 1663, 1664, 1, 0, 0, 0, 1664, 131, 1, 0, 0, 0, 1665, 1663, 1, 0, 0, 0, 1666, 1680, 5, 6, 0, 0, 1667, 1669, 5, 102, 0, 0, 1668, 1667, 1, 0, 0, 0, 1668, 1669, 1, 0, 0, 0, 1669, 1676, 1, 0, 0, 0, 1670, 1672, 5, 98, 0, 0, 1671, 1673, 5, 114, 0, 0, 1672, 1671, 1, 0, 0, 0, 1672, 1673, 1, 0, 0, 0, 1673, 1677, 1, 0, 0, 0, 1674, 1677, 5, 89, 0, 0, 1675, 1677, 5, 52, 0, 0, 1676, 1670, 1, 0, 0, 0, 1676, 1674, 1, 0, 0, 0, 1676, 1675, 1, 0, 0, 0, 1676, 1677, 1, 0, 0, 0, 1677, 1678, 1, 0, 0, 0, 1678, 1680, 5, 96, 0, 0, 1679, 1666, 1, 0, 0, 0, 1679, 1668, 1, 0, 0, 0, 1680, 133, 1, 0, 0, 0, 1681, 1682, 5, 110, 0, 0, 1682, 1696, 3, 94, 47, 0, 1683, 1684, 5, 144, 0, 0, 1684, 1685, 5, 4, 0, 0, 1685, 1690, 3, 172, 86, 0, 1686, 1687, 5, 6, 0, 0, 1687, 1689, 3, 172, 86, 0, 1688, 1686, 1, 0, 0, 0, 1689, 1692, 1, 0, 0, 0, 1690, 1688, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1693, 1, 0, 0, 0, 1692, 1690, 1, 0, 0, 0, 1693, 1694, 5, 5, 0, 0, 1694, 1696, 1, 0, 0, 0, 1695, 1681, 1, 0, 0, 0, 1695, 1683, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 135, 1, 0, 0, 0, 1697, 1699, 5, 132, 0, 0, 1698, 1700, 7, 4, 0, 0, 1699, 1698, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 1701, 1, 0, 0, 0, 1701, 1706, 3, 126, 63, 0, 1702, 1703, 5, 6, 0, 0, 1703, 1705, 3, 126, 63, 0, 1704, 1702, 1, 0, 0, 0, 1705, 1708, 1, 0, 0, 0, 1706, 1704, 1, 0, 0, 0, 1706, 1707, 1, 0, 0, 0, 1707, 1721, 1, 0, 0, 0, 1708, 1706, 1, 0, 0, 0, 1709, 1719, 5, 77, 0, 0, 1710, 1715, 3, 128, 64, 0, 1711, 1712, 5, 6, 0, 0, 1712, 1714, 3, 128, 64, 0, 1713, 1711, 1, 0, 0, 0, 1714, 1717, 1, 0, 0, 0, 1715, 1713, 1, 0, 0, 0, 1715, 1716, 1, 0, 0, 0, 1716, 1720, 1, 0, 0, 0, 1717, 1715, 1, 0, 0, 0, 1718, 1720, 3, 130, 65, 0, 1719, 1710, 1, 0, 0, 0, 1719, 1718, 1, 0, 0, 0, 1720, 1722, 1, 0, 0, 0, 1721, 1709, 1, 0, 0, 0, 1721, 1722, 1, 0, 0, 0, 1722, 1725, 1, 0, 0, 0, 1723, 1724, 5, 150, 0, 0, 1724, 1726, 3, 94, 47, 0, 1725, 1723, 1, 0, 0, 0, 1725, 1726, 1, 0, 0, 0, 1726, 1741, 1, 0, 0, 0, 1727, 1728, 5, 80, 0, 0, 1728, 1729, 5, 41, 0, 0, 1729, 1734, 3, 94, 47, 0, 1730, 1731, 5, 6, 0, 0, 1731, 1733, 3, 94, 47, 0, 1732, 1730, 1, 0, 0, 0, 1733, 1736, 1, 0, 0, 0, 1734, 1732, 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0, 1735, 1739, 1, 0, 0, 0, 1736, 1734, 1, 0, 0, 0, 1737, 1738, 5, 81, 0, 0, 1738, 1740, 3, 94, 47, 0, 1739, 1737, 1, 0, 0, 0, 1739, 1740, 1, 0, 0, 0, 1740, 1742, 1, 0, 0, 0, 1741, 1727, 1, 0, 0, 0, 1741, 1742, 1, 0, 0, 0, 1742, 1772, 1, 0, 0, 0, 1743, 1744, 5, 146, 0, 0, 1744, 1745, 5, 4, 0, 0, 1745, 1750, 3, 94, 47, 0, 1746, 1747, 5, 6, 0, 0, 1747, 1749, 3, 94, 47, 0, 1748, 1746, 1, 0, 0, 0, 1749, 1752, 1, 0, 0, 0, 1750, 1748, 1, 0, 0, 0, 1750, 1751, 1, 0, 0, 0, 1751, 1753, 1, 0, 0, 0, 1752, 1750, 1, 0, 0, 0, 1753, 1768, 5, 5, 0, 0, 1754, 1755, 5, 6, 0, 0, 1755, 1756, 5, 4, 0, 0, 1756, 1761, 3, 94, 47, 0, 1757, 1758, 5, 6, 0, 0, 1758, 1760, 3, 94, 47, 0, 1759, 1757, 1, 0, 0, 0, 1760, 1763, 1, 0, 0, 0, 1761, 1759, 1, 0, 0, 0, 1761, 1762, 1, 0, 0, 0, 1762, 1764, 1, 0, 0, 0, 1763, 1761, 1, 0, 0, 0, 1764, 1765, 5, 5, 0, 0, 1765, 1767, 1, 0, 0, 0, 1766, 1754, 1, 0, 0, 0, 1767, 1770, 1, 0, 0, 0, 1768, 1766, 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1772, 1, 0, 0, 0, 1770, 1768, 1, 0, 0, 0, 1771, 1697, 1, 0, 0, 0, 1771, 1743, 1, 0, 0, 0, 1772, 137, 1, 0, 0, 0, 1773, 1779, 5, 141, 0, 0, 1774, 1775, 5, 141, 0, 0, 1775, 1779, 5, 30, 0, 0, 1776, 1779, 5, 92, 0, 0, 1777, 1779, 5, 70, 0, 0, 1778, 1773, 1, 0, 0, 0, 1778, 1774, 1, 0, 0, 0, 1778, 1776, 1, 0, 0, 0, 1778, 1777, 1, 0, 0, 0, 1779, 139, 1, 0, 0, 0, 1780, 1792, 3, 166, 83, 0, 1781, 1782, 5, 4, 0, 0, 1782, 1787, 3, 172, 86, 0, 1783, 1784, 5, 6, 0, 0, 1784, 1786, 3, 172, 86, 0, 1785, 1783, 1, 0, 0, 0, 1786, 1789, 1, 0, 0, 0, 1787, 1785, 1, 0, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 1790, 1, 0, 0, 0, 1789, 1787, 1, 0, 0, 0, 1790, 1791, 5, 5, 0, 0, 1791, 1793, 1, 0, 0, 0, 1792, 1781, 1, 0, 0, 0, 1792, 1793, 1, 0, 0, 0, 1793, 141, 1, 0, 0, 0, 1794, 1796, 7, 8, 0, 0, 1795, 1794, 1, 0, 0, 0, 1795, 1796, 1, 0, 0, 0, 1796, 1797, 1, 0, 0, 0, 1797, 1800, 5, 154, 0, 0, 1798, 1800, 5, 8, 0, 0, 1799, 1795, 1, 0, 0, 0, 1799, 1798, 1, 0, 0, 0, 1800, 143, 1, 0, 0, 0, 1801, 1802, 7, 14, 0, 0, 1802, 145, 1, 0, 0, 0, 1803, 1804, 7, 15, 0, 0, 1804, 147, 1, 0, 0, 0, 1805, 1806, 5, 156, 0, 0, 1806, 149, 1, 0, 0, 0, 1807, 1810, 3, 94, 47, 0, 1808, 1810, 3, 74, 37, 0, 1809, 1807, 1, 0, 0, 0, 1809, 1808, 1, 0, 0, 0, 1810, 151, 1, 0, 0, 0, 1811, 1812, 7, 16, 0, 0, 1812, 153, 1, 0, 0, 0, 1813, 1814, 7, 17, 0, 0, 1814, 155, 1, 0, 0, 0, 1815, 1817, 9, 0, 0, 0, 1816, 1815, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1816, 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 157, 1, 0, 0, 0, 1820, 1821, 3, 194, 97, 0, 1821, 159, 1, 0, 0, 0, 1822, 1823, 3, 194, 97, 0, 1823, 161, 1, 0, 0, 0, 1824, 1825, 3, 194, 97, 0, 1825, 163, 1, 0, 0, 0, 1826, 1827, 3, 194, 97, 0, 1827, 165, 1, 0, 0, 0, 1828, 1829, 3, 194, 97, 0, 1829, 167, 1, 0, 0, 0, 1830, 1831, 3, 194, 97, 0, 1831, 169, 1, 0, 0, 0, 1832, 1833, 3, 194, 97, 0, 1833, 171, 1, 0, 0, 0, 1834, 1835, 3, 194, 97, 0, 1835, 173, 1, 0, 0, 0, 1836, 1837, 3, 194, 97, 0, 1837, 175, 1, 0, 0, 0, 1838, 1839, 3, 194, 97, 0, 1839, 177, 1, 0, 0, 0, 1840, 1841, 3, 194, 97, 0, 1841, 179, 1, 0, 0, 0, 1842, 1843, 3, 194, 97, 0, 1843, 181, 1, 0, 0, 0, 1844, 1845, 3, 194, 97, 0, 1845, 183, 1, 0, 0, 0, 1846, 1847, 3, 194, 97, 0, 1847, 185, 1, 0, 0, 0, 1848, 1849, 3, 194, 97, 0, 1849, 187, 1, 0, 0, 0, 1850, 1851, 3, 194, 97, 0, 1851, 189, 1, 0, 0, 0, 1852, 1853, 3, 194, 97, 0, 1853, 191, 1, 0, 0, 0, 1854, 1855, 3, 194, 97, 0, 1855, 193, 1, 0, 0, 0, 1856, 1864, 5, 153, 0, 0, 1857, 1864, 3, 154, 77, 0, 1858, 1864, 5, 156, 0, 0, 1859, 1860, 5, 4, 0, 0, 1860, 1861, 3, 194, 97, 0, 1861, 1862, 5, 5, 0, 0, 1862, 1864, 1, 0, 0, 0, 1863, 1856, 1, 0, 0, 0, 1863, 1857, 1, 0, 0, 0, 1863, 1858, 1, 0, 0, 0, 1863, 1859, 1, 0, 0, 0, 1864, 195, 1, 0, 0, 0, 260, 198, 200, 211, 218, 223, 229, 235, 237, 269, 274, 279, 289, 292, 295, 298, 315, 319, 327, 331, 333, 338, 340, 344, 351, 354, 359, 363, 368, 377, 380, 386, 388, 392, 398, 403, 414, 420, 424, 430, 435, 444, 446, 452, 456, 459, 463, 469, 474, 481, 492, 495, 497, 503, 509, 513, 520, 526, 532, 538, 543, 555, 560, 571, 576, 579, 586, 589, 596, 605, 608, 614, 616, 620, 628, 633, 641, 646, 654, 659, 667, 672, 678, 685, 688, 696, 706, 709, 715, 717, 720, 739, 745, 754, 759, 768, 779, 786, 792, 798, 807, 814, 818, 820, 824, 831, 833, 837, 840, 847, 854, 857, 867, 870, 876, 878, 882, 889, 892, 900, 910, 913, 919, 921, 925, 932, 941, 945, 947, 951, 960, 965, 967, 976, 987, 994, 997, 1000, 1013, 1027, 1032, 1035, 1048, 1062, 1067, 1076, 1079, 1085, 1087, 1094, 1096, 1103, 1110, 1115, 1119, 1123, 1139, 1144, 1148, 1171, 1177, 1179, 1183, 1188, 1196, 1201, 1210, 1217, 1221, 1237, 1240, 1248, 1257, 1261, 1266, 1296, 1308, 1313, 1325, 1331, 1338, 1342, 1352, 1355, 1361, 1364, 1366, 1368, 1375, 1384, 1389, 1401, 1405, 1409, 1413, 1420, 1423, 1425, 1435, 1442, 1445, 1449, 1460, 1470, 1484, 1492, 1495, 1503, 1511, 1519, 1529, 1545, 1551, 1559, 1564, 1567, 1572, 1581, 1586, 1600, 1603, 1605, 1610, 1614, 1617, 1624, 1632, 1636, 1640, 1643, 1649, 1652, 1654, 1663, 1668, 1672, 1676, 1679, 1690, 1695, 1699, 1706, 1715, 1719, 1721, 1725, 1734, 1739, 1741, 1750, 1761, 1768, 1771, 1778, 1787, 1792, 1795, 1799, 1809, 1818, 1863] \ No newline at end of file diff --git a/processor/stream_processor/test/parser/Sql.tokens b/processor/stream_processor/test/parser/Sql.tokens new file mode 100644 index 000000000000..70454cda7204 --- /dev/null +++ b/processor/stream_processor/test/parser/Sql.tokens @@ -0,0 +1,186 @@ +T__0=1 +SCOL=2 +DOT=3 +OPEN_PAR=4 +CLOSE_PAR=5 +COMMA=6 +ASSIGN=7 +STAR=8 +PLUS=9 +MINUS=10 +TILDE=11 +PIPE2=12 +DIV=13 +MOD=14 +LT2=15 +GT2=16 +AMP=17 +PIPE=18 +LT=19 +LT_EQ=20 +GT=21 +GT_EQ=22 +EQ=23 +NOT_EQ1=24 +NOT_EQ2=25 +K_ABORT=26 +K_ACTION=27 +K_ADD=28 +K_AFTER=29 +K_ALL=30 +K_ALTER=31 +K_ANALYZE=32 +K_AND=33 +K_AS=34 +K_ASC=35 +K_ATTACH=36 +K_AUTOINCREMENT=37 +K_BEFORE=38 +K_BEGIN=39 +K_BETWEEN=40 +K_BY=41 +K_CASCADE=42 +K_CASE=43 +K_CAST=44 +K_CHECK=45 +K_COLLATE=46 +K_COLUMN=47 +K_COMMIT=48 +K_CONFLICT=49 +K_CONSTRAINT=50 +K_CREATE=51 +K_CROSS=52 +K_CURRENT_DATE=53 +K_CURRENT_TIME=54 +K_CURRENT_TIMESTAMP=55 +K_DATABASE=56 +K_DEFAULT=57 +K_DEFERRABLE=58 +K_DEFERRED=59 +K_DELETE=60 +K_DESC=61 +K_DETACH=62 +K_DISTINCT=63 +K_DROP=64 +K_EACH=65 +K_ELSE=66 +K_END=67 +K_ENABLE=68 +K_ESCAPE=69 +K_EXCEPT=70 +K_EXCLUSIVE=71 +K_EXISTS=72 +K_EXPLAIN=73 +K_FAIL=74 +K_FOR=75 +K_FOREIGN=76 +K_FROM=77 +K_FULL=78 +K_GLOB=79 +K_GROUP=80 +K_HAVING=81 +K_IF=82 +K_IGNORE=83 +K_IMMEDIATE=84 +K_IN=85 +K_INDEX=86 +K_INDEXED=87 +K_INITIALLY=88 +K_INNER=89 +K_INSERT=90 +K_INSTEAD=91 +K_INTERSECT=92 +K_INTO=93 +K_IS=94 +K_ISNULL=95 +K_JOIN=96 +K_KEY=97 +K_LEFT=98 +K_LIKE=99 +K_LIMIT=100 +K_MATCH=101 +K_NATURAL=102 +K_NEXTVAL=103 +K_NO=104 +K_NOT=105 +K_NOTNULL=106 +K_NULL=107 +K_OF=108 +K_OFFSET=109 +K_ON=110 +K_ONLY=111 +K_OR=112 +K_ORDER=113 +K_OUTER=114 +K_PLAN=115 +K_PRAGMA=116 +K_PRIMARY=117 +K_QUERY=118 +K_RAISE=119 +K_RECURSIVE=120 +K_REFERENCES=121 +K_REGEXP=122 +K_REINDEX=123 +K_RELEASE=124 +K_RENAME=125 +K_REPLACE=126 +K_RESTRICT=127 +K_RIGHT=128 +K_ROLLBACK=129 +K_ROW=130 +K_SAVEPOINT=131 +K_SELECT=132 +K_SET=133 +K_TABLE=134 +K_TEMP=135 +K_TEMPORARY=136 +K_THEN=137 +K_TO=138 +K_TRANSACTION=139 +K_TRIGGER=140 +K_UNION=141 +K_UNIQUE=142 +K_UPDATE=143 +K_USING=144 +K_VACUUM=145 +K_VALUES=146 +K_VIEW=147 +K_VIRTUAL=148 +K_WHEN=149 +K_WHERE=150 +K_WITH=151 +K_WITHOUT=152 +IDENTIFIER=153 +NUMERIC_LITERAL=154 +BIND_PARAMETER=155 +STRING_LITERAL=156 +BLOB_LITERAL=157 +SINGLE_LINE_COMMENT=158 +MULTILINE_COMMENT=159 +SPACES=160 +UNEXPECTED_CHAR=161 +'::'=1 +';'=2 +'.'=3 +'('=4 +')'=5 +','=6 +'='=7 +'*'=8 +'+'=9 +'-'=10 +'~'=11 +'||'=12 +'/'=13 +'%'=14 +'<<'=15 +'>>'=16 +'&'=17 +'|'=18 +'<'=19 +'<='=20 +'>'=21 +'>='=22 +'=='=23 +'!='=24 +'<>'=25 diff --git a/processor/stream_processor/test/parser/SqlLexer.interp b/processor/stream_processor/test/parser/SqlLexer.interp new file mode 100644 index 000000000000..d43689e2eb1e --- /dev/null +++ b/processor/stream_processor/test/parser/SqlLexer.interp @@ -0,0 +1,527 @@ +token literal names: +null +'::' +';' +'.' +'(' +')' +',' +'=' +'*' +'+' +'-' +'~' +'||' +'/' +'%' +'<<' +'>>' +'&' +'|' +'<' +'<=' +'>' +'>=' +'==' +'!=' +'<>' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null + +token symbolic names: +null +null +SCOL +DOT +OPEN_PAR +CLOSE_PAR +COMMA +ASSIGN +STAR +PLUS +MINUS +TILDE +PIPE2 +DIV +MOD +LT2 +GT2 +AMP +PIPE +LT +LT_EQ +GT +GT_EQ +EQ +NOT_EQ1 +NOT_EQ2 +K_ABORT +K_ACTION +K_ADD +K_AFTER +K_ALL +K_ALTER +K_ANALYZE +K_AND +K_AS +K_ASC +K_ATTACH +K_AUTOINCREMENT +K_BEFORE +K_BEGIN +K_BETWEEN +K_BY +K_CASCADE +K_CASE +K_CAST +K_CHECK +K_COLLATE +K_COLUMN +K_COMMIT +K_CONFLICT +K_CONSTRAINT +K_CREATE +K_CROSS +K_CURRENT_DATE +K_CURRENT_TIME +K_CURRENT_TIMESTAMP +K_DATABASE +K_DEFAULT +K_DEFERRABLE +K_DEFERRED +K_DELETE +K_DESC +K_DETACH +K_DISTINCT +K_DROP +K_EACH +K_ELSE +K_END +K_ENABLE +K_ESCAPE +K_EXCEPT +K_EXCLUSIVE +K_EXISTS +K_EXPLAIN +K_FAIL +K_FOR +K_FOREIGN +K_FROM +K_FULL +K_GLOB +K_GROUP +K_HAVING +K_IF +K_IGNORE +K_IMMEDIATE +K_IN +K_INDEX +K_INDEXED +K_INITIALLY +K_INNER +K_INSERT +K_INSTEAD +K_INTERSECT +K_INTO +K_IS +K_ISNULL +K_JOIN +K_KEY +K_LEFT +K_LIKE +K_LIMIT +K_MATCH +K_NATURAL +K_NEXTVAL +K_NO +K_NOT +K_NOTNULL +K_NULL +K_OF +K_OFFSET +K_ON +K_ONLY +K_OR +K_ORDER +K_OUTER +K_PLAN +K_PRAGMA +K_PRIMARY +K_QUERY +K_RAISE +K_RECURSIVE +K_REFERENCES +K_REGEXP +K_REINDEX +K_RELEASE +K_RENAME +K_REPLACE +K_RESTRICT +K_RIGHT +K_ROLLBACK +K_ROW +K_SAVEPOINT +K_SELECT +K_SET +K_TABLE +K_TEMP +K_TEMPORARY +K_THEN +K_TO +K_TRANSACTION +K_TRIGGER +K_UNION +K_UNIQUE +K_UPDATE +K_USING +K_VACUUM +K_VALUES +K_VIEW +K_VIRTUAL +K_WHEN +K_WHERE +K_WITH +K_WITHOUT +IDENTIFIER +NUMERIC_LITERAL +BIND_PARAMETER +STRING_LITERAL +BLOB_LITERAL +SINGLE_LINE_COMMENT +MULTILINE_COMMENT +SPACES +UNEXPECTED_CHAR + +rule names: +T__0 +SCOL +DOT +OPEN_PAR +CLOSE_PAR +COMMA +ASSIGN +STAR +PLUS +MINUS +TILDE +PIPE2 +DIV +MOD +LT2 +GT2 +AMP +PIPE +LT +LT_EQ +GT +GT_EQ +EQ +NOT_EQ1 +NOT_EQ2 +K_ABORT +K_ACTION +K_ADD +K_AFTER +K_ALL +K_ALTER +K_ANALYZE +K_AND +K_AS +K_ASC +K_ATTACH +K_AUTOINCREMENT +K_BEFORE +K_BEGIN +K_BETWEEN +K_BY +K_CASCADE +K_CASE +K_CAST +K_CHECK +K_COLLATE +K_COLUMN +K_COMMIT +K_CONFLICT +K_CONSTRAINT +K_CREATE +K_CROSS +K_CURRENT_DATE +K_CURRENT_TIME +K_CURRENT_TIMESTAMP +K_DATABASE +K_DEFAULT +K_DEFERRABLE +K_DEFERRED +K_DELETE +K_DESC +K_DETACH +K_DISTINCT +K_DROP +K_EACH +K_ELSE +K_END +K_ENABLE +K_ESCAPE +K_EXCEPT +K_EXCLUSIVE +K_EXISTS +K_EXPLAIN +K_FAIL +K_FOR +K_FOREIGN +K_FROM +K_FULL +K_GLOB +K_GROUP +K_HAVING +K_IF +K_IGNORE +K_IMMEDIATE +K_IN +K_INDEX +K_INDEXED +K_INITIALLY +K_INNER +K_INSERT +K_INSTEAD +K_INTERSECT +K_INTO +K_IS +K_ISNULL +K_JOIN +K_KEY +K_LEFT +K_LIKE +K_LIMIT +K_MATCH +K_NATURAL +K_NEXTVAL +K_NO +K_NOT +K_NOTNULL +K_NULL +K_OF +K_OFFSET +K_ON +K_ONLY +K_OR +K_ORDER +K_OUTER +K_PLAN +K_PRAGMA +K_PRIMARY +K_QUERY +K_RAISE +K_RECURSIVE +K_REFERENCES +K_REGEXP +K_REINDEX +K_RELEASE +K_RENAME +K_REPLACE +K_RESTRICT +K_RIGHT +K_ROLLBACK +K_ROW +K_SAVEPOINT +K_SELECT +K_SET +K_TABLE +K_TEMP +K_TEMPORARY +K_THEN +K_TO +K_TRANSACTION +K_TRIGGER +K_UNION +K_UNIQUE +K_UPDATE +K_USING +K_VACUUM +K_VALUES +K_VIEW +K_VIRTUAL +K_WHEN +K_WHERE +K_WITH +K_WITHOUT +IDENTIFIER +NUMERIC_LITERAL +BIND_PARAMETER +STRING_LITERAL +BLOB_LITERAL +SINGLE_LINE_COMMENT +MULTILINE_COMMENT +SPACES +UNEXPECTED_CHAR +DIGIT +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +X +Y +Z + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[4, 0, 161, 1483, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1295, 8, 152, 10, 152, 12, 152, 1298, 9, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1305, 8, 152, 10, 152, 12, 152, 1308, 9, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1313, 8, 152, 10, 152, 12, 152, 1316, 9, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1321, 8, 152, 10, 152, 12, 152, 1324, 9, 152, 3, 152, 1326, 8, 152, 1, 153, 4, 153, 1329, 8, 153, 11, 153, 12, 153, 1330, 1, 153, 1, 153, 5, 153, 1335, 8, 153, 10, 153, 12, 153, 1338, 9, 153, 3, 153, 1340, 8, 153, 1, 153, 1, 153, 3, 153, 1344, 8, 153, 1, 153, 4, 153, 1347, 8, 153, 11, 153, 12, 153, 1348, 3, 153, 1351, 8, 153, 1, 153, 1, 153, 4, 153, 1355, 8, 153, 11, 153, 12, 153, 1356, 1, 153, 1, 153, 3, 153, 1361, 8, 153, 1, 153, 4, 153, 1364, 8, 153, 11, 153, 12, 153, 1365, 3, 153, 1368, 8, 153, 3, 153, 1370, 8, 153, 1, 154, 1, 154, 5, 154, 1374, 8, 154, 10, 154, 12, 154, 1377, 9, 154, 1, 154, 1, 154, 3, 154, 1381, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 5, 155, 1387, 8, 155, 10, 155, 12, 155, 1390, 9, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 5, 157, 1401, 8, 157, 10, 157, 12, 157, 1404, 9, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 5, 158, 1412, 8, 158, 10, 158, 12, 158, 1415, 9, 158, 1, 158, 1, 158, 1, 158, 3, 158, 1420, 8, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 161, 1, 161, 1, 162, 1, 162, 1, 163, 1, 163, 1, 164, 1, 164, 1, 165, 1, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 168, 1, 168, 1, 169, 1, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 172, 1, 172, 1, 173, 1, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 176, 1, 176, 1, 177, 1, 177, 1, 178, 1, 178, 1, 179, 1, 179, 1, 180, 1, 180, 1, 181, 1, 181, 1, 182, 1, 182, 1, 183, 1, 183, 1, 184, 1, 184, 1, 185, 1, 185, 1, 186, 1, 186, 1, 187, 1, 187, 1, 1413, 0, 188, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 0, 325, 0, 327, 0, 329, 0, 331, 0, 333, 0, 335, 0, 337, 0, 339, 0, 341, 0, 343, 0, 345, 0, 347, 0, 349, 0, 351, 0, 353, 0, 355, 0, 357, 0, 359, 0, 361, 0, 363, 0, 365, 0, 367, 0, 369, 0, 371, 0, 373, 0, 375, 0, 1, 0, 37, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 3, 0, 36, 36, 58, 58, 64, 64, 1, 0, 39, 39, 2, 0, 10, 10, 13, 13, 3, 0, 9, 11, 13, 13, 32, 32, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 1482, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 1, 377, 1, 0, 0, 0, 3, 380, 1, 0, 0, 0, 5, 382, 1, 0, 0, 0, 7, 384, 1, 0, 0, 0, 9, 386, 1, 0, 0, 0, 11, 388, 1, 0, 0, 0, 13, 390, 1, 0, 0, 0, 15, 392, 1, 0, 0, 0, 17, 394, 1, 0, 0, 0, 19, 396, 1, 0, 0, 0, 21, 398, 1, 0, 0, 0, 23, 400, 1, 0, 0, 0, 25, 403, 1, 0, 0, 0, 27, 405, 1, 0, 0, 0, 29, 407, 1, 0, 0, 0, 31, 410, 1, 0, 0, 0, 33, 413, 1, 0, 0, 0, 35, 415, 1, 0, 0, 0, 37, 417, 1, 0, 0, 0, 39, 419, 1, 0, 0, 0, 41, 422, 1, 0, 0, 0, 43, 424, 1, 0, 0, 0, 45, 427, 1, 0, 0, 0, 47, 430, 1, 0, 0, 0, 49, 433, 1, 0, 0, 0, 51, 436, 1, 0, 0, 0, 53, 442, 1, 0, 0, 0, 55, 449, 1, 0, 0, 0, 57, 453, 1, 0, 0, 0, 59, 459, 1, 0, 0, 0, 61, 463, 1, 0, 0, 0, 63, 469, 1, 0, 0, 0, 65, 477, 1, 0, 0, 0, 67, 481, 1, 0, 0, 0, 69, 484, 1, 0, 0, 0, 71, 488, 1, 0, 0, 0, 73, 495, 1, 0, 0, 0, 75, 509, 1, 0, 0, 0, 77, 516, 1, 0, 0, 0, 79, 522, 1, 0, 0, 0, 81, 530, 1, 0, 0, 0, 83, 533, 1, 0, 0, 0, 85, 541, 1, 0, 0, 0, 87, 546, 1, 0, 0, 0, 89, 551, 1, 0, 0, 0, 91, 557, 1, 0, 0, 0, 93, 565, 1, 0, 0, 0, 95, 572, 1, 0, 0, 0, 97, 579, 1, 0, 0, 0, 99, 588, 1, 0, 0, 0, 101, 599, 1, 0, 0, 0, 103, 606, 1, 0, 0, 0, 105, 612, 1, 0, 0, 0, 107, 625, 1, 0, 0, 0, 109, 638, 1, 0, 0, 0, 111, 656, 1, 0, 0, 0, 113, 665, 1, 0, 0, 0, 115, 673, 1, 0, 0, 0, 117, 684, 1, 0, 0, 0, 119, 693, 1, 0, 0, 0, 121, 700, 1, 0, 0, 0, 123, 705, 1, 0, 0, 0, 125, 712, 1, 0, 0, 0, 127, 721, 1, 0, 0, 0, 129, 726, 1, 0, 0, 0, 131, 731, 1, 0, 0, 0, 133, 736, 1, 0, 0, 0, 135, 740, 1, 0, 0, 0, 137, 747, 1, 0, 0, 0, 139, 754, 1, 0, 0, 0, 141, 761, 1, 0, 0, 0, 143, 771, 1, 0, 0, 0, 145, 778, 1, 0, 0, 0, 147, 786, 1, 0, 0, 0, 149, 791, 1, 0, 0, 0, 151, 795, 1, 0, 0, 0, 153, 803, 1, 0, 0, 0, 155, 808, 1, 0, 0, 0, 157, 813, 1, 0, 0, 0, 159, 818, 1, 0, 0, 0, 161, 824, 1, 0, 0, 0, 163, 831, 1, 0, 0, 0, 165, 834, 1, 0, 0, 0, 167, 841, 1, 0, 0, 0, 169, 851, 1, 0, 0, 0, 171, 854, 1, 0, 0, 0, 173, 860, 1, 0, 0, 0, 175, 868, 1, 0, 0, 0, 177, 878, 1, 0, 0, 0, 179, 884, 1, 0, 0, 0, 181, 891, 1, 0, 0, 0, 183, 899, 1, 0, 0, 0, 185, 909, 1, 0, 0, 0, 187, 914, 1, 0, 0, 0, 189, 917, 1, 0, 0, 0, 191, 924, 1, 0, 0, 0, 193, 929, 1, 0, 0, 0, 195, 933, 1, 0, 0, 0, 197, 938, 1, 0, 0, 0, 199, 943, 1, 0, 0, 0, 201, 949, 1, 0, 0, 0, 203, 955, 1, 0, 0, 0, 205, 963, 1, 0, 0, 0, 207, 971, 1, 0, 0, 0, 209, 974, 1, 0, 0, 0, 211, 978, 1, 0, 0, 0, 213, 986, 1, 0, 0, 0, 215, 991, 1, 0, 0, 0, 217, 994, 1, 0, 0, 0, 219, 1001, 1, 0, 0, 0, 221, 1004, 1, 0, 0, 0, 223, 1009, 1, 0, 0, 0, 225, 1012, 1, 0, 0, 0, 227, 1018, 1, 0, 0, 0, 229, 1024, 1, 0, 0, 0, 231, 1029, 1, 0, 0, 0, 233, 1036, 1, 0, 0, 0, 235, 1044, 1, 0, 0, 0, 237, 1050, 1, 0, 0, 0, 239, 1056, 1, 0, 0, 0, 241, 1066, 1, 0, 0, 0, 243, 1077, 1, 0, 0, 0, 245, 1084, 1, 0, 0, 0, 247, 1092, 1, 0, 0, 0, 249, 1100, 1, 0, 0, 0, 251, 1107, 1, 0, 0, 0, 253, 1115, 1, 0, 0, 0, 255, 1124, 1, 0, 0, 0, 257, 1130, 1, 0, 0, 0, 259, 1139, 1, 0, 0, 0, 261, 1143, 1, 0, 0, 0, 263, 1153, 1, 0, 0, 0, 265, 1160, 1, 0, 0, 0, 267, 1164, 1, 0, 0, 0, 269, 1170, 1, 0, 0, 0, 271, 1175, 1, 0, 0, 0, 273, 1185, 1, 0, 0, 0, 275, 1190, 1, 0, 0, 0, 277, 1193, 1, 0, 0, 0, 279, 1205, 1, 0, 0, 0, 281, 1213, 1, 0, 0, 0, 283, 1219, 1, 0, 0, 0, 285, 1226, 1, 0, 0, 0, 287, 1233, 1, 0, 0, 0, 289, 1239, 1, 0, 0, 0, 291, 1246, 1, 0, 0, 0, 293, 1253, 1, 0, 0, 0, 295, 1258, 1, 0, 0, 0, 297, 1266, 1, 0, 0, 0, 299, 1271, 1, 0, 0, 0, 301, 1277, 1, 0, 0, 0, 303, 1282, 1, 0, 0, 0, 305, 1325, 1, 0, 0, 0, 307, 1369, 1, 0, 0, 0, 309, 1380, 1, 0, 0, 0, 311, 1382, 1, 0, 0, 0, 313, 1393, 1, 0, 0, 0, 315, 1396, 1, 0, 0, 0, 317, 1407, 1, 0, 0, 0, 319, 1423, 1, 0, 0, 0, 321, 1427, 1, 0, 0, 0, 323, 1429, 1, 0, 0, 0, 325, 1431, 1, 0, 0, 0, 327, 1433, 1, 0, 0, 0, 329, 1435, 1, 0, 0, 0, 331, 1437, 1, 0, 0, 0, 333, 1439, 1, 0, 0, 0, 335, 1441, 1, 0, 0, 0, 337, 1443, 1, 0, 0, 0, 339, 1445, 1, 0, 0, 0, 341, 1447, 1, 0, 0, 0, 343, 1449, 1, 0, 0, 0, 345, 1451, 1, 0, 0, 0, 347, 1453, 1, 0, 0, 0, 349, 1455, 1, 0, 0, 0, 351, 1457, 1, 0, 0, 0, 353, 1459, 1, 0, 0, 0, 355, 1461, 1, 0, 0, 0, 357, 1463, 1, 0, 0, 0, 359, 1465, 1, 0, 0, 0, 361, 1467, 1, 0, 0, 0, 363, 1469, 1, 0, 0, 0, 365, 1471, 1, 0, 0, 0, 367, 1473, 1, 0, 0, 0, 369, 1475, 1, 0, 0, 0, 371, 1477, 1, 0, 0, 0, 373, 1479, 1, 0, 0, 0, 375, 1481, 1, 0, 0, 0, 377, 378, 5, 58, 0, 0, 378, 379, 5, 58, 0, 0, 379, 2, 1, 0, 0, 0, 380, 381, 5, 59, 0, 0, 381, 4, 1, 0, 0, 0, 382, 383, 5, 46, 0, 0, 383, 6, 1, 0, 0, 0, 384, 385, 5, 40, 0, 0, 385, 8, 1, 0, 0, 0, 386, 387, 5, 41, 0, 0, 387, 10, 1, 0, 0, 0, 388, 389, 5, 44, 0, 0, 389, 12, 1, 0, 0, 0, 390, 391, 5, 61, 0, 0, 391, 14, 1, 0, 0, 0, 392, 393, 5, 42, 0, 0, 393, 16, 1, 0, 0, 0, 394, 395, 5, 43, 0, 0, 395, 18, 1, 0, 0, 0, 396, 397, 5, 45, 0, 0, 397, 20, 1, 0, 0, 0, 398, 399, 5, 126, 0, 0, 399, 22, 1, 0, 0, 0, 400, 401, 5, 124, 0, 0, 401, 402, 5, 124, 0, 0, 402, 24, 1, 0, 0, 0, 403, 404, 5, 47, 0, 0, 404, 26, 1, 0, 0, 0, 405, 406, 5, 37, 0, 0, 406, 28, 1, 0, 0, 0, 407, 408, 5, 60, 0, 0, 408, 409, 5, 60, 0, 0, 409, 30, 1, 0, 0, 0, 410, 411, 5, 62, 0, 0, 411, 412, 5, 62, 0, 0, 412, 32, 1, 0, 0, 0, 413, 414, 5, 38, 0, 0, 414, 34, 1, 0, 0, 0, 415, 416, 5, 124, 0, 0, 416, 36, 1, 0, 0, 0, 417, 418, 5, 60, 0, 0, 418, 38, 1, 0, 0, 0, 419, 420, 5, 60, 0, 0, 420, 421, 5, 61, 0, 0, 421, 40, 1, 0, 0, 0, 422, 423, 5, 62, 0, 0, 423, 42, 1, 0, 0, 0, 424, 425, 5, 62, 0, 0, 425, 426, 5, 61, 0, 0, 426, 44, 1, 0, 0, 0, 427, 428, 5, 61, 0, 0, 428, 429, 5, 61, 0, 0, 429, 46, 1, 0, 0, 0, 430, 431, 5, 33, 0, 0, 431, 432, 5, 61, 0, 0, 432, 48, 1, 0, 0, 0, 433, 434, 5, 60, 0, 0, 434, 435, 5, 62, 0, 0, 435, 50, 1, 0, 0, 0, 436, 437, 3, 325, 162, 0, 437, 438, 3, 327, 163, 0, 438, 439, 3, 353, 176, 0, 439, 440, 3, 359, 179, 0, 440, 441, 3, 363, 181, 0, 441, 52, 1, 0, 0, 0, 442, 443, 3, 325, 162, 0, 443, 444, 3, 329, 164, 0, 444, 445, 3, 363, 181, 0, 445, 446, 3, 341, 170, 0, 446, 447, 3, 353, 176, 0, 447, 448, 3, 351, 175, 0, 448, 54, 1, 0, 0, 0, 449, 450, 3, 325, 162, 0, 450, 451, 3, 331, 165, 0, 451, 452, 3, 331, 165, 0, 452, 56, 1, 0, 0, 0, 453, 454, 3, 325, 162, 0, 454, 455, 3, 335, 167, 0, 455, 456, 3, 363, 181, 0, 456, 457, 3, 333, 166, 0, 457, 458, 3, 359, 179, 0, 458, 58, 1, 0, 0, 0, 459, 460, 3, 325, 162, 0, 460, 461, 3, 347, 173, 0, 461, 462, 3, 347, 173, 0, 462, 60, 1, 0, 0, 0, 463, 464, 3, 325, 162, 0, 464, 465, 3, 347, 173, 0, 465, 466, 3, 363, 181, 0, 466, 467, 3, 333, 166, 0, 467, 468, 3, 359, 179, 0, 468, 62, 1, 0, 0, 0, 469, 470, 3, 325, 162, 0, 470, 471, 3, 351, 175, 0, 471, 472, 3, 325, 162, 0, 472, 473, 3, 347, 173, 0, 473, 474, 3, 373, 186, 0, 474, 475, 3, 375, 187, 0, 475, 476, 3, 333, 166, 0, 476, 64, 1, 0, 0, 0, 477, 478, 3, 325, 162, 0, 478, 479, 3, 351, 175, 0, 479, 480, 3, 331, 165, 0, 480, 66, 1, 0, 0, 0, 481, 482, 3, 325, 162, 0, 482, 483, 3, 361, 180, 0, 483, 68, 1, 0, 0, 0, 484, 485, 3, 325, 162, 0, 485, 486, 3, 361, 180, 0, 486, 487, 3, 329, 164, 0, 487, 70, 1, 0, 0, 0, 488, 489, 3, 325, 162, 0, 489, 490, 3, 363, 181, 0, 490, 491, 3, 363, 181, 0, 491, 492, 3, 325, 162, 0, 492, 493, 3, 329, 164, 0, 493, 494, 3, 339, 169, 0, 494, 72, 1, 0, 0, 0, 495, 496, 3, 325, 162, 0, 496, 497, 3, 365, 182, 0, 497, 498, 3, 363, 181, 0, 498, 499, 3, 353, 176, 0, 499, 500, 3, 341, 170, 0, 500, 501, 3, 351, 175, 0, 501, 502, 3, 329, 164, 0, 502, 503, 3, 359, 179, 0, 503, 504, 3, 333, 166, 0, 504, 505, 3, 349, 174, 0, 505, 506, 3, 333, 166, 0, 506, 507, 3, 351, 175, 0, 507, 508, 3, 363, 181, 0, 508, 74, 1, 0, 0, 0, 509, 510, 3, 327, 163, 0, 510, 511, 3, 333, 166, 0, 511, 512, 3, 335, 167, 0, 512, 513, 3, 353, 176, 0, 513, 514, 3, 359, 179, 0, 514, 515, 3, 333, 166, 0, 515, 76, 1, 0, 0, 0, 516, 517, 3, 327, 163, 0, 517, 518, 3, 333, 166, 0, 518, 519, 3, 337, 168, 0, 519, 520, 3, 341, 170, 0, 520, 521, 3, 351, 175, 0, 521, 78, 1, 0, 0, 0, 522, 523, 3, 327, 163, 0, 523, 524, 3, 333, 166, 0, 524, 525, 3, 363, 181, 0, 525, 526, 3, 369, 184, 0, 526, 527, 3, 333, 166, 0, 527, 528, 3, 333, 166, 0, 528, 529, 3, 351, 175, 0, 529, 80, 1, 0, 0, 0, 530, 531, 3, 327, 163, 0, 531, 532, 3, 373, 186, 0, 532, 82, 1, 0, 0, 0, 533, 534, 3, 329, 164, 0, 534, 535, 3, 325, 162, 0, 535, 536, 3, 361, 180, 0, 536, 537, 3, 329, 164, 0, 537, 538, 3, 325, 162, 0, 538, 539, 3, 331, 165, 0, 539, 540, 3, 333, 166, 0, 540, 84, 1, 0, 0, 0, 541, 542, 3, 329, 164, 0, 542, 543, 3, 325, 162, 0, 543, 544, 3, 361, 180, 0, 544, 545, 3, 333, 166, 0, 545, 86, 1, 0, 0, 0, 546, 547, 3, 329, 164, 0, 547, 548, 3, 325, 162, 0, 548, 549, 3, 361, 180, 0, 549, 550, 3, 363, 181, 0, 550, 88, 1, 0, 0, 0, 551, 552, 3, 329, 164, 0, 552, 553, 3, 339, 169, 0, 553, 554, 3, 333, 166, 0, 554, 555, 3, 329, 164, 0, 555, 556, 3, 345, 172, 0, 556, 90, 1, 0, 0, 0, 557, 558, 3, 329, 164, 0, 558, 559, 3, 353, 176, 0, 559, 560, 3, 347, 173, 0, 560, 561, 3, 347, 173, 0, 561, 562, 3, 325, 162, 0, 562, 563, 3, 363, 181, 0, 563, 564, 3, 333, 166, 0, 564, 92, 1, 0, 0, 0, 565, 566, 3, 329, 164, 0, 566, 567, 3, 353, 176, 0, 567, 568, 3, 347, 173, 0, 568, 569, 3, 365, 182, 0, 569, 570, 3, 349, 174, 0, 570, 571, 3, 351, 175, 0, 571, 94, 1, 0, 0, 0, 572, 573, 3, 329, 164, 0, 573, 574, 3, 353, 176, 0, 574, 575, 3, 349, 174, 0, 575, 576, 3, 349, 174, 0, 576, 577, 3, 341, 170, 0, 577, 578, 3, 363, 181, 0, 578, 96, 1, 0, 0, 0, 579, 580, 3, 329, 164, 0, 580, 581, 3, 353, 176, 0, 581, 582, 3, 351, 175, 0, 582, 583, 3, 335, 167, 0, 583, 584, 3, 347, 173, 0, 584, 585, 3, 341, 170, 0, 585, 586, 3, 329, 164, 0, 586, 587, 3, 363, 181, 0, 587, 98, 1, 0, 0, 0, 588, 589, 3, 329, 164, 0, 589, 590, 3, 353, 176, 0, 590, 591, 3, 351, 175, 0, 591, 592, 3, 361, 180, 0, 592, 593, 3, 363, 181, 0, 593, 594, 3, 359, 179, 0, 594, 595, 3, 325, 162, 0, 595, 596, 3, 341, 170, 0, 596, 597, 3, 351, 175, 0, 597, 598, 3, 363, 181, 0, 598, 100, 1, 0, 0, 0, 599, 600, 3, 329, 164, 0, 600, 601, 3, 359, 179, 0, 601, 602, 3, 333, 166, 0, 602, 603, 3, 325, 162, 0, 603, 604, 3, 363, 181, 0, 604, 605, 3, 333, 166, 0, 605, 102, 1, 0, 0, 0, 606, 607, 3, 329, 164, 0, 607, 608, 3, 359, 179, 0, 608, 609, 3, 353, 176, 0, 609, 610, 3, 361, 180, 0, 610, 611, 3, 361, 180, 0, 611, 104, 1, 0, 0, 0, 612, 613, 3, 329, 164, 0, 613, 614, 3, 365, 182, 0, 614, 615, 3, 359, 179, 0, 615, 616, 3, 359, 179, 0, 616, 617, 3, 333, 166, 0, 617, 618, 3, 351, 175, 0, 618, 619, 3, 363, 181, 0, 619, 620, 5, 95, 0, 0, 620, 621, 3, 331, 165, 0, 621, 622, 3, 325, 162, 0, 622, 623, 3, 363, 181, 0, 623, 624, 3, 333, 166, 0, 624, 106, 1, 0, 0, 0, 625, 626, 3, 329, 164, 0, 626, 627, 3, 365, 182, 0, 627, 628, 3, 359, 179, 0, 628, 629, 3, 359, 179, 0, 629, 630, 3, 333, 166, 0, 630, 631, 3, 351, 175, 0, 631, 632, 3, 363, 181, 0, 632, 633, 5, 95, 0, 0, 633, 634, 3, 363, 181, 0, 634, 635, 3, 341, 170, 0, 635, 636, 3, 349, 174, 0, 636, 637, 3, 333, 166, 0, 637, 108, 1, 0, 0, 0, 638, 639, 3, 329, 164, 0, 639, 640, 3, 365, 182, 0, 640, 641, 3, 359, 179, 0, 641, 642, 3, 359, 179, 0, 642, 643, 3, 333, 166, 0, 643, 644, 3, 351, 175, 0, 644, 645, 3, 363, 181, 0, 645, 646, 5, 95, 0, 0, 646, 647, 3, 363, 181, 0, 647, 648, 3, 341, 170, 0, 648, 649, 3, 349, 174, 0, 649, 650, 3, 333, 166, 0, 650, 651, 3, 361, 180, 0, 651, 652, 3, 363, 181, 0, 652, 653, 3, 325, 162, 0, 653, 654, 3, 349, 174, 0, 654, 655, 3, 355, 177, 0, 655, 110, 1, 0, 0, 0, 656, 657, 3, 331, 165, 0, 657, 658, 3, 325, 162, 0, 658, 659, 3, 363, 181, 0, 659, 660, 3, 325, 162, 0, 660, 661, 3, 327, 163, 0, 661, 662, 3, 325, 162, 0, 662, 663, 3, 361, 180, 0, 663, 664, 3, 333, 166, 0, 664, 112, 1, 0, 0, 0, 665, 666, 3, 331, 165, 0, 666, 667, 3, 333, 166, 0, 667, 668, 3, 335, 167, 0, 668, 669, 3, 325, 162, 0, 669, 670, 3, 365, 182, 0, 670, 671, 3, 347, 173, 0, 671, 672, 3, 363, 181, 0, 672, 114, 1, 0, 0, 0, 673, 674, 3, 331, 165, 0, 674, 675, 3, 333, 166, 0, 675, 676, 3, 335, 167, 0, 676, 677, 3, 333, 166, 0, 677, 678, 3, 359, 179, 0, 678, 679, 3, 359, 179, 0, 679, 680, 3, 325, 162, 0, 680, 681, 3, 327, 163, 0, 681, 682, 3, 347, 173, 0, 682, 683, 3, 333, 166, 0, 683, 116, 1, 0, 0, 0, 684, 685, 3, 331, 165, 0, 685, 686, 3, 333, 166, 0, 686, 687, 3, 335, 167, 0, 687, 688, 3, 333, 166, 0, 688, 689, 3, 359, 179, 0, 689, 690, 3, 359, 179, 0, 690, 691, 3, 333, 166, 0, 691, 692, 3, 331, 165, 0, 692, 118, 1, 0, 0, 0, 693, 694, 3, 331, 165, 0, 694, 695, 3, 333, 166, 0, 695, 696, 3, 347, 173, 0, 696, 697, 3, 333, 166, 0, 697, 698, 3, 363, 181, 0, 698, 699, 3, 333, 166, 0, 699, 120, 1, 0, 0, 0, 700, 701, 3, 331, 165, 0, 701, 702, 3, 333, 166, 0, 702, 703, 3, 361, 180, 0, 703, 704, 3, 329, 164, 0, 704, 122, 1, 0, 0, 0, 705, 706, 3, 331, 165, 0, 706, 707, 3, 333, 166, 0, 707, 708, 3, 363, 181, 0, 708, 709, 3, 325, 162, 0, 709, 710, 3, 329, 164, 0, 710, 711, 3, 339, 169, 0, 711, 124, 1, 0, 0, 0, 712, 713, 3, 331, 165, 0, 713, 714, 3, 341, 170, 0, 714, 715, 3, 361, 180, 0, 715, 716, 3, 363, 181, 0, 716, 717, 3, 341, 170, 0, 717, 718, 3, 351, 175, 0, 718, 719, 3, 329, 164, 0, 719, 720, 3, 363, 181, 0, 720, 126, 1, 0, 0, 0, 721, 722, 3, 331, 165, 0, 722, 723, 3, 359, 179, 0, 723, 724, 3, 353, 176, 0, 724, 725, 3, 355, 177, 0, 725, 128, 1, 0, 0, 0, 726, 727, 3, 333, 166, 0, 727, 728, 3, 325, 162, 0, 728, 729, 3, 329, 164, 0, 729, 730, 3, 339, 169, 0, 730, 130, 1, 0, 0, 0, 731, 732, 3, 333, 166, 0, 732, 733, 3, 347, 173, 0, 733, 734, 3, 361, 180, 0, 734, 735, 3, 333, 166, 0, 735, 132, 1, 0, 0, 0, 736, 737, 3, 333, 166, 0, 737, 738, 3, 351, 175, 0, 738, 739, 3, 331, 165, 0, 739, 134, 1, 0, 0, 0, 740, 741, 3, 333, 166, 0, 741, 742, 3, 351, 175, 0, 742, 743, 3, 325, 162, 0, 743, 744, 3, 327, 163, 0, 744, 745, 3, 347, 173, 0, 745, 746, 3, 333, 166, 0, 746, 136, 1, 0, 0, 0, 747, 748, 3, 333, 166, 0, 748, 749, 3, 361, 180, 0, 749, 750, 3, 329, 164, 0, 750, 751, 3, 325, 162, 0, 751, 752, 3, 355, 177, 0, 752, 753, 3, 333, 166, 0, 753, 138, 1, 0, 0, 0, 754, 755, 3, 333, 166, 0, 755, 756, 3, 371, 185, 0, 756, 757, 3, 329, 164, 0, 757, 758, 3, 333, 166, 0, 758, 759, 3, 355, 177, 0, 759, 760, 3, 363, 181, 0, 760, 140, 1, 0, 0, 0, 761, 762, 3, 333, 166, 0, 762, 763, 3, 371, 185, 0, 763, 764, 3, 329, 164, 0, 764, 765, 3, 347, 173, 0, 765, 766, 3, 365, 182, 0, 766, 767, 3, 361, 180, 0, 767, 768, 3, 341, 170, 0, 768, 769, 3, 367, 183, 0, 769, 770, 3, 333, 166, 0, 770, 142, 1, 0, 0, 0, 771, 772, 3, 333, 166, 0, 772, 773, 3, 371, 185, 0, 773, 774, 3, 341, 170, 0, 774, 775, 3, 361, 180, 0, 775, 776, 3, 363, 181, 0, 776, 777, 3, 361, 180, 0, 777, 144, 1, 0, 0, 0, 778, 779, 3, 333, 166, 0, 779, 780, 3, 371, 185, 0, 780, 781, 3, 355, 177, 0, 781, 782, 3, 347, 173, 0, 782, 783, 3, 325, 162, 0, 783, 784, 3, 341, 170, 0, 784, 785, 3, 351, 175, 0, 785, 146, 1, 0, 0, 0, 786, 787, 3, 335, 167, 0, 787, 788, 3, 325, 162, 0, 788, 789, 3, 341, 170, 0, 789, 790, 3, 347, 173, 0, 790, 148, 1, 0, 0, 0, 791, 792, 3, 335, 167, 0, 792, 793, 3, 353, 176, 0, 793, 794, 3, 359, 179, 0, 794, 150, 1, 0, 0, 0, 795, 796, 3, 335, 167, 0, 796, 797, 3, 353, 176, 0, 797, 798, 3, 359, 179, 0, 798, 799, 3, 333, 166, 0, 799, 800, 3, 341, 170, 0, 800, 801, 3, 337, 168, 0, 801, 802, 3, 351, 175, 0, 802, 152, 1, 0, 0, 0, 803, 804, 3, 335, 167, 0, 804, 805, 3, 359, 179, 0, 805, 806, 3, 353, 176, 0, 806, 807, 3, 349, 174, 0, 807, 154, 1, 0, 0, 0, 808, 809, 3, 335, 167, 0, 809, 810, 3, 365, 182, 0, 810, 811, 3, 347, 173, 0, 811, 812, 3, 347, 173, 0, 812, 156, 1, 0, 0, 0, 813, 814, 3, 337, 168, 0, 814, 815, 3, 347, 173, 0, 815, 816, 3, 353, 176, 0, 816, 817, 3, 327, 163, 0, 817, 158, 1, 0, 0, 0, 818, 819, 3, 337, 168, 0, 819, 820, 3, 359, 179, 0, 820, 821, 3, 353, 176, 0, 821, 822, 3, 365, 182, 0, 822, 823, 3, 355, 177, 0, 823, 160, 1, 0, 0, 0, 824, 825, 3, 339, 169, 0, 825, 826, 3, 325, 162, 0, 826, 827, 3, 367, 183, 0, 827, 828, 3, 341, 170, 0, 828, 829, 3, 351, 175, 0, 829, 830, 3, 337, 168, 0, 830, 162, 1, 0, 0, 0, 831, 832, 3, 341, 170, 0, 832, 833, 3, 335, 167, 0, 833, 164, 1, 0, 0, 0, 834, 835, 3, 341, 170, 0, 835, 836, 3, 337, 168, 0, 836, 837, 3, 351, 175, 0, 837, 838, 3, 353, 176, 0, 838, 839, 3, 359, 179, 0, 839, 840, 3, 333, 166, 0, 840, 166, 1, 0, 0, 0, 841, 842, 3, 341, 170, 0, 842, 843, 3, 349, 174, 0, 843, 844, 3, 349, 174, 0, 844, 845, 3, 333, 166, 0, 845, 846, 3, 331, 165, 0, 846, 847, 3, 341, 170, 0, 847, 848, 3, 325, 162, 0, 848, 849, 3, 363, 181, 0, 849, 850, 3, 333, 166, 0, 850, 168, 1, 0, 0, 0, 851, 852, 3, 341, 170, 0, 852, 853, 3, 351, 175, 0, 853, 170, 1, 0, 0, 0, 854, 855, 3, 341, 170, 0, 855, 856, 3, 351, 175, 0, 856, 857, 3, 331, 165, 0, 857, 858, 3, 333, 166, 0, 858, 859, 3, 371, 185, 0, 859, 172, 1, 0, 0, 0, 860, 861, 3, 341, 170, 0, 861, 862, 3, 351, 175, 0, 862, 863, 3, 331, 165, 0, 863, 864, 3, 333, 166, 0, 864, 865, 3, 371, 185, 0, 865, 866, 3, 333, 166, 0, 866, 867, 3, 331, 165, 0, 867, 174, 1, 0, 0, 0, 868, 869, 3, 341, 170, 0, 869, 870, 3, 351, 175, 0, 870, 871, 3, 341, 170, 0, 871, 872, 3, 363, 181, 0, 872, 873, 3, 341, 170, 0, 873, 874, 3, 325, 162, 0, 874, 875, 3, 347, 173, 0, 875, 876, 3, 347, 173, 0, 876, 877, 3, 373, 186, 0, 877, 176, 1, 0, 0, 0, 878, 879, 3, 341, 170, 0, 879, 880, 3, 351, 175, 0, 880, 881, 3, 351, 175, 0, 881, 882, 3, 333, 166, 0, 882, 883, 3, 359, 179, 0, 883, 178, 1, 0, 0, 0, 884, 885, 3, 341, 170, 0, 885, 886, 3, 351, 175, 0, 886, 887, 3, 361, 180, 0, 887, 888, 3, 333, 166, 0, 888, 889, 3, 359, 179, 0, 889, 890, 3, 363, 181, 0, 890, 180, 1, 0, 0, 0, 891, 892, 3, 341, 170, 0, 892, 893, 3, 351, 175, 0, 893, 894, 3, 361, 180, 0, 894, 895, 3, 363, 181, 0, 895, 896, 3, 333, 166, 0, 896, 897, 3, 325, 162, 0, 897, 898, 3, 331, 165, 0, 898, 182, 1, 0, 0, 0, 899, 900, 3, 341, 170, 0, 900, 901, 3, 351, 175, 0, 901, 902, 3, 363, 181, 0, 902, 903, 3, 333, 166, 0, 903, 904, 3, 359, 179, 0, 904, 905, 3, 361, 180, 0, 905, 906, 3, 333, 166, 0, 906, 907, 3, 329, 164, 0, 907, 908, 3, 363, 181, 0, 908, 184, 1, 0, 0, 0, 909, 910, 3, 341, 170, 0, 910, 911, 3, 351, 175, 0, 911, 912, 3, 363, 181, 0, 912, 913, 3, 353, 176, 0, 913, 186, 1, 0, 0, 0, 914, 915, 3, 341, 170, 0, 915, 916, 3, 361, 180, 0, 916, 188, 1, 0, 0, 0, 917, 918, 3, 341, 170, 0, 918, 919, 3, 361, 180, 0, 919, 920, 3, 351, 175, 0, 920, 921, 3, 365, 182, 0, 921, 922, 3, 347, 173, 0, 922, 923, 3, 347, 173, 0, 923, 190, 1, 0, 0, 0, 924, 925, 3, 343, 171, 0, 925, 926, 3, 353, 176, 0, 926, 927, 3, 341, 170, 0, 927, 928, 3, 351, 175, 0, 928, 192, 1, 0, 0, 0, 929, 930, 3, 345, 172, 0, 930, 931, 3, 333, 166, 0, 931, 932, 3, 373, 186, 0, 932, 194, 1, 0, 0, 0, 933, 934, 3, 347, 173, 0, 934, 935, 3, 333, 166, 0, 935, 936, 3, 335, 167, 0, 936, 937, 3, 363, 181, 0, 937, 196, 1, 0, 0, 0, 938, 939, 3, 347, 173, 0, 939, 940, 3, 341, 170, 0, 940, 941, 3, 345, 172, 0, 941, 942, 3, 333, 166, 0, 942, 198, 1, 0, 0, 0, 943, 944, 3, 347, 173, 0, 944, 945, 3, 341, 170, 0, 945, 946, 3, 349, 174, 0, 946, 947, 3, 341, 170, 0, 947, 948, 3, 363, 181, 0, 948, 200, 1, 0, 0, 0, 949, 950, 3, 349, 174, 0, 950, 951, 3, 325, 162, 0, 951, 952, 3, 363, 181, 0, 952, 953, 3, 329, 164, 0, 953, 954, 3, 339, 169, 0, 954, 202, 1, 0, 0, 0, 955, 956, 3, 351, 175, 0, 956, 957, 3, 325, 162, 0, 957, 958, 3, 363, 181, 0, 958, 959, 3, 365, 182, 0, 959, 960, 3, 359, 179, 0, 960, 961, 3, 325, 162, 0, 961, 962, 3, 347, 173, 0, 962, 204, 1, 0, 0, 0, 963, 964, 3, 351, 175, 0, 964, 965, 3, 333, 166, 0, 965, 966, 3, 371, 185, 0, 966, 967, 3, 363, 181, 0, 967, 968, 3, 367, 183, 0, 968, 969, 3, 325, 162, 0, 969, 970, 3, 347, 173, 0, 970, 206, 1, 0, 0, 0, 971, 972, 3, 351, 175, 0, 972, 973, 3, 353, 176, 0, 973, 208, 1, 0, 0, 0, 974, 975, 3, 351, 175, 0, 975, 976, 3, 353, 176, 0, 976, 977, 3, 363, 181, 0, 977, 210, 1, 0, 0, 0, 978, 979, 3, 351, 175, 0, 979, 980, 3, 353, 176, 0, 980, 981, 3, 363, 181, 0, 981, 982, 3, 351, 175, 0, 982, 983, 3, 365, 182, 0, 983, 984, 3, 347, 173, 0, 984, 985, 3, 347, 173, 0, 985, 212, 1, 0, 0, 0, 986, 987, 3, 351, 175, 0, 987, 988, 3, 365, 182, 0, 988, 989, 3, 347, 173, 0, 989, 990, 3, 347, 173, 0, 990, 214, 1, 0, 0, 0, 991, 992, 3, 353, 176, 0, 992, 993, 3, 335, 167, 0, 993, 216, 1, 0, 0, 0, 994, 995, 3, 353, 176, 0, 995, 996, 3, 335, 167, 0, 996, 997, 3, 335, 167, 0, 997, 998, 3, 361, 180, 0, 998, 999, 3, 333, 166, 0, 999, 1000, 3, 363, 181, 0, 1000, 218, 1, 0, 0, 0, 1001, 1002, 3, 353, 176, 0, 1002, 1003, 3, 351, 175, 0, 1003, 220, 1, 0, 0, 0, 1004, 1005, 3, 353, 176, 0, 1005, 1006, 3, 351, 175, 0, 1006, 1007, 3, 347, 173, 0, 1007, 1008, 3, 373, 186, 0, 1008, 222, 1, 0, 0, 0, 1009, 1010, 3, 353, 176, 0, 1010, 1011, 3, 359, 179, 0, 1011, 224, 1, 0, 0, 0, 1012, 1013, 3, 353, 176, 0, 1013, 1014, 3, 359, 179, 0, 1014, 1015, 3, 331, 165, 0, 1015, 1016, 3, 333, 166, 0, 1016, 1017, 3, 359, 179, 0, 1017, 226, 1, 0, 0, 0, 1018, 1019, 3, 353, 176, 0, 1019, 1020, 3, 365, 182, 0, 1020, 1021, 3, 363, 181, 0, 1021, 1022, 3, 333, 166, 0, 1022, 1023, 3, 359, 179, 0, 1023, 228, 1, 0, 0, 0, 1024, 1025, 3, 355, 177, 0, 1025, 1026, 3, 347, 173, 0, 1026, 1027, 3, 325, 162, 0, 1027, 1028, 3, 351, 175, 0, 1028, 230, 1, 0, 0, 0, 1029, 1030, 3, 355, 177, 0, 1030, 1031, 3, 359, 179, 0, 1031, 1032, 3, 325, 162, 0, 1032, 1033, 3, 337, 168, 0, 1033, 1034, 3, 349, 174, 0, 1034, 1035, 3, 325, 162, 0, 1035, 232, 1, 0, 0, 0, 1036, 1037, 3, 355, 177, 0, 1037, 1038, 3, 359, 179, 0, 1038, 1039, 3, 341, 170, 0, 1039, 1040, 3, 349, 174, 0, 1040, 1041, 3, 325, 162, 0, 1041, 1042, 3, 359, 179, 0, 1042, 1043, 3, 373, 186, 0, 1043, 234, 1, 0, 0, 0, 1044, 1045, 3, 357, 178, 0, 1045, 1046, 3, 365, 182, 0, 1046, 1047, 3, 333, 166, 0, 1047, 1048, 3, 359, 179, 0, 1048, 1049, 3, 373, 186, 0, 1049, 236, 1, 0, 0, 0, 1050, 1051, 3, 359, 179, 0, 1051, 1052, 3, 325, 162, 0, 1052, 1053, 3, 341, 170, 0, 1053, 1054, 3, 361, 180, 0, 1054, 1055, 3, 333, 166, 0, 1055, 238, 1, 0, 0, 0, 1056, 1057, 3, 359, 179, 0, 1057, 1058, 3, 333, 166, 0, 1058, 1059, 3, 329, 164, 0, 1059, 1060, 3, 365, 182, 0, 1060, 1061, 3, 359, 179, 0, 1061, 1062, 3, 361, 180, 0, 1062, 1063, 3, 341, 170, 0, 1063, 1064, 3, 367, 183, 0, 1064, 1065, 3, 333, 166, 0, 1065, 240, 1, 0, 0, 0, 1066, 1067, 3, 359, 179, 0, 1067, 1068, 3, 333, 166, 0, 1068, 1069, 3, 335, 167, 0, 1069, 1070, 3, 333, 166, 0, 1070, 1071, 3, 359, 179, 0, 1071, 1072, 3, 333, 166, 0, 1072, 1073, 3, 351, 175, 0, 1073, 1074, 3, 329, 164, 0, 1074, 1075, 3, 333, 166, 0, 1075, 1076, 3, 361, 180, 0, 1076, 242, 1, 0, 0, 0, 1077, 1078, 3, 359, 179, 0, 1078, 1079, 3, 333, 166, 0, 1079, 1080, 3, 337, 168, 0, 1080, 1081, 3, 333, 166, 0, 1081, 1082, 3, 371, 185, 0, 1082, 1083, 3, 355, 177, 0, 1083, 244, 1, 0, 0, 0, 1084, 1085, 3, 359, 179, 0, 1085, 1086, 3, 333, 166, 0, 1086, 1087, 3, 341, 170, 0, 1087, 1088, 3, 351, 175, 0, 1088, 1089, 3, 331, 165, 0, 1089, 1090, 3, 333, 166, 0, 1090, 1091, 3, 371, 185, 0, 1091, 246, 1, 0, 0, 0, 1092, 1093, 3, 359, 179, 0, 1093, 1094, 3, 333, 166, 0, 1094, 1095, 3, 347, 173, 0, 1095, 1096, 3, 333, 166, 0, 1096, 1097, 3, 325, 162, 0, 1097, 1098, 3, 361, 180, 0, 1098, 1099, 3, 333, 166, 0, 1099, 248, 1, 0, 0, 0, 1100, 1101, 3, 359, 179, 0, 1101, 1102, 3, 333, 166, 0, 1102, 1103, 3, 351, 175, 0, 1103, 1104, 3, 325, 162, 0, 1104, 1105, 3, 349, 174, 0, 1105, 1106, 3, 333, 166, 0, 1106, 250, 1, 0, 0, 0, 1107, 1108, 3, 359, 179, 0, 1108, 1109, 3, 333, 166, 0, 1109, 1110, 3, 355, 177, 0, 1110, 1111, 3, 347, 173, 0, 1111, 1112, 3, 325, 162, 0, 1112, 1113, 3, 329, 164, 0, 1113, 1114, 3, 333, 166, 0, 1114, 252, 1, 0, 0, 0, 1115, 1116, 3, 359, 179, 0, 1116, 1117, 3, 333, 166, 0, 1117, 1118, 3, 361, 180, 0, 1118, 1119, 3, 363, 181, 0, 1119, 1120, 3, 359, 179, 0, 1120, 1121, 3, 341, 170, 0, 1121, 1122, 3, 329, 164, 0, 1122, 1123, 3, 363, 181, 0, 1123, 254, 1, 0, 0, 0, 1124, 1125, 3, 359, 179, 0, 1125, 1126, 3, 341, 170, 0, 1126, 1127, 3, 337, 168, 0, 1127, 1128, 3, 339, 169, 0, 1128, 1129, 3, 363, 181, 0, 1129, 256, 1, 0, 0, 0, 1130, 1131, 3, 359, 179, 0, 1131, 1132, 3, 353, 176, 0, 1132, 1133, 3, 347, 173, 0, 1133, 1134, 3, 347, 173, 0, 1134, 1135, 3, 327, 163, 0, 1135, 1136, 3, 325, 162, 0, 1136, 1137, 3, 329, 164, 0, 1137, 1138, 3, 345, 172, 0, 1138, 258, 1, 0, 0, 0, 1139, 1140, 3, 359, 179, 0, 1140, 1141, 3, 353, 176, 0, 1141, 1142, 3, 369, 184, 0, 1142, 260, 1, 0, 0, 0, 1143, 1144, 3, 361, 180, 0, 1144, 1145, 3, 325, 162, 0, 1145, 1146, 3, 367, 183, 0, 1146, 1147, 3, 333, 166, 0, 1147, 1148, 3, 355, 177, 0, 1148, 1149, 3, 353, 176, 0, 1149, 1150, 3, 341, 170, 0, 1150, 1151, 3, 351, 175, 0, 1151, 1152, 3, 363, 181, 0, 1152, 262, 1, 0, 0, 0, 1153, 1154, 3, 361, 180, 0, 1154, 1155, 3, 333, 166, 0, 1155, 1156, 3, 347, 173, 0, 1156, 1157, 3, 333, 166, 0, 1157, 1158, 3, 329, 164, 0, 1158, 1159, 3, 363, 181, 0, 1159, 264, 1, 0, 0, 0, 1160, 1161, 3, 361, 180, 0, 1161, 1162, 3, 333, 166, 0, 1162, 1163, 3, 363, 181, 0, 1163, 266, 1, 0, 0, 0, 1164, 1165, 3, 363, 181, 0, 1165, 1166, 3, 325, 162, 0, 1166, 1167, 3, 327, 163, 0, 1167, 1168, 3, 347, 173, 0, 1168, 1169, 3, 333, 166, 0, 1169, 268, 1, 0, 0, 0, 1170, 1171, 3, 363, 181, 0, 1171, 1172, 3, 333, 166, 0, 1172, 1173, 3, 349, 174, 0, 1173, 1174, 3, 355, 177, 0, 1174, 270, 1, 0, 0, 0, 1175, 1176, 3, 363, 181, 0, 1176, 1177, 3, 333, 166, 0, 1177, 1178, 3, 349, 174, 0, 1178, 1179, 3, 355, 177, 0, 1179, 1180, 3, 353, 176, 0, 1180, 1181, 3, 359, 179, 0, 1181, 1182, 3, 325, 162, 0, 1182, 1183, 3, 359, 179, 0, 1183, 1184, 3, 373, 186, 0, 1184, 272, 1, 0, 0, 0, 1185, 1186, 3, 363, 181, 0, 1186, 1187, 3, 339, 169, 0, 1187, 1188, 3, 333, 166, 0, 1188, 1189, 3, 351, 175, 0, 1189, 274, 1, 0, 0, 0, 1190, 1191, 3, 363, 181, 0, 1191, 1192, 3, 353, 176, 0, 1192, 276, 1, 0, 0, 0, 1193, 1194, 3, 363, 181, 0, 1194, 1195, 3, 359, 179, 0, 1195, 1196, 3, 325, 162, 0, 1196, 1197, 3, 351, 175, 0, 1197, 1198, 3, 361, 180, 0, 1198, 1199, 3, 325, 162, 0, 1199, 1200, 3, 329, 164, 0, 1200, 1201, 3, 363, 181, 0, 1201, 1202, 3, 341, 170, 0, 1202, 1203, 3, 353, 176, 0, 1203, 1204, 3, 351, 175, 0, 1204, 278, 1, 0, 0, 0, 1205, 1206, 3, 363, 181, 0, 1206, 1207, 3, 359, 179, 0, 1207, 1208, 3, 341, 170, 0, 1208, 1209, 3, 337, 168, 0, 1209, 1210, 3, 337, 168, 0, 1210, 1211, 3, 333, 166, 0, 1211, 1212, 3, 359, 179, 0, 1212, 280, 1, 0, 0, 0, 1213, 1214, 3, 365, 182, 0, 1214, 1215, 3, 351, 175, 0, 1215, 1216, 3, 341, 170, 0, 1216, 1217, 3, 353, 176, 0, 1217, 1218, 3, 351, 175, 0, 1218, 282, 1, 0, 0, 0, 1219, 1220, 3, 365, 182, 0, 1220, 1221, 3, 351, 175, 0, 1221, 1222, 3, 341, 170, 0, 1222, 1223, 3, 357, 178, 0, 1223, 1224, 3, 365, 182, 0, 1224, 1225, 3, 333, 166, 0, 1225, 284, 1, 0, 0, 0, 1226, 1227, 3, 365, 182, 0, 1227, 1228, 3, 355, 177, 0, 1228, 1229, 3, 331, 165, 0, 1229, 1230, 3, 325, 162, 0, 1230, 1231, 3, 363, 181, 0, 1231, 1232, 3, 333, 166, 0, 1232, 286, 1, 0, 0, 0, 1233, 1234, 3, 365, 182, 0, 1234, 1235, 3, 361, 180, 0, 1235, 1236, 3, 341, 170, 0, 1236, 1237, 3, 351, 175, 0, 1237, 1238, 3, 337, 168, 0, 1238, 288, 1, 0, 0, 0, 1239, 1240, 3, 367, 183, 0, 1240, 1241, 3, 325, 162, 0, 1241, 1242, 3, 329, 164, 0, 1242, 1243, 3, 365, 182, 0, 1243, 1244, 3, 365, 182, 0, 1244, 1245, 3, 349, 174, 0, 1245, 290, 1, 0, 0, 0, 1246, 1247, 3, 367, 183, 0, 1247, 1248, 3, 325, 162, 0, 1248, 1249, 3, 347, 173, 0, 1249, 1250, 3, 365, 182, 0, 1250, 1251, 3, 333, 166, 0, 1251, 1252, 3, 361, 180, 0, 1252, 292, 1, 0, 0, 0, 1253, 1254, 3, 367, 183, 0, 1254, 1255, 3, 341, 170, 0, 1255, 1256, 3, 333, 166, 0, 1256, 1257, 3, 369, 184, 0, 1257, 294, 1, 0, 0, 0, 1258, 1259, 3, 367, 183, 0, 1259, 1260, 3, 341, 170, 0, 1260, 1261, 3, 359, 179, 0, 1261, 1262, 3, 363, 181, 0, 1262, 1263, 3, 365, 182, 0, 1263, 1264, 3, 325, 162, 0, 1264, 1265, 3, 347, 173, 0, 1265, 296, 1, 0, 0, 0, 1266, 1267, 3, 369, 184, 0, 1267, 1268, 3, 339, 169, 0, 1268, 1269, 3, 333, 166, 0, 1269, 1270, 3, 351, 175, 0, 1270, 298, 1, 0, 0, 0, 1271, 1272, 3, 369, 184, 0, 1272, 1273, 3, 339, 169, 0, 1273, 1274, 3, 333, 166, 0, 1274, 1275, 3, 359, 179, 0, 1275, 1276, 3, 333, 166, 0, 1276, 300, 1, 0, 0, 0, 1277, 1278, 3, 369, 184, 0, 1278, 1279, 3, 341, 170, 0, 1279, 1280, 3, 363, 181, 0, 1280, 1281, 3, 339, 169, 0, 1281, 302, 1, 0, 0, 0, 1282, 1283, 3, 369, 184, 0, 1283, 1284, 3, 341, 170, 0, 1284, 1285, 3, 363, 181, 0, 1285, 1286, 3, 339, 169, 0, 1286, 1287, 3, 353, 176, 0, 1287, 1288, 3, 365, 182, 0, 1288, 1289, 3, 363, 181, 0, 1289, 304, 1, 0, 0, 0, 1290, 1296, 5, 34, 0, 0, 1291, 1295, 8, 0, 0, 0, 1292, 1293, 5, 34, 0, 0, 1293, 1295, 5, 34, 0, 0, 1294, 1291, 1, 0, 0, 0, 1294, 1292, 1, 0, 0, 0, 1295, 1298, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, 1299, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1299, 1326, 5, 34, 0, 0, 1300, 1306, 5, 96, 0, 0, 1301, 1305, 8, 1, 0, 0, 1302, 1303, 5, 96, 0, 0, 1303, 1305, 5, 96, 0, 0, 1304, 1301, 1, 0, 0, 0, 1304, 1302, 1, 0, 0, 0, 1305, 1308, 1, 0, 0, 0, 1306, 1304, 1, 0, 0, 0, 1306, 1307, 1, 0, 0, 0, 1307, 1309, 1, 0, 0, 0, 1308, 1306, 1, 0, 0, 0, 1309, 1326, 5, 96, 0, 0, 1310, 1314, 5, 91, 0, 0, 1311, 1313, 8, 2, 0, 0, 1312, 1311, 1, 0, 0, 0, 1313, 1316, 1, 0, 0, 0, 1314, 1312, 1, 0, 0, 0, 1314, 1315, 1, 0, 0, 0, 1315, 1317, 1, 0, 0, 0, 1316, 1314, 1, 0, 0, 0, 1317, 1326, 5, 93, 0, 0, 1318, 1322, 7, 3, 0, 0, 1319, 1321, 7, 4, 0, 0, 1320, 1319, 1, 0, 0, 0, 1321, 1324, 1, 0, 0, 0, 1322, 1320, 1, 0, 0, 0, 1322, 1323, 1, 0, 0, 0, 1323, 1326, 1, 0, 0, 0, 1324, 1322, 1, 0, 0, 0, 1325, 1290, 1, 0, 0, 0, 1325, 1300, 1, 0, 0, 0, 1325, 1310, 1, 0, 0, 0, 1325, 1318, 1, 0, 0, 0, 1326, 306, 1, 0, 0, 0, 1327, 1329, 3, 323, 161, 0, 1328, 1327, 1, 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 1328, 1, 0, 0, 0, 1330, 1331, 1, 0, 0, 0, 1331, 1339, 1, 0, 0, 0, 1332, 1336, 5, 46, 0, 0, 1333, 1335, 3, 323, 161, 0, 1334, 1333, 1, 0, 0, 0, 1335, 1338, 1, 0, 0, 0, 1336, 1334, 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1340, 1, 0, 0, 0, 1338, 1336, 1, 0, 0, 0, 1339, 1332, 1, 0, 0, 0, 1339, 1340, 1, 0, 0, 0, 1340, 1350, 1, 0, 0, 0, 1341, 1343, 3, 333, 166, 0, 1342, 1344, 7, 5, 0, 0, 1343, 1342, 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1346, 1, 0, 0, 0, 1345, 1347, 3, 323, 161, 0, 1346, 1345, 1, 0, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, 1346, 1, 0, 0, 0, 1348, 1349, 1, 0, 0, 0, 1349, 1351, 1, 0, 0, 0, 1350, 1341, 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1370, 1, 0, 0, 0, 1352, 1354, 5, 46, 0, 0, 1353, 1355, 3, 323, 161, 0, 1354, 1353, 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1354, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1367, 1, 0, 0, 0, 1358, 1360, 3, 333, 166, 0, 1359, 1361, 7, 5, 0, 0, 1360, 1359, 1, 0, 0, 0, 1360, 1361, 1, 0, 0, 0, 1361, 1363, 1, 0, 0, 0, 1362, 1364, 3, 323, 161, 0, 1363, 1362, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 1363, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1368, 1, 0, 0, 0, 1367, 1358, 1, 0, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1370, 1, 0, 0, 0, 1369, 1328, 1, 0, 0, 0, 1369, 1352, 1, 0, 0, 0, 1370, 308, 1, 0, 0, 0, 1371, 1375, 5, 63, 0, 0, 1372, 1374, 3, 323, 161, 0, 1373, 1372, 1, 0, 0, 0, 1374, 1377, 1, 0, 0, 0, 1375, 1373, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, 1376, 1381, 1, 0, 0, 0, 1377, 1375, 1, 0, 0, 0, 1378, 1379, 7, 6, 0, 0, 1379, 1381, 3, 305, 152, 0, 1380, 1371, 1, 0, 0, 0, 1380, 1378, 1, 0, 0, 0, 1381, 310, 1, 0, 0, 0, 1382, 1388, 5, 39, 0, 0, 1383, 1387, 8, 7, 0, 0, 1384, 1385, 5, 39, 0, 0, 1385, 1387, 5, 39, 0, 0, 1386, 1383, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1390, 1, 0, 0, 0, 1388, 1386, 1, 0, 0, 0, 1388, 1389, 1, 0, 0, 0, 1389, 1391, 1, 0, 0, 0, 1390, 1388, 1, 0, 0, 0, 1391, 1392, 5, 39, 0, 0, 1392, 312, 1, 0, 0, 0, 1393, 1394, 3, 371, 185, 0, 1394, 1395, 3, 311, 155, 0, 1395, 314, 1, 0, 0, 0, 1396, 1397, 5, 45, 0, 0, 1397, 1398, 5, 45, 0, 0, 1398, 1402, 1, 0, 0, 0, 1399, 1401, 8, 8, 0, 0, 1400, 1399, 1, 0, 0, 0, 1401, 1404, 1, 0, 0, 0, 1402, 1400, 1, 0, 0, 0, 1402, 1403, 1, 0, 0, 0, 1403, 1405, 1, 0, 0, 0, 1404, 1402, 1, 0, 0, 0, 1405, 1406, 6, 157, 0, 0, 1406, 316, 1, 0, 0, 0, 1407, 1408, 5, 47, 0, 0, 1408, 1409, 5, 42, 0, 0, 1409, 1413, 1, 0, 0, 0, 1410, 1412, 9, 0, 0, 0, 1411, 1410, 1, 0, 0, 0, 1412, 1415, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1413, 1411, 1, 0, 0, 0, 1414, 1419, 1, 0, 0, 0, 1415, 1413, 1, 0, 0, 0, 1416, 1417, 5, 42, 0, 0, 1417, 1420, 5, 47, 0, 0, 1418, 1420, 5, 0, 0, 1, 1419, 1416, 1, 0, 0, 0, 1419, 1418, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1422, 6, 158, 0, 0, 1422, 318, 1, 0, 0, 0, 1423, 1424, 7, 9, 0, 0, 1424, 1425, 1, 0, 0, 0, 1425, 1426, 6, 159, 0, 0, 1426, 320, 1, 0, 0, 0, 1427, 1428, 9, 0, 0, 0, 1428, 322, 1, 0, 0, 0, 1429, 1430, 7, 10, 0, 0, 1430, 324, 1, 0, 0, 0, 1431, 1432, 7, 11, 0, 0, 1432, 326, 1, 0, 0, 0, 1433, 1434, 7, 12, 0, 0, 1434, 328, 1, 0, 0, 0, 1435, 1436, 7, 13, 0, 0, 1436, 330, 1, 0, 0, 0, 1437, 1438, 7, 14, 0, 0, 1438, 332, 1, 0, 0, 0, 1439, 1440, 7, 15, 0, 0, 1440, 334, 1, 0, 0, 0, 1441, 1442, 7, 16, 0, 0, 1442, 336, 1, 0, 0, 0, 1443, 1444, 7, 17, 0, 0, 1444, 338, 1, 0, 0, 0, 1445, 1446, 7, 18, 0, 0, 1446, 340, 1, 0, 0, 0, 1447, 1448, 7, 19, 0, 0, 1448, 342, 1, 0, 0, 0, 1449, 1450, 7, 20, 0, 0, 1450, 344, 1, 0, 0, 0, 1451, 1452, 7, 21, 0, 0, 1452, 346, 1, 0, 0, 0, 1453, 1454, 7, 22, 0, 0, 1454, 348, 1, 0, 0, 0, 1455, 1456, 7, 23, 0, 0, 1456, 350, 1, 0, 0, 0, 1457, 1458, 7, 24, 0, 0, 1458, 352, 1, 0, 0, 0, 1459, 1460, 7, 25, 0, 0, 1460, 354, 1, 0, 0, 0, 1461, 1462, 7, 26, 0, 0, 1462, 356, 1, 0, 0, 0, 1463, 1464, 7, 27, 0, 0, 1464, 358, 1, 0, 0, 0, 1465, 1466, 7, 28, 0, 0, 1466, 360, 1, 0, 0, 0, 1467, 1468, 7, 29, 0, 0, 1468, 362, 1, 0, 0, 0, 1469, 1470, 7, 30, 0, 0, 1470, 364, 1, 0, 0, 0, 1471, 1472, 7, 31, 0, 0, 1472, 366, 1, 0, 0, 0, 1473, 1474, 7, 32, 0, 0, 1474, 368, 1, 0, 0, 0, 1475, 1476, 7, 33, 0, 0, 1476, 370, 1, 0, 0, 0, 1477, 1478, 7, 34, 0, 0, 1478, 372, 1, 0, 0, 0, 1479, 1480, 7, 35, 0, 0, 1480, 374, 1, 0, 0, 0, 1481, 1482, 7, 36, 0, 0, 1482, 376, 1, 0, 0, 0, 26, 0, 1294, 1296, 1304, 1306, 1314, 1322, 1325, 1330, 1336, 1339, 1343, 1348, 1350, 1356, 1360, 1365, 1367, 1369, 1375, 1380, 1386, 1388, 1402, 1413, 1419, 1, 0, 1, 0] \ No newline at end of file diff --git a/processor/stream_processor/test/parser/SqlLexer.tokens b/processor/stream_processor/test/parser/SqlLexer.tokens new file mode 100644 index 000000000000..70454cda7204 --- /dev/null +++ b/processor/stream_processor/test/parser/SqlLexer.tokens @@ -0,0 +1,186 @@ +T__0=1 +SCOL=2 +DOT=3 +OPEN_PAR=4 +CLOSE_PAR=5 +COMMA=6 +ASSIGN=7 +STAR=8 +PLUS=9 +MINUS=10 +TILDE=11 +PIPE2=12 +DIV=13 +MOD=14 +LT2=15 +GT2=16 +AMP=17 +PIPE=18 +LT=19 +LT_EQ=20 +GT=21 +GT_EQ=22 +EQ=23 +NOT_EQ1=24 +NOT_EQ2=25 +K_ABORT=26 +K_ACTION=27 +K_ADD=28 +K_AFTER=29 +K_ALL=30 +K_ALTER=31 +K_ANALYZE=32 +K_AND=33 +K_AS=34 +K_ASC=35 +K_ATTACH=36 +K_AUTOINCREMENT=37 +K_BEFORE=38 +K_BEGIN=39 +K_BETWEEN=40 +K_BY=41 +K_CASCADE=42 +K_CASE=43 +K_CAST=44 +K_CHECK=45 +K_COLLATE=46 +K_COLUMN=47 +K_COMMIT=48 +K_CONFLICT=49 +K_CONSTRAINT=50 +K_CREATE=51 +K_CROSS=52 +K_CURRENT_DATE=53 +K_CURRENT_TIME=54 +K_CURRENT_TIMESTAMP=55 +K_DATABASE=56 +K_DEFAULT=57 +K_DEFERRABLE=58 +K_DEFERRED=59 +K_DELETE=60 +K_DESC=61 +K_DETACH=62 +K_DISTINCT=63 +K_DROP=64 +K_EACH=65 +K_ELSE=66 +K_END=67 +K_ENABLE=68 +K_ESCAPE=69 +K_EXCEPT=70 +K_EXCLUSIVE=71 +K_EXISTS=72 +K_EXPLAIN=73 +K_FAIL=74 +K_FOR=75 +K_FOREIGN=76 +K_FROM=77 +K_FULL=78 +K_GLOB=79 +K_GROUP=80 +K_HAVING=81 +K_IF=82 +K_IGNORE=83 +K_IMMEDIATE=84 +K_IN=85 +K_INDEX=86 +K_INDEXED=87 +K_INITIALLY=88 +K_INNER=89 +K_INSERT=90 +K_INSTEAD=91 +K_INTERSECT=92 +K_INTO=93 +K_IS=94 +K_ISNULL=95 +K_JOIN=96 +K_KEY=97 +K_LEFT=98 +K_LIKE=99 +K_LIMIT=100 +K_MATCH=101 +K_NATURAL=102 +K_NEXTVAL=103 +K_NO=104 +K_NOT=105 +K_NOTNULL=106 +K_NULL=107 +K_OF=108 +K_OFFSET=109 +K_ON=110 +K_ONLY=111 +K_OR=112 +K_ORDER=113 +K_OUTER=114 +K_PLAN=115 +K_PRAGMA=116 +K_PRIMARY=117 +K_QUERY=118 +K_RAISE=119 +K_RECURSIVE=120 +K_REFERENCES=121 +K_REGEXP=122 +K_REINDEX=123 +K_RELEASE=124 +K_RENAME=125 +K_REPLACE=126 +K_RESTRICT=127 +K_RIGHT=128 +K_ROLLBACK=129 +K_ROW=130 +K_SAVEPOINT=131 +K_SELECT=132 +K_SET=133 +K_TABLE=134 +K_TEMP=135 +K_TEMPORARY=136 +K_THEN=137 +K_TO=138 +K_TRANSACTION=139 +K_TRIGGER=140 +K_UNION=141 +K_UNIQUE=142 +K_UPDATE=143 +K_USING=144 +K_VACUUM=145 +K_VALUES=146 +K_VIEW=147 +K_VIRTUAL=148 +K_WHEN=149 +K_WHERE=150 +K_WITH=151 +K_WITHOUT=152 +IDENTIFIER=153 +NUMERIC_LITERAL=154 +BIND_PARAMETER=155 +STRING_LITERAL=156 +BLOB_LITERAL=157 +SINGLE_LINE_COMMENT=158 +MULTILINE_COMMENT=159 +SPACES=160 +UNEXPECTED_CHAR=161 +'::'=1 +';'=2 +'.'=3 +'('=4 +')'=5 +','=6 +'='=7 +'*'=8 +'+'=9 +'-'=10 +'~'=11 +'||'=12 +'/'=13 +'%'=14 +'<<'=15 +'>>'=16 +'&'=17 +'|'=18 +'<'=19 +'<='=20 +'>'=21 +'>='=22 +'=='=23 +'!='=24 +'<>'=25 diff --git a/processor/stream_processor/test/parser/sql_base_listener.go b/processor/stream_processor/test/parser/sql_base_listener.go new file mode 100644 index 000000000000..e84aee685618 --- /dev/null +++ b/processor/stream_processor/test/parser/sql_base_listener.go @@ -0,0 +1,618 @@ +// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. + +package parser // Sql + +import "github.com/antlr/antlr4/runtime/Go/antlr" + +// BaseSqlListener is a complete listener for a parse tree produced by SqlParser. +type BaseSqlListener struct{} + +var _ SqlListener = &BaseSqlListener{} + +// VisitTerminal is called when a terminal node is visited. +func (s *BaseSqlListener) VisitTerminal(node antlr.TerminalNode) {} + +// VisitErrorNode is called when an error node is visited. +func (s *BaseSqlListener) VisitErrorNode(node antlr.ErrorNode) {} + +// EnterEveryRule is called when any rule is entered. +func (s *BaseSqlListener) EnterEveryRule(ctx antlr.ParserRuleContext) {} + +// ExitEveryRule is called when any rule is exited. +func (s *BaseSqlListener) ExitEveryRule(ctx antlr.ParserRuleContext) {} + +// EnterParse is called when production parse is entered. +func (s *BaseSqlListener) EnterParse(ctx *ParseContext) {} + +// ExitParse is called when production parse is exited. +func (s *BaseSqlListener) ExitParse(ctx *ParseContext) {} + +// EnterError is called when production error is entered. +func (s *BaseSqlListener) EnterError(ctx *ErrorContext) {} + +// ExitError is called when production error is exited. +func (s *BaseSqlListener) ExitError(ctx *ErrorContext) {} + +// EnterSql_stmt_list is called when production sql_stmt_list is entered. +func (s *BaseSqlListener) EnterSql_stmt_list(ctx *Sql_stmt_listContext) {} + +// ExitSql_stmt_list is called when production sql_stmt_list is exited. +func (s *BaseSqlListener) ExitSql_stmt_list(ctx *Sql_stmt_listContext) {} + +// EnterSql_stmt is called when production sql_stmt is entered. +func (s *BaseSqlListener) EnterSql_stmt(ctx *Sql_stmtContext) {} + +// ExitSql_stmt is called when production sql_stmt is exited. +func (s *BaseSqlListener) ExitSql_stmt(ctx *Sql_stmtContext) {} + +// EnterAlter_table_stmt is called when production alter_table_stmt is entered. +func (s *BaseSqlListener) EnterAlter_table_stmt(ctx *Alter_table_stmtContext) {} + +// ExitAlter_table_stmt is called when production alter_table_stmt is exited. +func (s *BaseSqlListener) ExitAlter_table_stmt(ctx *Alter_table_stmtContext) {} + +// EnterAlter_table_add_constraint is called when production alter_table_add_constraint is entered. +func (s *BaseSqlListener) EnterAlter_table_add_constraint(ctx *Alter_table_add_constraintContext) {} + +// ExitAlter_table_add_constraint is called when production alter_table_add_constraint is exited. +func (s *BaseSqlListener) ExitAlter_table_add_constraint(ctx *Alter_table_add_constraintContext) {} + +// EnterAlter_table_add is called when production alter_table_add is entered. +func (s *BaseSqlListener) EnterAlter_table_add(ctx *Alter_table_addContext) {} + +// ExitAlter_table_add is called when production alter_table_add is exited. +func (s *BaseSqlListener) ExitAlter_table_add(ctx *Alter_table_addContext) {} + +// EnterAnalyze_stmt is called when production analyze_stmt is entered. +func (s *BaseSqlListener) EnterAnalyze_stmt(ctx *Analyze_stmtContext) {} + +// ExitAnalyze_stmt is called when production analyze_stmt is exited. +func (s *BaseSqlListener) ExitAnalyze_stmt(ctx *Analyze_stmtContext) {} + +// EnterAttach_stmt is called when production attach_stmt is entered. +func (s *BaseSqlListener) EnterAttach_stmt(ctx *Attach_stmtContext) {} + +// ExitAttach_stmt is called when production attach_stmt is exited. +func (s *BaseSqlListener) ExitAttach_stmt(ctx *Attach_stmtContext) {} + +// EnterBegin_stmt is called when production begin_stmt is entered. +func (s *BaseSqlListener) EnterBegin_stmt(ctx *Begin_stmtContext) {} + +// ExitBegin_stmt is called when production begin_stmt is exited. +func (s *BaseSqlListener) ExitBegin_stmt(ctx *Begin_stmtContext) {} + +// EnterCommit_stmt is called when production commit_stmt is entered. +func (s *BaseSqlListener) EnterCommit_stmt(ctx *Commit_stmtContext) {} + +// ExitCommit_stmt is called when production commit_stmt is exited. +func (s *BaseSqlListener) ExitCommit_stmt(ctx *Commit_stmtContext) {} + +// EnterCompound_select_stmt is called when production compound_select_stmt is entered. +func (s *BaseSqlListener) EnterCompound_select_stmt(ctx *Compound_select_stmtContext) {} + +// ExitCompound_select_stmt is called when production compound_select_stmt is exited. +func (s *BaseSqlListener) ExitCompound_select_stmt(ctx *Compound_select_stmtContext) {} + +// EnterCreate_index_stmt is called when production create_index_stmt is entered. +func (s *BaseSqlListener) EnterCreate_index_stmt(ctx *Create_index_stmtContext) {} + +// ExitCreate_index_stmt is called when production create_index_stmt is exited. +func (s *BaseSqlListener) ExitCreate_index_stmt(ctx *Create_index_stmtContext) {} + +// EnterCreate_table_stmt is called when production create_table_stmt is entered. +func (s *BaseSqlListener) EnterCreate_table_stmt(ctx *Create_table_stmtContext) {} + +// ExitCreate_table_stmt is called when production create_table_stmt is exited. +func (s *BaseSqlListener) ExitCreate_table_stmt(ctx *Create_table_stmtContext) {} + +// EnterCreate_trigger_stmt is called when production create_trigger_stmt is entered. +func (s *BaseSqlListener) EnterCreate_trigger_stmt(ctx *Create_trigger_stmtContext) {} + +// ExitCreate_trigger_stmt is called when production create_trigger_stmt is exited. +func (s *BaseSqlListener) ExitCreate_trigger_stmt(ctx *Create_trigger_stmtContext) {} + +// EnterCreate_view_stmt is called when production create_view_stmt is entered. +func (s *BaseSqlListener) EnterCreate_view_stmt(ctx *Create_view_stmtContext) {} + +// ExitCreate_view_stmt is called when production create_view_stmt is exited. +func (s *BaseSqlListener) ExitCreate_view_stmt(ctx *Create_view_stmtContext) {} + +// EnterCreate_virtual_table_stmt is called when production create_virtual_table_stmt is entered. +func (s *BaseSqlListener) EnterCreate_virtual_table_stmt(ctx *Create_virtual_table_stmtContext) {} + +// ExitCreate_virtual_table_stmt is called when production create_virtual_table_stmt is exited. +func (s *BaseSqlListener) ExitCreate_virtual_table_stmt(ctx *Create_virtual_table_stmtContext) {} + +// EnterDelete_stmt is called when production delete_stmt is entered. +func (s *BaseSqlListener) EnterDelete_stmt(ctx *Delete_stmtContext) {} + +// ExitDelete_stmt is called when production delete_stmt is exited. +func (s *BaseSqlListener) ExitDelete_stmt(ctx *Delete_stmtContext) {} + +// EnterDelete_stmt_limited is called when production delete_stmt_limited is entered. +func (s *BaseSqlListener) EnterDelete_stmt_limited(ctx *Delete_stmt_limitedContext) {} + +// ExitDelete_stmt_limited is called when production delete_stmt_limited is exited. +func (s *BaseSqlListener) ExitDelete_stmt_limited(ctx *Delete_stmt_limitedContext) {} + +// EnterDetach_stmt is called when production detach_stmt is entered. +func (s *BaseSqlListener) EnterDetach_stmt(ctx *Detach_stmtContext) {} + +// ExitDetach_stmt is called when production detach_stmt is exited. +func (s *BaseSqlListener) ExitDetach_stmt(ctx *Detach_stmtContext) {} + +// EnterDrop_index_stmt is called when production drop_index_stmt is entered. +func (s *BaseSqlListener) EnterDrop_index_stmt(ctx *Drop_index_stmtContext) {} + +// ExitDrop_index_stmt is called when production drop_index_stmt is exited. +func (s *BaseSqlListener) ExitDrop_index_stmt(ctx *Drop_index_stmtContext) {} + +// EnterDrop_table_stmt is called when production drop_table_stmt is entered. +func (s *BaseSqlListener) EnterDrop_table_stmt(ctx *Drop_table_stmtContext) {} + +// ExitDrop_table_stmt is called when production drop_table_stmt is exited. +func (s *BaseSqlListener) ExitDrop_table_stmt(ctx *Drop_table_stmtContext) {} + +// EnterDrop_trigger_stmt is called when production drop_trigger_stmt is entered. +func (s *BaseSqlListener) EnterDrop_trigger_stmt(ctx *Drop_trigger_stmtContext) {} + +// ExitDrop_trigger_stmt is called when production drop_trigger_stmt is exited. +func (s *BaseSqlListener) ExitDrop_trigger_stmt(ctx *Drop_trigger_stmtContext) {} + +// EnterDrop_view_stmt is called when production drop_view_stmt is entered. +func (s *BaseSqlListener) EnterDrop_view_stmt(ctx *Drop_view_stmtContext) {} + +// ExitDrop_view_stmt is called when production drop_view_stmt is exited. +func (s *BaseSqlListener) ExitDrop_view_stmt(ctx *Drop_view_stmtContext) {} + +// EnterFactored_select_stmt is called when production factored_select_stmt is entered. +func (s *BaseSqlListener) EnterFactored_select_stmt(ctx *Factored_select_stmtContext) {} + +// ExitFactored_select_stmt is called when production factored_select_stmt is exited. +func (s *BaseSqlListener) ExitFactored_select_stmt(ctx *Factored_select_stmtContext) {} + +// EnterInsert_stmt is called when production insert_stmt is entered. +func (s *BaseSqlListener) EnterInsert_stmt(ctx *Insert_stmtContext) {} + +// ExitInsert_stmt is called when production insert_stmt is exited. +func (s *BaseSqlListener) ExitInsert_stmt(ctx *Insert_stmtContext) {} + +// EnterPragma_stmt is called when production pragma_stmt is entered. +func (s *BaseSqlListener) EnterPragma_stmt(ctx *Pragma_stmtContext) {} + +// ExitPragma_stmt is called when production pragma_stmt is exited. +func (s *BaseSqlListener) ExitPragma_stmt(ctx *Pragma_stmtContext) {} + +// EnterReindex_stmt is called when production reindex_stmt is entered. +func (s *BaseSqlListener) EnterReindex_stmt(ctx *Reindex_stmtContext) {} + +// ExitReindex_stmt is called when production reindex_stmt is exited. +func (s *BaseSqlListener) ExitReindex_stmt(ctx *Reindex_stmtContext) {} + +// EnterRelease_stmt is called when production release_stmt is entered. +func (s *BaseSqlListener) EnterRelease_stmt(ctx *Release_stmtContext) {} + +// ExitRelease_stmt is called when production release_stmt is exited. +func (s *BaseSqlListener) ExitRelease_stmt(ctx *Release_stmtContext) {} + +// EnterRollback_stmt is called when production rollback_stmt is entered. +func (s *BaseSqlListener) EnterRollback_stmt(ctx *Rollback_stmtContext) {} + +// ExitRollback_stmt is called when production rollback_stmt is exited. +func (s *BaseSqlListener) ExitRollback_stmt(ctx *Rollback_stmtContext) {} + +// EnterSavepoint_stmt is called when production savepoint_stmt is entered. +func (s *BaseSqlListener) EnterSavepoint_stmt(ctx *Savepoint_stmtContext) {} + +// ExitSavepoint_stmt is called when production savepoint_stmt is exited. +func (s *BaseSqlListener) ExitSavepoint_stmt(ctx *Savepoint_stmtContext) {} + +// EnterSimple_select_stmt is called when production simple_select_stmt is entered. +func (s *BaseSqlListener) EnterSimple_select_stmt(ctx *Simple_select_stmtContext) {} + +// ExitSimple_select_stmt is called when production simple_select_stmt is exited. +func (s *BaseSqlListener) ExitSimple_select_stmt(ctx *Simple_select_stmtContext) {} + +// EnterSelect_stmt is called when production select_stmt is entered. +func (s *BaseSqlListener) EnterSelect_stmt(ctx *Select_stmtContext) {} + +// ExitSelect_stmt is called when production select_stmt is exited. +func (s *BaseSqlListener) ExitSelect_stmt(ctx *Select_stmtContext) {} + +// EnterSelect_or_values is called when production select_or_values is entered. +func (s *BaseSqlListener) EnterSelect_or_values(ctx *Select_or_valuesContext) {} + +// ExitSelect_or_values is called when production select_or_values is exited. +func (s *BaseSqlListener) ExitSelect_or_values(ctx *Select_or_valuesContext) {} + +// EnterUpdate_stmt is called when production update_stmt is entered. +func (s *BaseSqlListener) EnterUpdate_stmt(ctx *Update_stmtContext) {} + +// ExitUpdate_stmt is called when production update_stmt is exited. +func (s *BaseSqlListener) ExitUpdate_stmt(ctx *Update_stmtContext) {} + +// EnterUpdate_stmt_limited is called when production update_stmt_limited is entered. +func (s *BaseSqlListener) EnterUpdate_stmt_limited(ctx *Update_stmt_limitedContext) {} + +// ExitUpdate_stmt_limited is called when production update_stmt_limited is exited. +func (s *BaseSqlListener) ExitUpdate_stmt_limited(ctx *Update_stmt_limitedContext) {} + +// EnterVacuum_stmt is called when production vacuum_stmt is entered. +func (s *BaseSqlListener) EnterVacuum_stmt(ctx *Vacuum_stmtContext) {} + +// ExitVacuum_stmt is called when production vacuum_stmt is exited. +func (s *BaseSqlListener) ExitVacuum_stmt(ctx *Vacuum_stmtContext) {} + +// EnterColumn_def is called when production column_def is entered. +func (s *BaseSqlListener) EnterColumn_def(ctx *Column_defContext) {} + +// ExitColumn_def is called when production column_def is exited. +func (s *BaseSqlListener) ExitColumn_def(ctx *Column_defContext) {} + +// EnterType_name is called when production type_name is entered. +func (s *BaseSqlListener) EnterType_name(ctx *Type_nameContext) {} + +// ExitType_name is called when production type_name is exited. +func (s *BaseSqlListener) ExitType_name(ctx *Type_nameContext) {} + +// EnterColumn_constraint is called when production column_constraint is entered. +func (s *BaseSqlListener) EnterColumn_constraint(ctx *Column_constraintContext) {} + +// ExitColumn_constraint is called when production column_constraint is exited. +func (s *BaseSqlListener) ExitColumn_constraint(ctx *Column_constraintContext) {} + +// EnterColumn_constraint_primary_key is called when production column_constraint_primary_key is entered. +func (s *BaseSqlListener) EnterColumn_constraint_primary_key(ctx *Column_constraint_primary_keyContext) { +} + +// ExitColumn_constraint_primary_key is called when production column_constraint_primary_key is exited. +func (s *BaseSqlListener) ExitColumn_constraint_primary_key(ctx *Column_constraint_primary_keyContext) { +} + +// EnterColumn_constraint_foreign_key is called when production column_constraint_foreign_key is entered. +func (s *BaseSqlListener) EnterColumn_constraint_foreign_key(ctx *Column_constraint_foreign_keyContext) { +} + +// ExitColumn_constraint_foreign_key is called when production column_constraint_foreign_key is exited. +func (s *BaseSqlListener) ExitColumn_constraint_foreign_key(ctx *Column_constraint_foreign_keyContext) { +} + +// EnterColumn_constraint_not_null is called when production column_constraint_not_null is entered. +func (s *BaseSqlListener) EnterColumn_constraint_not_null(ctx *Column_constraint_not_nullContext) {} + +// ExitColumn_constraint_not_null is called when production column_constraint_not_null is exited. +func (s *BaseSqlListener) ExitColumn_constraint_not_null(ctx *Column_constraint_not_nullContext) {} + +// EnterColumn_constraint_null is called when production column_constraint_null is entered. +func (s *BaseSqlListener) EnterColumn_constraint_null(ctx *Column_constraint_nullContext) {} + +// ExitColumn_constraint_null is called when production column_constraint_null is exited. +func (s *BaseSqlListener) ExitColumn_constraint_null(ctx *Column_constraint_nullContext) {} + +// EnterColumn_default is called when production column_default is entered. +func (s *BaseSqlListener) EnterColumn_default(ctx *Column_defaultContext) {} + +// ExitColumn_default is called when production column_default is exited. +func (s *BaseSqlListener) ExitColumn_default(ctx *Column_defaultContext) {} + +// EnterColumn_default_value is called when production column_default_value is entered. +func (s *BaseSqlListener) EnterColumn_default_value(ctx *Column_default_valueContext) {} + +// ExitColumn_default_value is called when production column_default_value is exited. +func (s *BaseSqlListener) ExitColumn_default_value(ctx *Column_default_valueContext) {} + +// EnterConflict_clause is called when production conflict_clause is entered. +func (s *BaseSqlListener) EnterConflict_clause(ctx *Conflict_clauseContext) {} + +// ExitConflict_clause is called when production conflict_clause is exited. +func (s *BaseSqlListener) ExitConflict_clause(ctx *Conflict_clauseContext) {} + +// EnterExpr is called when production expr is entered. +func (s *BaseSqlListener) EnterExpr(ctx *ExprContext) {} + +// ExitExpr is called when production expr is exited. +func (s *BaseSqlListener) ExitExpr(ctx *ExprContext) {} + +// EnterForeign_key_clause is called when production foreign_key_clause is entered. +func (s *BaseSqlListener) EnterForeign_key_clause(ctx *Foreign_key_clauseContext) {} + +// ExitForeign_key_clause is called when production foreign_key_clause is exited. +func (s *BaseSqlListener) ExitForeign_key_clause(ctx *Foreign_key_clauseContext) {} + +// EnterFk_target_column_name is called when production fk_target_column_name is entered. +func (s *BaseSqlListener) EnterFk_target_column_name(ctx *Fk_target_column_nameContext) {} + +// ExitFk_target_column_name is called when production fk_target_column_name is exited. +func (s *BaseSqlListener) ExitFk_target_column_name(ctx *Fk_target_column_nameContext) {} + +// EnterRaise_function is called when production raise_function is entered. +func (s *BaseSqlListener) EnterRaise_function(ctx *Raise_functionContext) {} + +// ExitRaise_function is called when production raise_function is exited. +func (s *BaseSqlListener) ExitRaise_function(ctx *Raise_functionContext) {} + +// EnterIndexed_column is called when production indexed_column is entered. +func (s *BaseSqlListener) EnterIndexed_column(ctx *Indexed_columnContext) {} + +// ExitIndexed_column is called when production indexed_column is exited. +func (s *BaseSqlListener) ExitIndexed_column(ctx *Indexed_columnContext) {} + +// EnterTable_constraint is called when production table_constraint is entered. +func (s *BaseSqlListener) EnterTable_constraint(ctx *Table_constraintContext) {} + +// ExitTable_constraint is called when production table_constraint is exited. +func (s *BaseSqlListener) ExitTable_constraint(ctx *Table_constraintContext) {} + +// EnterTable_constraint_primary_key is called when production table_constraint_primary_key is entered. +func (s *BaseSqlListener) EnterTable_constraint_primary_key(ctx *Table_constraint_primary_keyContext) { +} + +// ExitTable_constraint_primary_key is called when production table_constraint_primary_key is exited. +func (s *BaseSqlListener) ExitTable_constraint_primary_key(ctx *Table_constraint_primary_keyContext) { +} + +// EnterTable_constraint_foreign_key is called when production table_constraint_foreign_key is entered. +func (s *BaseSqlListener) EnterTable_constraint_foreign_key(ctx *Table_constraint_foreign_keyContext) { +} + +// ExitTable_constraint_foreign_key is called when production table_constraint_foreign_key is exited. +func (s *BaseSqlListener) ExitTable_constraint_foreign_key(ctx *Table_constraint_foreign_keyContext) { +} + +// EnterTable_constraint_unique is called when production table_constraint_unique is entered. +func (s *BaseSqlListener) EnterTable_constraint_unique(ctx *Table_constraint_uniqueContext) {} + +// ExitTable_constraint_unique is called when production table_constraint_unique is exited. +func (s *BaseSqlListener) ExitTable_constraint_unique(ctx *Table_constraint_uniqueContext) {} + +// EnterTable_constraint_key is called when production table_constraint_key is entered. +func (s *BaseSqlListener) EnterTable_constraint_key(ctx *Table_constraint_keyContext) {} + +// ExitTable_constraint_key is called when production table_constraint_key is exited. +func (s *BaseSqlListener) ExitTable_constraint_key(ctx *Table_constraint_keyContext) {} + +// EnterFk_origin_column_name is called when production fk_origin_column_name is entered. +func (s *BaseSqlListener) EnterFk_origin_column_name(ctx *Fk_origin_column_nameContext) {} + +// ExitFk_origin_column_name is called when production fk_origin_column_name is exited. +func (s *BaseSqlListener) ExitFk_origin_column_name(ctx *Fk_origin_column_nameContext) {} + +// EnterWith_clause is called when production with_clause is entered. +func (s *BaseSqlListener) EnterWith_clause(ctx *With_clauseContext) {} + +// ExitWith_clause is called when production with_clause is exited. +func (s *BaseSqlListener) ExitWith_clause(ctx *With_clauseContext) {} + +// EnterQualified_table_name is called when production qualified_table_name is entered. +func (s *BaseSqlListener) EnterQualified_table_name(ctx *Qualified_table_nameContext) {} + +// ExitQualified_table_name is called when production qualified_table_name is exited. +func (s *BaseSqlListener) ExitQualified_table_name(ctx *Qualified_table_nameContext) {} + +// EnterOrdering_term is called when production ordering_term is entered. +func (s *BaseSqlListener) EnterOrdering_term(ctx *Ordering_termContext) {} + +// ExitOrdering_term is called when production ordering_term is exited. +func (s *BaseSqlListener) ExitOrdering_term(ctx *Ordering_termContext) {} + +// EnterPragma_value is called when production pragma_value is entered. +func (s *BaseSqlListener) EnterPragma_value(ctx *Pragma_valueContext) {} + +// ExitPragma_value is called when production pragma_value is exited. +func (s *BaseSqlListener) ExitPragma_value(ctx *Pragma_valueContext) {} + +// EnterCommon_table_expression is called when production common_table_expression is entered. +func (s *BaseSqlListener) EnterCommon_table_expression(ctx *Common_table_expressionContext) {} + +// ExitCommon_table_expression is called when production common_table_expression is exited. +func (s *BaseSqlListener) ExitCommon_table_expression(ctx *Common_table_expressionContext) {} + +// EnterResult_column is called when production result_column is entered. +func (s *BaseSqlListener) EnterResult_column(ctx *Result_columnContext) {} + +// ExitResult_column is called when production result_column is exited. +func (s *BaseSqlListener) ExitResult_column(ctx *Result_columnContext) {} + +// EnterTable_or_subquery is called when production table_or_subquery is entered. +func (s *BaseSqlListener) EnterTable_or_subquery(ctx *Table_or_subqueryContext) {} + +// ExitTable_or_subquery is called when production table_or_subquery is exited. +func (s *BaseSqlListener) ExitTable_or_subquery(ctx *Table_or_subqueryContext) {} + +// EnterJoin_clause is called when production join_clause is entered. +func (s *BaseSqlListener) EnterJoin_clause(ctx *Join_clauseContext) {} + +// ExitJoin_clause is called when production join_clause is exited. +func (s *BaseSqlListener) ExitJoin_clause(ctx *Join_clauseContext) {} + +// EnterJoin_operator is called when production join_operator is entered. +func (s *BaseSqlListener) EnterJoin_operator(ctx *Join_operatorContext) {} + +// ExitJoin_operator is called when production join_operator is exited. +func (s *BaseSqlListener) ExitJoin_operator(ctx *Join_operatorContext) {} + +// EnterJoin_constraint is called when production join_constraint is entered. +func (s *BaseSqlListener) EnterJoin_constraint(ctx *Join_constraintContext) {} + +// ExitJoin_constraint is called when production join_constraint is exited. +func (s *BaseSqlListener) ExitJoin_constraint(ctx *Join_constraintContext) {} + +// EnterSelect_core is called when production select_core is entered. +func (s *BaseSqlListener) EnterSelect_core(ctx *Select_coreContext) {} + +// ExitSelect_core is called when production select_core is exited. +func (s *BaseSqlListener) ExitSelect_core(ctx *Select_coreContext) {} + +// EnterCompound_operator is called when production compound_operator is entered. +func (s *BaseSqlListener) EnterCompound_operator(ctx *Compound_operatorContext) {} + +// ExitCompound_operator is called when production compound_operator is exited. +func (s *BaseSqlListener) ExitCompound_operator(ctx *Compound_operatorContext) {} + +// EnterCte_table_name is called when production cte_table_name is entered. +func (s *BaseSqlListener) EnterCte_table_name(ctx *Cte_table_nameContext) {} + +// ExitCte_table_name is called when production cte_table_name is exited. +func (s *BaseSqlListener) ExitCte_table_name(ctx *Cte_table_nameContext) {} + +// EnterSigned_number is called when production signed_number is entered. +func (s *BaseSqlListener) EnterSigned_number(ctx *Signed_numberContext) {} + +// ExitSigned_number is called when production signed_number is exited. +func (s *BaseSqlListener) ExitSigned_number(ctx *Signed_numberContext) {} + +// EnterLiteral_value is called when production literal_value is entered. +func (s *BaseSqlListener) EnterLiteral_value(ctx *Literal_valueContext) {} + +// ExitLiteral_value is called when production literal_value is exited. +func (s *BaseSqlListener) ExitLiteral_value(ctx *Literal_valueContext) {} + +// EnterUnary_operator is called when production unary_operator is entered. +func (s *BaseSqlListener) EnterUnary_operator(ctx *Unary_operatorContext) {} + +// ExitUnary_operator is called when production unary_operator is exited. +func (s *BaseSqlListener) ExitUnary_operator(ctx *Unary_operatorContext) {} + +// EnterError_message is called when production error_message is entered. +func (s *BaseSqlListener) EnterError_message(ctx *Error_messageContext) {} + +// ExitError_message is called when production error_message is exited. +func (s *BaseSqlListener) ExitError_message(ctx *Error_messageContext) {} + +// EnterModule_argument is called when production module_argument is entered. +func (s *BaseSqlListener) EnterModule_argument(ctx *Module_argumentContext) {} + +// ExitModule_argument is called when production module_argument is exited. +func (s *BaseSqlListener) ExitModule_argument(ctx *Module_argumentContext) {} + +// EnterColumn_alias is called when production column_alias is entered. +func (s *BaseSqlListener) EnterColumn_alias(ctx *Column_aliasContext) {} + +// ExitColumn_alias is called when production column_alias is exited. +func (s *BaseSqlListener) ExitColumn_alias(ctx *Column_aliasContext) {} + +// EnterKeyword is called when production keyword is entered. +func (s *BaseSqlListener) EnterKeyword(ctx *KeywordContext) {} + +// ExitKeyword is called when production keyword is exited. +func (s *BaseSqlListener) ExitKeyword(ctx *KeywordContext) {} + +// EnterUnknown is called when production unknown is entered. +func (s *BaseSqlListener) EnterUnknown(ctx *UnknownContext) {} + +// ExitUnknown is called when production unknown is exited. +func (s *BaseSqlListener) ExitUnknown(ctx *UnknownContext) {} + +// EnterName is called when production name is entered. +func (s *BaseSqlListener) EnterName(ctx *NameContext) {} + +// ExitName is called when production name is exited. +func (s *BaseSqlListener) ExitName(ctx *NameContext) {} + +// EnterFunction_name is called when production function_name is entered. +func (s *BaseSqlListener) EnterFunction_name(ctx *Function_nameContext) {} + +// ExitFunction_name is called when production function_name is exited. +func (s *BaseSqlListener) ExitFunction_name(ctx *Function_nameContext) {} + +// EnterDatabase_name is called when production database_name is entered. +func (s *BaseSqlListener) EnterDatabase_name(ctx *Database_nameContext) {} + +// ExitDatabase_name is called when production database_name is exited. +func (s *BaseSqlListener) ExitDatabase_name(ctx *Database_nameContext) {} + +// EnterSource_table_name is called when production source_table_name is entered. +func (s *BaseSqlListener) EnterSource_table_name(ctx *Source_table_nameContext) {} + +// ExitSource_table_name is called when production source_table_name is exited. +func (s *BaseSqlListener) ExitSource_table_name(ctx *Source_table_nameContext) {} + +// EnterTable_name is called when production table_name is entered. +func (s *BaseSqlListener) EnterTable_name(ctx *Table_nameContext) {} + +// ExitTable_name is called when production table_name is exited. +func (s *BaseSqlListener) ExitTable_name(ctx *Table_nameContext) {} + +// EnterTable_or_index_name is called when production table_or_index_name is entered. +func (s *BaseSqlListener) EnterTable_or_index_name(ctx *Table_or_index_nameContext) {} + +// ExitTable_or_index_name is called when production table_or_index_name is exited. +func (s *BaseSqlListener) ExitTable_or_index_name(ctx *Table_or_index_nameContext) {} + +// EnterNew_table_name is called when production new_table_name is entered. +func (s *BaseSqlListener) EnterNew_table_name(ctx *New_table_nameContext) {} + +// ExitNew_table_name is called when production new_table_name is exited. +func (s *BaseSqlListener) ExitNew_table_name(ctx *New_table_nameContext) {} + +// EnterColumn_name is called when production column_name is entered. +func (s *BaseSqlListener) EnterColumn_name(ctx *Column_nameContext) {} + +// ExitColumn_name is called when production column_name is exited. +func (s *BaseSqlListener) ExitColumn_name(ctx *Column_nameContext) {} + +// EnterCollation_name is called when production collation_name is entered. +func (s *BaseSqlListener) EnterCollation_name(ctx *Collation_nameContext) {} + +// ExitCollation_name is called when production collation_name is exited. +func (s *BaseSqlListener) ExitCollation_name(ctx *Collation_nameContext) {} + +// EnterForeign_table is called when production foreign_table is entered. +func (s *BaseSqlListener) EnterForeign_table(ctx *Foreign_tableContext) {} + +// ExitForeign_table is called when production foreign_table is exited. +func (s *BaseSqlListener) ExitForeign_table(ctx *Foreign_tableContext) {} + +// EnterIndex_name is called when production index_name is entered. +func (s *BaseSqlListener) EnterIndex_name(ctx *Index_nameContext) {} + +// ExitIndex_name is called when production index_name is exited. +func (s *BaseSqlListener) ExitIndex_name(ctx *Index_nameContext) {} + +// EnterTrigger_name is called when production trigger_name is entered. +func (s *BaseSqlListener) EnterTrigger_name(ctx *Trigger_nameContext) {} + +// ExitTrigger_name is called when production trigger_name is exited. +func (s *BaseSqlListener) ExitTrigger_name(ctx *Trigger_nameContext) {} + +// EnterView_name is called when production view_name is entered. +func (s *BaseSqlListener) EnterView_name(ctx *View_nameContext) {} + +// ExitView_name is called when production view_name is exited. +func (s *BaseSqlListener) ExitView_name(ctx *View_nameContext) {} + +// EnterModule_name is called when production module_name is entered. +func (s *BaseSqlListener) EnterModule_name(ctx *Module_nameContext) {} + +// ExitModule_name is called when production module_name is exited. +func (s *BaseSqlListener) ExitModule_name(ctx *Module_nameContext) {} + +// EnterPragma_name is called when production pragma_name is entered. +func (s *BaseSqlListener) EnterPragma_name(ctx *Pragma_nameContext) {} + +// ExitPragma_name is called when production pragma_name is exited. +func (s *BaseSqlListener) ExitPragma_name(ctx *Pragma_nameContext) {} + +// EnterSavepoint_name is called when production savepoint_name is entered. +func (s *BaseSqlListener) EnterSavepoint_name(ctx *Savepoint_nameContext) {} + +// ExitSavepoint_name is called when production savepoint_name is exited. +func (s *BaseSqlListener) ExitSavepoint_name(ctx *Savepoint_nameContext) {} + +// EnterTable_alias is called when production table_alias is entered. +func (s *BaseSqlListener) EnterTable_alias(ctx *Table_aliasContext) {} + +// ExitTable_alias is called when production table_alias is exited. +func (s *BaseSqlListener) ExitTable_alias(ctx *Table_aliasContext) {} + +// EnterTransaction_name is called when production transaction_name is entered. +func (s *BaseSqlListener) EnterTransaction_name(ctx *Transaction_nameContext) {} + +// ExitTransaction_name is called when production transaction_name is exited. +func (s *BaseSqlListener) ExitTransaction_name(ctx *Transaction_nameContext) {} + +// EnterAny_name is called when production any_name is entered. +func (s *BaseSqlListener) EnterAny_name(ctx *Any_nameContext) {} + +// ExitAny_name is called when production any_name is exited. +func (s *BaseSqlListener) ExitAny_name(ctx *Any_nameContext) {} diff --git a/processor/stream_processor/test/parser/sql_lexer.go b/processor/stream_processor/test/parser/sql_lexer.go new file mode 100644 index 000000000000..f48831c84578 --- /dev/null +++ b/processor/stream_processor/test/parser/sql_lexer.go @@ -0,0 +1,1002 @@ +// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. + +package parser + +import ( + "fmt" + "sync" + "unicode" + + "github.com/antlr/antlr4/runtime/Go/antlr" +) + +// Suppress unused import error +var _ = fmt.Printf +var _ = sync.Once{} +var _ = unicode.IsLetter + +type SqlLexer struct { + *antlr.BaseLexer + channelNames []string + modeNames []string + // TODO: EOF string +} + +var sqllexerLexerStaticData struct { + once sync.Once + serializedATN []int32 + channelNames []string + modeNames []string + literalNames []string + symbolicNames []string + ruleNames []string + predictionContextCache *antlr.PredictionContextCache + atn *antlr.ATN + decisionToDFA []*antlr.DFA +} + +func sqllexerLexerInit() { + staticData := &sqllexerLexerStaticData + staticData.channelNames = []string{ + "DEFAULT_TOKEN_CHANNEL", "HIDDEN", + } + staticData.modeNames = []string{ + "DEFAULT_MODE", + } + staticData.literalNames = []string{ + "", "'::'", "';'", "'.'", "'('", "')'", "','", "'='", "'*'", "'+'", + "'-'", "'~'", "'||'", "'/'", "'%'", "'<<'", "'>>'", "'&'", "'|'", "'<'", + "'<='", "'>'", "'>='", "'=='", "'!='", "'<>'", + } + staticData.symbolicNames = []string{ + "", "", "SCOL", "DOT", "OPEN_PAR", "CLOSE_PAR", "COMMA", "ASSIGN", "STAR", + "PLUS", "MINUS", "TILDE", "PIPE2", "DIV", "MOD", "LT2", "GT2", "AMP", + "PIPE", "LT", "LT_EQ", "GT", "GT_EQ", "EQ", "NOT_EQ1", "NOT_EQ2", "K_ABORT", + "K_ACTION", "K_ADD", "K_AFTER", "K_ALL", "K_ALTER", "K_ANALYZE", "K_AND", + "K_AS", "K_ASC", "K_ATTACH", "K_AUTOINCREMENT", "K_BEFORE", "K_BEGIN", + "K_BETWEEN", "K_BY", "K_CASCADE", "K_CASE", "K_CAST", "K_CHECK", "K_COLLATE", + "K_COLUMN", "K_COMMIT", "K_CONFLICT", "K_CONSTRAINT", "K_CREATE", "K_CROSS", + "K_CURRENT_DATE", "K_CURRENT_TIME", "K_CURRENT_TIMESTAMP", "K_DATABASE", + "K_DEFAULT", "K_DEFERRABLE", "K_DEFERRED", "K_DELETE", "K_DESC", "K_DETACH", + "K_DISTINCT", "K_DROP", "K_EACH", "K_ELSE", "K_END", "K_ENABLE", "K_ESCAPE", + "K_EXCEPT", "K_EXCLUSIVE", "K_EXISTS", "K_EXPLAIN", "K_FAIL", "K_FOR", + "K_FOREIGN", "K_FROM", "K_FULL", "K_GLOB", "K_GROUP", "K_HAVING", "K_IF", + "K_IGNORE", "K_IMMEDIATE", "K_IN", "K_INDEX", "K_INDEXED", "K_INITIALLY", + "K_INNER", "K_INSERT", "K_INSTEAD", "K_INTERSECT", "K_INTO", "K_IS", + "K_ISNULL", "K_JOIN", "K_KEY", "K_LEFT", "K_LIKE", "K_LIMIT", "K_MATCH", + "K_NATURAL", "K_NEXTVAL", "K_NO", "K_NOT", "K_NOTNULL", "K_NULL", "K_OF", + "K_OFFSET", "K_ON", "K_ONLY", "K_OR", "K_ORDER", "K_OUTER", "K_PLAN", + "K_PRAGMA", "K_PRIMARY", "K_QUERY", "K_RAISE", "K_RECURSIVE", "K_REFERENCES", + "K_REGEXP", "K_REINDEX", "K_RELEASE", "K_RENAME", "K_REPLACE", "K_RESTRICT", + "K_RIGHT", "K_ROLLBACK", "K_ROW", "K_SAVEPOINT", "K_SELECT", "K_SET", + "K_TABLE", "K_TEMP", "K_TEMPORARY", "K_THEN", "K_TO", "K_TRANSACTION", + "K_TRIGGER", "K_UNION", "K_UNIQUE", "K_UPDATE", "K_USING", "K_VACUUM", + "K_VALUES", "K_VIEW", "K_VIRTUAL", "K_WHEN", "K_WHERE", "K_WITH", "K_WITHOUT", + "IDENTIFIER", "NUMERIC_LITERAL", "BIND_PARAMETER", "STRING_LITERAL", + "BLOB_LITERAL", "SINGLE_LINE_COMMENT", "MULTILINE_COMMENT", "SPACES", + "UNEXPECTED_CHAR", + } + staticData.ruleNames = []string{ + "T__0", "SCOL", "DOT", "OPEN_PAR", "CLOSE_PAR", "COMMA", "ASSIGN", "STAR", + "PLUS", "MINUS", "TILDE", "PIPE2", "DIV", "MOD", "LT2", "GT2", "AMP", + "PIPE", "LT", "LT_EQ", "GT", "GT_EQ", "EQ", "NOT_EQ1", "NOT_EQ2", "K_ABORT", + "K_ACTION", "K_ADD", "K_AFTER", "K_ALL", "K_ALTER", "K_ANALYZE", "K_AND", + "K_AS", "K_ASC", "K_ATTACH", "K_AUTOINCREMENT", "K_BEFORE", "K_BEGIN", + "K_BETWEEN", "K_BY", "K_CASCADE", "K_CASE", "K_CAST", "K_CHECK", "K_COLLATE", + "K_COLUMN", "K_COMMIT", "K_CONFLICT", "K_CONSTRAINT", "K_CREATE", "K_CROSS", + "K_CURRENT_DATE", "K_CURRENT_TIME", "K_CURRENT_TIMESTAMP", "K_DATABASE", + "K_DEFAULT", "K_DEFERRABLE", "K_DEFERRED", "K_DELETE", "K_DESC", "K_DETACH", + "K_DISTINCT", "K_DROP", "K_EACH", "K_ELSE", "K_END", "K_ENABLE", "K_ESCAPE", + "K_EXCEPT", "K_EXCLUSIVE", "K_EXISTS", "K_EXPLAIN", "K_FAIL", "K_FOR", + "K_FOREIGN", "K_FROM", "K_FULL", "K_GLOB", "K_GROUP", "K_HAVING", "K_IF", + "K_IGNORE", "K_IMMEDIATE", "K_IN", "K_INDEX", "K_INDEXED", "K_INITIALLY", + "K_INNER", "K_INSERT", "K_INSTEAD", "K_INTERSECT", "K_INTO", "K_IS", + "K_ISNULL", "K_JOIN", "K_KEY", "K_LEFT", "K_LIKE", "K_LIMIT", "K_MATCH", + "K_NATURAL", "K_NEXTVAL", "K_NO", "K_NOT", "K_NOTNULL", "K_NULL", "K_OF", + "K_OFFSET", "K_ON", "K_ONLY", "K_OR", "K_ORDER", "K_OUTER", "K_PLAN", + "K_PRAGMA", "K_PRIMARY", "K_QUERY", "K_RAISE", "K_RECURSIVE", "K_REFERENCES", + "K_REGEXP", "K_REINDEX", "K_RELEASE", "K_RENAME", "K_REPLACE", "K_RESTRICT", + "K_RIGHT", "K_ROLLBACK", "K_ROW", "K_SAVEPOINT", "K_SELECT", "K_SET", + "K_TABLE", "K_TEMP", "K_TEMPORARY", "K_THEN", "K_TO", "K_TRANSACTION", + "K_TRIGGER", "K_UNION", "K_UNIQUE", "K_UPDATE", "K_USING", "K_VACUUM", + "K_VALUES", "K_VIEW", "K_VIRTUAL", "K_WHEN", "K_WHERE", "K_WITH", "K_WITHOUT", + "IDENTIFIER", "NUMERIC_LITERAL", "BIND_PARAMETER", "STRING_LITERAL", + "BLOB_LITERAL", "SINGLE_LINE_COMMENT", "MULTILINE_COMMENT", "SPACES", + "UNEXPECTED_CHAR", "DIGIT", "A", "B", "C", "D", "E", "F", "G", "H", + "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", + "W", "X", "Y", "Z", + } + staticData.predictionContextCache = antlr.NewPredictionContextCache() + staticData.serializedATN = []int32{ + 4, 0, 161, 1483, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, + 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, + 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, + 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, + 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, + 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, + 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, + 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, + 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, + 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, + 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, + 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, + 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, + 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, + 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, + 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, + 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, + 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, + 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, + 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, + 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, + 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, + 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, + 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, + 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, + 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, + 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, + 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, + 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, + 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, + 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, + 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, + 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, + 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, + 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, + 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, + 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, + 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, + 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 1, 0, 1, 0, 1, 0, 1, 1, + 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, + 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, + 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, + 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, + 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, + 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, + 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, + 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, + 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, + 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, + 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, + 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, + 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, + 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, + 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, + 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, + 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, + 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, + 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, + 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, + 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, + 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, + 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, + 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, + 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, + 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, + 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, + 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, + 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, + 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, + 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, + 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, + 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, + 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, + 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, + 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, + 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, + 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, + 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, + 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, + 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, + 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, + 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, + 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, + 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 85, 1, + 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, + 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, + 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, + 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, + 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, + 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, + 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, + 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, + 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, + 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, + 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, + 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, + 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, + 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 108, + 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, + 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, + 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, + 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, + 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, + 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, + 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, + 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, + 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, + 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, + 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, + 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, + 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, + 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, + 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, + 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, + 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, + 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, + 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, + 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, + 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, + 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, + 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, + 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, + 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, + 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, + 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, + 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, + 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, + 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, + 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, + 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, + 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, + 1, 152, 1, 152, 5, 152, 1295, 8, 152, 10, 152, 12, 152, 1298, 9, 152, 1, + 152, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1305, 8, 152, 10, 152, 12, + 152, 1308, 9, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1313, 8, 152, 10, 152, + 12, 152, 1316, 9, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1321, 8, 152, 10, + 152, 12, 152, 1324, 9, 152, 3, 152, 1326, 8, 152, 1, 153, 4, 153, 1329, + 8, 153, 11, 153, 12, 153, 1330, 1, 153, 1, 153, 5, 153, 1335, 8, 153, 10, + 153, 12, 153, 1338, 9, 153, 3, 153, 1340, 8, 153, 1, 153, 1, 153, 3, 153, + 1344, 8, 153, 1, 153, 4, 153, 1347, 8, 153, 11, 153, 12, 153, 1348, 3, + 153, 1351, 8, 153, 1, 153, 1, 153, 4, 153, 1355, 8, 153, 11, 153, 12, 153, + 1356, 1, 153, 1, 153, 3, 153, 1361, 8, 153, 1, 153, 4, 153, 1364, 8, 153, + 11, 153, 12, 153, 1365, 3, 153, 1368, 8, 153, 3, 153, 1370, 8, 153, 1, + 154, 1, 154, 5, 154, 1374, 8, 154, 10, 154, 12, 154, 1377, 9, 154, 1, 154, + 1, 154, 3, 154, 1381, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 5, 155, 1387, + 8, 155, 10, 155, 12, 155, 1390, 9, 155, 1, 155, 1, 155, 1, 156, 1, 156, + 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 5, 157, 1401, 8, 157, 10, 157, + 12, 157, 1404, 9, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, + 5, 158, 1412, 8, 158, 10, 158, 12, 158, 1415, 9, 158, 1, 158, 1, 158, 1, + 158, 3, 158, 1420, 8, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, + 1, 160, 1, 160, 1, 161, 1, 161, 1, 162, 1, 162, 1, 163, 1, 163, 1, 164, + 1, 164, 1, 165, 1, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 168, 1, 168, + 1, 169, 1, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 172, 1, 172, 1, 173, + 1, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 176, 1, 176, 1, 177, 1, 177, + 1, 178, 1, 178, 1, 179, 1, 179, 1, 180, 1, 180, 1, 181, 1, 181, 1, 182, + 1, 182, 1, 183, 1, 183, 1, 184, 1, 184, 1, 185, 1, 185, 1, 186, 1, 186, + 1, 187, 1, 187, 1, 1413, 0, 188, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, + 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, + 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, + 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, + 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, + 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, + 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, + 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, + 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, + 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, + 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, + 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, + 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, + 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, + 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, + 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, + 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, + 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, + 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, + 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, + 321, 161, 323, 0, 325, 0, 327, 0, 329, 0, 331, 0, 333, 0, 335, 0, 337, + 0, 339, 0, 341, 0, 343, 0, 345, 0, 347, 0, 349, 0, 351, 0, 353, 0, 355, + 0, 357, 0, 359, 0, 361, 0, 363, 0, 365, 0, 367, 0, 369, 0, 371, 0, 373, + 0, 375, 0, 1, 0, 37, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, + 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, + 45, 45, 3, 0, 36, 36, 58, 58, 64, 64, 1, 0, 39, 39, 2, 0, 10, 10, 13, 13, + 3, 0, 9, 11, 13, 13, 32, 32, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, + 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, + 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, + 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, + 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, + 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, + 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, + 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, + 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, + 90, 122, 122, 1482, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, + 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, + 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, + 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, + 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, + 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, + 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, + 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, + 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, + 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, + 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, + 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, + 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, + 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, + 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, + 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, + 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, + 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, + 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, + 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, + 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, + 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, + 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, + 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, + 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, + 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, + 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, + 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, + 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, + 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, + 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, + 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, + 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, + 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, + 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, + 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, + 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, + 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, + 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, + 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, + 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, + 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, + 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, + 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, + 0, 0, 0, 1, 377, 1, 0, 0, 0, 3, 380, 1, 0, 0, 0, 5, 382, 1, 0, 0, 0, 7, + 384, 1, 0, 0, 0, 9, 386, 1, 0, 0, 0, 11, 388, 1, 0, 0, 0, 13, 390, 1, 0, + 0, 0, 15, 392, 1, 0, 0, 0, 17, 394, 1, 0, 0, 0, 19, 396, 1, 0, 0, 0, 21, + 398, 1, 0, 0, 0, 23, 400, 1, 0, 0, 0, 25, 403, 1, 0, 0, 0, 27, 405, 1, + 0, 0, 0, 29, 407, 1, 0, 0, 0, 31, 410, 1, 0, 0, 0, 33, 413, 1, 0, 0, 0, + 35, 415, 1, 0, 0, 0, 37, 417, 1, 0, 0, 0, 39, 419, 1, 0, 0, 0, 41, 422, + 1, 0, 0, 0, 43, 424, 1, 0, 0, 0, 45, 427, 1, 0, 0, 0, 47, 430, 1, 0, 0, + 0, 49, 433, 1, 0, 0, 0, 51, 436, 1, 0, 0, 0, 53, 442, 1, 0, 0, 0, 55, 449, + 1, 0, 0, 0, 57, 453, 1, 0, 0, 0, 59, 459, 1, 0, 0, 0, 61, 463, 1, 0, 0, + 0, 63, 469, 1, 0, 0, 0, 65, 477, 1, 0, 0, 0, 67, 481, 1, 0, 0, 0, 69, 484, + 1, 0, 0, 0, 71, 488, 1, 0, 0, 0, 73, 495, 1, 0, 0, 0, 75, 509, 1, 0, 0, + 0, 77, 516, 1, 0, 0, 0, 79, 522, 1, 0, 0, 0, 81, 530, 1, 0, 0, 0, 83, 533, + 1, 0, 0, 0, 85, 541, 1, 0, 0, 0, 87, 546, 1, 0, 0, 0, 89, 551, 1, 0, 0, + 0, 91, 557, 1, 0, 0, 0, 93, 565, 1, 0, 0, 0, 95, 572, 1, 0, 0, 0, 97, 579, + 1, 0, 0, 0, 99, 588, 1, 0, 0, 0, 101, 599, 1, 0, 0, 0, 103, 606, 1, 0, + 0, 0, 105, 612, 1, 0, 0, 0, 107, 625, 1, 0, 0, 0, 109, 638, 1, 0, 0, 0, + 111, 656, 1, 0, 0, 0, 113, 665, 1, 0, 0, 0, 115, 673, 1, 0, 0, 0, 117, + 684, 1, 0, 0, 0, 119, 693, 1, 0, 0, 0, 121, 700, 1, 0, 0, 0, 123, 705, + 1, 0, 0, 0, 125, 712, 1, 0, 0, 0, 127, 721, 1, 0, 0, 0, 129, 726, 1, 0, + 0, 0, 131, 731, 1, 0, 0, 0, 133, 736, 1, 0, 0, 0, 135, 740, 1, 0, 0, 0, + 137, 747, 1, 0, 0, 0, 139, 754, 1, 0, 0, 0, 141, 761, 1, 0, 0, 0, 143, + 771, 1, 0, 0, 0, 145, 778, 1, 0, 0, 0, 147, 786, 1, 0, 0, 0, 149, 791, + 1, 0, 0, 0, 151, 795, 1, 0, 0, 0, 153, 803, 1, 0, 0, 0, 155, 808, 1, 0, + 0, 0, 157, 813, 1, 0, 0, 0, 159, 818, 1, 0, 0, 0, 161, 824, 1, 0, 0, 0, + 163, 831, 1, 0, 0, 0, 165, 834, 1, 0, 0, 0, 167, 841, 1, 0, 0, 0, 169, + 851, 1, 0, 0, 0, 171, 854, 1, 0, 0, 0, 173, 860, 1, 0, 0, 0, 175, 868, + 1, 0, 0, 0, 177, 878, 1, 0, 0, 0, 179, 884, 1, 0, 0, 0, 181, 891, 1, 0, + 0, 0, 183, 899, 1, 0, 0, 0, 185, 909, 1, 0, 0, 0, 187, 914, 1, 0, 0, 0, + 189, 917, 1, 0, 0, 0, 191, 924, 1, 0, 0, 0, 193, 929, 1, 0, 0, 0, 195, + 933, 1, 0, 0, 0, 197, 938, 1, 0, 0, 0, 199, 943, 1, 0, 0, 0, 201, 949, + 1, 0, 0, 0, 203, 955, 1, 0, 0, 0, 205, 963, 1, 0, 0, 0, 207, 971, 1, 0, + 0, 0, 209, 974, 1, 0, 0, 0, 211, 978, 1, 0, 0, 0, 213, 986, 1, 0, 0, 0, + 215, 991, 1, 0, 0, 0, 217, 994, 1, 0, 0, 0, 219, 1001, 1, 0, 0, 0, 221, + 1004, 1, 0, 0, 0, 223, 1009, 1, 0, 0, 0, 225, 1012, 1, 0, 0, 0, 227, 1018, + 1, 0, 0, 0, 229, 1024, 1, 0, 0, 0, 231, 1029, 1, 0, 0, 0, 233, 1036, 1, + 0, 0, 0, 235, 1044, 1, 0, 0, 0, 237, 1050, 1, 0, 0, 0, 239, 1056, 1, 0, + 0, 0, 241, 1066, 1, 0, 0, 0, 243, 1077, 1, 0, 0, 0, 245, 1084, 1, 0, 0, + 0, 247, 1092, 1, 0, 0, 0, 249, 1100, 1, 0, 0, 0, 251, 1107, 1, 0, 0, 0, + 253, 1115, 1, 0, 0, 0, 255, 1124, 1, 0, 0, 0, 257, 1130, 1, 0, 0, 0, 259, + 1139, 1, 0, 0, 0, 261, 1143, 1, 0, 0, 0, 263, 1153, 1, 0, 0, 0, 265, 1160, + 1, 0, 0, 0, 267, 1164, 1, 0, 0, 0, 269, 1170, 1, 0, 0, 0, 271, 1175, 1, + 0, 0, 0, 273, 1185, 1, 0, 0, 0, 275, 1190, 1, 0, 0, 0, 277, 1193, 1, 0, + 0, 0, 279, 1205, 1, 0, 0, 0, 281, 1213, 1, 0, 0, 0, 283, 1219, 1, 0, 0, + 0, 285, 1226, 1, 0, 0, 0, 287, 1233, 1, 0, 0, 0, 289, 1239, 1, 0, 0, 0, + 291, 1246, 1, 0, 0, 0, 293, 1253, 1, 0, 0, 0, 295, 1258, 1, 0, 0, 0, 297, + 1266, 1, 0, 0, 0, 299, 1271, 1, 0, 0, 0, 301, 1277, 1, 0, 0, 0, 303, 1282, + 1, 0, 0, 0, 305, 1325, 1, 0, 0, 0, 307, 1369, 1, 0, 0, 0, 309, 1380, 1, + 0, 0, 0, 311, 1382, 1, 0, 0, 0, 313, 1393, 1, 0, 0, 0, 315, 1396, 1, 0, + 0, 0, 317, 1407, 1, 0, 0, 0, 319, 1423, 1, 0, 0, 0, 321, 1427, 1, 0, 0, + 0, 323, 1429, 1, 0, 0, 0, 325, 1431, 1, 0, 0, 0, 327, 1433, 1, 0, 0, 0, + 329, 1435, 1, 0, 0, 0, 331, 1437, 1, 0, 0, 0, 333, 1439, 1, 0, 0, 0, 335, + 1441, 1, 0, 0, 0, 337, 1443, 1, 0, 0, 0, 339, 1445, 1, 0, 0, 0, 341, 1447, + 1, 0, 0, 0, 343, 1449, 1, 0, 0, 0, 345, 1451, 1, 0, 0, 0, 347, 1453, 1, + 0, 0, 0, 349, 1455, 1, 0, 0, 0, 351, 1457, 1, 0, 0, 0, 353, 1459, 1, 0, + 0, 0, 355, 1461, 1, 0, 0, 0, 357, 1463, 1, 0, 0, 0, 359, 1465, 1, 0, 0, + 0, 361, 1467, 1, 0, 0, 0, 363, 1469, 1, 0, 0, 0, 365, 1471, 1, 0, 0, 0, + 367, 1473, 1, 0, 0, 0, 369, 1475, 1, 0, 0, 0, 371, 1477, 1, 0, 0, 0, 373, + 1479, 1, 0, 0, 0, 375, 1481, 1, 0, 0, 0, 377, 378, 5, 58, 0, 0, 378, 379, + 5, 58, 0, 0, 379, 2, 1, 0, 0, 0, 380, 381, 5, 59, 0, 0, 381, 4, 1, 0, 0, + 0, 382, 383, 5, 46, 0, 0, 383, 6, 1, 0, 0, 0, 384, 385, 5, 40, 0, 0, 385, + 8, 1, 0, 0, 0, 386, 387, 5, 41, 0, 0, 387, 10, 1, 0, 0, 0, 388, 389, 5, + 44, 0, 0, 389, 12, 1, 0, 0, 0, 390, 391, 5, 61, 0, 0, 391, 14, 1, 0, 0, + 0, 392, 393, 5, 42, 0, 0, 393, 16, 1, 0, 0, 0, 394, 395, 5, 43, 0, 0, 395, + 18, 1, 0, 0, 0, 396, 397, 5, 45, 0, 0, 397, 20, 1, 0, 0, 0, 398, 399, 5, + 126, 0, 0, 399, 22, 1, 0, 0, 0, 400, 401, 5, 124, 0, 0, 401, 402, 5, 124, + 0, 0, 402, 24, 1, 0, 0, 0, 403, 404, 5, 47, 0, 0, 404, 26, 1, 0, 0, 0, + 405, 406, 5, 37, 0, 0, 406, 28, 1, 0, 0, 0, 407, 408, 5, 60, 0, 0, 408, + 409, 5, 60, 0, 0, 409, 30, 1, 0, 0, 0, 410, 411, 5, 62, 0, 0, 411, 412, + 5, 62, 0, 0, 412, 32, 1, 0, 0, 0, 413, 414, 5, 38, 0, 0, 414, 34, 1, 0, + 0, 0, 415, 416, 5, 124, 0, 0, 416, 36, 1, 0, 0, 0, 417, 418, 5, 60, 0, + 0, 418, 38, 1, 0, 0, 0, 419, 420, 5, 60, 0, 0, 420, 421, 5, 61, 0, 0, 421, + 40, 1, 0, 0, 0, 422, 423, 5, 62, 0, 0, 423, 42, 1, 0, 0, 0, 424, 425, 5, + 62, 0, 0, 425, 426, 5, 61, 0, 0, 426, 44, 1, 0, 0, 0, 427, 428, 5, 61, + 0, 0, 428, 429, 5, 61, 0, 0, 429, 46, 1, 0, 0, 0, 430, 431, 5, 33, 0, 0, + 431, 432, 5, 61, 0, 0, 432, 48, 1, 0, 0, 0, 433, 434, 5, 60, 0, 0, 434, + 435, 5, 62, 0, 0, 435, 50, 1, 0, 0, 0, 436, 437, 3, 325, 162, 0, 437, 438, + 3, 327, 163, 0, 438, 439, 3, 353, 176, 0, 439, 440, 3, 359, 179, 0, 440, + 441, 3, 363, 181, 0, 441, 52, 1, 0, 0, 0, 442, 443, 3, 325, 162, 0, 443, + 444, 3, 329, 164, 0, 444, 445, 3, 363, 181, 0, 445, 446, 3, 341, 170, 0, + 446, 447, 3, 353, 176, 0, 447, 448, 3, 351, 175, 0, 448, 54, 1, 0, 0, 0, + 449, 450, 3, 325, 162, 0, 450, 451, 3, 331, 165, 0, 451, 452, 3, 331, 165, + 0, 452, 56, 1, 0, 0, 0, 453, 454, 3, 325, 162, 0, 454, 455, 3, 335, 167, + 0, 455, 456, 3, 363, 181, 0, 456, 457, 3, 333, 166, 0, 457, 458, 3, 359, + 179, 0, 458, 58, 1, 0, 0, 0, 459, 460, 3, 325, 162, 0, 460, 461, 3, 347, + 173, 0, 461, 462, 3, 347, 173, 0, 462, 60, 1, 0, 0, 0, 463, 464, 3, 325, + 162, 0, 464, 465, 3, 347, 173, 0, 465, 466, 3, 363, 181, 0, 466, 467, 3, + 333, 166, 0, 467, 468, 3, 359, 179, 0, 468, 62, 1, 0, 0, 0, 469, 470, 3, + 325, 162, 0, 470, 471, 3, 351, 175, 0, 471, 472, 3, 325, 162, 0, 472, 473, + 3, 347, 173, 0, 473, 474, 3, 373, 186, 0, 474, 475, 3, 375, 187, 0, 475, + 476, 3, 333, 166, 0, 476, 64, 1, 0, 0, 0, 477, 478, 3, 325, 162, 0, 478, + 479, 3, 351, 175, 0, 479, 480, 3, 331, 165, 0, 480, 66, 1, 0, 0, 0, 481, + 482, 3, 325, 162, 0, 482, 483, 3, 361, 180, 0, 483, 68, 1, 0, 0, 0, 484, + 485, 3, 325, 162, 0, 485, 486, 3, 361, 180, 0, 486, 487, 3, 329, 164, 0, + 487, 70, 1, 0, 0, 0, 488, 489, 3, 325, 162, 0, 489, 490, 3, 363, 181, 0, + 490, 491, 3, 363, 181, 0, 491, 492, 3, 325, 162, 0, 492, 493, 3, 329, 164, + 0, 493, 494, 3, 339, 169, 0, 494, 72, 1, 0, 0, 0, 495, 496, 3, 325, 162, + 0, 496, 497, 3, 365, 182, 0, 497, 498, 3, 363, 181, 0, 498, 499, 3, 353, + 176, 0, 499, 500, 3, 341, 170, 0, 500, 501, 3, 351, 175, 0, 501, 502, 3, + 329, 164, 0, 502, 503, 3, 359, 179, 0, 503, 504, 3, 333, 166, 0, 504, 505, + 3, 349, 174, 0, 505, 506, 3, 333, 166, 0, 506, 507, 3, 351, 175, 0, 507, + 508, 3, 363, 181, 0, 508, 74, 1, 0, 0, 0, 509, 510, 3, 327, 163, 0, 510, + 511, 3, 333, 166, 0, 511, 512, 3, 335, 167, 0, 512, 513, 3, 353, 176, 0, + 513, 514, 3, 359, 179, 0, 514, 515, 3, 333, 166, 0, 515, 76, 1, 0, 0, 0, + 516, 517, 3, 327, 163, 0, 517, 518, 3, 333, 166, 0, 518, 519, 3, 337, 168, + 0, 519, 520, 3, 341, 170, 0, 520, 521, 3, 351, 175, 0, 521, 78, 1, 0, 0, + 0, 522, 523, 3, 327, 163, 0, 523, 524, 3, 333, 166, 0, 524, 525, 3, 363, + 181, 0, 525, 526, 3, 369, 184, 0, 526, 527, 3, 333, 166, 0, 527, 528, 3, + 333, 166, 0, 528, 529, 3, 351, 175, 0, 529, 80, 1, 0, 0, 0, 530, 531, 3, + 327, 163, 0, 531, 532, 3, 373, 186, 0, 532, 82, 1, 0, 0, 0, 533, 534, 3, + 329, 164, 0, 534, 535, 3, 325, 162, 0, 535, 536, 3, 361, 180, 0, 536, 537, + 3, 329, 164, 0, 537, 538, 3, 325, 162, 0, 538, 539, 3, 331, 165, 0, 539, + 540, 3, 333, 166, 0, 540, 84, 1, 0, 0, 0, 541, 542, 3, 329, 164, 0, 542, + 543, 3, 325, 162, 0, 543, 544, 3, 361, 180, 0, 544, 545, 3, 333, 166, 0, + 545, 86, 1, 0, 0, 0, 546, 547, 3, 329, 164, 0, 547, 548, 3, 325, 162, 0, + 548, 549, 3, 361, 180, 0, 549, 550, 3, 363, 181, 0, 550, 88, 1, 0, 0, 0, + 551, 552, 3, 329, 164, 0, 552, 553, 3, 339, 169, 0, 553, 554, 3, 333, 166, + 0, 554, 555, 3, 329, 164, 0, 555, 556, 3, 345, 172, 0, 556, 90, 1, 0, 0, + 0, 557, 558, 3, 329, 164, 0, 558, 559, 3, 353, 176, 0, 559, 560, 3, 347, + 173, 0, 560, 561, 3, 347, 173, 0, 561, 562, 3, 325, 162, 0, 562, 563, 3, + 363, 181, 0, 563, 564, 3, 333, 166, 0, 564, 92, 1, 0, 0, 0, 565, 566, 3, + 329, 164, 0, 566, 567, 3, 353, 176, 0, 567, 568, 3, 347, 173, 0, 568, 569, + 3, 365, 182, 0, 569, 570, 3, 349, 174, 0, 570, 571, 3, 351, 175, 0, 571, + 94, 1, 0, 0, 0, 572, 573, 3, 329, 164, 0, 573, 574, 3, 353, 176, 0, 574, + 575, 3, 349, 174, 0, 575, 576, 3, 349, 174, 0, 576, 577, 3, 341, 170, 0, + 577, 578, 3, 363, 181, 0, 578, 96, 1, 0, 0, 0, 579, 580, 3, 329, 164, 0, + 580, 581, 3, 353, 176, 0, 581, 582, 3, 351, 175, 0, 582, 583, 3, 335, 167, + 0, 583, 584, 3, 347, 173, 0, 584, 585, 3, 341, 170, 0, 585, 586, 3, 329, + 164, 0, 586, 587, 3, 363, 181, 0, 587, 98, 1, 0, 0, 0, 588, 589, 3, 329, + 164, 0, 589, 590, 3, 353, 176, 0, 590, 591, 3, 351, 175, 0, 591, 592, 3, + 361, 180, 0, 592, 593, 3, 363, 181, 0, 593, 594, 3, 359, 179, 0, 594, 595, + 3, 325, 162, 0, 595, 596, 3, 341, 170, 0, 596, 597, 3, 351, 175, 0, 597, + 598, 3, 363, 181, 0, 598, 100, 1, 0, 0, 0, 599, 600, 3, 329, 164, 0, 600, + 601, 3, 359, 179, 0, 601, 602, 3, 333, 166, 0, 602, 603, 3, 325, 162, 0, + 603, 604, 3, 363, 181, 0, 604, 605, 3, 333, 166, 0, 605, 102, 1, 0, 0, + 0, 606, 607, 3, 329, 164, 0, 607, 608, 3, 359, 179, 0, 608, 609, 3, 353, + 176, 0, 609, 610, 3, 361, 180, 0, 610, 611, 3, 361, 180, 0, 611, 104, 1, + 0, 0, 0, 612, 613, 3, 329, 164, 0, 613, 614, 3, 365, 182, 0, 614, 615, + 3, 359, 179, 0, 615, 616, 3, 359, 179, 0, 616, 617, 3, 333, 166, 0, 617, + 618, 3, 351, 175, 0, 618, 619, 3, 363, 181, 0, 619, 620, 5, 95, 0, 0, 620, + 621, 3, 331, 165, 0, 621, 622, 3, 325, 162, 0, 622, 623, 3, 363, 181, 0, + 623, 624, 3, 333, 166, 0, 624, 106, 1, 0, 0, 0, 625, 626, 3, 329, 164, + 0, 626, 627, 3, 365, 182, 0, 627, 628, 3, 359, 179, 0, 628, 629, 3, 359, + 179, 0, 629, 630, 3, 333, 166, 0, 630, 631, 3, 351, 175, 0, 631, 632, 3, + 363, 181, 0, 632, 633, 5, 95, 0, 0, 633, 634, 3, 363, 181, 0, 634, 635, + 3, 341, 170, 0, 635, 636, 3, 349, 174, 0, 636, 637, 3, 333, 166, 0, 637, + 108, 1, 0, 0, 0, 638, 639, 3, 329, 164, 0, 639, 640, 3, 365, 182, 0, 640, + 641, 3, 359, 179, 0, 641, 642, 3, 359, 179, 0, 642, 643, 3, 333, 166, 0, + 643, 644, 3, 351, 175, 0, 644, 645, 3, 363, 181, 0, 645, 646, 5, 95, 0, + 0, 646, 647, 3, 363, 181, 0, 647, 648, 3, 341, 170, 0, 648, 649, 3, 349, + 174, 0, 649, 650, 3, 333, 166, 0, 650, 651, 3, 361, 180, 0, 651, 652, 3, + 363, 181, 0, 652, 653, 3, 325, 162, 0, 653, 654, 3, 349, 174, 0, 654, 655, + 3, 355, 177, 0, 655, 110, 1, 0, 0, 0, 656, 657, 3, 331, 165, 0, 657, 658, + 3, 325, 162, 0, 658, 659, 3, 363, 181, 0, 659, 660, 3, 325, 162, 0, 660, + 661, 3, 327, 163, 0, 661, 662, 3, 325, 162, 0, 662, 663, 3, 361, 180, 0, + 663, 664, 3, 333, 166, 0, 664, 112, 1, 0, 0, 0, 665, 666, 3, 331, 165, + 0, 666, 667, 3, 333, 166, 0, 667, 668, 3, 335, 167, 0, 668, 669, 3, 325, + 162, 0, 669, 670, 3, 365, 182, 0, 670, 671, 3, 347, 173, 0, 671, 672, 3, + 363, 181, 0, 672, 114, 1, 0, 0, 0, 673, 674, 3, 331, 165, 0, 674, 675, + 3, 333, 166, 0, 675, 676, 3, 335, 167, 0, 676, 677, 3, 333, 166, 0, 677, + 678, 3, 359, 179, 0, 678, 679, 3, 359, 179, 0, 679, 680, 3, 325, 162, 0, + 680, 681, 3, 327, 163, 0, 681, 682, 3, 347, 173, 0, 682, 683, 3, 333, 166, + 0, 683, 116, 1, 0, 0, 0, 684, 685, 3, 331, 165, 0, 685, 686, 3, 333, 166, + 0, 686, 687, 3, 335, 167, 0, 687, 688, 3, 333, 166, 0, 688, 689, 3, 359, + 179, 0, 689, 690, 3, 359, 179, 0, 690, 691, 3, 333, 166, 0, 691, 692, 3, + 331, 165, 0, 692, 118, 1, 0, 0, 0, 693, 694, 3, 331, 165, 0, 694, 695, + 3, 333, 166, 0, 695, 696, 3, 347, 173, 0, 696, 697, 3, 333, 166, 0, 697, + 698, 3, 363, 181, 0, 698, 699, 3, 333, 166, 0, 699, 120, 1, 0, 0, 0, 700, + 701, 3, 331, 165, 0, 701, 702, 3, 333, 166, 0, 702, 703, 3, 361, 180, 0, + 703, 704, 3, 329, 164, 0, 704, 122, 1, 0, 0, 0, 705, 706, 3, 331, 165, + 0, 706, 707, 3, 333, 166, 0, 707, 708, 3, 363, 181, 0, 708, 709, 3, 325, + 162, 0, 709, 710, 3, 329, 164, 0, 710, 711, 3, 339, 169, 0, 711, 124, 1, + 0, 0, 0, 712, 713, 3, 331, 165, 0, 713, 714, 3, 341, 170, 0, 714, 715, + 3, 361, 180, 0, 715, 716, 3, 363, 181, 0, 716, 717, 3, 341, 170, 0, 717, + 718, 3, 351, 175, 0, 718, 719, 3, 329, 164, 0, 719, 720, 3, 363, 181, 0, + 720, 126, 1, 0, 0, 0, 721, 722, 3, 331, 165, 0, 722, 723, 3, 359, 179, + 0, 723, 724, 3, 353, 176, 0, 724, 725, 3, 355, 177, 0, 725, 128, 1, 0, + 0, 0, 726, 727, 3, 333, 166, 0, 727, 728, 3, 325, 162, 0, 728, 729, 3, + 329, 164, 0, 729, 730, 3, 339, 169, 0, 730, 130, 1, 0, 0, 0, 731, 732, + 3, 333, 166, 0, 732, 733, 3, 347, 173, 0, 733, 734, 3, 361, 180, 0, 734, + 735, 3, 333, 166, 0, 735, 132, 1, 0, 0, 0, 736, 737, 3, 333, 166, 0, 737, + 738, 3, 351, 175, 0, 738, 739, 3, 331, 165, 0, 739, 134, 1, 0, 0, 0, 740, + 741, 3, 333, 166, 0, 741, 742, 3, 351, 175, 0, 742, 743, 3, 325, 162, 0, + 743, 744, 3, 327, 163, 0, 744, 745, 3, 347, 173, 0, 745, 746, 3, 333, 166, + 0, 746, 136, 1, 0, 0, 0, 747, 748, 3, 333, 166, 0, 748, 749, 3, 361, 180, + 0, 749, 750, 3, 329, 164, 0, 750, 751, 3, 325, 162, 0, 751, 752, 3, 355, + 177, 0, 752, 753, 3, 333, 166, 0, 753, 138, 1, 0, 0, 0, 754, 755, 3, 333, + 166, 0, 755, 756, 3, 371, 185, 0, 756, 757, 3, 329, 164, 0, 757, 758, 3, + 333, 166, 0, 758, 759, 3, 355, 177, 0, 759, 760, 3, 363, 181, 0, 760, 140, + 1, 0, 0, 0, 761, 762, 3, 333, 166, 0, 762, 763, 3, 371, 185, 0, 763, 764, + 3, 329, 164, 0, 764, 765, 3, 347, 173, 0, 765, 766, 3, 365, 182, 0, 766, + 767, 3, 361, 180, 0, 767, 768, 3, 341, 170, 0, 768, 769, 3, 367, 183, 0, + 769, 770, 3, 333, 166, 0, 770, 142, 1, 0, 0, 0, 771, 772, 3, 333, 166, + 0, 772, 773, 3, 371, 185, 0, 773, 774, 3, 341, 170, 0, 774, 775, 3, 361, + 180, 0, 775, 776, 3, 363, 181, 0, 776, 777, 3, 361, 180, 0, 777, 144, 1, + 0, 0, 0, 778, 779, 3, 333, 166, 0, 779, 780, 3, 371, 185, 0, 780, 781, + 3, 355, 177, 0, 781, 782, 3, 347, 173, 0, 782, 783, 3, 325, 162, 0, 783, + 784, 3, 341, 170, 0, 784, 785, 3, 351, 175, 0, 785, 146, 1, 0, 0, 0, 786, + 787, 3, 335, 167, 0, 787, 788, 3, 325, 162, 0, 788, 789, 3, 341, 170, 0, + 789, 790, 3, 347, 173, 0, 790, 148, 1, 0, 0, 0, 791, 792, 3, 335, 167, + 0, 792, 793, 3, 353, 176, 0, 793, 794, 3, 359, 179, 0, 794, 150, 1, 0, + 0, 0, 795, 796, 3, 335, 167, 0, 796, 797, 3, 353, 176, 0, 797, 798, 3, + 359, 179, 0, 798, 799, 3, 333, 166, 0, 799, 800, 3, 341, 170, 0, 800, 801, + 3, 337, 168, 0, 801, 802, 3, 351, 175, 0, 802, 152, 1, 0, 0, 0, 803, 804, + 3, 335, 167, 0, 804, 805, 3, 359, 179, 0, 805, 806, 3, 353, 176, 0, 806, + 807, 3, 349, 174, 0, 807, 154, 1, 0, 0, 0, 808, 809, 3, 335, 167, 0, 809, + 810, 3, 365, 182, 0, 810, 811, 3, 347, 173, 0, 811, 812, 3, 347, 173, 0, + 812, 156, 1, 0, 0, 0, 813, 814, 3, 337, 168, 0, 814, 815, 3, 347, 173, + 0, 815, 816, 3, 353, 176, 0, 816, 817, 3, 327, 163, 0, 817, 158, 1, 0, + 0, 0, 818, 819, 3, 337, 168, 0, 819, 820, 3, 359, 179, 0, 820, 821, 3, + 353, 176, 0, 821, 822, 3, 365, 182, 0, 822, 823, 3, 355, 177, 0, 823, 160, + 1, 0, 0, 0, 824, 825, 3, 339, 169, 0, 825, 826, 3, 325, 162, 0, 826, 827, + 3, 367, 183, 0, 827, 828, 3, 341, 170, 0, 828, 829, 3, 351, 175, 0, 829, + 830, 3, 337, 168, 0, 830, 162, 1, 0, 0, 0, 831, 832, 3, 341, 170, 0, 832, + 833, 3, 335, 167, 0, 833, 164, 1, 0, 0, 0, 834, 835, 3, 341, 170, 0, 835, + 836, 3, 337, 168, 0, 836, 837, 3, 351, 175, 0, 837, 838, 3, 353, 176, 0, + 838, 839, 3, 359, 179, 0, 839, 840, 3, 333, 166, 0, 840, 166, 1, 0, 0, + 0, 841, 842, 3, 341, 170, 0, 842, 843, 3, 349, 174, 0, 843, 844, 3, 349, + 174, 0, 844, 845, 3, 333, 166, 0, 845, 846, 3, 331, 165, 0, 846, 847, 3, + 341, 170, 0, 847, 848, 3, 325, 162, 0, 848, 849, 3, 363, 181, 0, 849, 850, + 3, 333, 166, 0, 850, 168, 1, 0, 0, 0, 851, 852, 3, 341, 170, 0, 852, 853, + 3, 351, 175, 0, 853, 170, 1, 0, 0, 0, 854, 855, 3, 341, 170, 0, 855, 856, + 3, 351, 175, 0, 856, 857, 3, 331, 165, 0, 857, 858, 3, 333, 166, 0, 858, + 859, 3, 371, 185, 0, 859, 172, 1, 0, 0, 0, 860, 861, 3, 341, 170, 0, 861, + 862, 3, 351, 175, 0, 862, 863, 3, 331, 165, 0, 863, 864, 3, 333, 166, 0, + 864, 865, 3, 371, 185, 0, 865, 866, 3, 333, 166, 0, 866, 867, 3, 331, 165, + 0, 867, 174, 1, 0, 0, 0, 868, 869, 3, 341, 170, 0, 869, 870, 3, 351, 175, + 0, 870, 871, 3, 341, 170, 0, 871, 872, 3, 363, 181, 0, 872, 873, 3, 341, + 170, 0, 873, 874, 3, 325, 162, 0, 874, 875, 3, 347, 173, 0, 875, 876, 3, + 347, 173, 0, 876, 877, 3, 373, 186, 0, 877, 176, 1, 0, 0, 0, 878, 879, + 3, 341, 170, 0, 879, 880, 3, 351, 175, 0, 880, 881, 3, 351, 175, 0, 881, + 882, 3, 333, 166, 0, 882, 883, 3, 359, 179, 0, 883, 178, 1, 0, 0, 0, 884, + 885, 3, 341, 170, 0, 885, 886, 3, 351, 175, 0, 886, 887, 3, 361, 180, 0, + 887, 888, 3, 333, 166, 0, 888, 889, 3, 359, 179, 0, 889, 890, 3, 363, 181, + 0, 890, 180, 1, 0, 0, 0, 891, 892, 3, 341, 170, 0, 892, 893, 3, 351, 175, + 0, 893, 894, 3, 361, 180, 0, 894, 895, 3, 363, 181, 0, 895, 896, 3, 333, + 166, 0, 896, 897, 3, 325, 162, 0, 897, 898, 3, 331, 165, 0, 898, 182, 1, + 0, 0, 0, 899, 900, 3, 341, 170, 0, 900, 901, 3, 351, 175, 0, 901, 902, + 3, 363, 181, 0, 902, 903, 3, 333, 166, 0, 903, 904, 3, 359, 179, 0, 904, + 905, 3, 361, 180, 0, 905, 906, 3, 333, 166, 0, 906, 907, 3, 329, 164, 0, + 907, 908, 3, 363, 181, 0, 908, 184, 1, 0, 0, 0, 909, 910, 3, 341, 170, + 0, 910, 911, 3, 351, 175, 0, 911, 912, 3, 363, 181, 0, 912, 913, 3, 353, + 176, 0, 913, 186, 1, 0, 0, 0, 914, 915, 3, 341, 170, 0, 915, 916, 3, 361, + 180, 0, 916, 188, 1, 0, 0, 0, 917, 918, 3, 341, 170, 0, 918, 919, 3, 361, + 180, 0, 919, 920, 3, 351, 175, 0, 920, 921, 3, 365, 182, 0, 921, 922, 3, + 347, 173, 0, 922, 923, 3, 347, 173, 0, 923, 190, 1, 0, 0, 0, 924, 925, + 3, 343, 171, 0, 925, 926, 3, 353, 176, 0, 926, 927, 3, 341, 170, 0, 927, + 928, 3, 351, 175, 0, 928, 192, 1, 0, 0, 0, 929, 930, 3, 345, 172, 0, 930, + 931, 3, 333, 166, 0, 931, 932, 3, 373, 186, 0, 932, 194, 1, 0, 0, 0, 933, + 934, 3, 347, 173, 0, 934, 935, 3, 333, 166, 0, 935, 936, 3, 335, 167, 0, + 936, 937, 3, 363, 181, 0, 937, 196, 1, 0, 0, 0, 938, 939, 3, 347, 173, + 0, 939, 940, 3, 341, 170, 0, 940, 941, 3, 345, 172, 0, 941, 942, 3, 333, + 166, 0, 942, 198, 1, 0, 0, 0, 943, 944, 3, 347, 173, 0, 944, 945, 3, 341, + 170, 0, 945, 946, 3, 349, 174, 0, 946, 947, 3, 341, 170, 0, 947, 948, 3, + 363, 181, 0, 948, 200, 1, 0, 0, 0, 949, 950, 3, 349, 174, 0, 950, 951, + 3, 325, 162, 0, 951, 952, 3, 363, 181, 0, 952, 953, 3, 329, 164, 0, 953, + 954, 3, 339, 169, 0, 954, 202, 1, 0, 0, 0, 955, 956, 3, 351, 175, 0, 956, + 957, 3, 325, 162, 0, 957, 958, 3, 363, 181, 0, 958, 959, 3, 365, 182, 0, + 959, 960, 3, 359, 179, 0, 960, 961, 3, 325, 162, 0, 961, 962, 3, 347, 173, + 0, 962, 204, 1, 0, 0, 0, 963, 964, 3, 351, 175, 0, 964, 965, 3, 333, 166, + 0, 965, 966, 3, 371, 185, 0, 966, 967, 3, 363, 181, 0, 967, 968, 3, 367, + 183, 0, 968, 969, 3, 325, 162, 0, 969, 970, 3, 347, 173, 0, 970, 206, 1, + 0, 0, 0, 971, 972, 3, 351, 175, 0, 972, 973, 3, 353, 176, 0, 973, 208, + 1, 0, 0, 0, 974, 975, 3, 351, 175, 0, 975, 976, 3, 353, 176, 0, 976, 977, + 3, 363, 181, 0, 977, 210, 1, 0, 0, 0, 978, 979, 3, 351, 175, 0, 979, 980, + 3, 353, 176, 0, 980, 981, 3, 363, 181, 0, 981, 982, 3, 351, 175, 0, 982, + 983, 3, 365, 182, 0, 983, 984, 3, 347, 173, 0, 984, 985, 3, 347, 173, 0, + 985, 212, 1, 0, 0, 0, 986, 987, 3, 351, 175, 0, 987, 988, 3, 365, 182, + 0, 988, 989, 3, 347, 173, 0, 989, 990, 3, 347, 173, 0, 990, 214, 1, 0, + 0, 0, 991, 992, 3, 353, 176, 0, 992, 993, 3, 335, 167, 0, 993, 216, 1, + 0, 0, 0, 994, 995, 3, 353, 176, 0, 995, 996, 3, 335, 167, 0, 996, 997, + 3, 335, 167, 0, 997, 998, 3, 361, 180, 0, 998, 999, 3, 333, 166, 0, 999, + 1000, 3, 363, 181, 0, 1000, 218, 1, 0, 0, 0, 1001, 1002, 3, 353, 176, 0, + 1002, 1003, 3, 351, 175, 0, 1003, 220, 1, 0, 0, 0, 1004, 1005, 3, 353, + 176, 0, 1005, 1006, 3, 351, 175, 0, 1006, 1007, 3, 347, 173, 0, 1007, 1008, + 3, 373, 186, 0, 1008, 222, 1, 0, 0, 0, 1009, 1010, 3, 353, 176, 0, 1010, + 1011, 3, 359, 179, 0, 1011, 224, 1, 0, 0, 0, 1012, 1013, 3, 353, 176, 0, + 1013, 1014, 3, 359, 179, 0, 1014, 1015, 3, 331, 165, 0, 1015, 1016, 3, + 333, 166, 0, 1016, 1017, 3, 359, 179, 0, 1017, 226, 1, 0, 0, 0, 1018, 1019, + 3, 353, 176, 0, 1019, 1020, 3, 365, 182, 0, 1020, 1021, 3, 363, 181, 0, + 1021, 1022, 3, 333, 166, 0, 1022, 1023, 3, 359, 179, 0, 1023, 228, 1, 0, + 0, 0, 1024, 1025, 3, 355, 177, 0, 1025, 1026, 3, 347, 173, 0, 1026, 1027, + 3, 325, 162, 0, 1027, 1028, 3, 351, 175, 0, 1028, 230, 1, 0, 0, 0, 1029, + 1030, 3, 355, 177, 0, 1030, 1031, 3, 359, 179, 0, 1031, 1032, 3, 325, 162, + 0, 1032, 1033, 3, 337, 168, 0, 1033, 1034, 3, 349, 174, 0, 1034, 1035, + 3, 325, 162, 0, 1035, 232, 1, 0, 0, 0, 1036, 1037, 3, 355, 177, 0, 1037, + 1038, 3, 359, 179, 0, 1038, 1039, 3, 341, 170, 0, 1039, 1040, 3, 349, 174, + 0, 1040, 1041, 3, 325, 162, 0, 1041, 1042, 3, 359, 179, 0, 1042, 1043, + 3, 373, 186, 0, 1043, 234, 1, 0, 0, 0, 1044, 1045, 3, 357, 178, 0, 1045, + 1046, 3, 365, 182, 0, 1046, 1047, 3, 333, 166, 0, 1047, 1048, 3, 359, 179, + 0, 1048, 1049, 3, 373, 186, 0, 1049, 236, 1, 0, 0, 0, 1050, 1051, 3, 359, + 179, 0, 1051, 1052, 3, 325, 162, 0, 1052, 1053, 3, 341, 170, 0, 1053, 1054, + 3, 361, 180, 0, 1054, 1055, 3, 333, 166, 0, 1055, 238, 1, 0, 0, 0, 1056, + 1057, 3, 359, 179, 0, 1057, 1058, 3, 333, 166, 0, 1058, 1059, 3, 329, 164, + 0, 1059, 1060, 3, 365, 182, 0, 1060, 1061, 3, 359, 179, 0, 1061, 1062, + 3, 361, 180, 0, 1062, 1063, 3, 341, 170, 0, 1063, 1064, 3, 367, 183, 0, + 1064, 1065, 3, 333, 166, 0, 1065, 240, 1, 0, 0, 0, 1066, 1067, 3, 359, + 179, 0, 1067, 1068, 3, 333, 166, 0, 1068, 1069, 3, 335, 167, 0, 1069, 1070, + 3, 333, 166, 0, 1070, 1071, 3, 359, 179, 0, 1071, 1072, 3, 333, 166, 0, + 1072, 1073, 3, 351, 175, 0, 1073, 1074, 3, 329, 164, 0, 1074, 1075, 3, + 333, 166, 0, 1075, 1076, 3, 361, 180, 0, 1076, 242, 1, 0, 0, 0, 1077, 1078, + 3, 359, 179, 0, 1078, 1079, 3, 333, 166, 0, 1079, 1080, 3, 337, 168, 0, + 1080, 1081, 3, 333, 166, 0, 1081, 1082, 3, 371, 185, 0, 1082, 1083, 3, + 355, 177, 0, 1083, 244, 1, 0, 0, 0, 1084, 1085, 3, 359, 179, 0, 1085, 1086, + 3, 333, 166, 0, 1086, 1087, 3, 341, 170, 0, 1087, 1088, 3, 351, 175, 0, + 1088, 1089, 3, 331, 165, 0, 1089, 1090, 3, 333, 166, 0, 1090, 1091, 3, + 371, 185, 0, 1091, 246, 1, 0, 0, 0, 1092, 1093, 3, 359, 179, 0, 1093, 1094, + 3, 333, 166, 0, 1094, 1095, 3, 347, 173, 0, 1095, 1096, 3, 333, 166, 0, + 1096, 1097, 3, 325, 162, 0, 1097, 1098, 3, 361, 180, 0, 1098, 1099, 3, + 333, 166, 0, 1099, 248, 1, 0, 0, 0, 1100, 1101, 3, 359, 179, 0, 1101, 1102, + 3, 333, 166, 0, 1102, 1103, 3, 351, 175, 0, 1103, 1104, 3, 325, 162, 0, + 1104, 1105, 3, 349, 174, 0, 1105, 1106, 3, 333, 166, 0, 1106, 250, 1, 0, + 0, 0, 1107, 1108, 3, 359, 179, 0, 1108, 1109, 3, 333, 166, 0, 1109, 1110, + 3, 355, 177, 0, 1110, 1111, 3, 347, 173, 0, 1111, 1112, 3, 325, 162, 0, + 1112, 1113, 3, 329, 164, 0, 1113, 1114, 3, 333, 166, 0, 1114, 252, 1, 0, + 0, 0, 1115, 1116, 3, 359, 179, 0, 1116, 1117, 3, 333, 166, 0, 1117, 1118, + 3, 361, 180, 0, 1118, 1119, 3, 363, 181, 0, 1119, 1120, 3, 359, 179, 0, + 1120, 1121, 3, 341, 170, 0, 1121, 1122, 3, 329, 164, 0, 1122, 1123, 3, + 363, 181, 0, 1123, 254, 1, 0, 0, 0, 1124, 1125, 3, 359, 179, 0, 1125, 1126, + 3, 341, 170, 0, 1126, 1127, 3, 337, 168, 0, 1127, 1128, 3, 339, 169, 0, + 1128, 1129, 3, 363, 181, 0, 1129, 256, 1, 0, 0, 0, 1130, 1131, 3, 359, + 179, 0, 1131, 1132, 3, 353, 176, 0, 1132, 1133, 3, 347, 173, 0, 1133, 1134, + 3, 347, 173, 0, 1134, 1135, 3, 327, 163, 0, 1135, 1136, 3, 325, 162, 0, + 1136, 1137, 3, 329, 164, 0, 1137, 1138, 3, 345, 172, 0, 1138, 258, 1, 0, + 0, 0, 1139, 1140, 3, 359, 179, 0, 1140, 1141, 3, 353, 176, 0, 1141, 1142, + 3, 369, 184, 0, 1142, 260, 1, 0, 0, 0, 1143, 1144, 3, 361, 180, 0, 1144, + 1145, 3, 325, 162, 0, 1145, 1146, 3, 367, 183, 0, 1146, 1147, 3, 333, 166, + 0, 1147, 1148, 3, 355, 177, 0, 1148, 1149, 3, 353, 176, 0, 1149, 1150, + 3, 341, 170, 0, 1150, 1151, 3, 351, 175, 0, 1151, 1152, 3, 363, 181, 0, + 1152, 262, 1, 0, 0, 0, 1153, 1154, 3, 361, 180, 0, 1154, 1155, 3, 333, + 166, 0, 1155, 1156, 3, 347, 173, 0, 1156, 1157, 3, 333, 166, 0, 1157, 1158, + 3, 329, 164, 0, 1158, 1159, 3, 363, 181, 0, 1159, 264, 1, 0, 0, 0, 1160, + 1161, 3, 361, 180, 0, 1161, 1162, 3, 333, 166, 0, 1162, 1163, 3, 363, 181, + 0, 1163, 266, 1, 0, 0, 0, 1164, 1165, 3, 363, 181, 0, 1165, 1166, 3, 325, + 162, 0, 1166, 1167, 3, 327, 163, 0, 1167, 1168, 3, 347, 173, 0, 1168, 1169, + 3, 333, 166, 0, 1169, 268, 1, 0, 0, 0, 1170, 1171, 3, 363, 181, 0, 1171, + 1172, 3, 333, 166, 0, 1172, 1173, 3, 349, 174, 0, 1173, 1174, 3, 355, 177, + 0, 1174, 270, 1, 0, 0, 0, 1175, 1176, 3, 363, 181, 0, 1176, 1177, 3, 333, + 166, 0, 1177, 1178, 3, 349, 174, 0, 1178, 1179, 3, 355, 177, 0, 1179, 1180, + 3, 353, 176, 0, 1180, 1181, 3, 359, 179, 0, 1181, 1182, 3, 325, 162, 0, + 1182, 1183, 3, 359, 179, 0, 1183, 1184, 3, 373, 186, 0, 1184, 272, 1, 0, + 0, 0, 1185, 1186, 3, 363, 181, 0, 1186, 1187, 3, 339, 169, 0, 1187, 1188, + 3, 333, 166, 0, 1188, 1189, 3, 351, 175, 0, 1189, 274, 1, 0, 0, 0, 1190, + 1191, 3, 363, 181, 0, 1191, 1192, 3, 353, 176, 0, 1192, 276, 1, 0, 0, 0, + 1193, 1194, 3, 363, 181, 0, 1194, 1195, 3, 359, 179, 0, 1195, 1196, 3, + 325, 162, 0, 1196, 1197, 3, 351, 175, 0, 1197, 1198, 3, 361, 180, 0, 1198, + 1199, 3, 325, 162, 0, 1199, 1200, 3, 329, 164, 0, 1200, 1201, 3, 363, 181, + 0, 1201, 1202, 3, 341, 170, 0, 1202, 1203, 3, 353, 176, 0, 1203, 1204, + 3, 351, 175, 0, 1204, 278, 1, 0, 0, 0, 1205, 1206, 3, 363, 181, 0, 1206, + 1207, 3, 359, 179, 0, 1207, 1208, 3, 341, 170, 0, 1208, 1209, 3, 337, 168, + 0, 1209, 1210, 3, 337, 168, 0, 1210, 1211, 3, 333, 166, 0, 1211, 1212, + 3, 359, 179, 0, 1212, 280, 1, 0, 0, 0, 1213, 1214, 3, 365, 182, 0, 1214, + 1215, 3, 351, 175, 0, 1215, 1216, 3, 341, 170, 0, 1216, 1217, 3, 353, 176, + 0, 1217, 1218, 3, 351, 175, 0, 1218, 282, 1, 0, 0, 0, 1219, 1220, 3, 365, + 182, 0, 1220, 1221, 3, 351, 175, 0, 1221, 1222, 3, 341, 170, 0, 1222, 1223, + 3, 357, 178, 0, 1223, 1224, 3, 365, 182, 0, 1224, 1225, 3, 333, 166, 0, + 1225, 284, 1, 0, 0, 0, 1226, 1227, 3, 365, 182, 0, 1227, 1228, 3, 355, + 177, 0, 1228, 1229, 3, 331, 165, 0, 1229, 1230, 3, 325, 162, 0, 1230, 1231, + 3, 363, 181, 0, 1231, 1232, 3, 333, 166, 0, 1232, 286, 1, 0, 0, 0, 1233, + 1234, 3, 365, 182, 0, 1234, 1235, 3, 361, 180, 0, 1235, 1236, 3, 341, 170, + 0, 1236, 1237, 3, 351, 175, 0, 1237, 1238, 3, 337, 168, 0, 1238, 288, 1, + 0, 0, 0, 1239, 1240, 3, 367, 183, 0, 1240, 1241, 3, 325, 162, 0, 1241, + 1242, 3, 329, 164, 0, 1242, 1243, 3, 365, 182, 0, 1243, 1244, 3, 365, 182, + 0, 1244, 1245, 3, 349, 174, 0, 1245, 290, 1, 0, 0, 0, 1246, 1247, 3, 367, + 183, 0, 1247, 1248, 3, 325, 162, 0, 1248, 1249, 3, 347, 173, 0, 1249, 1250, + 3, 365, 182, 0, 1250, 1251, 3, 333, 166, 0, 1251, 1252, 3, 361, 180, 0, + 1252, 292, 1, 0, 0, 0, 1253, 1254, 3, 367, 183, 0, 1254, 1255, 3, 341, + 170, 0, 1255, 1256, 3, 333, 166, 0, 1256, 1257, 3, 369, 184, 0, 1257, 294, + 1, 0, 0, 0, 1258, 1259, 3, 367, 183, 0, 1259, 1260, 3, 341, 170, 0, 1260, + 1261, 3, 359, 179, 0, 1261, 1262, 3, 363, 181, 0, 1262, 1263, 3, 365, 182, + 0, 1263, 1264, 3, 325, 162, 0, 1264, 1265, 3, 347, 173, 0, 1265, 296, 1, + 0, 0, 0, 1266, 1267, 3, 369, 184, 0, 1267, 1268, 3, 339, 169, 0, 1268, + 1269, 3, 333, 166, 0, 1269, 1270, 3, 351, 175, 0, 1270, 298, 1, 0, 0, 0, + 1271, 1272, 3, 369, 184, 0, 1272, 1273, 3, 339, 169, 0, 1273, 1274, 3, + 333, 166, 0, 1274, 1275, 3, 359, 179, 0, 1275, 1276, 3, 333, 166, 0, 1276, + 300, 1, 0, 0, 0, 1277, 1278, 3, 369, 184, 0, 1278, 1279, 3, 341, 170, 0, + 1279, 1280, 3, 363, 181, 0, 1280, 1281, 3, 339, 169, 0, 1281, 302, 1, 0, + 0, 0, 1282, 1283, 3, 369, 184, 0, 1283, 1284, 3, 341, 170, 0, 1284, 1285, + 3, 363, 181, 0, 1285, 1286, 3, 339, 169, 0, 1286, 1287, 3, 353, 176, 0, + 1287, 1288, 3, 365, 182, 0, 1288, 1289, 3, 363, 181, 0, 1289, 304, 1, 0, + 0, 0, 1290, 1296, 5, 34, 0, 0, 1291, 1295, 8, 0, 0, 0, 1292, 1293, 5, 34, + 0, 0, 1293, 1295, 5, 34, 0, 0, 1294, 1291, 1, 0, 0, 0, 1294, 1292, 1, 0, + 0, 0, 1295, 1298, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1297, 1, 0, + 0, 0, 1297, 1299, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1299, 1326, 5, 34, + 0, 0, 1300, 1306, 5, 96, 0, 0, 1301, 1305, 8, 1, 0, 0, 1302, 1303, 5, 96, + 0, 0, 1303, 1305, 5, 96, 0, 0, 1304, 1301, 1, 0, 0, 0, 1304, 1302, 1, 0, + 0, 0, 1305, 1308, 1, 0, 0, 0, 1306, 1304, 1, 0, 0, 0, 1306, 1307, 1, 0, + 0, 0, 1307, 1309, 1, 0, 0, 0, 1308, 1306, 1, 0, 0, 0, 1309, 1326, 5, 96, + 0, 0, 1310, 1314, 5, 91, 0, 0, 1311, 1313, 8, 2, 0, 0, 1312, 1311, 1, 0, + 0, 0, 1313, 1316, 1, 0, 0, 0, 1314, 1312, 1, 0, 0, 0, 1314, 1315, 1, 0, + 0, 0, 1315, 1317, 1, 0, 0, 0, 1316, 1314, 1, 0, 0, 0, 1317, 1326, 5, 93, + 0, 0, 1318, 1322, 7, 3, 0, 0, 1319, 1321, 7, 4, 0, 0, 1320, 1319, 1, 0, + 0, 0, 1321, 1324, 1, 0, 0, 0, 1322, 1320, 1, 0, 0, 0, 1322, 1323, 1, 0, + 0, 0, 1323, 1326, 1, 0, 0, 0, 1324, 1322, 1, 0, 0, 0, 1325, 1290, 1, 0, + 0, 0, 1325, 1300, 1, 0, 0, 0, 1325, 1310, 1, 0, 0, 0, 1325, 1318, 1, 0, + 0, 0, 1326, 306, 1, 0, 0, 0, 1327, 1329, 3, 323, 161, 0, 1328, 1327, 1, + 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 1328, 1, 0, 0, 0, 1330, 1331, 1, + 0, 0, 0, 1331, 1339, 1, 0, 0, 0, 1332, 1336, 5, 46, 0, 0, 1333, 1335, 3, + 323, 161, 0, 1334, 1333, 1, 0, 0, 0, 1335, 1338, 1, 0, 0, 0, 1336, 1334, + 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1340, 1, 0, 0, 0, 1338, 1336, + 1, 0, 0, 0, 1339, 1332, 1, 0, 0, 0, 1339, 1340, 1, 0, 0, 0, 1340, 1350, + 1, 0, 0, 0, 1341, 1343, 3, 333, 166, 0, 1342, 1344, 7, 5, 0, 0, 1343, 1342, + 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1346, 1, 0, 0, 0, 1345, 1347, + 3, 323, 161, 0, 1346, 1345, 1, 0, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, 1346, + 1, 0, 0, 0, 1348, 1349, 1, 0, 0, 0, 1349, 1351, 1, 0, 0, 0, 1350, 1341, + 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1370, 1, 0, 0, 0, 1352, 1354, + 5, 46, 0, 0, 1353, 1355, 3, 323, 161, 0, 1354, 1353, 1, 0, 0, 0, 1355, + 1356, 1, 0, 0, 0, 1356, 1354, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, + 1367, 1, 0, 0, 0, 1358, 1360, 3, 333, 166, 0, 1359, 1361, 7, 5, 0, 0, 1360, + 1359, 1, 0, 0, 0, 1360, 1361, 1, 0, 0, 0, 1361, 1363, 1, 0, 0, 0, 1362, + 1364, 3, 323, 161, 0, 1363, 1362, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, + 1363, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1368, 1, 0, 0, 0, 1367, + 1358, 1, 0, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1370, 1, 0, 0, 0, 1369, + 1328, 1, 0, 0, 0, 1369, 1352, 1, 0, 0, 0, 1370, 308, 1, 0, 0, 0, 1371, + 1375, 5, 63, 0, 0, 1372, 1374, 3, 323, 161, 0, 1373, 1372, 1, 0, 0, 0, + 1374, 1377, 1, 0, 0, 0, 1375, 1373, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, + 1376, 1381, 1, 0, 0, 0, 1377, 1375, 1, 0, 0, 0, 1378, 1379, 7, 6, 0, 0, + 1379, 1381, 3, 305, 152, 0, 1380, 1371, 1, 0, 0, 0, 1380, 1378, 1, 0, 0, + 0, 1381, 310, 1, 0, 0, 0, 1382, 1388, 5, 39, 0, 0, 1383, 1387, 8, 7, 0, + 0, 1384, 1385, 5, 39, 0, 0, 1385, 1387, 5, 39, 0, 0, 1386, 1383, 1, 0, + 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1390, 1, 0, 0, 0, 1388, 1386, 1, 0, + 0, 0, 1388, 1389, 1, 0, 0, 0, 1389, 1391, 1, 0, 0, 0, 1390, 1388, 1, 0, + 0, 0, 1391, 1392, 5, 39, 0, 0, 1392, 312, 1, 0, 0, 0, 1393, 1394, 3, 371, + 185, 0, 1394, 1395, 3, 311, 155, 0, 1395, 314, 1, 0, 0, 0, 1396, 1397, + 5, 45, 0, 0, 1397, 1398, 5, 45, 0, 0, 1398, 1402, 1, 0, 0, 0, 1399, 1401, + 8, 8, 0, 0, 1400, 1399, 1, 0, 0, 0, 1401, 1404, 1, 0, 0, 0, 1402, 1400, + 1, 0, 0, 0, 1402, 1403, 1, 0, 0, 0, 1403, 1405, 1, 0, 0, 0, 1404, 1402, + 1, 0, 0, 0, 1405, 1406, 6, 157, 0, 0, 1406, 316, 1, 0, 0, 0, 1407, 1408, + 5, 47, 0, 0, 1408, 1409, 5, 42, 0, 0, 1409, 1413, 1, 0, 0, 0, 1410, 1412, + 9, 0, 0, 0, 1411, 1410, 1, 0, 0, 0, 1412, 1415, 1, 0, 0, 0, 1413, 1414, + 1, 0, 0, 0, 1413, 1411, 1, 0, 0, 0, 1414, 1419, 1, 0, 0, 0, 1415, 1413, + 1, 0, 0, 0, 1416, 1417, 5, 42, 0, 0, 1417, 1420, 5, 47, 0, 0, 1418, 1420, + 5, 0, 0, 1, 1419, 1416, 1, 0, 0, 0, 1419, 1418, 1, 0, 0, 0, 1420, 1421, + 1, 0, 0, 0, 1421, 1422, 6, 158, 0, 0, 1422, 318, 1, 0, 0, 0, 1423, 1424, + 7, 9, 0, 0, 1424, 1425, 1, 0, 0, 0, 1425, 1426, 6, 159, 0, 0, 1426, 320, + 1, 0, 0, 0, 1427, 1428, 9, 0, 0, 0, 1428, 322, 1, 0, 0, 0, 1429, 1430, + 7, 10, 0, 0, 1430, 324, 1, 0, 0, 0, 1431, 1432, 7, 11, 0, 0, 1432, 326, + 1, 0, 0, 0, 1433, 1434, 7, 12, 0, 0, 1434, 328, 1, 0, 0, 0, 1435, 1436, + 7, 13, 0, 0, 1436, 330, 1, 0, 0, 0, 1437, 1438, 7, 14, 0, 0, 1438, 332, + 1, 0, 0, 0, 1439, 1440, 7, 15, 0, 0, 1440, 334, 1, 0, 0, 0, 1441, 1442, + 7, 16, 0, 0, 1442, 336, 1, 0, 0, 0, 1443, 1444, 7, 17, 0, 0, 1444, 338, + 1, 0, 0, 0, 1445, 1446, 7, 18, 0, 0, 1446, 340, 1, 0, 0, 0, 1447, 1448, + 7, 19, 0, 0, 1448, 342, 1, 0, 0, 0, 1449, 1450, 7, 20, 0, 0, 1450, 344, + 1, 0, 0, 0, 1451, 1452, 7, 21, 0, 0, 1452, 346, 1, 0, 0, 0, 1453, 1454, + 7, 22, 0, 0, 1454, 348, 1, 0, 0, 0, 1455, 1456, 7, 23, 0, 0, 1456, 350, + 1, 0, 0, 0, 1457, 1458, 7, 24, 0, 0, 1458, 352, 1, 0, 0, 0, 1459, 1460, + 7, 25, 0, 0, 1460, 354, 1, 0, 0, 0, 1461, 1462, 7, 26, 0, 0, 1462, 356, + 1, 0, 0, 0, 1463, 1464, 7, 27, 0, 0, 1464, 358, 1, 0, 0, 0, 1465, 1466, + 7, 28, 0, 0, 1466, 360, 1, 0, 0, 0, 1467, 1468, 7, 29, 0, 0, 1468, 362, + 1, 0, 0, 0, 1469, 1470, 7, 30, 0, 0, 1470, 364, 1, 0, 0, 0, 1471, 1472, + 7, 31, 0, 0, 1472, 366, 1, 0, 0, 0, 1473, 1474, 7, 32, 0, 0, 1474, 368, + 1, 0, 0, 0, 1475, 1476, 7, 33, 0, 0, 1476, 370, 1, 0, 0, 0, 1477, 1478, + 7, 34, 0, 0, 1478, 372, 1, 0, 0, 0, 1479, 1480, 7, 35, 0, 0, 1480, 374, + 1, 0, 0, 0, 1481, 1482, 7, 36, 0, 0, 1482, 376, 1, 0, 0, 0, 26, 0, 1294, + 1296, 1304, 1306, 1314, 1322, 1325, 1330, 1336, 1339, 1343, 1348, 1350, + 1356, 1360, 1365, 1367, 1369, 1375, 1380, 1386, 1388, 1402, 1413, 1419, + 1, 0, 1, 0, + } + deserializer := antlr.NewATNDeserializer(nil) + staticData.atn = deserializer.Deserialize(staticData.serializedATN) + atn := staticData.atn + staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) + decisionToDFA := staticData.decisionToDFA + for index, state := range atn.DecisionToState { + decisionToDFA[index] = antlr.NewDFA(state, index) + } +} + +// SqlLexerInit initializes any static state used to implement SqlLexer. By default the +// static state used to implement the lexer is lazily initialized during the first call to +// NewSqlLexer(). You can call this function if you wish to initialize the static state ahead +// of time. +func SqlLexerInit() { + staticData := &sqllexerLexerStaticData + staticData.once.Do(sqllexerLexerInit) +} + +// NewSqlLexer produces a new lexer instance for the optional input antlr.CharStream. +func NewSqlLexer(input antlr.CharStream) *SqlLexer { + SqlLexerInit() + l := new(SqlLexer) + l.BaseLexer = antlr.NewBaseLexer(input) + staticData := &sqllexerLexerStaticData + l.Interpreter = antlr.NewLexerATNSimulator(l, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) + l.channelNames = staticData.channelNames + l.modeNames = staticData.modeNames + l.RuleNames = staticData.ruleNames + l.LiteralNames = staticData.literalNames + l.SymbolicNames = staticData.symbolicNames + l.GrammarFileName = "Sql.g4" + // TODO: l.EOF = antlr.TokenEOF + + return l +} + +// SqlLexer tokens. +const ( + SqlLexerT__0 = 1 + SqlLexerSCOL = 2 + SqlLexerDOT = 3 + SqlLexerOPEN_PAR = 4 + SqlLexerCLOSE_PAR = 5 + SqlLexerCOMMA = 6 + SqlLexerASSIGN = 7 + SqlLexerSTAR = 8 + SqlLexerPLUS = 9 + SqlLexerMINUS = 10 + SqlLexerTILDE = 11 + SqlLexerPIPE2 = 12 + SqlLexerDIV = 13 + SqlLexerMOD = 14 + SqlLexerLT2 = 15 + SqlLexerGT2 = 16 + SqlLexerAMP = 17 + SqlLexerPIPE = 18 + SqlLexerLT = 19 + SqlLexerLT_EQ = 20 + SqlLexerGT = 21 + SqlLexerGT_EQ = 22 + SqlLexerEQ = 23 + SqlLexerNOT_EQ1 = 24 + SqlLexerNOT_EQ2 = 25 + SqlLexerK_ABORT = 26 + SqlLexerK_ACTION = 27 + SqlLexerK_ADD = 28 + SqlLexerK_AFTER = 29 + SqlLexerK_ALL = 30 + SqlLexerK_ALTER = 31 + SqlLexerK_ANALYZE = 32 + SqlLexerK_AND = 33 + SqlLexerK_AS = 34 + SqlLexerK_ASC = 35 + SqlLexerK_ATTACH = 36 + SqlLexerK_AUTOINCREMENT = 37 + SqlLexerK_BEFORE = 38 + SqlLexerK_BEGIN = 39 + SqlLexerK_BETWEEN = 40 + SqlLexerK_BY = 41 + SqlLexerK_CASCADE = 42 + SqlLexerK_CASE = 43 + SqlLexerK_CAST = 44 + SqlLexerK_CHECK = 45 + SqlLexerK_COLLATE = 46 + SqlLexerK_COLUMN = 47 + SqlLexerK_COMMIT = 48 + SqlLexerK_CONFLICT = 49 + SqlLexerK_CONSTRAINT = 50 + SqlLexerK_CREATE = 51 + SqlLexerK_CROSS = 52 + SqlLexerK_CURRENT_DATE = 53 + SqlLexerK_CURRENT_TIME = 54 + SqlLexerK_CURRENT_TIMESTAMP = 55 + SqlLexerK_DATABASE = 56 + SqlLexerK_DEFAULT = 57 + SqlLexerK_DEFERRABLE = 58 + SqlLexerK_DEFERRED = 59 + SqlLexerK_DELETE = 60 + SqlLexerK_DESC = 61 + SqlLexerK_DETACH = 62 + SqlLexerK_DISTINCT = 63 + SqlLexerK_DROP = 64 + SqlLexerK_EACH = 65 + SqlLexerK_ELSE = 66 + SqlLexerK_END = 67 + SqlLexerK_ENABLE = 68 + SqlLexerK_ESCAPE = 69 + SqlLexerK_EXCEPT = 70 + SqlLexerK_EXCLUSIVE = 71 + SqlLexerK_EXISTS = 72 + SqlLexerK_EXPLAIN = 73 + SqlLexerK_FAIL = 74 + SqlLexerK_FOR = 75 + SqlLexerK_FOREIGN = 76 + SqlLexerK_FROM = 77 + SqlLexerK_FULL = 78 + SqlLexerK_GLOB = 79 + SqlLexerK_GROUP = 80 + SqlLexerK_HAVING = 81 + SqlLexerK_IF = 82 + SqlLexerK_IGNORE = 83 + SqlLexerK_IMMEDIATE = 84 + SqlLexerK_IN = 85 + SqlLexerK_INDEX = 86 + SqlLexerK_INDEXED = 87 + SqlLexerK_INITIALLY = 88 + SqlLexerK_INNER = 89 + SqlLexerK_INSERT = 90 + SqlLexerK_INSTEAD = 91 + SqlLexerK_INTERSECT = 92 + SqlLexerK_INTO = 93 + SqlLexerK_IS = 94 + SqlLexerK_ISNULL = 95 + SqlLexerK_JOIN = 96 + SqlLexerK_KEY = 97 + SqlLexerK_LEFT = 98 + SqlLexerK_LIKE = 99 + SqlLexerK_LIMIT = 100 + SqlLexerK_MATCH = 101 + SqlLexerK_NATURAL = 102 + SqlLexerK_NEXTVAL = 103 + SqlLexerK_NO = 104 + SqlLexerK_NOT = 105 + SqlLexerK_NOTNULL = 106 + SqlLexerK_NULL = 107 + SqlLexerK_OF = 108 + SqlLexerK_OFFSET = 109 + SqlLexerK_ON = 110 + SqlLexerK_ONLY = 111 + SqlLexerK_OR = 112 + SqlLexerK_ORDER = 113 + SqlLexerK_OUTER = 114 + SqlLexerK_PLAN = 115 + SqlLexerK_PRAGMA = 116 + SqlLexerK_PRIMARY = 117 + SqlLexerK_QUERY = 118 + SqlLexerK_RAISE = 119 + SqlLexerK_RECURSIVE = 120 + SqlLexerK_REFERENCES = 121 + SqlLexerK_REGEXP = 122 + SqlLexerK_REINDEX = 123 + SqlLexerK_RELEASE = 124 + SqlLexerK_RENAME = 125 + SqlLexerK_REPLACE = 126 + SqlLexerK_RESTRICT = 127 + SqlLexerK_RIGHT = 128 + SqlLexerK_ROLLBACK = 129 + SqlLexerK_ROW = 130 + SqlLexerK_SAVEPOINT = 131 + SqlLexerK_SELECT = 132 + SqlLexerK_SET = 133 + SqlLexerK_TABLE = 134 + SqlLexerK_TEMP = 135 + SqlLexerK_TEMPORARY = 136 + SqlLexerK_THEN = 137 + SqlLexerK_TO = 138 + SqlLexerK_TRANSACTION = 139 + SqlLexerK_TRIGGER = 140 + SqlLexerK_UNION = 141 + SqlLexerK_UNIQUE = 142 + SqlLexerK_UPDATE = 143 + SqlLexerK_USING = 144 + SqlLexerK_VACUUM = 145 + SqlLexerK_VALUES = 146 + SqlLexerK_VIEW = 147 + SqlLexerK_VIRTUAL = 148 + SqlLexerK_WHEN = 149 + SqlLexerK_WHERE = 150 + SqlLexerK_WITH = 151 + SqlLexerK_WITHOUT = 152 + SqlLexerIDENTIFIER = 153 + SqlLexerNUMERIC_LITERAL = 154 + SqlLexerBIND_PARAMETER = 155 + SqlLexerSTRING_LITERAL = 156 + SqlLexerBLOB_LITERAL = 157 + SqlLexerSINGLE_LINE_COMMENT = 158 + SqlLexerMULTILINE_COMMENT = 159 + SqlLexerSPACES = 160 + SqlLexerUNEXPECTED_CHAR = 161 +) diff --git a/processor/stream_processor/test/parser/sql_lexer_test.go b/processor/stream_processor/test/parser/sql_lexer_test.go new file mode 100644 index 000000000000..4603c91a3798 --- /dev/null +++ b/processor/stream_processor/test/parser/sql_lexer_test.go @@ -0,0 +1,22 @@ +package parser + +import ( + "fmt" + "github.com/antlr/antlr4/runtime/Go/antlr" + "testing" +) + +func TestSelectExpr(t *testing.T) { + is := antlr.NewInputStream(`SELEct field1, field2 WHERE field3 > 3 and field4 IS 'test';`) + lexer := NewSqlLexer(is) + + for { + t := lexer.NextToken() + if t.GetTokenType() == antlr.TokenEOF { + break + } + fmt.Printf("%s (%q)\n", + lexer.SymbolicNames[t.GetTokenType()], t.GetText()) + } + +} diff --git a/processor/stream_processor/test/parser/sql_listener.go b/processor/stream_processor/test/parser/sql_listener.go new file mode 100644 index 000000000000..ba0842380a66 --- /dev/null +++ b/processor/stream_processor/test/parser/sql_listener.go @@ -0,0 +1,598 @@ +// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. + +package parser // Sql + +import "github.com/antlr/antlr4/runtime/Go/antlr" + +// SqlListener is a complete listener for a parse tree produced by SqlParser. +type SqlListener interface { + antlr.ParseTreeListener + + // EnterParse is called when entering the parse production. + EnterParse(c *ParseContext) + + // EnterError is called when entering the error production. + EnterError(c *ErrorContext) + + // EnterSql_stmt_list is called when entering the sql_stmt_list production. + EnterSql_stmt_list(c *Sql_stmt_listContext) + + // EnterSql_stmt is called when entering the sql_stmt production. + EnterSql_stmt(c *Sql_stmtContext) + + // EnterAlter_table_stmt is called when entering the alter_table_stmt production. + EnterAlter_table_stmt(c *Alter_table_stmtContext) + + // EnterAlter_table_add_constraint is called when entering the alter_table_add_constraint production. + EnterAlter_table_add_constraint(c *Alter_table_add_constraintContext) + + // EnterAlter_table_add is called when entering the alter_table_add production. + EnterAlter_table_add(c *Alter_table_addContext) + + // EnterAnalyze_stmt is called when entering the analyze_stmt production. + EnterAnalyze_stmt(c *Analyze_stmtContext) + + // EnterAttach_stmt is called when entering the attach_stmt production. + EnterAttach_stmt(c *Attach_stmtContext) + + // EnterBegin_stmt is called when entering the begin_stmt production. + EnterBegin_stmt(c *Begin_stmtContext) + + // EnterCommit_stmt is called when entering the commit_stmt production. + EnterCommit_stmt(c *Commit_stmtContext) + + // EnterCompound_select_stmt is called when entering the compound_select_stmt production. + EnterCompound_select_stmt(c *Compound_select_stmtContext) + + // EnterCreate_index_stmt is called when entering the create_index_stmt production. + EnterCreate_index_stmt(c *Create_index_stmtContext) + + // EnterCreate_table_stmt is called when entering the create_table_stmt production. + EnterCreate_table_stmt(c *Create_table_stmtContext) + + // EnterCreate_trigger_stmt is called when entering the create_trigger_stmt production. + EnterCreate_trigger_stmt(c *Create_trigger_stmtContext) + + // EnterCreate_view_stmt is called when entering the create_view_stmt production. + EnterCreate_view_stmt(c *Create_view_stmtContext) + + // EnterCreate_virtual_table_stmt is called when entering the create_virtual_table_stmt production. + EnterCreate_virtual_table_stmt(c *Create_virtual_table_stmtContext) + + // EnterDelete_stmt is called when entering the delete_stmt production. + EnterDelete_stmt(c *Delete_stmtContext) + + // EnterDelete_stmt_limited is called when entering the delete_stmt_limited production. + EnterDelete_stmt_limited(c *Delete_stmt_limitedContext) + + // EnterDetach_stmt is called when entering the detach_stmt production. + EnterDetach_stmt(c *Detach_stmtContext) + + // EnterDrop_index_stmt is called when entering the drop_index_stmt production. + EnterDrop_index_stmt(c *Drop_index_stmtContext) + + // EnterDrop_table_stmt is called when entering the drop_table_stmt production. + EnterDrop_table_stmt(c *Drop_table_stmtContext) + + // EnterDrop_trigger_stmt is called when entering the drop_trigger_stmt production. + EnterDrop_trigger_stmt(c *Drop_trigger_stmtContext) + + // EnterDrop_view_stmt is called when entering the drop_view_stmt production. + EnterDrop_view_stmt(c *Drop_view_stmtContext) + + // EnterFactored_select_stmt is called when entering the factored_select_stmt production. + EnterFactored_select_stmt(c *Factored_select_stmtContext) + + // EnterInsert_stmt is called when entering the insert_stmt production. + EnterInsert_stmt(c *Insert_stmtContext) + + // EnterPragma_stmt is called when entering the pragma_stmt production. + EnterPragma_stmt(c *Pragma_stmtContext) + + // EnterReindex_stmt is called when entering the reindex_stmt production. + EnterReindex_stmt(c *Reindex_stmtContext) + + // EnterRelease_stmt is called when entering the release_stmt production. + EnterRelease_stmt(c *Release_stmtContext) + + // EnterRollback_stmt is called when entering the rollback_stmt production. + EnterRollback_stmt(c *Rollback_stmtContext) + + // EnterSavepoint_stmt is called when entering the savepoint_stmt production. + EnterSavepoint_stmt(c *Savepoint_stmtContext) + + // EnterSimple_select_stmt is called when entering the simple_select_stmt production. + EnterSimple_select_stmt(c *Simple_select_stmtContext) + + // EnterSelect_stmt is called when entering the select_stmt production. + EnterSelect_stmt(c *Select_stmtContext) + + // EnterSelect_or_values is called when entering the select_or_values production. + EnterSelect_or_values(c *Select_or_valuesContext) + + // EnterUpdate_stmt is called when entering the update_stmt production. + EnterUpdate_stmt(c *Update_stmtContext) + + // EnterUpdate_stmt_limited is called when entering the update_stmt_limited production. + EnterUpdate_stmt_limited(c *Update_stmt_limitedContext) + + // EnterVacuum_stmt is called when entering the vacuum_stmt production. + EnterVacuum_stmt(c *Vacuum_stmtContext) + + // EnterColumn_def is called when entering the column_def production. + EnterColumn_def(c *Column_defContext) + + // EnterType_name is called when entering the type_name production. + EnterType_name(c *Type_nameContext) + + // EnterColumn_constraint is called when entering the column_constraint production. + EnterColumn_constraint(c *Column_constraintContext) + + // EnterColumn_constraint_primary_key is called when entering the column_constraint_primary_key production. + EnterColumn_constraint_primary_key(c *Column_constraint_primary_keyContext) + + // EnterColumn_constraint_foreign_key is called when entering the column_constraint_foreign_key production. + EnterColumn_constraint_foreign_key(c *Column_constraint_foreign_keyContext) + + // EnterColumn_constraint_not_null is called when entering the column_constraint_not_null production. + EnterColumn_constraint_not_null(c *Column_constraint_not_nullContext) + + // EnterColumn_constraint_null is called when entering the column_constraint_null production. + EnterColumn_constraint_null(c *Column_constraint_nullContext) + + // EnterColumn_default is called when entering the column_default production. + EnterColumn_default(c *Column_defaultContext) + + // EnterColumn_default_value is called when entering the column_default_value production. + EnterColumn_default_value(c *Column_default_valueContext) + + // EnterConflict_clause is called when entering the conflict_clause production. + EnterConflict_clause(c *Conflict_clauseContext) + + // EnterExpr is called when entering the expr production. + EnterExpr(c *ExprContext) + + // EnterForeign_key_clause is called when entering the foreign_key_clause production. + EnterForeign_key_clause(c *Foreign_key_clauseContext) + + // EnterFk_target_column_name is called when entering the fk_target_column_name production. + EnterFk_target_column_name(c *Fk_target_column_nameContext) + + // EnterRaise_function is called when entering the raise_function production. + EnterRaise_function(c *Raise_functionContext) + + // EnterIndexed_column is called when entering the indexed_column production. + EnterIndexed_column(c *Indexed_columnContext) + + // EnterTable_constraint is called when entering the table_constraint production. + EnterTable_constraint(c *Table_constraintContext) + + // EnterTable_constraint_primary_key is called when entering the table_constraint_primary_key production. + EnterTable_constraint_primary_key(c *Table_constraint_primary_keyContext) + + // EnterTable_constraint_foreign_key is called when entering the table_constraint_foreign_key production. + EnterTable_constraint_foreign_key(c *Table_constraint_foreign_keyContext) + + // EnterTable_constraint_unique is called when entering the table_constraint_unique production. + EnterTable_constraint_unique(c *Table_constraint_uniqueContext) + + // EnterTable_constraint_key is called when entering the table_constraint_key production. + EnterTable_constraint_key(c *Table_constraint_keyContext) + + // EnterFk_origin_column_name is called when entering the fk_origin_column_name production. + EnterFk_origin_column_name(c *Fk_origin_column_nameContext) + + // EnterWith_clause is called when entering the with_clause production. + EnterWith_clause(c *With_clauseContext) + + // EnterQualified_table_name is called when entering the qualified_table_name production. + EnterQualified_table_name(c *Qualified_table_nameContext) + + // EnterOrdering_term is called when entering the ordering_term production. + EnterOrdering_term(c *Ordering_termContext) + + // EnterPragma_value is called when entering the pragma_value production. + EnterPragma_value(c *Pragma_valueContext) + + // EnterCommon_table_expression is called when entering the common_table_expression production. + EnterCommon_table_expression(c *Common_table_expressionContext) + + // EnterResult_column is called when entering the result_column production. + EnterResult_column(c *Result_columnContext) + + // EnterTable_or_subquery is called when entering the table_or_subquery production. + EnterTable_or_subquery(c *Table_or_subqueryContext) + + // EnterJoin_clause is called when entering the join_clause production. + EnterJoin_clause(c *Join_clauseContext) + + // EnterJoin_operator is called when entering the join_operator production. + EnterJoin_operator(c *Join_operatorContext) + + // EnterJoin_constraint is called when entering the join_constraint production. + EnterJoin_constraint(c *Join_constraintContext) + + // EnterSelect_core is called when entering the select_core production. + EnterSelect_core(c *Select_coreContext) + + // EnterCompound_operator is called when entering the compound_operator production. + EnterCompound_operator(c *Compound_operatorContext) + + // EnterCte_table_name is called when entering the cte_table_name production. + EnterCte_table_name(c *Cte_table_nameContext) + + // EnterSigned_number is called when entering the signed_number production. + EnterSigned_number(c *Signed_numberContext) + + // EnterLiteral_value is called when entering the literal_value production. + EnterLiteral_value(c *Literal_valueContext) + + // EnterUnary_operator is called when entering the unary_operator production. + EnterUnary_operator(c *Unary_operatorContext) + + // EnterError_message is called when entering the error_message production. + EnterError_message(c *Error_messageContext) + + // EnterModule_argument is called when entering the module_argument production. + EnterModule_argument(c *Module_argumentContext) + + // EnterColumn_alias is called when entering the column_alias production. + EnterColumn_alias(c *Column_aliasContext) + + // EnterKeyword is called when entering the keyword production. + EnterKeyword(c *KeywordContext) + + // EnterUnknown is called when entering the unknown production. + EnterUnknown(c *UnknownContext) + + // EnterName is called when entering the name production. + EnterName(c *NameContext) + + // EnterFunction_name is called when entering the function_name production. + EnterFunction_name(c *Function_nameContext) + + // EnterDatabase_name is called when entering the database_name production. + EnterDatabase_name(c *Database_nameContext) + + // EnterSource_table_name is called when entering the source_table_name production. + EnterSource_table_name(c *Source_table_nameContext) + + // EnterTable_name is called when entering the table_name production. + EnterTable_name(c *Table_nameContext) + + // EnterTable_or_index_name is called when entering the table_or_index_name production. + EnterTable_or_index_name(c *Table_or_index_nameContext) + + // EnterNew_table_name is called when entering the new_table_name production. + EnterNew_table_name(c *New_table_nameContext) + + // EnterColumn_name is called when entering the column_name production. + EnterColumn_name(c *Column_nameContext) + + // EnterCollation_name is called when entering the collation_name production. + EnterCollation_name(c *Collation_nameContext) + + // EnterForeign_table is called when entering the foreign_table production. + EnterForeign_table(c *Foreign_tableContext) + + // EnterIndex_name is called when entering the index_name production. + EnterIndex_name(c *Index_nameContext) + + // EnterTrigger_name is called when entering the trigger_name production. + EnterTrigger_name(c *Trigger_nameContext) + + // EnterView_name is called when entering the view_name production. + EnterView_name(c *View_nameContext) + + // EnterModule_name is called when entering the module_name production. + EnterModule_name(c *Module_nameContext) + + // EnterPragma_name is called when entering the pragma_name production. + EnterPragma_name(c *Pragma_nameContext) + + // EnterSavepoint_name is called when entering the savepoint_name production. + EnterSavepoint_name(c *Savepoint_nameContext) + + // EnterTable_alias is called when entering the table_alias production. + EnterTable_alias(c *Table_aliasContext) + + // EnterTransaction_name is called when entering the transaction_name production. + EnterTransaction_name(c *Transaction_nameContext) + + // EnterAny_name is called when entering the any_name production. + EnterAny_name(c *Any_nameContext) + + // ExitParse is called when exiting the parse production. + ExitParse(c *ParseContext) + + // ExitError is called when exiting the error production. + ExitError(c *ErrorContext) + + // ExitSql_stmt_list is called when exiting the sql_stmt_list production. + ExitSql_stmt_list(c *Sql_stmt_listContext) + + // ExitSql_stmt is called when exiting the sql_stmt production. + ExitSql_stmt(c *Sql_stmtContext) + + // ExitAlter_table_stmt is called when exiting the alter_table_stmt production. + ExitAlter_table_stmt(c *Alter_table_stmtContext) + + // ExitAlter_table_add_constraint is called when exiting the alter_table_add_constraint production. + ExitAlter_table_add_constraint(c *Alter_table_add_constraintContext) + + // ExitAlter_table_add is called when exiting the alter_table_add production. + ExitAlter_table_add(c *Alter_table_addContext) + + // ExitAnalyze_stmt is called when exiting the analyze_stmt production. + ExitAnalyze_stmt(c *Analyze_stmtContext) + + // ExitAttach_stmt is called when exiting the attach_stmt production. + ExitAttach_stmt(c *Attach_stmtContext) + + // ExitBegin_stmt is called when exiting the begin_stmt production. + ExitBegin_stmt(c *Begin_stmtContext) + + // ExitCommit_stmt is called when exiting the commit_stmt production. + ExitCommit_stmt(c *Commit_stmtContext) + + // ExitCompound_select_stmt is called when exiting the compound_select_stmt production. + ExitCompound_select_stmt(c *Compound_select_stmtContext) + + // ExitCreate_index_stmt is called when exiting the create_index_stmt production. + ExitCreate_index_stmt(c *Create_index_stmtContext) + + // ExitCreate_table_stmt is called when exiting the create_table_stmt production. + ExitCreate_table_stmt(c *Create_table_stmtContext) + + // ExitCreate_trigger_stmt is called when exiting the create_trigger_stmt production. + ExitCreate_trigger_stmt(c *Create_trigger_stmtContext) + + // ExitCreate_view_stmt is called when exiting the create_view_stmt production. + ExitCreate_view_stmt(c *Create_view_stmtContext) + + // ExitCreate_virtual_table_stmt is called when exiting the create_virtual_table_stmt production. + ExitCreate_virtual_table_stmt(c *Create_virtual_table_stmtContext) + + // ExitDelete_stmt is called when exiting the delete_stmt production. + ExitDelete_stmt(c *Delete_stmtContext) + + // ExitDelete_stmt_limited is called when exiting the delete_stmt_limited production. + ExitDelete_stmt_limited(c *Delete_stmt_limitedContext) + + // ExitDetach_stmt is called when exiting the detach_stmt production. + ExitDetach_stmt(c *Detach_stmtContext) + + // ExitDrop_index_stmt is called when exiting the drop_index_stmt production. + ExitDrop_index_stmt(c *Drop_index_stmtContext) + + // ExitDrop_table_stmt is called when exiting the drop_table_stmt production. + ExitDrop_table_stmt(c *Drop_table_stmtContext) + + // ExitDrop_trigger_stmt is called when exiting the drop_trigger_stmt production. + ExitDrop_trigger_stmt(c *Drop_trigger_stmtContext) + + // ExitDrop_view_stmt is called when exiting the drop_view_stmt production. + ExitDrop_view_stmt(c *Drop_view_stmtContext) + + // ExitFactored_select_stmt is called when exiting the factored_select_stmt production. + ExitFactored_select_stmt(c *Factored_select_stmtContext) + + // ExitInsert_stmt is called when exiting the insert_stmt production. + ExitInsert_stmt(c *Insert_stmtContext) + + // ExitPragma_stmt is called when exiting the pragma_stmt production. + ExitPragma_stmt(c *Pragma_stmtContext) + + // ExitReindex_stmt is called when exiting the reindex_stmt production. + ExitReindex_stmt(c *Reindex_stmtContext) + + // ExitRelease_stmt is called when exiting the release_stmt production. + ExitRelease_stmt(c *Release_stmtContext) + + // ExitRollback_stmt is called when exiting the rollback_stmt production. + ExitRollback_stmt(c *Rollback_stmtContext) + + // ExitSavepoint_stmt is called when exiting the savepoint_stmt production. + ExitSavepoint_stmt(c *Savepoint_stmtContext) + + // ExitSimple_select_stmt is called when exiting the simple_select_stmt production. + ExitSimple_select_stmt(c *Simple_select_stmtContext) + + // ExitSelect_stmt is called when exiting the select_stmt production. + ExitSelect_stmt(c *Select_stmtContext) + + // ExitSelect_or_values is called when exiting the select_or_values production. + ExitSelect_or_values(c *Select_or_valuesContext) + + // ExitUpdate_stmt is called when exiting the update_stmt production. + ExitUpdate_stmt(c *Update_stmtContext) + + // ExitUpdate_stmt_limited is called when exiting the update_stmt_limited production. + ExitUpdate_stmt_limited(c *Update_stmt_limitedContext) + + // ExitVacuum_stmt is called when exiting the vacuum_stmt production. + ExitVacuum_stmt(c *Vacuum_stmtContext) + + // ExitColumn_def is called when exiting the column_def production. + ExitColumn_def(c *Column_defContext) + + // ExitType_name is called when exiting the type_name production. + ExitType_name(c *Type_nameContext) + + // ExitColumn_constraint is called when exiting the column_constraint production. + ExitColumn_constraint(c *Column_constraintContext) + + // ExitColumn_constraint_primary_key is called when exiting the column_constraint_primary_key production. + ExitColumn_constraint_primary_key(c *Column_constraint_primary_keyContext) + + // ExitColumn_constraint_foreign_key is called when exiting the column_constraint_foreign_key production. + ExitColumn_constraint_foreign_key(c *Column_constraint_foreign_keyContext) + + // ExitColumn_constraint_not_null is called when exiting the column_constraint_not_null production. + ExitColumn_constraint_not_null(c *Column_constraint_not_nullContext) + + // ExitColumn_constraint_null is called when exiting the column_constraint_null production. + ExitColumn_constraint_null(c *Column_constraint_nullContext) + + // ExitColumn_default is called when exiting the column_default production. + ExitColumn_default(c *Column_defaultContext) + + // ExitColumn_default_value is called when exiting the column_default_value production. + ExitColumn_default_value(c *Column_default_valueContext) + + // ExitConflict_clause is called when exiting the conflict_clause production. + ExitConflict_clause(c *Conflict_clauseContext) + + // ExitExpr is called when exiting the expr production. + ExitExpr(c *ExprContext) + + // ExitForeign_key_clause is called when exiting the foreign_key_clause production. + ExitForeign_key_clause(c *Foreign_key_clauseContext) + + // ExitFk_target_column_name is called when exiting the fk_target_column_name production. + ExitFk_target_column_name(c *Fk_target_column_nameContext) + + // ExitRaise_function is called when exiting the raise_function production. + ExitRaise_function(c *Raise_functionContext) + + // ExitIndexed_column is called when exiting the indexed_column production. + ExitIndexed_column(c *Indexed_columnContext) + + // ExitTable_constraint is called when exiting the table_constraint production. + ExitTable_constraint(c *Table_constraintContext) + + // ExitTable_constraint_primary_key is called when exiting the table_constraint_primary_key production. + ExitTable_constraint_primary_key(c *Table_constraint_primary_keyContext) + + // ExitTable_constraint_foreign_key is called when exiting the table_constraint_foreign_key production. + ExitTable_constraint_foreign_key(c *Table_constraint_foreign_keyContext) + + // ExitTable_constraint_unique is called when exiting the table_constraint_unique production. + ExitTable_constraint_unique(c *Table_constraint_uniqueContext) + + // ExitTable_constraint_key is called when exiting the table_constraint_key production. + ExitTable_constraint_key(c *Table_constraint_keyContext) + + // ExitFk_origin_column_name is called when exiting the fk_origin_column_name production. + ExitFk_origin_column_name(c *Fk_origin_column_nameContext) + + // ExitWith_clause is called when exiting the with_clause production. + ExitWith_clause(c *With_clauseContext) + + // ExitQualified_table_name is called when exiting the qualified_table_name production. + ExitQualified_table_name(c *Qualified_table_nameContext) + + // ExitOrdering_term is called when exiting the ordering_term production. + ExitOrdering_term(c *Ordering_termContext) + + // ExitPragma_value is called when exiting the pragma_value production. + ExitPragma_value(c *Pragma_valueContext) + + // ExitCommon_table_expression is called when exiting the common_table_expression production. + ExitCommon_table_expression(c *Common_table_expressionContext) + + // ExitResult_column is called when exiting the result_column production. + ExitResult_column(c *Result_columnContext) + + // ExitTable_or_subquery is called when exiting the table_or_subquery production. + ExitTable_or_subquery(c *Table_or_subqueryContext) + + // ExitJoin_clause is called when exiting the join_clause production. + ExitJoin_clause(c *Join_clauseContext) + + // ExitJoin_operator is called when exiting the join_operator production. + ExitJoin_operator(c *Join_operatorContext) + + // ExitJoin_constraint is called when exiting the join_constraint production. + ExitJoin_constraint(c *Join_constraintContext) + + // ExitSelect_core is called when exiting the select_core production. + ExitSelect_core(c *Select_coreContext) + + // ExitCompound_operator is called when exiting the compound_operator production. + ExitCompound_operator(c *Compound_operatorContext) + + // ExitCte_table_name is called when exiting the cte_table_name production. + ExitCte_table_name(c *Cte_table_nameContext) + + // ExitSigned_number is called when exiting the signed_number production. + ExitSigned_number(c *Signed_numberContext) + + // ExitLiteral_value is called when exiting the literal_value production. + ExitLiteral_value(c *Literal_valueContext) + + // ExitUnary_operator is called when exiting the unary_operator production. + ExitUnary_operator(c *Unary_operatorContext) + + // ExitError_message is called when exiting the error_message production. + ExitError_message(c *Error_messageContext) + + // ExitModule_argument is called when exiting the module_argument production. + ExitModule_argument(c *Module_argumentContext) + + // ExitColumn_alias is called when exiting the column_alias production. + ExitColumn_alias(c *Column_aliasContext) + + // ExitKeyword is called when exiting the keyword production. + ExitKeyword(c *KeywordContext) + + // ExitUnknown is called when exiting the unknown production. + ExitUnknown(c *UnknownContext) + + // ExitName is called when exiting the name production. + ExitName(c *NameContext) + + // ExitFunction_name is called when exiting the function_name production. + ExitFunction_name(c *Function_nameContext) + + // ExitDatabase_name is called when exiting the database_name production. + ExitDatabase_name(c *Database_nameContext) + + // ExitSource_table_name is called when exiting the source_table_name production. + ExitSource_table_name(c *Source_table_nameContext) + + // ExitTable_name is called when exiting the table_name production. + ExitTable_name(c *Table_nameContext) + + // ExitTable_or_index_name is called when exiting the table_or_index_name production. + ExitTable_or_index_name(c *Table_or_index_nameContext) + + // ExitNew_table_name is called when exiting the new_table_name production. + ExitNew_table_name(c *New_table_nameContext) + + // ExitColumn_name is called when exiting the column_name production. + ExitColumn_name(c *Column_nameContext) + + // ExitCollation_name is called when exiting the collation_name production. + ExitCollation_name(c *Collation_nameContext) + + // ExitForeign_table is called when exiting the foreign_table production. + ExitForeign_table(c *Foreign_tableContext) + + // ExitIndex_name is called when exiting the index_name production. + ExitIndex_name(c *Index_nameContext) + + // ExitTrigger_name is called when exiting the trigger_name production. + ExitTrigger_name(c *Trigger_nameContext) + + // ExitView_name is called when exiting the view_name production. + ExitView_name(c *View_nameContext) + + // ExitModule_name is called when exiting the module_name production. + ExitModule_name(c *Module_nameContext) + + // ExitPragma_name is called when exiting the pragma_name production. + ExitPragma_name(c *Pragma_nameContext) + + // ExitSavepoint_name is called when exiting the savepoint_name production. + ExitSavepoint_name(c *Savepoint_nameContext) + + // ExitTable_alias is called when exiting the table_alias production. + ExitTable_alias(c *Table_aliasContext) + + // ExitTransaction_name is called when exiting the transaction_name production. + ExitTransaction_name(c *Transaction_nameContext) + + // ExitAny_name is called when exiting the any_name production. + ExitAny_name(c *Any_nameContext) +} diff --git a/processor/stream_processor/test/parser/sql_parser.go b/processor/stream_processor/test/parser/sql_parser.go new file mode 100644 index 000000000000..0670d6c28003 --- /dev/null +++ b/processor/stream_processor/test/parser/sql_parser.go @@ -0,0 +1,25479 @@ +// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. + +package parser // Sql + +import ( + "fmt" + "strconv" + "sync" + + "github.com/antlr/antlr4/runtime/Go/antlr" +) + +// Suppress unused import errors +var _ = fmt.Printf +var _ = strconv.Itoa +var _ = sync.Once{} + + +type SqlParser struct { + *antlr.BaseParser +} + +var sqlParserStaticData struct { + once sync.Once + serializedATN []int32 + literalNames []string + symbolicNames []string + ruleNames []string + predictionContextCache *antlr.PredictionContextCache + atn *antlr.ATN + decisionToDFA []*antlr.DFA +} + +func sqlParserInit() { + staticData := &sqlParserStaticData + staticData.literalNames = []string{ + "", "'::'", "';'", "'.'", "'('", "')'", "','", "'='", "'*'", "'+'", + "'-'", "'~'", "'||'", "'/'", "'%'", "'<<'", "'>>'", "'&'", "'|'", "'<'", + "'<='", "'>'", "'>='", "'=='", "'!='", "'<>'", + } + staticData.symbolicNames = []string{ + "", "", "SCOL", "DOT", "OPEN_PAR", "CLOSE_PAR", "COMMA", "ASSIGN", "STAR", + "PLUS", "MINUS", "TILDE", "PIPE2", "DIV", "MOD", "LT2", "GT2", "AMP", + "PIPE", "LT", "LT_EQ", "GT", "GT_EQ", "EQ", "NOT_EQ1", "NOT_EQ2", "K_ABORT", + "K_ACTION", "K_ADD", "K_AFTER", "K_ALL", "K_ALTER", "K_ANALYZE", "K_AND", + "K_AS", "K_ASC", "K_ATTACH", "K_AUTOINCREMENT", "K_BEFORE", "K_BEGIN", + "K_BETWEEN", "K_BY", "K_CASCADE", "K_CASE", "K_CAST", "K_CHECK", "K_COLLATE", + "K_COLUMN", "K_COMMIT", "K_CONFLICT", "K_CONSTRAINT", "K_CREATE", "K_CROSS", + "K_CURRENT_DATE", "K_CURRENT_TIME", "K_CURRENT_TIMESTAMP", "K_DATABASE", + "K_DEFAULT", "K_DEFERRABLE", "K_DEFERRED", "K_DELETE", "K_DESC", "K_DETACH", + "K_DISTINCT", "K_DROP", "K_EACH", "K_ELSE", "K_END", "K_ENABLE", "K_ESCAPE", + "K_EXCEPT", "K_EXCLUSIVE", "K_EXISTS", "K_EXPLAIN", "K_FAIL", "K_FOR", + "K_FOREIGN", "K_FROM", "K_FULL", "K_GLOB", "K_GROUP", "K_HAVING", "K_IF", + "K_IGNORE", "K_IMMEDIATE", "K_IN", "K_INDEX", "K_INDEXED", "K_INITIALLY", + "K_INNER", "K_INSERT", "K_INSTEAD", "K_INTERSECT", "K_INTO", "K_IS", + "K_ISNULL", "K_JOIN", "K_KEY", "K_LEFT", "K_LIKE", "K_LIMIT", "K_MATCH", + "K_NATURAL", "K_NEXTVAL", "K_NO", "K_NOT", "K_NOTNULL", "K_NULL", "K_OF", + "K_OFFSET", "K_ON", "K_ONLY", "K_OR", "K_ORDER", "K_OUTER", "K_PLAN", + "K_PRAGMA", "K_PRIMARY", "K_QUERY", "K_RAISE", "K_RECURSIVE", "K_REFERENCES", + "K_REGEXP", "K_REINDEX", "K_RELEASE", "K_RENAME", "K_REPLACE", "K_RESTRICT", + "K_RIGHT", "K_ROLLBACK", "K_ROW", "K_SAVEPOINT", "K_SELECT", "K_SET", + "K_TABLE", "K_TEMP", "K_TEMPORARY", "K_THEN", "K_TO", "K_TRANSACTION", + "K_TRIGGER", "K_UNION", "K_UNIQUE", "K_UPDATE", "K_USING", "K_VACUUM", + "K_VALUES", "K_VIEW", "K_VIRTUAL", "K_WHEN", "K_WHERE", "K_WITH", "K_WITHOUT", + "IDENTIFIER", "NUMERIC_LITERAL", "BIND_PARAMETER", "STRING_LITERAL", + "BLOB_LITERAL", "SINGLE_LINE_COMMENT", "MULTILINE_COMMENT", "SPACES", + "UNEXPECTED_CHAR", + } + staticData.ruleNames = []string{ + "parse", "error", "sql_stmt_list", "sql_stmt", "alter_table_stmt", "alter_table_add_constraint", + "alter_table_add", "analyze_stmt", "attach_stmt", "begin_stmt", "commit_stmt", + "compound_select_stmt", "create_index_stmt", "create_table_stmt", "create_trigger_stmt", + "create_view_stmt", "create_virtual_table_stmt", "delete_stmt", "delete_stmt_limited", + "detach_stmt", "drop_index_stmt", "drop_table_stmt", "drop_trigger_stmt", + "drop_view_stmt", "factored_select_stmt", "insert_stmt", "pragma_stmt", + "reindex_stmt", "release_stmt", "rollback_stmt", "savepoint_stmt", "simple_select_stmt", + "select_stmt", "select_or_values", "update_stmt", "update_stmt_limited", + "vacuum_stmt", "column_def", "type_name", "column_constraint", "column_constraint_primary_key", + "column_constraint_foreign_key", "column_constraint_not_null", "column_constraint_null", + "column_default", "column_default_value", "conflict_clause", "expr", + "foreign_key_clause", "fk_target_column_name", "raise_function", "indexed_column", + "table_constraint", "table_constraint_primary_key", "table_constraint_foreign_key", + "table_constraint_unique", "table_constraint_key", "fk_origin_column_name", + "with_clause", "qualified_table_name", "ordering_term", "pragma_value", + "common_table_expression", "result_column", "table_or_subquery", "join_clause", + "join_operator", "join_constraint", "select_core", "compound_operator", + "cte_table_name", "signed_number", "literal_value", "unary_operator", + "error_message", "module_argument", "column_alias", "keyword", "unknown", + "name", "function_name", "database_name", "source_table_name", "table_name", + "table_or_index_name", "new_table_name", "column_name", "collation_name", + "foreign_table", "index_name", "trigger_name", "view_name", "module_name", + "pragma_name", "savepoint_name", "table_alias", "transaction_name", + "any_name", + } + staticData.predictionContextCache = antlr.NewPredictionContextCache() + staticData.serializedATN = []int32{ + 4, 1, 161, 1866, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, + 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, + 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, + 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, + 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, + 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, + 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, + 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, + 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, + 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, + 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, + 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, + 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, + 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, + 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, + 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, + 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, + 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, + 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 1, 0, 1, 0, 5, 0, 199, + 8, 0, 10, 0, 12, 0, 202, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 5, 2, + 210, 8, 2, 10, 2, 12, 2, 213, 9, 2, 1, 2, 1, 2, 4, 2, 217, 8, 2, 11, 2, + 12, 2, 218, 1, 2, 5, 2, 222, 8, 2, 10, 2, 12, 2, 225, 9, 2, 1, 2, 5, 2, + 228, 8, 2, 10, 2, 12, 2, 231, 9, 2, 1, 3, 1, 3, 1, 3, 3, 3, 236, 8, 3, + 3, 3, 238, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, + 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, + 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 270, 8, 3, + 1, 4, 1, 4, 1, 4, 3, 4, 275, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 280, 8, 4, 1, + 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 290, 8, 4, 1, 4, 3, + 4, 293, 8, 4, 1, 4, 3, 4, 296, 8, 4, 1, 4, 3, 4, 299, 8, 4, 1, 5, 1, 5, + 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, + 1, 7, 3, 7, 316, 8, 7, 1, 8, 1, 8, 3, 8, 320, 8, 8, 1, 8, 1, 8, 1, 8, 1, + 8, 1, 9, 1, 9, 3, 9, 328, 8, 9, 1, 9, 1, 9, 3, 9, 332, 8, 9, 3, 9, 334, + 8, 9, 1, 10, 1, 10, 1, 10, 3, 10, 339, 8, 10, 3, 10, 341, 8, 10, 1, 11, + 1, 11, 3, 11, 345, 8, 11, 1, 11, 1, 11, 1, 11, 5, 11, 350, 8, 11, 10, 11, + 12, 11, 353, 9, 11, 3, 11, 355, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 360, + 8, 11, 1, 11, 1, 11, 3, 11, 364, 8, 11, 1, 11, 4, 11, 367, 8, 11, 11, 11, + 12, 11, 368, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 376, 8, 11, 10, + 11, 12, 11, 379, 9, 11, 3, 11, 381, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, + 3, 11, 387, 8, 11, 3, 11, 389, 8, 11, 1, 12, 1, 12, 3, 12, 393, 8, 12, + 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 399, 8, 12, 1, 12, 1, 12, 1, 12, 3, + 12, 404, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, + 413, 8, 12, 10, 12, 12, 12, 416, 9, 12, 1, 12, 1, 12, 1, 12, 3, 12, 421, + 8, 12, 1, 13, 1, 13, 3, 13, 425, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, + 13, 431, 8, 13, 1, 13, 1, 13, 1, 13, 3, 13, 436, 8, 13, 1, 13, 1, 13, 1, + 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 445, 8, 13, 10, 13, 12, 13, 448, + 9, 13, 1, 13, 1, 13, 1, 13, 3, 13, 453, 8, 13, 1, 13, 1, 13, 3, 13, 457, + 8, 13, 1, 13, 3, 13, 460, 8, 13, 1, 14, 1, 14, 3, 14, 464, 8, 14, 1, 14, + 1, 14, 1, 14, 1, 14, 3, 14, 470, 8, 14, 1, 14, 1, 14, 1, 14, 3, 14, 475, + 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 482, 8, 14, 1, 14, 1, + 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 491, 8, 14, 10, 14, 12, 14, + 494, 9, 14, 3, 14, 496, 8, 14, 3, 14, 498, 8, 14, 1, 14, 1, 14, 1, 14, + 1, 14, 3, 14, 504, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 510, 8, 14, + 1, 14, 1, 14, 3, 14, 514, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, + 14, 521, 8, 14, 1, 14, 1, 14, 4, 14, 525, 8, 14, 11, 14, 12, 14, 526, 1, + 14, 1, 14, 1, 15, 1, 15, 3, 15, 533, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, + 3, 15, 539, 8, 15, 1, 15, 1, 15, 1, 15, 3, 15, 544, 8, 15, 1, 15, 1, 15, + 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 556, 8, + 16, 1, 16, 1, 16, 1, 16, 3, 16, 561, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, + 1, 16, 1, 16, 1, 16, 5, 16, 570, 8, 16, 10, 16, 12, 16, 573, 9, 16, 1, + 16, 1, 16, 3, 16, 577, 8, 16, 1, 17, 3, 17, 580, 8, 17, 1, 17, 1, 17, 1, + 17, 1, 17, 1, 17, 3, 17, 587, 8, 17, 1, 18, 3, 18, 590, 8, 18, 1, 18, 1, + 18, 1, 18, 1, 18, 1, 18, 3, 18, 597, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, + 1, 18, 5, 18, 604, 8, 18, 10, 18, 12, 18, 607, 9, 18, 3, 18, 609, 8, 18, + 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 615, 8, 18, 3, 18, 617, 8, 18, 1, 19, + 1, 19, 3, 19, 621, 8, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, + 20, 629, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 634, 8, 20, 1, 20, 1, 20, 1, + 21, 1, 21, 1, 21, 1, 21, 3, 21, 642, 8, 21, 1, 21, 1, 21, 1, 21, 3, 21, + 647, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 655, 8, 22, + 1, 22, 1, 22, 1, 22, 3, 22, 660, 8, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, + 23, 1, 23, 3, 23, 668, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 673, 8, 23, 1, + 23, 1, 23, 1, 24, 1, 24, 3, 24, 679, 8, 24, 1, 24, 1, 24, 1, 24, 5, 24, + 684, 8, 24, 10, 24, 12, 24, 687, 9, 24, 3, 24, 689, 8, 24, 1, 24, 1, 24, + 1, 24, 1, 24, 5, 24, 695, 8, 24, 10, 24, 12, 24, 698, 9, 24, 1, 24, 1, + 24, 1, 24, 1, 24, 1, 24, 5, 24, 705, 8, 24, 10, 24, 12, 24, 708, 9, 24, + 3, 24, 710, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 716, 8, 24, 3, 24, + 718, 8, 24, 1, 25, 3, 25, 721, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, + 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, + 25, 1, 25, 3, 25, 740, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 746, 8, + 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 753, 8, 25, 10, 25, 12, 25, + 756, 9, 25, 1, 25, 1, 25, 3, 25, 760, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, + 1, 25, 5, 25, 767, 8, 25, 10, 25, 12, 25, 770, 9, 25, 1, 25, 1, 25, 1, + 25, 1, 25, 1, 25, 1, 25, 5, 25, 778, 8, 25, 10, 25, 12, 25, 781, 9, 25, + 1, 25, 1, 25, 5, 25, 785, 8, 25, 10, 25, 12, 25, 788, 9, 25, 1, 25, 1, + 25, 1, 25, 3, 25, 793, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 799, 8, + 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 808, 8, 26, + 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 815, 8, 27, 1, 27, 1, 27, 3, + 27, 819, 8, 27, 3, 27, 821, 8, 27, 1, 28, 1, 28, 3, 28, 825, 8, 28, 1, + 28, 1, 28, 1, 29, 1, 29, 1, 29, 3, 29, 832, 8, 29, 3, 29, 834, 8, 29, 1, + 29, 1, 29, 3, 29, 838, 8, 29, 1, 29, 3, 29, 841, 8, 29, 1, 30, 1, 30, 1, + 30, 1, 31, 1, 31, 3, 31, 848, 8, 31, 1, 31, 1, 31, 1, 31, 5, 31, 853, 8, + 31, 10, 31, 12, 31, 856, 9, 31, 3, 31, 858, 8, 31, 1, 31, 1, 31, 1, 31, + 1, 31, 1, 31, 1, 31, 5, 31, 866, 8, 31, 10, 31, 12, 31, 869, 9, 31, 3, + 31, 871, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 877, 8, 31, 3, 31, 879, + 8, 31, 1, 32, 1, 32, 3, 32, 883, 8, 32, 1, 32, 1, 32, 1, 32, 5, 32, 888, + 8, 32, 10, 32, 12, 32, 891, 9, 32, 3, 32, 893, 8, 32, 1, 32, 1, 32, 1, + 32, 1, 32, 5, 32, 899, 8, 32, 10, 32, 12, 32, 902, 9, 32, 1, 32, 1, 32, + 1, 32, 1, 32, 1, 32, 5, 32, 909, 8, 32, 10, 32, 12, 32, 912, 9, 32, 3, + 32, 914, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 920, 8, 32, 3, 32, 922, + 8, 32, 1, 33, 1, 33, 3, 33, 926, 8, 33, 1, 33, 1, 33, 1, 33, 5, 33, 931, + 8, 33, 10, 33, 12, 33, 934, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 940, + 8, 33, 10, 33, 12, 33, 943, 9, 33, 1, 33, 3, 33, 946, 8, 33, 3, 33, 948, + 8, 33, 1, 33, 1, 33, 3, 33, 952, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, + 33, 5, 33, 959, 8, 33, 10, 33, 12, 33, 962, 9, 33, 1, 33, 1, 33, 3, 33, + 966, 8, 33, 3, 33, 968, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, + 975, 8, 33, 10, 33, 12, 33, 978, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, + 33, 1, 33, 5, 33, 986, 8, 33, 10, 33, 12, 33, 989, 9, 33, 1, 33, 1, 33, + 5, 33, 993, 8, 33, 10, 33, 12, 33, 996, 9, 33, 3, 33, 998, 8, 33, 1, 34, + 3, 34, 1001, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, + 34, 1, 34, 1, 34, 1, 34, 3, 34, 1014, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, + 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 1026, 8, 34, 10, 34, 12, + 34, 1029, 9, 34, 1, 34, 1, 34, 3, 34, 1033, 8, 34, 1, 35, 3, 35, 1036, + 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, + 35, 1, 35, 3, 35, 1049, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, + 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 1061, 8, 35, 10, 35, 12, 35, 1064, 9, + 35, 1, 35, 1, 35, 3, 35, 1068, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, + 5, 35, 1075, 8, 35, 10, 35, 12, 35, 1078, 9, 35, 3, 35, 1080, 8, 35, 1, + 35, 1, 35, 1, 35, 1, 35, 3, 35, 1086, 8, 35, 3, 35, 1088, 8, 35, 1, 36, + 1, 36, 1, 37, 1, 37, 1, 37, 5, 37, 1095, 8, 37, 10, 37, 12, 37, 1098, 9, + 37, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1104, 8, 38, 1, 38, 1, 38, 1, 38, + 1, 38, 1, 38, 3, 38, 1111, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1116, 8, + 38, 1, 38, 1, 38, 3, 38, 1120, 8, 38, 1, 39, 1, 39, 3, 39, 1124, 8, 39, + 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, + 39, 1, 39, 1, 39, 1, 39, 3, 39, 1140, 8, 39, 1, 40, 1, 40, 1, 40, 3, 40, + 1145, 8, 40, 1, 40, 1, 40, 3, 40, 1149, 8, 40, 1, 41, 1, 41, 1, 42, 1, + 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, + 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1172, 8, 44, 1, + 44, 1, 44, 4, 44, 1176, 8, 44, 11, 44, 12, 44, 1177, 3, 44, 1180, 8, 44, + 1, 45, 1, 45, 3, 45, 1184, 8, 45, 1, 46, 1, 46, 1, 46, 3, 46, 1189, 8, + 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1197, 8, 47, 1, 47, + 1, 47, 1, 47, 3, 47, 1202, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, + 47, 1, 47, 3, 47, 1211, 8, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1216, 8, 47, + 10, 47, 12, 47, 1219, 9, 47, 1, 47, 3, 47, 1222, 8, 47, 1, 47, 1, 47, 1, + 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, + 1, 47, 3, 47, 1238, 8, 47, 1, 47, 3, 47, 1241, 8, 47, 1, 47, 1, 47, 1, + 47, 1, 47, 1, 47, 1, 47, 3, 47, 1249, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, + 1, 47, 4, 47, 1256, 8, 47, 11, 47, 12, 47, 1257, 1, 47, 1, 47, 3, 47, 1262, + 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1267, 8, 47, 1, 47, 1, 47, 1, 47, 1, + 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, + 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, + 47, 1, 47, 1, 47, 1, 47, 3, 47, 1297, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, + 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1309, 8, 47, 1, 47, 1, + 47, 1, 47, 3, 47, 1314, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, + 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1326, 8, 47, 1, 47, 1, 47, 1, 47, 1, + 47, 3, 47, 1332, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1339, + 8, 47, 1, 47, 1, 47, 3, 47, 1343, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, + 47, 1, 47, 5, 47, 1351, 8, 47, 10, 47, 12, 47, 1354, 9, 47, 3, 47, 1356, + 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1362, 8, 47, 1, 47, 3, 47, 1365, + 8, 47, 5, 47, 1367, 8, 47, 10, 47, 12, 47, 1370, 9, 47, 1, 48, 1, 48, 1, + 48, 1, 48, 3, 48, 1376, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 5, 48, + 1383, 8, 48, 10, 48, 12, 48, 1386, 9, 48, 1, 48, 1, 48, 3, 48, 1390, 8, + 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, + 3, 48, 1402, 8, 48, 1, 48, 1, 48, 3, 48, 1406, 8, 48, 5, 48, 1408, 8, 48, + 10, 48, 12, 48, 1411, 9, 48, 1, 48, 3, 48, 1414, 8, 48, 1, 48, 1, 48, 1, + 48, 1, 48, 1, 48, 3, 48, 1421, 8, 48, 1, 48, 3, 48, 1424, 8, 48, 3, 48, + 1426, 8, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, + 50, 1436, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 3, 51, 1443, 8, 51, + 1, 51, 3, 51, 1446, 8, 51, 1, 52, 1, 52, 3, 52, 1450, 8, 52, 1, 52, 1, + 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1461, 8, 52, + 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1469, 8, 53, 10, 53, 12, + 53, 1472, 9, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, + 1, 54, 5, 54, 1483, 8, 54, 10, 54, 12, 54, 1486, 9, 54, 1, 54, 1, 54, 1, + 54, 1, 55, 1, 55, 3, 55, 1493, 8, 55, 1, 55, 3, 55, 1496, 8, 55, 1, 55, + 1, 55, 1, 55, 1, 55, 5, 55, 1502, 8, 55, 10, 55, 12, 55, 1505, 9, 55, 1, + 55, 1, 55, 1, 55, 1, 56, 1, 56, 3, 56, 1512, 8, 56, 1, 56, 1, 56, 1, 56, + 1, 56, 5, 56, 1518, 8, 56, 10, 56, 12, 56, 1521, 9, 56, 1, 56, 1, 56, 1, + 56, 1, 57, 1, 57, 1, 58, 1, 58, 3, 58, 1530, 8, 58, 1, 58, 1, 58, 1, 58, + 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 1544, + 8, 58, 10, 58, 12, 58, 1547, 9, 58, 1, 59, 1, 59, 1, 59, 3, 59, 1552, 8, + 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1560, 8, 59, 1, 60, + 1, 60, 1, 60, 3, 60, 1565, 8, 60, 1, 60, 3, 60, 1568, 8, 60, 1, 61, 1, + 61, 1, 61, 3, 61, 1573, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, + 1580, 8, 62, 10, 62, 12, 62, 1583, 9, 62, 1, 62, 1, 62, 3, 62, 1587, 8, + 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, + 1, 63, 1, 63, 3, 63, 1601, 8, 63, 1, 63, 3, 63, 1604, 8, 63, 3, 63, 1606, + 8, 63, 1, 64, 1, 64, 1, 64, 3, 64, 1611, 8, 64, 1, 64, 1, 64, 3, 64, 1615, + 8, 64, 1, 64, 3, 64, 1618, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, + 64, 1625, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 1631, 8, 64, 10, 64, + 12, 64, 1634, 9, 64, 1, 64, 3, 64, 1637, 8, 64, 1, 64, 1, 64, 3, 64, 1641, + 8, 64, 1, 64, 3, 64, 1644, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1650, + 8, 64, 1, 64, 3, 64, 1653, 8, 64, 3, 64, 1655, 8, 64, 1, 65, 1, 65, 1, + 65, 1, 65, 1, 65, 5, 65, 1662, 8, 65, 10, 65, 12, 65, 1665, 9, 65, 1, 66, + 1, 66, 3, 66, 1669, 8, 66, 1, 66, 1, 66, 3, 66, 1673, 8, 66, 1, 66, 1, + 66, 3, 66, 1677, 8, 66, 1, 66, 3, 66, 1680, 8, 66, 1, 67, 1, 67, 1, 67, + 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 1689, 8, 67, 10, 67, 12, 67, 1692, 9, + 67, 1, 67, 1, 67, 3, 67, 1696, 8, 67, 1, 68, 1, 68, 3, 68, 1700, 8, 68, + 1, 68, 1, 68, 1, 68, 5, 68, 1705, 8, 68, 10, 68, 12, 68, 1708, 9, 68, 1, + 68, 1, 68, 1, 68, 1, 68, 5, 68, 1714, 8, 68, 10, 68, 12, 68, 1717, 9, 68, + 1, 68, 3, 68, 1720, 8, 68, 3, 68, 1722, 8, 68, 1, 68, 1, 68, 3, 68, 1726, + 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1733, 8, 68, 10, 68, 12, + 68, 1736, 9, 68, 1, 68, 1, 68, 3, 68, 1740, 8, 68, 3, 68, 1742, 8, 68, + 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1749, 8, 68, 10, 68, 12, 68, + 1752, 9, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1760, 8, + 68, 10, 68, 12, 68, 1763, 9, 68, 1, 68, 1, 68, 5, 68, 1767, 8, 68, 10, + 68, 12, 68, 1770, 9, 68, 3, 68, 1772, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, + 1, 69, 3, 69, 1779, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 1786, + 8, 70, 10, 70, 12, 70, 1789, 9, 70, 1, 70, 1, 70, 3, 70, 1793, 8, 70, 1, + 71, 3, 71, 1796, 8, 71, 1, 71, 1, 71, 3, 71, 1800, 8, 71, 1, 72, 1, 72, + 1, 73, 1, 73, 1, 74, 1, 74, 1, 75, 1, 75, 3, 75, 1810, 8, 75, 1, 76, 1, + 76, 1, 77, 1, 77, 1, 78, 4, 78, 1817, 8, 78, 11, 78, 12, 78, 1818, 1, 79, + 1, 79, 1, 80, 1, 80, 1, 81, 1, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, + 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, + 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, + 95, 1, 95, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, + 3, 97, 1864, 8, 97, 1, 97, 0, 1, 94, 98, 0, 2, 4, 6, 8, 10, 12, 14, 16, + 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, + 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, + 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, + 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, + 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, + 182, 184, 186, 188, 190, 192, 194, 0, 18, 3, 0, 59, 59, 71, 71, 84, 84, + 2, 0, 48, 48, 67, 67, 2, 0, 6, 6, 109, 109, 1, 0, 135, 136, 2, 0, 30, 30, + 63, 63, 2, 0, 35, 35, 61, 61, 5, 0, 26, 26, 74, 74, 83, 83, 126, 126, 129, + 129, 2, 0, 8, 8, 13, 14, 1, 0, 9, 10, 1, 0, 15, 18, 1, 0, 19, 22, 4, 0, + 79, 79, 99, 99, 101, 101, 122, 122, 2, 0, 60, 60, 143, 143, 3, 0, 26, 26, + 74, 74, 129, 129, 4, 0, 53, 55, 107, 107, 154, 154, 156, 157, 2, 0, 9, + 11, 105, 105, 2, 0, 153, 153, 156, 156, 2, 0, 26, 110, 112, 152, 2141, + 0, 200, 1, 0, 0, 0, 2, 205, 1, 0, 0, 0, 4, 211, 1, 0, 0, 0, 6, 237, 1, + 0, 0, 0, 8, 271, 1, 0, 0, 0, 10, 300, 1, 0, 0, 0, 12, 305, 1, 0, 0, 0, + 14, 308, 1, 0, 0, 0, 16, 317, 1, 0, 0, 0, 18, 325, 1, 0, 0, 0, 20, 335, + 1, 0, 0, 0, 22, 354, 1, 0, 0, 0, 24, 390, 1, 0, 0, 0, 26, 422, 1, 0, 0, + 0, 28, 461, 1, 0, 0, 0, 30, 530, 1, 0, 0, 0, 32, 549, 1, 0, 0, 0, 34, 579, + 1, 0, 0, 0, 36, 589, 1, 0, 0, 0, 38, 618, 1, 0, 0, 0, 40, 624, 1, 0, 0, + 0, 42, 637, 1, 0, 0, 0, 44, 650, 1, 0, 0, 0, 46, 663, 1, 0, 0, 0, 48, 688, + 1, 0, 0, 0, 50, 720, 1, 0, 0, 0, 52, 794, 1, 0, 0, 0, 54, 809, 1, 0, 0, + 0, 56, 822, 1, 0, 0, 0, 58, 828, 1, 0, 0, 0, 60, 842, 1, 0, 0, 0, 62, 857, + 1, 0, 0, 0, 64, 892, 1, 0, 0, 0, 66, 997, 1, 0, 0, 0, 68, 1000, 1, 0, 0, + 0, 70, 1035, 1, 0, 0, 0, 72, 1089, 1, 0, 0, 0, 74, 1091, 1, 0, 0, 0, 76, + 1099, 1, 0, 0, 0, 78, 1123, 1, 0, 0, 0, 80, 1141, 1, 0, 0, 0, 82, 1150, + 1, 0, 0, 0, 84, 1152, 1, 0, 0, 0, 86, 1156, 1, 0, 0, 0, 88, 1159, 1, 0, + 0, 0, 90, 1183, 1, 0, 0, 0, 92, 1188, 1, 0, 0, 0, 94, 1266, 1, 0, 0, 0, + 96, 1371, 1, 0, 0, 0, 98, 1427, 1, 0, 0, 0, 100, 1429, 1, 0, 0, 0, 102, + 1439, 1, 0, 0, 0, 104, 1449, 1, 0, 0, 0, 106, 1462, 1, 0, 0, 0, 108, 1476, + 1, 0, 0, 0, 110, 1490, 1, 0, 0, 0, 112, 1509, 1, 0, 0, 0, 114, 1525, 1, + 0, 0, 0, 116, 1527, 1, 0, 0, 0, 118, 1551, 1, 0, 0, 0, 120, 1561, 1, 0, + 0, 0, 122, 1572, 1, 0, 0, 0, 124, 1574, 1, 0, 0, 0, 126, 1605, 1, 0, 0, + 0, 128, 1654, 1, 0, 0, 0, 130, 1656, 1, 0, 0, 0, 132, 1679, 1, 0, 0, 0, + 134, 1695, 1, 0, 0, 0, 136, 1771, 1, 0, 0, 0, 138, 1778, 1, 0, 0, 0, 140, + 1780, 1, 0, 0, 0, 142, 1799, 1, 0, 0, 0, 144, 1801, 1, 0, 0, 0, 146, 1803, + 1, 0, 0, 0, 148, 1805, 1, 0, 0, 0, 150, 1809, 1, 0, 0, 0, 152, 1811, 1, + 0, 0, 0, 154, 1813, 1, 0, 0, 0, 156, 1816, 1, 0, 0, 0, 158, 1820, 1, 0, + 0, 0, 160, 1822, 1, 0, 0, 0, 162, 1824, 1, 0, 0, 0, 164, 1826, 1, 0, 0, + 0, 166, 1828, 1, 0, 0, 0, 168, 1830, 1, 0, 0, 0, 170, 1832, 1, 0, 0, 0, + 172, 1834, 1, 0, 0, 0, 174, 1836, 1, 0, 0, 0, 176, 1838, 1, 0, 0, 0, 178, + 1840, 1, 0, 0, 0, 180, 1842, 1, 0, 0, 0, 182, 1844, 1, 0, 0, 0, 184, 1846, + 1, 0, 0, 0, 186, 1848, 1, 0, 0, 0, 188, 1850, 1, 0, 0, 0, 190, 1852, 1, + 0, 0, 0, 192, 1854, 1, 0, 0, 0, 194, 1863, 1, 0, 0, 0, 196, 199, 3, 4, + 2, 0, 197, 199, 3, 2, 1, 0, 198, 196, 1, 0, 0, 0, 198, 197, 1, 0, 0, 0, + 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, + 203, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 204, 5, 0, 0, 1, 204, 1, 1, + 0, 0, 0, 205, 206, 5, 161, 0, 0, 206, 207, 6, 1, -1, 0, 207, 3, 1, 0, 0, + 0, 208, 210, 5, 2, 0, 0, 209, 208, 1, 0, 0, 0, 210, 213, 1, 0, 0, 0, 211, + 209, 1, 0, 0, 0, 211, 212, 1, 0, 0, 0, 212, 214, 1, 0, 0, 0, 213, 211, + 1, 0, 0, 0, 214, 223, 3, 6, 3, 0, 215, 217, 5, 2, 0, 0, 216, 215, 1, 0, + 0, 0, 217, 218, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, + 219, 220, 1, 0, 0, 0, 220, 222, 3, 6, 3, 0, 221, 216, 1, 0, 0, 0, 222, + 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 229, + 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 228, 5, 2, 0, 0, 227, 226, 1, 0, + 0, 0, 228, 231, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, + 230, 5, 1, 0, 0, 0, 231, 229, 1, 0, 0, 0, 232, 235, 5, 73, 0, 0, 233, 234, + 5, 118, 0, 0, 234, 236, 5, 115, 0, 0, 235, 233, 1, 0, 0, 0, 235, 236, 1, + 0, 0, 0, 236, 238, 1, 0, 0, 0, 237, 232, 1, 0, 0, 0, 237, 238, 1, 0, 0, + 0, 238, 269, 1, 0, 0, 0, 239, 270, 3, 8, 4, 0, 240, 270, 3, 14, 7, 0, 241, + 270, 3, 16, 8, 0, 242, 270, 3, 18, 9, 0, 243, 270, 3, 20, 10, 0, 244, 270, + 3, 22, 11, 0, 245, 270, 3, 24, 12, 0, 246, 270, 3, 26, 13, 0, 247, 270, + 3, 28, 14, 0, 248, 270, 3, 30, 15, 0, 249, 270, 3, 32, 16, 0, 250, 270, + 3, 34, 17, 0, 251, 270, 3, 36, 18, 0, 252, 270, 3, 38, 19, 0, 253, 270, + 3, 40, 20, 0, 254, 270, 3, 42, 21, 0, 255, 270, 3, 44, 22, 0, 256, 270, + 3, 46, 23, 0, 257, 270, 3, 48, 24, 0, 258, 270, 3, 50, 25, 0, 259, 270, + 3, 52, 26, 0, 260, 270, 3, 54, 27, 0, 261, 270, 3, 56, 28, 0, 262, 270, + 3, 58, 29, 0, 263, 270, 3, 60, 30, 0, 264, 270, 3, 62, 31, 0, 265, 270, + 3, 64, 32, 0, 266, 270, 3, 68, 34, 0, 267, 270, 3, 70, 35, 0, 268, 270, + 3, 72, 36, 0, 269, 239, 1, 0, 0, 0, 269, 240, 1, 0, 0, 0, 269, 241, 1, + 0, 0, 0, 269, 242, 1, 0, 0, 0, 269, 243, 1, 0, 0, 0, 269, 244, 1, 0, 0, + 0, 269, 245, 1, 0, 0, 0, 269, 246, 1, 0, 0, 0, 269, 247, 1, 0, 0, 0, 269, + 248, 1, 0, 0, 0, 269, 249, 1, 0, 0, 0, 269, 250, 1, 0, 0, 0, 269, 251, + 1, 0, 0, 0, 269, 252, 1, 0, 0, 0, 269, 253, 1, 0, 0, 0, 269, 254, 1, 0, + 0, 0, 269, 255, 1, 0, 0, 0, 269, 256, 1, 0, 0, 0, 269, 257, 1, 0, 0, 0, + 269, 258, 1, 0, 0, 0, 269, 259, 1, 0, 0, 0, 269, 260, 1, 0, 0, 0, 269, + 261, 1, 0, 0, 0, 269, 262, 1, 0, 0, 0, 269, 263, 1, 0, 0, 0, 269, 264, + 1, 0, 0, 0, 269, 265, 1, 0, 0, 0, 269, 266, 1, 0, 0, 0, 269, 267, 1, 0, + 0, 0, 269, 268, 1, 0, 0, 0, 270, 7, 1, 0, 0, 0, 271, 272, 5, 31, 0, 0, + 272, 274, 5, 134, 0, 0, 273, 275, 5, 111, 0, 0, 274, 273, 1, 0, 0, 0, 274, + 275, 1, 0, 0, 0, 275, 279, 1, 0, 0, 0, 276, 277, 3, 162, 81, 0, 277, 278, + 5, 3, 0, 0, 278, 280, 1, 0, 0, 0, 279, 276, 1, 0, 0, 0, 279, 280, 1, 0, + 0, 0, 280, 281, 1, 0, 0, 0, 281, 292, 3, 164, 82, 0, 282, 283, 5, 125, + 0, 0, 283, 284, 5, 138, 0, 0, 284, 293, 3, 170, 85, 0, 285, 293, 3, 12, + 6, 0, 286, 293, 3, 10, 5, 0, 287, 289, 5, 28, 0, 0, 288, 290, 5, 47, 0, + 0, 289, 288, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 291, 1, 0, 0, 0, 291, + 293, 3, 74, 37, 0, 292, 282, 1, 0, 0, 0, 292, 285, 1, 0, 0, 0, 292, 286, + 1, 0, 0, 0, 292, 287, 1, 0, 0, 0, 293, 295, 1, 0, 0, 0, 294, 296, 5, 68, + 0, 0, 295, 294, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 298, 1, 0, 0, 0, + 297, 299, 3, 156, 78, 0, 298, 297, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, 299, + 9, 1, 0, 0, 0, 300, 301, 5, 28, 0, 0, 301, 302, 5, 50, 0, 0, 302, 303, + 3, 194, 97, 0, 303, 304, 3, 104, 52, 0, 304, 11, 1, 0, 0, 0, 305, 306, + 5, 28, 0, 0, 306, 307, 3, 104, 52, 0, 307, 13, 1, 0, 0, 0, 308, 315, 5, + 32, 0, 0, 309, 316, 3, 162, 81, 0, 310, 316, 3, 168, 84, 0, 311, 312, 3, + 162, 81, 0, 312, 313, 5, 3, 0, 0, 313, 314, 3, 168, 84, 0, 314, 316, 1, + 0, 0, 0, 315, 309, 1, 0, 0, 0, 315, 310, 1, 0, 0, 0, 315, 311, 1, 0, 0, + 0, 315, 316, 1, 0, 0, 0, 316, 15, 1, 0, 0, 0, 317, 319, 5, 36, 0, 0, 318, + 320, 5, 56, 0, 0, 319, 318, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 321, + 1, 0, 0, 0, 321, 322, 3, 94, 47, 0, 322, 323, 5, 34, 0, 0, 323, 324, 3, + 162, 81, 0, 324, 17, 1, 0, 0, 0, 325, 327, 5, 39, 0, 0, 326, 328, 7, 0, + 0, 0, 327, 326, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 333, 1, 0, 0, 0, + 329, 331, 5, 139, 0, 0, 330, 332, 3, 192, 96, 0, 331, 330, 1, 0, 0, 0, + 331, 332, 1, 0, 0, 0, 332, 334, 1, 0, 0, 0, 333, 329, 1, 0, 0, 0, 333, + 334, 1, 0, 0, 0, 334, 19, 1, 0, 0, 0, 335, 340, 7, 1, 0, 0, 336, 338, 5, + 139, 0, 0, 337, 339, 3, 192, 96, 0, 338, 337, 1, 0, 0, 0, 338, 339, 1, + 0, 0, 0, 339, 341, 1, 0, 0, 0, 340, 336, 1, 0, 0, 0, 340, 341, 1, 0, 0, + 0, 341, 21, 1, 0, 0, 0, 342, 344, 5, 151, 0, 0, 343, 345, 5, 120, 0, 0, + 344, 343, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, + 351, 3, 124, 62, 0, 347, 348, 5, 6, 0, 0, 348, 350, 3, 124, 62, 0, 349, + 347, 1, 0, 0, 0, 350, 353, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 352, + 1, 0, 0, 0, 352, 355, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 354, 342, 1, 0, + 0, 0, 354, 355, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 366, 3, 136, 68, + 0, 357, 359, 5, 141, 0, 0, 358, 360, 5, 30, 0, 0, 359, 358, 1, 0, 0, 0, + 359, 360, 1, 0, 0, 0, 360, 364, 1, 0, 0, 0, 361, 364, 5, 92, 0, 0, 362, + 364, 5, 70, 0, 0, 363, 357, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 363, 362, + 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 367, 3, 136, 68, 0, 366, 363, 1, + 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, + 0, 369, 380, 1, 0, 0, 0, 370, 371, 5, 113, 0, 0, 371, 372, 5, 41, 0, 0, + 372, 377, 3, 120, 60, 0, 373, 374, 5, 6, 0, 0, 374, 376, 3, 120, 60, 0, + 375, 373, 1, 0, 0, 0, 376, 379, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, + 378, 1, 0, 0, 0, 378, 381, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 380, 370, + 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 388, 1, 0, 0, 0, 382, 383, 5, 100, + 0, 0, 383, 386, 3, 94, 47, 0, 384, 385, 7, 2, 0, 0, 385, 387, 3, 94, 47, + 0, 386, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 389, 1, 0, 0, 0, 388, + 382, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 23, 1, 0, 0, 0, 390, 392, 5, + 51, 0, 0, 391, 393, 5, 142, 0, 0, 392, 391, 1, 0, 0, 0, 392, 393, 1, 0, + 0, 0, 393, 394, 1, 0, 0, 0, 394, 398, 5, 86, 0, 0, 395, 396, 5, 82, 0, + 0, 396, 397, 5, 105, 0, 0, 397, 399, 5, 72, 0, 0, 398, 395, 1, 0, 0, 0, + 398, 399, 1, 0, 0, 0, 399, 403, 1, 0, 0, 0, 400, 401, 3, 162, 81, 0, 401, + 402, 5, 3, 0, 0, 402, 404, 1, 0, 0, 0, 403, 400, 1, 0, 0, 0, 403, 404, + 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, 406, 3, 178, 89, 0, 406, 407, 5, + 110, 0, 0, 407, 408, 3, 166, 83, 0, 408, 409, 5, 4, 0, 0, 409, 414, 3, + 102, 51, 0, 410, 411, 5, 6, 0, 0, 411, 413, 3, 102, 51, 0, 412, 410, 1, + 0, 0, 0, 413, 416, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 414, 415, 1, 0, 0, + 0, 415, 417, 1, 0, 0, 0, 416, 414, 1, 0, 0, 0, 417, 420, 5, 5, 0, 0, 418, + 419, 5, 150, 0, 0, 419, 421, 3, 94, 47, 0, 420, 418, 1, 0, 0, 0, 420, 421, + 1, 0, 0, 0, 421, 25, 1, 0, 0, 0, 422, 424, 5, 51, 0, 0, 423, 425, 7, 3, + 0, 0, 424, 423, 1, 0, 0, 0, 424, 425, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, + 426, 430, 5, 134, 0, 0, 427, 428, 5, 82, 0, 0, 428, 429, 5, 105, 0, 0, + 429, 431, 5, 72, 0, 0, 430, 427, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, + 435, 1, 0, 0, 0, 432, 433, 3, 162, 81, 0, 433, 434, 5, 3, 0, 0, 434, 436, + 1, 0, 0, 0, 435, 432, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 437, 1, 0, + 0, 0, 437, 456, 3, 166, 83, 0, 438, 439, 5, 4, 0, 0, 439, 446, 3, 74, 37, + 0, 440, 441, 5, 6, 0, 0, 441, 445, 3, 104, 52, 0, 442, 443, 5, 6, 0, 0, + 443, 445, 3, 74, 37, 0, 444, 440, 1, 0, 0, 0, 444, 442, 1, 0, 0, 0, 445, + 448, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 449, + 1, 0, 0, 0, 448, 446, 1, 0, 0, 0, 449, 452, 5, 5, 0, 0, 450, 451, 5, 152, + 0, 0, 451, 453, 5, 153, 0, 0, 452, 450, 1, 0, 0, 0, 452, 453, 1, 0, 0, + 0, 453, 457, 1, 0, 0, 0, 454, 455, 5, 34, 0, 0, 455, 457, 3, 64, 32, 0, + 456, 438, 1, 0, 0, 0, 456, 454, 1, 0, 0, 0, 457, 459, 1, 0, 0, 0, 458, + 460, 3, 156, 78, 0, 459, 458, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 27, + 1, 0, 0, 0, 461, 463, 5, 51, 0, 0, 462, 464, 7, 3, 0, 0, 463, 462, 1, 0, + 0, 0, 463, 464, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 469, 5, 140, 0, + 0, 466, 467, 5, 82, 0, 0, 467, 468, 5, 105, 0, 0, 468, 470, 5, 72, 0, 0, + 469, 466, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 474, 1, 0, 0, 0, 471, + 472, 3, 162, 81, 0, 472, 473, 5, 3, 0, 0, 473, 475, 1, 0, 0, 0, 474, 471, + 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 481, 3, 180, + 90, 0, 477, 482, 5, 38, 0, 0, 478, 482, 5, 29, 0, 0, 479, 480, 5, 91, 0, + 0, 480, 482, 5, 108, 0, 0, 481, 477, 1, 0, 0, 0, 481, 478, 1, 0, 0, 0, + 481, 479, 1, 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 497, 1, 0, 0, 0, 483, + 498, 5, 60, 0, 0, 484, 498, 5, 90, 0, 0, 485, 495, 5, 143, 0, 0, 486, 487, + 5, 108, 0, 0, 487, 492, 3, 172, 86, 0, 488, 489, 5, 6, 0, 0, 489, 491, + 3, 172, 86, 0, 490, 488, 1, 0, 0, 0, 491, 494, 1, 0, 0, 0, 492, 490, 1, + 0, 0, 0, 492, 493, 1, 0, 0, 0, 493, 496, 1, 0, 0, 0, 494, 492, 1, 0, 0, + 0, 495, 486, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 498, 1, 0, 0, 0, 497, + 483, 1, 0, 0, 0, 497, 484, 1, 0, 0, 0, 497, 485, 1, 0, 0, 0, 498, 499, + 1, 0, 0, 0, 499, 503, 5, 110, 0, 0, 500, 501, 3, 162, 81, 0, 501, 502, + 5, 3, 0, 0, 502, 504, 1, 0, 0, 0, 503, 500, 1, 0, 0, 0, 503, 504, 1, 0, + 0, 0, 504, 505, 1, 0, 0, 0, 505, 509, 3, 166, 83, 0, 506, 507, 5, 75, 0, + 0, 507, 508, 5, 65, 0, 0, 508, 510, 5, 130, 0, 0, 509, 506, 1, 0, 0, 0, + 509, 510, 1, 0, 0, 0, 510, 513, 1, 0, 0, 0, 511, 512, 5, 149, 0, 0, 512, + 514, 3, 94, 47, 0, 513, 511, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 515, + 1, 0, 0, 0, 515, 524, 5, 39, 0, 0, 516, 521, 3, 68, 34, 0, 517, 521, 3, + 50, 25, 0, 518, 521, 3, 34, 17, 0, 519, 521, 3, 64, 32, 0, 520, 516, 1, + 0, 0, 0, 520, 517, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 520, 519, 1, 0, 0, + 0, 521, 522, 1, 0, 0, 0, 522, 523, 5, 2, 0, 0, 523, 525, 1, 0, 0, 0, 524, + 520, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 524, 1, 0, 0, 0, 526, 527, + 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 529, 5, 67, 0, 0, 529, 29, 1, 0, + 0, 0, 530, 532, 5, 51, 0, 0, 531, 533, 7, 3, 0, 0, 532, 531, 1, 0, 0, 0, + 532, 533, 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534, 538, 5, 147, 0, 0, 535, + 536, 5, 82, 0, 0, 536, 537, 5, 105, 0, 0, 537, 539, 5, 72, 0, 0, 538, 535, + 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 543, 1, 0, 0, 0, 540, 541, 3, 162, + 81, 0, 541, 542, 5, 3, 0, 0, 542, 544, 1, 0, 0, 0, 543, 540, 1, 0, 0, 0, + 543, 544, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 3, 182, 91, 0, 546, + 547, 5, 34, 0, 0, 547, 548, 3, 64, 32, 0, 548, 31, 1, 0, 0, 0, 549, 550, + 5, 51, 0, 0, 550, 551, 5, 148, 0, 0, 551, 555, 5, 134, 0, 0, 552, 553, + 5, 82, 0, 0, 553, 554, 5, 105, 0, 0, 554, 556, 5, 72, 0, 0, 555, 552, 1, + 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 560, 1, 0, 0, 0, 557, 558, 3, 162, + 81, 0, 558, 559, 5, 3, 0, 0, 559, 561, 1, 0, 0, 0, 560, 557, 1, 0, 0, 0, + 560, 561, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 3, 166, 83, 0, 563, + 564, 5, 144, 0, 0, 564, 576, 3, 184, 92, 0, 565, 566, 5, 4, 0, 0, 566, + 571, 3, 150, 75, 0, 567, 568, 5, 6, 0, 0, 568, 570, 3, 150, 75, 0, 569, + 567, 1, 0, 0, 0, 570, 573, 1, 0, 0, 0, 571, 569, 1, 0, 0, 0, 571, 572, + 1, 0, 0, 0, 572, 574, 1, 0, 0, 0, 573, 571, 1, 0, 0, 0, 574, 575, 5, 5, + 0, 0, 575, 577, 1, 0, 0, 0, 576, 565, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, + 577, 33, 1, 0, 0, 0, 578, 580, 3, 116, 58, 0, 579, 578, 1, 0, 0, 0, 579, + 580, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 5, 60, 0, 0, 582, 583, + 5, 77, 0, 0, 583, 586, 3, 118, 59, 0, 584, 585, 5, 150, 0, 0, 585, 587, + 3, 94, 47, 0, 586, 584, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 35, 1, 0, + 0, 0, 588, 590, 3, 116, 58, 0, 589, 588, 1, 0, 0, 0, 589, 590, 1, 0, 0, + 0, 590, 591, 1, 0, 0, 0, 591, 592, 5, 60, 0, 0, 592, 593, 5, 77, 0, 0, + 593, 596, 3, 118, 59, 0, 594, 595, 5, 150, 0, 0, 595, 597, 3, 94, 47, 0, + 596, 594, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 616, 1, 0, 0, 0, 598, + 599, 5, 113, 0, 0, 599, 600, 5, 41, 0, 0, 600, 605, 3, 120, 60, 0, 601, + 602, 5, 6, 0, 0, 602, 604, 3, 120, 60, 0, 603, 601, 1, 0, 0, 0, 604, 607, + 1, 0, 0, 0, 605, 603, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 609, 1, 0, + 0, 0, 607, 605, 1, 0, 0, 0, 608, 598, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, + 609, 610, 1, 0, 0, 0, 610, 611, 5, 100, 0, 0, 611, 614, 3, 94, 47, 0, 612, + 613, 7, 2, 0, 0, 613, 615, 3, 94, 47, 0, 614, 612, 1, 0, 0, 0, 614, 615, + 1, 0, 0, 0, 615, 617, 1, 0, 0, 0, 616, 608, 1, 0, 0, 0, 616, 617, 1, 0, + 0, 0, 617, 37, 1, 0, 0, 0, 618, 620, 5, 62, 0, 0, 619, 621, 5, 56, 0, 0, + 620, 619, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 622, 1, 0, 0, 0, 622, + 623, 3, 162, 81, 0, 623, 39, 1, 0, 0, 0, 624, 625, 5, 64, 0, 0, 625, 628, + 5, 86, 0, 0, 626, 627, 5, 82, 0, 0, 627, 629, 5, 72, 0, 0, 628, 626, 1, + 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 633, 1, 0, 0, 0, 630, 631, 3, 162, + 81, 0, 631, 632, 5, 3, 0, 0, 632, 634, 1, 0, 0, 0, 633, 630, 1, 0, 0, 0, + 633, 634, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 636, 3, 178, 89, 0, 636, + 41, 1, 0, 0, 0, 637, 638, 5, 64, 0, 0, 638, 641, 5, 134, 0, 0, 639, 640, + 5, 82, 0, 0, 640, 642, 5, 72, 0, 0, 641, 639, 1, 0, 0, 0, 641, 642, 1, + 0, 0, 0, 642, 646, 1, 0, 0, 0, 643, 644, 3, 162, 81, 0, 644, 645, 5, 3, + 0, 0, 645, 647, 1, 0, 0, 0, 646, 643, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, + 647, 648, 1, 0, 0, 0, 648, 649, 3, 166, 83, 0, 649, 43, 1, 0, 0, 0, 650, + 651, 5, 64, 0, 0, 651, 654, 5, 140, 0, 0, 652, 653, 5, 82, 0, 0, 653, 655, + 5, 72, 0, 0, 654, 652, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 659, 1, 0, + 0, 0, 656, 657, 3, 162, 81, 0, 657, 658, 5, 3, 0, 0, 658, 660, 1, 0, 0, + 0, 659, 656, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 661, 1, 0, 0, 0, 661, + 662, 3, 180, 90, 0, 662, 45, 1, 0, 0, 0, 663, 664, 5, 64, 0, 0, 664, 667, + 5, 147, 0, 0, 665, 666, 5, 82, 0, 0, 666, 668, 5, 72, 0, 0, 667, 665, 1, + 0, 0, 0, 667, 668, 1, 0, 0, 0, 668, 672, 1, 0, 0, 0, 669, 670, 3, 162, + 81, 0, 670, 671, 5, 3, 0, 0, 671, 673, 1, 0, 0, 0, 672, 669, 1, 0, 0, 0, + 672, 673, 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 675, 3, 182, 91, 0, 675, + 47, 1, 0, 0, 0, 676, 678, 5, 151, 0, 0, 677, 679, 5, 120, 0, 0, 678, 677, + 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 685, 3, 124, + 62, 0, 681, 682, 5, 6, 0, 0, 682, 684, 3, 124, 62, 0, 683, 681, 1, 0, 0, + 0, 684, 687, 1, 0, 0, 0, 685, 683, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, + 689, 1, 0, 0, 0, 687, 685, 1, 0, 0, 0, 688, 676, 1, 0, 0, 0, 688, 689, + 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 696, 3, 136, 68, 0, 691, 692, 3, + 138, 69, 0, 692, 693, 3, 136, 68, 0, 693, 695, 1, 0, 0, 0, 694, 691, 1, + 0, 0, 0, 695, 698, 1, 0, 0, 0, 696, 694, 1, 0, 0, 0, 696, 697, 1, 0, 0, + 0, 697, 709, 1, 0, 0, 0, 698, 696, 1, 0, 0, 0, 699, 700, 5, 113, 0, 0, + 700, 701, 5, 41, 0, 0, 701, 706, 3, 120, 60, 0, 702, 703, 5, 6, 0, 0, 703, + 705, 3, 120, 60, 0, 704, 702, 1, 0, 0, 0, 705, 708, 1, 0, 0, 0, 706, 704, + 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 710, 1, 0, 0, 0, 708, 706, 1, 0, + 0, 0, 709, 699, 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 710, 717, 1, 0, 0, 0, + 711, 712, 5, 100, 0, 0, 712, 715, 3, 94, 47, 0, 713, 714, 7, 2, 0, 0, 714, + 716, 3, 94, 47, 0, 715, 713, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 718, + 1, 0, 0, 0, 717, 711, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 49, 1, 0, + 0, 0, 719, 721, 3, 116, 58, 0, 720, 719, 1, 0, 0, 0, 720, 721, 1, 0, 0, + 0, 721, 739, 1, 0, 0, 0, 722, 740, 5, 90, 0, 0, 723, 740, 5, 126, 0, 0, + 724, 725, 5, 90, 0, 0, 725, 726, 5, 112, 0, 0, 726, 740, 5, 126, 0, 0, + 727, 728, 5, 90, 0, 0, 728, 729, 5, 112, 0, 0, 729, 740, 5, 129, 0, 0, + 730, 731, 5, 90, 0, 0, 731, 732, 5, 112, 0, 0, 732, 740, 5, 26, 0, 0, 733, + 734, 5, 90, 0, 0, 734, 735, 5, 112, 0, 0, 735, 740, 5, 74, 0, 0, 736, 737, + 5, 90, 0, 0, 737, 738, 5, 112, 0, 0, 738, 740, 5, 83, 0, 0, 739, 722, 1, + 0, 0, 0, 739, 723, 1, 0, 0, 0, 739, 724, 1, 0, 0, 0, 739, 727, 1, 0, 0, + 0, 739, 730, 1, 0, 0, 0, 739, 733, 1, 0, 0, 0, 739, 736, 1, 0, 0, 0, 740, + 741, 1, 0, 0, 0, 741, 745, 5, 93, 0, 0, 742, 743, 3, 162, 81, 0, 743, 744, + 5, 3, 0, 0, 744, 746, 1, 0, 0, 0, 745, 742, 1, 0, 0, 0, 745, 746, 1, 0, + 0, 0, 746, 747, 1, 0, 0, 0, 747, 759, 3, 166, 83, 0, 748, 749, 5, 4, 0, + 0, 749, 754, 3, 172, 86, 0, 750, 751, 5, 6, 0, 0, 751, 753, 3, 172, 86, + 0, 752, 750, 1, 0, 0, 0, 753, 756, 1, 0, 0, 0, 754, 752, 1, 0, 0, 0, 754, + 755, 1, 0, 0, 0, 755, 757, 1, 0, 0, 0, 756, 754, 1, 0, 0, 0, 757, 758, + 5, 5, 0, 0, 758, 760, 1, 0, 0, 0, 759, 748, 1, 0, 0, 0, 759, 760, 1, 0, + 0, 0, 760, 792, 1, 0, 0, 0, 761, 762, 5, 146, 0, 0, 762, 763, 5, 4, 0, + 0, 763, 768, 3, 94, 47, 0, 764, 765, 5, 6, 0, 0, 765, 767, 3, 94, 47, 0, + 766, 764, 1, 0, 0, 0, 767, 770, 1, 0, 0, 0, 768, 766, 1, 0, 0, 0, 768, + 769, 1, 0, 0, 0, 769, 771, 1, 0, 0, 0, 770, 768, 1, 0, 0, 0, 771, 786, + 5, 5, 0, 0, 772, 773, 5, 6, 0, 0, 773, 774, 5, 4, 0, 0, 774, 779, 3, 94, + 47, 0, 775, 776, 5, 6, 0, 0, 776, 778, 3, 94, 47, 0, 777, 775, 1, 0, 0, + 0, 778, 781, 1, 0, 0, 0, 779, 777, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, + 782, 1, 0, 0, 0, 781, 779, 1, 0, 0, 0, 782, 783, 5, 5, 0, 0, 783, 785, + 1, 0, 0, 0, 784, 772, 1, 0, 0, 0, 785, 788, 1, 0, 0, 0, 786, 784, 1, 0, + 0, 0, 786, 787, 1, 0, 0, 0, 787, 793, 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, + 789, 793, 3, 64, 32, 0, 790, 791, 5, 57, 0, 0, 791, 793, 5, 146, 0, 0, + 792, 761, 1, 0, 0, 0, 792, 789, 1, 0, 0, 0, 792, 790, 1, 0, 0, 0, 793, + 51, 1, 0, 0, 0, 794, 798, 5, 116, 0, 0, 795, 796, 3, 162, 81, 0, 796, 797, + 5, 3, 0, 0, 797, 799, 1, 0, 0, 0, 798, 795, 1, 0, 0, 0, 798, 799, 1, 0, + 0, 0, 799, 800, 1, 0, 0, 0, 800, 807, 3, 186, 93, 0, 801, 802, 5, 7, 0, + 0, 802, 808, 3, 122, 61, 0, 803, 804, 5, 4, 0, 0, 804, 805, 3, 122, 61, + 0, 805, 806, 5, 5, 0, 0, 806, 808, 1, 0, 0, 0, 807, 801, 1, 0, 0, 0, 807, + 803, 1, 0, 0, 0, 807, 808, 1, 0, 0, 0, 808, 53, 1, 0, 0, 0, 809, 820, 5, + 123, 0, 0, 810, 821, 3, 174, 87, 0, 811, 812, 3, 162, 81, 0, 812, 813, + 5, 3, 0, 0, 813, 815, 1, 0, 0, 0, 814, 811, 1, 0, 0, 0, 814, 815, 1, 0, + 0, 0, 815, 818, 1, 0, 0, 0, 816, 819, 3, 166, 83, 0, 817, 819, 3, 178, + 89, 0, 818, 816, 1, 0, 0, 0, 818, 817, 1, 0, 0, 0, 819, 821, 1, 0, 0, 0, + 820, 810, 1, 0, 0, 0, 820, 814, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, + 55, 1, 0, 0, 0, 822, 824, 5, 124, 0, 0, 823, 825, 5, 131, 0, 0, 824, 823, + 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 826, 1, 0, 0, 0, 826, 827, 3, 188, + 94, 0, 827, 57, 1, 0, 0, 0, 828, 833, 5, 129, 0, 0, 829, 831, 5, 139, 0, + 0, 830, 832, 3, 192, 96, 0, 831, 830, 1, 0, 0, 0, 831, 832, 1, 0, 0, 0, + 832, 834, 1, 0, 0, 0, 833, 829, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, + 840, 1, 0, 0, 0, 835, 837, 5, 138, 0, 0, 836, 838, 5, 131, 0, 0, 837, 836, + 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 841, 3, 188, + 94, 0, 840, 835, 1, 0, 0, 0, 840, 841, 1, 0, 0, 0, 841, 59, 1, 0, 0, 0, + 842, 843, 5, 131, 0, 0, 843, 844, 3, 188, 94, 0, 844, 61, 1, 0, 0, 0, 845, + 847, 5, 151, 0, 0, 846, 848, 5, 120, 0, 0, 847, 846, 1, 0, 0, 0, 847, 848, + 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 854, 3, 124, 62, 0, 850, 851, 5, + 6, 0, 0, 851, 853, 3, 124, 62, 0, 852, 850, 1, 0, 0, 0, 853, 856, 1, 0, + 0, 0, 854, 852, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 858, 1, 0, 0, 0, + 856, 854, 1, 0, 0, 0, 857, 845, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, + 859, 1, 0, 0, 0, 859, 870, 3, 136, 68, 0, 860, 861, 5, 113, 0, 0, 861, + 862, 5, 41, 0, 0, 862, 867, 3, 120, 60, 0, 863, 864, 5, 6, 0, 0, 864, 866, + 3, 120, 60, 0, 865, 863, 1, 0, 0, 0, 866, 869, 1, 0, 0, 0, 867, 865, 1, + 0, 0, 0, 867, 868, 1, 0, 0, 0, 868, 871, 1, 0, 0, 0, 869, 867, 1, 0, 0, + 0, 870, 860, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871, 878, 1, 0, 0, 0, 872, + 873, 5, 100, 0, 0, 873, 876, 3, 94, 47, 0, 874, 875, 7, 2, 0, 0, 875, 877, + 3, 94, 47, 0, 876, 874, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 879, 1, + 0, 0, 0, 878, 872, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 63, 1, 0, 0, + 0, 880, 882, 5, 151, 0, 0, 881, 883, 5, 120, 0, 0, 882, 881, 1, 0, 0, 0, + 882, 883, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 889, 3, 124, 62, 0, 885, + 886, 5, 6, 0, 0, 886, 888, 3, 124, 62, 0, 887, 885, 1, 0, 0, 0, 888, 891, + 1, 0, 0, 0, 889, 887, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 893, 1, 0, + 0, 0, 891, 889, 1, 0, 0, 0, 892, 880, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, + 893, 894, 1, 0, 0, 0, 894, 900, 3, 66, 33, 0, 895, 896, 3, 138, 69, 0, + 896, 897, 3, 66, 33, 0, 897, 899, 1, 0, 0, 0, 898, 895, 1, 0, 0, 0, 899, + 902, 1, 0, 0, 0, 900, 898, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 913, + 1, 0, 0, 0, 902, 900, 1, 0, 0, 0, 903, 904, 5, 113, 0, 0, 904, 905, 5, + 41, 0, 0, 905, 910, 3, 120, 60, 0, 906, 907, 5, 6, 0, 0, 907, 909, 3, 120, + 60, 0, 908, 906, 1, 0, 0, 0, 909, 912, 1, 0, 0, 0, 910, 908, 1, 0, 0, 0, + 910, 911, 1, 0, 0, 0, 911, 914, 1, 0, 0, 0, 912, 910, 1, 0, 0, 0, 913, + 903, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 921, 1, 0, 0, 0, 915, 916, + 5, 100, 0, 0, 916, 919, 3, 94, 47, 0, 917, 918, 7, 2, 0, 0, 918, 920, 3, + 94, 47, 0, 919, 917, 1, 0, 0, 0, 919, 920, 1, 0, 0, 0, 920, 922, 1, 0, + 0, 0, 921, 915, 1, 0, 0, 0, 921, 922, 1, 0, 0, 0, 922, 65, 1, 0, 0, 0, + 923, 925, 5, 132, 0, 0, 924, 926, 7, 4, 0, 0, 925, 924, 1, 0, 0, 0, 925, + 926, 1, 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 932, 3, 126, 63, 0, 928, 929, + 5, 6, 0, 0, 929, 931, 3, 126, 63, 0, 930, 928, 1, 0, 0, 0, 931, 934, 1, + 0, 0, 0, 932, 930, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 947, 1, 0, 0, + 0, 934, 932, 1, 0, 0, 0, 935, 945, 5, 77, 0, 0, 936, 941, 3, 128, 64, 0, + 937, 938, 5, 6, 0, 0, 938, 940, 3, 128, 64, 0, 939, 937, 1, 0, 0, 0, 940, + 943, 1, 0, 0, 0, 941, 939, 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 946, + 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 944, 946, 3, 130, 65, 0, 945, 936, 1, + 0, 0, 0, 945, 944, 1, 0, 0, 0, 946, 948, 1, 0, 0, 0, 947, 935, 1, 0, 0, + 0, 947, 948, 1, 0, 0, 0, 948, 951, 1, 0, 0, 0, 949, 950, 5, 150, 0, 0, + 950, 952, 3, 94, 47, 0, 951, 949, 1, 0, 0, 0, 951, 952, 1, 0, 0, 0, 952, + 967, 1, 0, 0, 0, 953, 954, 5, 80, 0, 0, 954, 955, 5, 41, 0, 0, 955, 960, + 3, 94, 47, 0, 956, 957, 5, 6, 0, 0, 957, 959, 3, 94, 47, 0, 958, 956, 1, + 0, 0, 0, 959, 962, 1, 0, 0, 0, 960, 958, 1, 0, 0, 0, 960, 961, 1, 0, 0, + 0, 961, 965, 1, 0, 0, 0, 962, 960, 1, 0, 0, 0, 963, 964, 5, 81, 0, 0, 964, + 966, 3, 94, 47, 0, 965, 963, 1, 0, 0, 0, 965, 966, 1, 0, 0, 0, 966, 968, + 1, 0, 0, 0, 967, 953, 1, 0, 0, 0, 967, 968, 1, 0, 0, 0, 968, 998, 1, 0, + 0, 0, 969, 970, 5, 146, 0, 0, 970, 971, 5, 4, 0, 0, 971, 976, 3, 94, 47, + 0, 972, 973, 5, 6, 0, 0, 973, 975, 3, 94, 47, 0, 974, 972, 1, 0, 0, 0, + 975, 978, 1, 0, 0, 0, 976, 974, 1, 0, 0, 0, 976, 977, 1, 0, 0, 0, 977, + 979, 1, 0, 0, 0, 978, 976, 1, 0, 0, 0, 979, 994, 5, 5, 0, 0, 980, 981, + 5, 6, 0, 0, 981, 982, 5, 4, 0, 0, 982, 987, 3, 94, 47, 0, 983, 984, 5, + 6, 0, 0, 984, 986, 3, 94, 47, 0, 985, 983, 1, 0, 0, 0, 986, 989, 1, 0, + 0, 0, 987, 985, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 990, 1, 0, 0, 0, + 989, 987, 1, 0, 0, 0, 990, 991, 5, 5, 0, 0, 991, 993, 1, 0, 0, 0, 992, + 980, 1, 0, 0, 0, 993, 996, 1, 0, 0, 0, 994, 992, 1, 0, 0, 0, 994, 995, + 1, 0, 0, 0, 995, 998, 1, 0, 0, 0, 996, 994, 1, 0, 0, 0, 997, 923, 1, 0, + 0, 0, 997, 969, 1, 0, 0, 0, 998, 67, 1, 0, 0, 0, 999, 1001, 3, 116, 58, + 0, 1000, 999, 1, 0, 0, 0, 1000, 1001, 1, 0, 0, 0, 1001, 1002, 1, 0, 0, + 0, 1002, 1013, 5, 143, 0, 0, 1003, 1004, 5, 112, 0, 0, 1004, 1014, 5, 129, + 0, 0, 1005, 1006, 5, 112, 0, 0, 1006, 1014, 5, 26, 0, 0, 1007, 1008, 5, + 112, 0, 0, 1008, 1014, 5, 126, 0, 0, 1009, 1010, 5, 112, 0, 0, 1010, 1014, + 5, 74, 0, 0, 1011, 1012, 5, 112, 0, 0, 1012, 1014, 5, 83, 0, 0, 1013, 1003, + 1, 0, 0, 0, 1013, 1005, 1, 0, 0, 0, 1013, 1007, 1, 0, 0, 0, 1013, 1009, + 1, 0, 0, 0, 1013, 1011, 1, 0, 0, 0, 1013, 1014, 1, 0, 0, 0, 1014, 1015, + 1, 0, 0, 0, 1015, 1016, 3, 118, 59, 0, 1016, 1017, 5, 133, 0, 0, 1017, + 1018, 3, 172, 86, 0, 1018, 1019, 5, 7, 0, 0, 1019, 1027, 3, 94, 47, 0, + 1020, 1021, 5, 6, 0, 0, 1021, 1022, 3, 172, 86, 0, 1022, 1023, 5, 7, 0, + 0, 1023, 1024, 3, 94, 47, 0, 1024, 1026, 1, 0, 0, 0, 1025, 1020, 1, 0, + 0, 0, 1026, 1029, 1, 0, 0, 0, 1027, 1025, 1, 0, 0, 0, 1027, 1028, 1, 0, + 0, 0, 1028, 1032, 1, 0, 0, 0, 1029, 1027, 1, 0, 0, 0, 1030, 1031, 5, 150, + 0, 0, 1031, 1033, 3, 94, 47, 0, 1032, 1030, 1, 0, 0, 0, 1032, 1033, 1, + 0, 0, 0, 1033, 69, 1, 0, 0, 0, 1034, 1036, 3, 116, 58, 0, 1035, 1034, 1, + 0, 0, 0, 1035, 1036, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1048, 5, + 143, 0, 0, 1038, 1039, 5, 112, 0, 0, 1039, 1049, 5, 129, 0, 0, 1040, 1041, + 5, 112, 0, 0, 1041, 1049, 5, 26, 0, 0, 1042, 1043, 5, 112, 0, 0, 1043, + 1049, 5, 126, 0, 0, 1044, 1045, 5, 112, 0, 0, 1045, 1049, 5, 74, 0, 0, + 1046, 1047, 5, 112, 0, 0, 1047, 1049, 5, 83, 0, 0, 1048, 1038, 1, 0, 0, + 0, 1048, 1040, 1, 0, 0, 0, 1048, 1042, 1, 0, 0, 0, 1048, 1044, 1, 0, 0, + 0, 1048, 1046, 1, 0, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 1050, 1, 0, 0, + 0, 1050, 1051, 3, 118, 59, 0, 1051, 1052, 5, 133, 0, 0, 1052, 1053, 3, + 172, 86, 0, 1053, 1054, 5, 7, 0, 0, 1054, 1062, 3, 94, 47, 0, 1055, 1056, + 5, 6, 0, 0, 1056, 1057, 3, 172, 86, 0, 1057, 1058, 5, 7, 0, 0, 1058, 1059, + 3, 94, 47, 0, 1059, 1061, 1, 0, 0, 0, 1060, 1055, 1, 0, 0, 0, 1061, 1064, + 1, 0, 0, 0, 1062, 1060, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1067, + 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1065, 1066, 5, 150, 0, 0, 1066, 1068, + 3, 94, 47, 0, 1067, 1065, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1087, + 1, 0, 0, 0, 1069, 1070, 5, 113, 0, 0, 1070, 1071, 5, 41, 0, 0, 1071, 1076, + 3, 120, 60, 0, 1072, 1073, 5, 6, 0, 0, 1073, 1075, 3, 120, 60, 0, 1074, + 1072, 1, 0, 0, 0, 1075, 1078, 1, 0, 0, 0, 1076, 1074, 1, 0, 0, 0, 1076, + 1077, 1, 0, 0, 0, 1077, 1080, 1, 0, 0, 0, 1078, 1076, 1, 0, 0, 0, 1079, + 1069, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, + 1082, 5, 100, 0, 0, 1082, 1085, 3, 94, 47, 0, 1083, 1084, 7, 2, 0, 0, 1084, + 1086, 3, 94, 47, 0, 1085, 1083, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, + 1088, 1, 0, 0, 0, 1087, 1079, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, + 71, 1, 0, 0, 0, 1089, 1090, 5, 145, 0, 0, 1090, 73, 1, 0, 0, 0, 1091, 1096, + 3, 172, 86, 0, 1092, 1095, 3, 78, 39, 0, 1093, 1095, 3, 76, 38, 0, 1094, + 1092, 1, 0, 0, 0, 1094, 1093, 1, 0, 0, 0, 1095, 1098, 1, 0, 0, 0, 1096, + 1094, 1, 0, 0, 0, 1096, 1097, 1, 0, 0, 0, 1097, 75, 1, 0, 0, 0, 1098, 1096, + 1, 0, 0, 0, 1099, 1119, 3, 158, 79, 0, 1100, 1101, 5, 4, 0, 0, 1101, 1103, + 3, 142, 71, 0, 1102, 1104, 3, 194, 97, 0, 1103, 1102, 1, 0, 0, 0, 1103, + 1104, 1, 0, 0, 0, 1104, 1105, 1, 0, 0, 0, 1105, 1106, 5, 5, 0, 0, 1106, + 1120, 1, 0, 0, 0, 1107, 1108, 5, 4, 0, 0, 1108, 1110, 3, 142, 71, 0, 1109, + 1111, 3, 194, 97, 0, 1110, 1109, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, + 1112, 1, 0, 0, 0, 1112, 1113, 5, 6, 0, 0, 1113, 1115, 3, 142, 71, 0, 1114, + 1116, 3, 194, 97, 0, 1115, 1114, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, + 1117, 1, 0, 0, 0, 1117, 1118, 5, 5, 0, 0, 1118, 1120, 1, 0, 0, 0, 1119, + 1100, 1, 0, 0, 0, 1119, 1107, 1, 0, 0, 0, 1119, 1120, 1, 0, 0, 0, 1120, + 77, 1, 0, 0, 0, 1121, 1122, 5, 50, 0, 0, 1122, 1124, 3, 158, 79, 0, 1123, + 1121, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1139, 1, 0, 0, 0, 1125, + 1140, 3, 80, 40, 0, 1126, 1140, 3, 82, 41, 0, 1127, 1140, 3, 84, 42, 0, + 1128, 1140, 3, 86, 43, 0, 1129, 1130, 5, 142, 0, 0, 1130, 1140, 3, 92, + 46, 0, 1131, 1132, 5, 45, 0, 0, 1132, 1133, 5, 4, 0, 0, 1133, 1134, 3, + 94, 47, 0, 1134, 1135, 5, 5, 0, 0, 1135, 1140, 1, 0, 0, 0, 1136, 1140, + 3, 88, 44, 0, 1137, 1138, 5, 46, 0, 0, 1138, 1140, 3, 174, 87, 0, 1139, + 1125, 1, 0, 0, 0, 1139, 1126, 1, 0, 0, 0, 1139, 1127, 1, 0, 0, 0, 1139, + 1128, 1, 0, 0, 0, 1139, 1129, 1, 0, 0, 0, 1139, 1131, 1, 0, 0, 0, 1139, + 1136, 1, 0, 0, 0, 1139, 1137, 1, 0, 0, 0, 1140, 79, 1, 0, 0, 0, 1141, 1142, + 5, 117, 0, 0, 1142, 1144, 5, 97, 0, 0, 1143, 1145, 7, 5, 0, 0, 1144, 1143, + 1, 0, 0, 0, 1144, 1145, 1, 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1148, + 3, 92, 46, 0, 1147, 1149, 5, 37, 0, 0, 1148, 1147, 1, 0, 0, 0, 1148, 1149, + 1, 0, 0, 0, 1149, 81, 1, 0, 0, 0, 1150, 1151, 3, 96, 48, 0, 1151, 83, 1, + 0, 0, 0, 1152, 1153, 5, 105, 0, 0, 1153, 1154, 5, 107, 0, 0, 1154, 1155, + 3, 92, 46, 0, 1155, 85, 1, 0, 0, 0, 1156, 1157, 5, 107, 0, 0, 1157, 1158, + 3, 92, 46, 0, 1158, 87, 1, 0, 0, 0, 1159, 1171, 5, 57, 0, 0, 1160, 1172, + 3, 90, 45, 0, 1161, 1162, 5, 4, 0, 0, 1162, 1163, 3, 94, 47, 0, 1163, 1164, + 5, 5, 0, 0, 1164, 1172, 1, 0, 0, 0, 1165, 1166, 5, 103, 0, 0, 1166, 1167, + 5, 4, 0, 0, 1167, 1168, 3, 94, 47, 0, 1168, 1169, 5, 5, 0, 0, 1169, 1172, + 1, 0, 0, 0, 1170, 1172, 3, 194, 97, 0, 1171, 1160, 1, 0, 0, 0, 1171, 1161, + 1, 0, 0, 0, 1171, 1165, 1, 0, 0, 0, 1171, 1170, 1, 0, 0, 0, 1172, 1179, + 1, 0, 0, 0, 1173, 1175, 5, 1, 0, 0, 1174, 1176, 3, 194, 97, 0, 1175, 1174, + 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 1175, 1, 0, 0, 0, 1177, 1178, + 1, 0, 0, 0, 1178, 1180, 1, 0, 0, 0, 1179, 1173, 1, 0, 0, 0, 1179, 1180, + 1, 0, 0, 0, 1180, 89, 1, 0, 0, 0, 1181, 1184, 3, 142, 71, 0, 1182, 1184, + 3, 144, 72, 0, 1183, 1181, 1, 0, 0, 0, 1183, 1182, 1, 0, 0, 0, 1184, 91, + 1, 0, 0, 0, 1185, 1186, 5, 110, 0, 0, 1186, 1187, 5, 49, 0, 0, 1187, 1189, + 7, 6, 0, 0, 1188, 1185, 1, 0, 0, 0, 1188, 1189, 1, 0, 0, 0, 1189, 93, 1, + 0, 0, 0, 1190, 1191, 6, 47, -1, 0, 1191, 1267, 3, 144, 72, 0, 1192, 1267, + 5, 155, 0, 0, 1193, 1194, 3, 162, 81, 0, 1194, 1195, 5, 3, 0, 0, 1195, + 1197, 1, 0, 0, 0, 1196, 1193, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, + 1198, 1, 0, 0, 0, 1198, 1199, 3, 166, 83, 0, 1199, 1200, 5, 3, 0, 0, 1200, + 1202, 1, 0, 0, 0, 1201, 1196, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1202, + 1203, 1, 0, 0, 0, 1203, 1267, 3, 172, 86, 0, 1204, 1205, 3, 146, 73, 0, + 1205, 1206, 3, 94, 47, 21, 1206, 1267, 1, 0, 0, 0, 1207, 1208, 3, 160, + 80, 0, 1208, 1221, 5, 4, 0, 0, 1209, 1211, 5, 63, 0, 0, 1210, 1209, 1, + 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1217, 3, + 94, 47, 0, 1213, 1214, 5, 6, 0, 0, 1214, 1216, 3, 94, 47, 0, 1215, 1213, + 1, 0, 0, 0, 1216, 1219, 1, 0, 0, 0, 1217, 1215, 1, 0, 0, 0, 1217, 1218, + 1, 0, 0, 0, 1218, 1222, 1, 0, 0, 0, 1219, 1217, 1, 0, 0, 0, 1220, 1222, + 5, 8, 0, 0, 1221, 1210, 1, 0, 0, 0, 1221, 1220, 1, 0, 0, 0, 1221, 1222, + 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1224, 5, 5, 0, 0, 1224, 1267, + 1, 0, 0, 0, 1225, 1226, 5, 4, 0, 0, 1226, 1227, 3, 94, 47, 0, 1227, 1228, + 5, 5, 0, 0, 1228, 1267, 1, 0, 0, 0, 1229, 1230, 5, 44, 0, 0, 1230, 1231, + 5, 4, 0, 0, 1231, 1232, 3, 94, 47, 0, 1232, 1233, 5, 34, 0, 0, 1233, 1234, + 3, 76, 38, 0, 1234, 1235, 5, 5, 0, 0, 1235, 1267, 1, 0, 0, 0, 1236, 1238, + 5, 105, 0, 0, 1237, 1236, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, + 1, 0, 0, 0, 1239, 1241, 5, 72, 0, 0, 1240, 1237, 1, 0, 0, 0, 1240, 1241, + 1, 0, 0, 0, 1241, 1242, 1, 0, 0, 0, 1242, 1243, 5, 4, 0, 0, 1243, 1244, + 3, 64, 32, 0, 1244, 1245, 5, 5, 0, 0, 1245, 1267, 1, 0, 0, 0, 1246, 1248, + 5, 43, 0, 0, 1247, 1249, 3, 94, 47, 0, 1248, 1247, 1, 0, 0, 0, 1248, 1249, + 1, 0, 0, 0, 1249, 1255, 1, 0, 0, 0, 1250, 1251, 5, 149, 0, 0, 1251, 1252, + 3, 94, 47, 0, 1252, 1253, 5, 137, 0, 0, 1253, 1254, 3, 94, 47, 0, 1254, + 1256, 1, 0, 0, 0, 1255, 1250, 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, + 1255, 1, 0, 0, 0, 1257, 1258, 1, 0, 0, 0, 1258, 1261, 1, 0, 0, 0, 1259, + 1260, 5, 66, 0, 0, 1260, 1262, 3, 94, 47, 0, 1261, 1259, 1, 0, 0, 0, 1261, + 1262, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1264, 5, 67, 0, 0, 1264, + 1267, 1, 0, 0, 0, 1265, 1267, 3, 100, 50, 0, 1266, 1190, 1, 0, 0, 0, 1266, + 1192, 1, 0, 0, 0, 1266, 1201, 1, 0, 0, 0, 1266, 1204, 1, 0, 0, 0, 1266, + 1207, 1, 0, 0, 0, 1266, 1225, 1, 0, 0, 0, 1266, 1229, 1, 0, 0, 0, 1266, + 1240, 1, 0, 0, 0, 1266, 1246, 1, 0, 0, 0, 1266, 1265, 1, 0, 0, 0, 1267, + 1368, 1, 0, 0, 0, 1268, 1269, 10, 20, 0, 0, 1269, 1270, 5, 12, 0, 0, 1270, + 1367, 3, 94, 47, 21, 1271, 1272, 10, 19, 0, 0, 1272, 1273, 7, 7, 0, 0, + 1273, 1367, 3, 94, 47, 20, 1274, 1275, 10, 18, 0, 0, 1275, 1276, 7, 8, + 0, 0, 1276, 1367, 3, 94, 47, 19, 1277, 1278, 10, 17, 0, 0, 1278, 1279, + 7, 9, 0, 0, 1279, 1367, 3, 94, 47, 18, 1280, 1281, 10, 16, 0, 0, 1281, + 1282, 7, 10, 0, 0, 1282, 1367, 3, 94, 47, 17, 1283, 1296, 10, 15, 0, 0, + 1284, 1297, 5, 7, 0, 0, 1285, 1297, 5, 23, 0, 0, 1286, 1297, 5, 24, 0, + 0, 1287, 1297, 5, 25, 0, 0, 1288, 1297, 5, 94, 0, 0, 1289, 1290, 5, 94, + 0, 0, 1290, 1297, 5, 105, 0, 0, 1291, 1297, 5, 85, 0, 0, 1292, 1297, 5, + 99, 0, 0, 1293, 1297, 5, 79, 0, 0, 1294, 1297, 5, 101, 0, 0, 1295, 1297, + 5, 122, 0, 0, 1296, 1284, 1, 0, 0, 0, 1296, 1285, 1, 0, 0, 0, 1296, 1286, + 1, 0, 0, 0, 1296, 1287, 1, 0, 0, 0, 1296, 1288, 1, 0, 0, 0, 1296, 1289, + 1, 0, 0, 0, 1296, 1291, 1, 0, 0, 0, 1296, 1292, 1, 0, 0, 0, 1296, 1293, + 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1295, 1, 0, 0, 0, 1297, 1298, + 1, 0, 0, 0, 1298, 1367, 3, 94, 47, 16, 1299, 1300, 10, 14, 0, 0, 1300, + 1301, 5, 33, 0, 0, 1301, 1367, 3, 94, 47, 15, 1302, 1303, 10, 13, 0, 0, + 1303, 1304, 5, 112, 0, 0, 1304, 1367, 3, 94, 47, 14, 1305, 1306, 10, 6, + 0, 0, 1306, 1308, 5, 94, 0, 0, 1307, 1309, 5, 105, 0, 0, 1308, 1307, 1, + 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1367, 3, + 94, 47, 7, 1311, 1313, 10, 5, 0, 0, 1312, 1314, 5, 105, 0, 0, 1313, 1312, + 1, 0, 0, 0, 1313, 1314, 1, 0, 0, 0, 1314, 1315, 1, 0, 0, 0, 1315, 1316, + 5, 40, 0, 0, 1316, 1317, 3, 94, 47, 0, 1317, 1318, 5, 33, 0, 0, 1318, 1319, + 3, 94, 47, 6, 1319, 1367, 1, 0, 0, 0, 1320, 1321, 10, 9, 0, 0, 1321, 1322, + 5, 46, 0, 0, 1322, 1367, 3, 174, 87, 0, 1323, 1325, 10, 8, 0, 0, 1324, + 1326, 5, 105, 0, 0, 1325, 1324, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, + 1327, 1, 0, 0, 0, 1327, 1328, 7, 11, 0, 0, 1328, 1331, 3, 94, 47, 0, 1329, + 1330, 5, 69, 0, 0, 1330, 1332, 3, 94, 47, 0, 1331, 1329, 1, 0, 0, 0, 1331, + 1332, 1, 0, 0, 0, 1332, 1367, 1, 0, 0, 0, 1333, 1338, 10, 7, 0, 0, 1334, + 1339, 5, 95, 0, 0, 1335, 1339, 5, 106, 0, 0, 1336, 1337, 5, 105, 0, 0, + 1337, 1339, 5, 107, 0, 0, 1338, 1334, 1, 0, 0, 0, 1338, 1335, 1, 0, 0, + 0, 1338, 1336, 1, 0, 0, 0, 1339, 1367, 1, 0, 0, 0, 1340, 1342, 10, 4, 0, + 0, 1341, 1343, 5, 105, 0, 0, 1342, 1341, 1, 0, 0, 0, 1342, 1343, 1, 0, + 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1364, 5, 85, 0, 0, 1345, 1355, 5, 4, + 0, 0, 1346, 1356, 3, 64, 32, 0, 1347, 1352, 3, 94, 47, 0, 1348, 1349, 5, + 6, 0, 0, 1349, 1351, 3, 94, 47, 0, 1350, 1348, 1, 0, 0, 0, 1351, 1354, + 1, 0, 0, 0, 1352, 1350, 1, 0, 0, 0, 1352, 1353, 1, 0, 0, 0, 1353, 1356, + 1, 0, 0, 0, 1354, 1352, 1, 0, 0, 0, 1355, 1346, 1, 0, 0, 0, 1355, 1347, + 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1365, + 5, 5, 0, 0, 1358, 1359, 3, 162, 81, 0, 1359, 1360, 5, 3, 0, 0, 1360, 1362, + 1, 0, 0, 0, 1361, 1358, 1, 0, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, 1363, + 1, 0, 0, 0, 1363, 1365, 3, 166, 83, 0, 1364, 1345, 1, 0, 0, 0, 1364, 1361, + 1, 0, 0, 0, 1365, 1367, 1, 0, 0, 0, 1366, 1268, 1, 0, 0, 0, 1366, 1271, + 1, 0, 0, 0, 1366, 1274, 1, 0, 0, 0, 1366, 1277, 1, 0, 0, 0, 1366, 1280, + 1, 0, 0, 0, 1366, 1283, 1, 0, 0, 0, 1366, 1299, 1, 0, 0, 0, 1366, 1302, + 1, 0, 0, 0, 1366, 1305, 1, 0, 0, 0, 1366, 1311, 1, 0, 0, 0, 1366, 1320, + 1, 0, 0, 0, 1366, 1323, 1, 0, 0, 0, 1366, 1333, 1, 0, 0, 0, 1366, 1340, + 1, 0, 0, 0, 1367, 1370, 1, 0, 0, 0, 1368, 1366, 1, 0, 0, 0, 1368, 1369, + 1, 0, 0, 0, 1369, 95, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1371, 1375, 5, + 121, 0, 0, 1372, 1373, 3, 162, 81, 0, 1373, 1374, 5, 3, 0, 0, 1374, 1376, + 1, 0, 0, 0, 1375, 1372, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, 1376, 1377, + 1, 0, 0, 0, 1377, 1389, 3, 176, 88, 0, 1378, 1379, 5, 4, 0, 0, 1379, 1384, + 3, 98, 49, 0, 1380, 1381, 5, 6, 0, 0, 1381, 1383, 3, 98, 49, 0, 1382, 1380, + 1, 0, 0, 0, 1383, 1386, 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1384, 1385, + 1, 0, 0, 0, 1385, 1387, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1388, + 5, 5, 0, 0, 1388, 1390, 1, 0, 0, 0, 1389, 1378, 1, 0, 0, 0, 1389, 1390, + 1, 0, 0, 0, 1390, 1409, 1, 0, 0, 0, 1391, 1392, 5, 110, 0, 0, 1392, 1401, + 7, 12, 0, 0, 1393, 1394, 5, 133, 0, 0, 1394, 1402, 5, 107, 0, 0, 1395, + 1396, 5, 133, 0, 0, 1396, 1402, 5, 57, 0, 0, 1397, 1402, 5, 42, 0, 0, 1398, + 1402, 5, 127, 0, 0, 1399, 1400, 5, 104, 0, 0, 1400, 1402, 5, 27, 0, 0, + 1401, 1393, 1, 0, 0, 0, 1401, 1395, 1, 0, 0, 0, 1401, 1397, 1, 0, 0, 0, + 1401, 1398, 1, 0, 0, 0, 1401, 1399, 1, 0, 0, 0, 1402, 1406, 1, 0, 0, 0, + 1403, 1404, 5, 101, 0, 0, 1404, 1406, 3, 158, 79, 0, 1405, 1391, 1, 0, + 0, 0, 1405, 1403, 1, 0, 0, 0, 1406, 1408, 1, 0, 0, 0, 1407, 1405, 1, 0, + 0, 0, 1408, 1411, 1, 0, 0, 0, 1409, 1407, 1, 0, 0, 0, 1409, 1410, 1, 0, + 0, 0, 1410, 1425, 1, 0, 0, 0, 1411, 1409, 1, 0, 0, 0, 1412, 1414, 5, 105, + 0, 0, 1413, 1412, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1415, 1, 0, + 0, 0, 1415, 1420, 5, 58, 0, 0, 1416, 1417, 5, 88, 0, 0, 1417, 1421, 5, + 59, 0, 0, 1418, 1419, 5, 88, 0, 0, 1419, 1421, 5, 84, 0, 0, 1420, 1416, + 1, 0, 0, 0, 1420, 1418, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1423, + 1, 0, 0, 0, 1422, 1424, 5, 68, 0, 0, 1423, 1422, 1, 0, 0, 0, 1423, 1424, + 1, 0, 0, 0, 1424, 1426, 1, 0, 0, 0, 1425, 1413, 1, 0, 0, 0, 1425, 1426, + 1, 0, 0, 0, 1426, 97, 1, 0, 0, 0, 1427, 1428, 3, 158, 79, 0, 1428, 99, + 1, 0, 0, 0, 1429, 1430, 5, 119, 0, 0, 1430, 1435, 5, 4, 0, 0, 1431, 1436, + 5, 83, 0, 0, 1432, 1433, 7, 13, 0, 0, 1433, 1434, 5, 6, 0, 0, 1434, 1436, + 3, 148, 74, 0, 1435, 1431, 1, 0, 0, 0, 1435, 1432, 1, 0, 0, 0, 1436, 1437, + 1, 0, 0, 0, 1437, 1438, 5, 5, 0, 0, 1438, 101, 1, 0, 0, 0, 1439, 1442, + 3, 172, 86, 0, 1440, 1441, 5, 46, 0, 0, 1441, 1443, 3, 174, 87, 0, 1442, + 1440, 1, 0, 0, 0, 1442, 1443, 1, 0, 0, 0, 1443, 1445, 1, 0, 0, 0, 1444, + 1446, 7, 5, 0, 0, 1445, 1444, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, + 103, 1, 0, 0, 0, 1447, 1448, 5, 50, 0, 0, 1448, 1450, 3, 158, 79, 0, 1449, + 1447, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1460, 1, 0, 0, 0, 1451, + 1461, 3, 106, 53, 0, 1452, 1461, 3, 112, 56, 0, 1453, 1461, 3, 110, 55, + 0, 1454, 1455, 5, 45, 0, 0, 1455, 1456, 5, 4, 0, 0, 1456, 1457, 3, 94, + 47, 0, 1457, 1458, 5, 5, 0, 0, 1458, 1461, 1, 0, 0, 0, 1459, 1461, 3, 108, + 54, 0, 1460, 1451, 1, 0, 0, 0, 1460, 1452, 1, 0, 0, 0, 1460, 1453, 1, 0, + 0, 0, 1460, 1454, 1, 0, 0, 0, 1460, 1459, 1, 0, 0, 0, 1461, 105, 1, 0, + 0, 0, 1462, 1463, 5, 117, 0, 0, 1463, 1464, 5, 97, 0, 0, 1464, 1465, 5, + 4, 0, 0, 1465, 1470, 3, 102, 51, 0, 1466, 1467, 5, 6, 0, 0, 1467, 1469, + 3, 102, 51, 0, 1468, 1466, 1, 0, 0, 0, 1469, 1472, 1, 0, 0, 0, 1470, 1468, + 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1473, 1, 0, 0, 0, 1472, 1470, + 1, 0, 0, 0, 1473, 1474, 5, 5, 0, 0, 1474, 1475, 3, 92, 46, 0, 1475, 107, + 1, 0, 0, 0, 1476, 1477, 5, 76, 0, 0, 1477, 1478, 5, 97, 0, 0, 1478, 1479, + 5, 4, 0, 0, 1479, 1484, 3, 114, 57, 0, 1480, 1481, 5, 6, 0, 0, 1481, 1483, + 3, 114, 57, 0, 1482, 1480, 1, 0, 0, 0, 1483, 1486, 1, 0, 0, 0, 1484, 1482, + 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 1487, 1, 0, 0, 0, 1486, 1484, + 1, 0, 0, 0, 1487, 1488, 5, 5, 0, 0, 1488, 1489, 3, 96, 48, 0, 1489, 109, + 1, 0, 0, 0, 1490, 1492, 5, 142, 0, 0, 1491, 1493, 5, 97, 0, 0, 1492, 1491, + 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1495, 1, 0, 0, 0, 1494, 1496, + 3, 158, 79, 0, 1495, 1494, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1497, + 1, 0, 0, 0, 1497, 1498, 5, 4, 0, 0, 1498, 1503, 3, 102, 51, 0, 1499, 1500, + 5, 6, 0, 0, 1500, 1502, 3, 102, 51, 0, 1501, 1499, 1, 0, 0, 0, 1502, 1505, + 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1506, + 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1507, 5, 5, 0, 0, 1507, 1508, + 3, 92, 46, 0, 1508, 111, 1, 0, 0, 0, 1509, 1511, 5, 97, 0, 0, 1510, 1512, + 3, 158, 79, 0, 1511, 1510, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1513, + 1, 0, 0, 0, 1513, 1514, 5, 4, 0, 0, 1514, 1519, 3, 102, 51, 0, 1515, 1516, + 5, 6, 0, 0, 1516, 1518, 3, 102, 51, 0, 1517, 1515, 1, 0, 0, 0, 1518, 1521, + 1, 0, 0, 0, 1519, 1517, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1522, + 1, 0, 0, 0, 1521, 1519, 1, 0, 0, 0, 1522, 1523, 5, 5, 0, 0, 1523, 1524, + 3, 92, 46, 0, 1524, 113, 1, 0, 0, 0, 1525, 1526, 3, 172, 86, 0, 1526, 115, + 1, 0, 0, 0, 1527, 1529, 5, 151, 0, 0, 1528, 1530, 5, 120, 0, 0, 1529, 1528, + 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1532, + 3, 140, 70, 0, 1532, 1533, 5, 34, 0, 0, 1533, 1534, 5, 4, 0, 0, 1534, 1535, + 3, 64, 32, 0, 1535, 1545, 5, 5, 0, 0, 1536, 1537, 5, 6, 0, 0, 1537, 1538, + 3, 140, 70, 0, 1538, 1539, 5, 34, 0, 0, 1539, 1540, 5, 4, 0, 0, 1540, 1541, + 3, 64, 32, 0, 1541, 1542, 5, 5, 0, 0, 1542, 1544, 1, 0, 0, 0, 1543, 1536, + 1, 0, 0, 0, 1544, 1547, 1, 0, 0, 0, 1545, 1543, 1, 0, 0, 0, 1545, 1546, + 1, 0, 0, 0, 1546, 117, 1, 0, 0, 0, 1547, 1545, 1, 0, 0, 0, 1548, 1549, + 3, 162, 81, 0, 1549, 1550, 5, 3, 0, 0, 1550, 1552, 1, 0, 0, 0, 1551, 1548, + 1, 0, 0, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1559, + 3, 166, 83, 0, 1554, 1555, 5, 87, 0, 0, 1555, 1556, 5, 41, 0, 0, 1556, + 1560, 3, 178, 89, 0, 1557, 1558, 5, 105, 0, 0, 1558, 1560, 5, 87, 0, 0, + 1559, 1554, 1, 0, 0, 0, 1559, 1557, 1, 0, 0, 0, 1559, 1560, 1, 0, 0, 0, + 1560, 119, 1, 0, 0, 0, 1561, 1564, 3, 94, 47, 0, 1562, 1563, 5, 46, 0, + 0, 1563, 1565, 3, 174, 87, 0, 1564, 1562, 1, 0, 0, 0, 1564, 1565, 1, 0, + 0, 0, 1565, 1567, 1, 0, 0, 0, 1566, 1568, 7, 5, 0, 0, 1567, 1566, 1, 0, + 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 121, 1, 0, 0, 0, 1569, 1573, 3, 142, + 71, 0, 1570, 1573, 3, 158, 79, 0, 1571, 1573, 5, 156, 0, 0, 1572, 1569, + 1, 0, 0, 0, 1572, 1570, 1, 0, 0, 0, 1572, 1571, 1, 0, 0, 0, 1573, 123, + 1, 0, 0, 0, 1574, 1586, 3, 166, 83, 0, 1575, 1576, 5, 4, 0, 0, 1576, 1581, + 3, 172, 86, 0, 1577, 1578, 5, 6, 0, 0, 1578, 1580, 3, 172, 86, 0, 1579, + 1577, 1, 0, 0, 0, 1580, 1583, 1, 0, 0, 0, 1581, 1579, 1, 0, 0, 0, 1581, + 1582, 1, 0, 0, 0, 1582, 1584, 1, 0, 0, 0, 1583, 1581, 1, 0, 0, 0, 1584, + 1585, 5, 5, 0, 0, 1585, 1587, 1, 0, 0, 0, 1586, 1575, 1, 0, 0, 0, 1586, + 1587, 1, 0, 0, 0, 1587, 1588, 1, 0, 0, 0, 1588, 1589, 5, 34, 0, 0, 1589, + 1590, 5, 4, 0, 0, 1590, 1591, 3, 64, 32, 0, 1591, 1592, 5, 5, 0, 0, 1592, + 125, 1, 0, 0, 0, 1593, 1606, 5, 8, 0, 0, 1594, 1595, 3, 166, 83, 0, 1595, + 1596, 5, 3, 0, 0, 1596, 1597, 5, 8, 0, 0, 1597, 1606, 1, 0, 0, 0, 1598, + 1603, 3, 94, 47, 0, 1599, 1601, 5, 34, 0, 0, 1600, 1599, 1, 0, 0, 0, 1600, + 1601, 1, 0, 0, 0, 1601, 1602, 1, 0, 0, 0, 1602, 1604, 3, 152, 76, 0, 1603, + 1600, 1, 0, 0, 0, 1603, 1604, 1, 0, 0, 0, 1604, 1606, 1, 0, 0, 0, 1605, + 1593, 1, 0, 0, 0, 1605, 1594, 1, 0, 0, 0, 1605, 1598, 1, 0, 0, 0, 1606, + 127, 1, 0, 0, 0, 1607, 1608, 3, 162, 81, 0, 1608, 1609, 5, 3, 0, 0, 1609, + 1611, 1, 0, 0, 0, 1610, 1607, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, + 1612, 1, 0, 0, 0, 1612, 1617, 3, 166, 83, 0, 1613, 1615, 5, 34, 0, 0, 1614, + 1613, 1, 0, 0, 0, 1614, 1615, 1, 0, 0, 0, 1615, 1616, 1, 0, 0, 0, 1616, + 1618, 3, 190, 95, 0, 1617, 1614, 1, 0, 0, 0, 1617, 1618, 1, 0, 0, 0, 1618, + 1624, 1, 0, 0, 0, 1619, 1620, 5, 87, 0, 0, 1620, 1621, 5, 41, 0, 0, 1621, + 1625, 3, 178, 89, 0, 1622, 1623, 5, 105, 0, 0, 1623, 1625, 5, 87, 0, 0, + 1624, 1619, 1, 0, 0, 0, 1624, 1622, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, + 1625, 1655, 1, 0, 0, 0, 1626, 1636, 5, 4, 0, 0, 1627, 1632, 3, 128, 64, + 0, 1628, 1629, 5, 6, 0, 0, 1629, 1631, 3, 128, 64, 0, 1630, 1628, 1, 0, + 0, 0, 1631, 1634, 1, 0, 0, 0, 1632, 1630, 1, 0, 0, 0, 1632, 1633, 1, 0, + 0, 0, 1633, 1637, 1, 0, 0, 0, 1634, 1632, 1, 0, 0, 0, 1635, 1637, 3, 130, + 65, 0, 1636, 1627, 1, 0, 0, 0, 1636, 1635, 1, 0, 0, 0, 1637, 1638, 1, 0, + 0, 0, 1638, 1643, 5, 5, 0, 0, 1639, 1641, 5, 34, 0, 0, 1640, 1639, 1, 0, + 0, 0, 1640, 1641, 1, 0, 0, 0, 1641, 1642, 1, 0, 0, 0, 1642, 1644, 3, 190, + 95, 0, 1643, 1640, 1, 0, 0, 0, 1643, 1644, 1, 0, 0, 0, 1644, 1655, 1, 0, + 0, 0, 1645, 1646, 5, 4, 0, 0, 1646, 1647, 3, 64, 32, 0, 1647, 1652, 5, + 5, 0, 0, 1648, 1650, 5, 34, 0, 0, 1649, 1648, 1, 0, 0, 0, 1649, 1650, 1, + 0, 0, 0, 1650, 1651, 1, 0, 0, 0, 1651, 1653, 3, 190, 95, 0, 1652, 1649, + 1, 0, 0, 0, 1652, 1653, 1, 0, 0, 0, 1653, 1655, 1, 0, 0, 0, 1654, 1610, + 1, 0, 0, 0, 1654, 1626, 1, 0, 0, 0, 1654, 1645, 1, 0, 0, 0, 1655, 129, + 1, 0, 0, 0, 1656, 1663, 3, 128, 64, 0, 1657, 1658, 3, 132, 66, 0, 1658, + 1659, 3, 128, 64, 0, 1659, 1660, 3, 134, 67, 0, 1660, 1662, 1, 0, 0, 0, + 1661, 1657, 1, 0, 0, 0, 1662, 1665, 1, 0, 0, 0, 1663, 1661, 1, 0, 0, 0, + 1663, 1664, 1, 0, 0, 0, 1664, 131, 1, 0, 0, 0, 1665, 1663, 1, 0, 0, 0, + 1666, 1680, 5, 6, 0, 0, 1667, 1669, 5, 102, 0, 0, 1668, 1667, 1, 0, 0, + 0, 1668, 1669, 1, 0, 0, 0, 1669, 1676, 1, 0, 0, 0, 1670, 1672, 5, 98, 0, + 0, 1671, 1673, 5, 114, 0, 0, 1672, 1671, 1, 0, 0, 0, 1672, 1673, 1, 0, + 0, 0, 1673, 1677, 1, 0, 0, 0, 1674, 1677, 5, 89, 0, 0, 1675, 1677, 5, 52, + 0, 0, 1676, 1670, 1, 0, 0, 0, 1676, 1674, 1, 0, 0, 0, 1676, 1675, 1, 0, + 0, 0, 1676, 1677, 1, 0, 0, 0, 1677, 1678, 1, 0, 0, 0, 1678, 1680, 5, 96, + 0, 0, 1679, 1666, 1, 0, 0, 0, 1679, 1668, 1, 0, 0, 0, 1680, 133, 1, 0, + 0, 0, 1681, 1682, 5, 110, 0, 0, 1682, 1696, 3, 94, 47, 0, 1683, 1684, 5, + 144, 0, 0, 1684, 1685, 5, 4, 0, 0, 1685, 1690, 3, 172, 86, 0, 1686, 1687, + 5, 6, 0, 0, 1687, 1689, 3, 172, 86, 0, 1688, 1686, 1, 0, 0, 0, 1689, 1692, + 1, 0, 0, 0, 1690, 1688, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1693, + 1, 0, 0, 0, 1692, 1690, 1, 0, 0, 0, 1693, 1694, 5, 5, 0, 0, 1694, 1696, + 1, 0, 0, 0, 1695, 1681, 1, 0, 0, 0, 1695, 1683, 1, 0, 0, 0, 1695, 1696, + 1, 0, 0, 0, 1696, 135, 1, 0, 0, 0, 1697, 1699, 5, 132, 0, 0, 1698, 1700, + 7, 4, 0, 0, 1699, 1698, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 1701, + 1, 0, 0, 0, 1701, 1706, 3, 126, 63, 0, 1702, 1703, 5, 6, 0, 0, 1703, 1705, + 3, 126, 63, 0, 1704, 1702, 1, 0, 0, 0, 1705, 1708, 1, 0, 0, 0, 1706, 1704, + 1, 0, 0, 0, 1706, 1707, 1, 0, 0, 0, 1707, 1721, 1, 0, 0, 0, 1708, 1706, + 1, 0, 0, 0, 1709, 1719, 5, 77, 0, 0, 1710, 1715, 3, 128, 64, 0, 1711, 1712, + 5, 6, 0, 0, 1712, 1714, 3, 128, 64, 0, 1713, 1711, 1, 0, 0, 0, 1714, 1717, + 1, 0, 0, 0, 1715, 1713, 1, 0, 0, 0, 1715, 1716, 1, 0, 0, 0, 1716, 1720, + 1, 0, 0, 0, 1717, 1715, 1, 0, 0, 0, 1718, 1720, 3, 130, 65, 0, 1719, 1710, + 1, 0, 0, 0, 1719, 1718, 1, 0, 0, 0, 1720, 1722, 1, 0, 0, 0, 1721, 1709, + 1, 0, 0, 0, 1721, 1722, 1, 0, 0, 0, 1722, 1725, 1, 0, 0, 0, 1723, 1724, + 5, 150, 0, 0, 1724, 1726, 3, 94, 47, 0, 1725, 1723, 1, 0, 0, 0, 1725, 1726, + 1, 0, 0, 0, 1726, 1741, 1, 0, 0, 0, 1727, 1728, 5, 80, 0, 0, 1728, 1729, + 5, 41, 0, 0, 1729, 1734, 3, 94, 47, 0, 1730, 1731, 5, 6, 0, 0, 1731, 1733, + 3, 94, 47, 0, 1732, 1730, 1, 0, 0, 0, 1733, 1736, 1, 0, 0, 0, 1734, 1732, + 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0, 1735, 1739, 1, 0, 0, 0, 1736, 1734, + 1, 0, 0, 0, 1737, 1738, 5, 81, 0, 0, 1738, 1740, 3, 94, 47, 0, 1739, 1737, + 1, 0, 0, 0, 1739, 1740, 1, 0, 0, 0, 1740, 1742, 1, 0, 0, 0, 1741, 1727, + 1, 0, 0, 0, 1741, 1742, 1, 0, 0, 0, 1742, 1772, 1, 0, 0, 0, 1743, 1744, + 5, 146, 0, 0, 1744, 1745, 5, 4, 0, 0, 1745, 1750, 3, 94, 47, 0, 1746, 1747, + 5, 6, 0, 0, 1747, 1749, 3, 94, 47, 0, 1748, 1746, 1, 0, 0, 0, 1749, 1752, + 1, 0, 0, 0, 1750, 1748, 1, 0, 0, 0, 1750, 1751, 1, 0, 0, 0, 1751, 1753, + 1, 0, 0, 0, 1752, 1750, 1, 0, 0, 0, 1753, 1768, 5, 5, 0, 0, 1754, 1755, + 5, 6, 0, 0, 1755, 1756, 5, 4, 0, 0, 1756, 1761, 3, 94, 47, 0, 1757, 1758, + 5, 6, 0, 0, 1758, 1760, 3, 94, 47, 0, 1759, 1757, 1, 0, 0, 0, 1760, 1763, + 1, 0, 0, 0, 1761, 1759, 1, 0, 0, 0, 1761, 1762, 1, 0, 0, 0, 1762, 1764, + 1, 0, 0, 0, 1763, 1761, 1, 0, 0, 0, 1764, 1765, 5, 5, 0, 0, 1765, 1767, + 1, 0, 0, 0, 1766, 1754, 1, 0, 0, 0, 1767, 1770, 1, 0, 0, 0, 1768, 1766, + 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1772, 1, 0, 0, 0, 1770, 1768, + 1, 0, 0, 0, 1771, 1697, 1, 0, 0, 0, 1771, 1743, 1, 0, 0, 0, 1772, 137, + 1, 0, 0, 0, 1773, 1779, 5, 141, 0, 0, 1774, 1775, 5, 141, 0, 0, 1775, 1779, + 5, 30, 0, 0, 1776, 1779, 5, 92, 0, 0, 1777, 1779, 5, 70, 0, 0, 1778, 1773, + 1, 0, 0, 0, 1778, 1774, 1, 0, 0, 0, 1778, 1776, 1, 0, 0, 0, 1778, 1777, + 1, 0, 0, 0, 1779, 139, 1, 0, 0, 0, 1780, 1792, 3, 166, 83, 0, 1781, 1782, + 5, 4, 0, 0, 1782, 1787, 3, 172, 86, 0, 1783, 1784, 5, 6, 0, 0, 1784, 1786, + 3, 172, 86, 0, 1785, 1783, 1, 0, 0, 0, 1786, 1789, 1, 0, 0, 0, 1787, 1785, + 1, 0, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 1790, 1, 0, 0, 0, 1789, 1787, + 1, 0, 0, 0, 1790, 1791, 5, 5, 0, 0, 1791, 1793, 1, 0, 0, 0, 1792, 1781, + 1, 0, 0, 0, 1792, 1793, 1, 0, 0, 0, 1793, 141, 1, 0, 0, 0, 1794, 1796, + 7, 8, 0, 0, 1795, 1794, 1, 0, 0, 0, 1795, 1796, 1, 0, 0, 0, 1796, 1797, + 1, 0, 0, 0, 1797, 1800, 5, 154, 0, 0, 1798, 1800, 5, 8, 0, 0, 1799, 1795, + 1, 0, 0, 0, 1799, 1798, 1, 0, 0, 0, 1800, 143, 1, 0, 0, 0, 1801, 1802, + 7, 14, 0, 0, 1802, 145, 1, 0, 0, 0, 1803, 1804, 7, 15, 0, 0, 1804, 147, + 1, 0, 0, 0, 1805, 1806, 5, 156, 0, 0, 1806, 149, 1, 0, 0, 0, 1807, 1810, + 3, 94, 47, 0, 1808, 1810, 3, 74, 37, 0, 1809, 1807, 1, 0, 0, 0, 1809, 1808, + 1, 0, 0, 0, 1810, 151, 1, 0, 0, 0, 1811, 1812, 7, 16, 0, 0, 1812, 153, + 1, 0, 0, 0, 1813, 1814, 7, 17, 0, 0, 1814, 155, 1, 0, 0, 0, 1815, 1817, + 9, 0, 0, 0, 1816, 1815, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1816, + 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 157, 1, 0, 0, 0, 1820, 1821, + 3, 194, 97, 0, 1821, 159, 1, 0, 0, 0, 1822, 1823, 3, 194, 97, 0, 1823, + 161, 1, 0, 0, 0, 1824, 1825, 3, 194, 97, 0, 1825, 163, 1, 0, 0, 0, 1826, + 1827, 3, 194, 97, 0, 1827, 165, 1, 0, 0, 0, 1828, 1829, 3, 194, 97, 0, + 1829, 167, 1, 0, 0, 0, 1830, 1831, 3, 194, 97, 0, 1831, 169, 1, 0, 0, 0, + 1832, 1833, 3, 194, 97, 0, 1833, 171, 1, 0, 0, 0, 1834, 1835, 3, 194, 97, + 0, 1835, 173, 1, 0, 0, 0, 1836, 1837, 3, 194, 97, 0, 1837, 175, 1, 0, 0, + 0, 1838, 1839, 3, 194, 97, 0, 1839, 177, 1, 0, 0, 0, 1840, 1841, 3, 194, + 97, 0, 1841, 179, 1, 0, 0, 0, 1842, 1843, 3, 194, 97, 0, 1843, 181, 1, + 0, 0, 0, 1844, 1845, 3, 194, 97, 0, 1845, 183, 1, 0, 0, 0, 1846, 1847, + 3, 194, 97, 0, 1847, 185, 1, 0, 0, 0, 1848, 1849, 3, 194, 97, 0, 1849, + 187, 1, 0, 0, 0, 1850, 1851, 3, 194, 97, 0, 1851, 189, 1, 0, 0, 0, 1852, + 1853, 3, 194, 97, 0, 1853, 191, 1, 0, 0, 0, 1854, 1855, 3, 194, 97, 0, + 1855, 193, 1, 0, 0, 0, 1856, 1864, 5, 153, 0, 0, 1857, 1864, 3, 154, 77, + 0, 1858, 1864, 5, 156, 0, 0, 1859, 1860, 5, 4, 0, 0, 1860, 1861, 3, 194, + 97, 0, 1861, 1862, 5, 5, 0, 0, 1862, 1864, 1, 0, 0, 0, 1863, 1856, 1, 0, + 0, 0, 1863, 1857, 1, 0, 0, 0, 1863, 1858, 1, 0, 0, 0, 1863, 1859, 1, 0, + 0, 0, 1864, 195, 1, 0, 0, 0, 260, 198, 200, 211, 218, 223, 229, 235, 237, + 269, 274, 279, 289, 292, 295, 298, 315, 319, 327, 331, 333, 338, 340, 344, + 351, 354, 359, 363, 368, 377, 380, 386, 388, 392, 398, 403, 414, 420, 424, + 430, 435, 444, 446, 452, 456, 459, 463, 469, 474, 481, 492, 495, 497, 503, + 509, 513, 520, 526, 532, 538, 543, 555, 560, 571, 576, 579, 586, 589, 596, + 605, 608, 614, 616, 620, 628, 633, 641, 646, 654, 659, 667, 672, 678, 685, + 688, 696, 706, 709, 715, 717, 720, 739, 745, 754, 759, 768, 779, 786, 792, + 798, 807, 814, 818, 820, 824, 831, 833, 837, 840, 847, 854, 857, 867, 870, + 876, 878, 882, 889, 892, 900, 910, 913, 919, 921, 925, 932, 941, 945, 947, + 951, 960, 965, 967, 976, 987, 994, 997, 1000, 1013, 1027, 1032, 1035, 1048, + 1062, 1067, 1076, 1079, 1085, 1087, 1094, 1096, 1103, 1110, 1115, 1119, + 1123, 1139, 1144, 1148, 1171, 1177, 1179, 1183, 1188, 1196, 1201, 1210, + 1217, 1221, 1237, 1240, 1248, 1257, 1261, 1266, 1296, 1308, 1313, 1325, + 1331, 1338, 1342, 1352, 1355, 1361, 1364, 1366, 1368, 1375, 1384, 1389, + 1401, 1405, 1409, 1413, 1420, 1423, 1425, 1435, 1442, 1445, 1449, 1460, + 1470, 1484, 1492, 1495, 1503, 1511, 1519, 1529, 1545, 1551, 1559, 1564, + 1567, 1572, 1581, 1586, 1600, 1603, 1605, 1610, 1614, 1617, 1624, 1632, + 1636, 1640, 1643, 1649, 1652, 1654, 1663, 1668, 1672, 1676, 1679, 1690, + 1695, 1699, 1706, 1715, 1719, 1721, 1725, 1734, 1739, 1741, 1750, 1761, + 1768, 1771, 1778, 1787, 1792, 1795, 1799, 1809, 1818, 1863, +} + deserializer := antlr.NewATNDeserializer(nil) + staticData.atn = deserializer.Deserialize(staticData.serializedATN) + atn := staticData.atn + staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) + decisionToDFA := staticData.decisionToDFA + for index, state := range atn.DecisionToState { + decisionToDFA[index] = antlr.NewDFA(state, index) + } +} + +// SqlParserInit initializes any static state used to implement SqlParser. By default the +// static state used to implement the parser is lazily initialized during the first call to +// NewSqlParser(). You can call this function if you wish to initialize the static state ahead +// of time. +func SqlParserInit() { + staticData := &sqlParserStaticData + staticData.once.Do(sqlParserInit) +} + +// NewSqlParser produces a new parser instance for the optional input antlr.TokenStream. +func NewSqlParser(input antlr.TokenStream) *SqlParser { + SqlParserInit() + this := new(SqlParser) + this.BaseParser = antlr.NewBaseParser(input) + staticData := &sqlParserStaticData + this.Interpreter = antlr.NewParserATNSimulator(this, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) + this.RuleNames = staticData.ruleNames + this.LiteralNames = staticData.literalNames + this.SymbolicNames = staticData.symbolicNames + this.GrammarFileName = "Sql.g4" + + return this +} + + +// SqlParser tokens. +const ( + SqlParserEOF = antlr.TokenEOF + SqlParserT__0 = 1 + SqlParserSCOL = 2 + SqlParserDOT = 3 + SqlParserOPEN_PAR = 4 + SqlParserCLOSE_PAR = 5 + SqlParserCOMMA = 6 + SqlParserASSIGN = 7 + SqlParserSTAR = 8 + SqlParserPLUS = 9 + SqlParserMINUS = 10 + SqlParserTILDE = 11 + SqlParserPIPE2 = 12 + SqlParserDIV = 13 + SqlParserMOD = 14 + SqlParserLT2 = 15 + SqlParserGT2 = 16 + SqlParserAMP = 17 + SqlParserPIPE = 18 + SqlParserLT = 19 + SqlParserLT_EQ = 20 + SqlParserGT = 21 + SqlParserGT_EQ = 22 + SqlParserEQ = 23 + SqlParserNOT_EQ1 = 24 + SqlParserNOT_EQ2 = 25 + SqlParserK_ABORT = 26 + SqlParserK_ACTION = 27 + SqlParserK_ADD = 28 + SqlParserK_AFTER = 29 + SqlParserK_ALL = 30 + SqlParserK_ALTER = 31 + SqlParserK_ANALYZE = 32 + SqlParserK_AND = 33 + SqlParserK_AS = 34 + SqlParserK_ASC = 35 + SqlParserK_ATTACH = 36 + SqlParserK_AUTOINCREMENT = 37 + SqlParserK_BEFORE = 38 + SqlParserK_BEGIN = 39 + SqlParserK_BETWEEN = 40 + SqlParserK_BY = 41 + SqlParserK_CASCADE = 42 + SqlParserK_CASE = 43 + SqlParserK_CAST = 44 + SqlParserK_CHECK = 45 + SqlParserK_COLLATE = 46 + SqlParserK_COLUMN = 47 + SqlParserK_COMMIT = 48 + SqlParserK_CONFLICT = 49 + SqlParserK_CONSTRAINT = 50 + SqlParserK_CREATE = 51 + SqlParserK_CROSS = 52 + SqlParserK_CURRENT_DATE = 53 + SqlParserK_CURRENT_TIME = 54 + SqlParserK_CURRENT_TIMESTAMP = 55 + SqlParserK_DATABASE = 56 + SqlParserK_DEFAULT = 57 + SqlParserK_DEFERRABLE = 58 + SqlParserK_DEFERRED = 59 + SqlParserK_DELETE = 60 + SqlParserK_DESC = 61 + SqlParserK_DETACH = 62 + SqlParserK_DISTINCT = 63 + SqlParserK_DROP = 64 + SqlParserK_EACH = 65 + SqlParserK_ELSE = 66 + SqlParserK_END = 67 + SqlParserK_ENABLE = 68 + SqlParserK_ESCAPE = 69 + SqlParserK_EXCEPT = 70 + SqlParserK_EXCLUSIVE = 71 + SqlParserK_EXISTS = 72 + SqlParserK_EXPLAIN = 73 + SqlParserK_FAIL = 74 + SqlParserK_FOR = 75 + SqlParserK_FOREIGN = 76 + SqlParserK_FROM = 77 + SqlParserK_FULL = 78 + SqlParserK_GLOB = 79 + SqlParserK_GROUP = 80 + SqlParserK_HAVING = 81 + SqlParserK_IF = 82 + SqlParserK_IGNORE = 83 + SqlParserK_IMMEDIATE = 84 + SqlParserK_IN = 85 + SqlParserK_INDEX = 86 + SqlParserK_INDEXED = 87 + SqlParserK_INITIALLY = 88 + SqlParserK_INNER = 89 + SqlParserK_INSERT = 90 + SqlParserK_INSTEAD = 91 + SqlParserK_INTERSECT = 92 + SqlParserK_INTO = 93 + SqlParserK_IS = 94 + SqlParserK_ISNULL = 95 + SqlParserK_JOIN = 96 + SqlParserK_KEY = 97 + SqlParserK_LEFT = 98 + SqlParserK_LIKE = 99 + SqlParserK_LIMIT = 100 + SqlParserK_MATCH = 101 + SqlParserK_NATURAL = 102 + SqlParserK_NEXTVAL = 103 + SqlParserK_NO = 104 + SqlParserK_NOT = 105 + SqlParserK_NOTNULL = 106 + SqlParserK_NULL = 107 + SqlParserK_OF = 108 + SqlParserK_OFFSET = 109 + SqlParserK_ON = 110 + SqlParserK_ONLY = 111 + SqlParserK_OR = 112 + SqlParserK_ORDER = 113 + SqlParserK_OUTER = 114 + SqlParserK_PLAN = 115 + SqlParserK_PRAGMA = 116 + SqlParserK_PRIMARY = 117 + SqlParserK_QUERY = 118 + SqlParserK_RAISE = 119 + SqlParserK_RECURSIVE = 120 + SqlParserK_REFERENCES = 121 + SqlParserK_REGEXP = 122 + SqlParserK_REINDEX = 123 + SqlParserK_RELEASE = 124 + SqlParserK_RENAME = 125 + SqlParserK_REPLACE = 126 + SqlParserK_RESTRICT = 127 + SqlParserK_RIGHT = 128 + SqlParserK_ROLLBACK = 129 + SqlParserK_ROW = 130 + SqlParserK_SAVEPOINT = 131 + SqlParserK_SELECT = 132 + SqlParserK_SET = 133 + SqlParserK_TABLE = 134 + SqlParserK_TEMP = 135 + SqlParserK_TEMPORARY = 136 + SqlParserK_THEN = 137 + SqlParserK_TO = 138 + SqlParserK_TRANSACTION = 139 + SqlParserK_TRIGGER = 140 + SqlParserK_UNION = 141 + SqlParserK_UNIQUE = 142 + SqlParserK_UPDATE = 143 + SqlParserK_USING = 144 + SqlParserK_VACUUM = 145 + SqlParserK_VALUES = 146 + SqlParserK_VIEW = 147 + SqlParserK_VIRTUAL = 148 + SqlParserK_WHEN = 149 + SqlParserK_WHERE = 150 + SqlParserK_WITH = 151 + SqlParserK_WITHOUT = 152 + SqlParserIDENTIFIER = 153 + SqlParserNUMERIC_LITERAL = 154 + SqlParserBIND_PARAMETER = 155 + SqlParserSTRING_LITERAL = 156 + SqlParserBLOB_LITERAL = 157 + SqlParserSINGLE_LINE_COMMENT = 158 + SqlParserMULTILINE_COMMENT = 159 + SqlParserSPACES = 160 + SqlParserUNEXPECTED_CHAR = 161 +) + +// SqlParser rules. +const ( + SqlParserRULE_parse = 0 + SqlParserRULE_error = 1 + SqlParserRULE_sql_stmt_list = 2 + SqlParserRULE_sql_stmt = 3 + SqlParserRULE_alter_table_stmt = 4 + SqlParserRULE_alter_table_add_constraint = 5 + SqlParserRULE_alter_table_add = 6 + SqlParserRULE_analyze_stmt = 7 + SqlParserRULE_attach_stmt = 8 + SqlParserRULE_begin_stmt = 9 + SqlParserRULE_commit_stmt = 10 + SqlParserRULE_compound_select_stmt = 11 + SqlParserRULE_create_index_stmt = 12 + SqlParserRULE_create_table_stmt = 13 + SqlParserRULE_create_trigger_stmt = 14 + SqlParserRULE_create_view_stmt = 15 + SqlParserRULE_create_virtual_table_stmt = 16 + SqlParserRULE_delete_stmt = 17 + SqlParserRULE_delete_stmt_limited = 18 + SqlParserRULE_detach_stmt = 19 + SqlParserRULE_drop_index_stmt = 20 + SqlParserRULE_drop_table_stmt = 21 + SqlParserRULE_drop_trigger_stmt = 22 + SqlParserRULE_drop_view_stmt = 23 + SqlParserRULE_factored_select_stmt = 24 + SqlParserRULE_insert_stmt = 25 + SqlParserRULE_pragma_stmt = 26 + SqlParserRULE_reindex_stmt = 27 + SqlParserRULE_release_stmt = 28 + SqlParserRULE_rollback_stmt = 29 + SqlParserRULE_savepoint_stmt = 30 + SqlParserRULE_simple_select_stmt = 31 + SqlParserRULE_select_stmt = 32 + SqlParserRULE_select_or_values = 33 + SqlParserRULE_update_stmt = 34 + SqlParserRULE_update_stmt_limited = 35 + SqlParserRULE_vacuum_stmt = 36 + SqlParserRULE_column_def = 37 + SqlParserRULE_type_name = 38 + SqlParserRULE_column_constraint = 39 + SqlParserRULE_column_constraint_primary_key = 40 + SqlParserRULE_column_constraint_foreign_key = 41 + SqlParserRULE_column_constraint_not_null = 42 + SqlParserRULE_column_constraint_null = 43 + SqlParserRULE_column_default = 44 + SqlParserRULE_column_default_value = 45 + SqlParserRULE_conflict_clause = 46 + SqlParserRULE_expr = 47 + SqlParserRULE_foreign_key_clause = 48 + SqlParserRULE_fk_target_column_name = 49 + SqlParserRULE_raise_function = 50 + SqlParserRULE_indexed_column = 51 + SqlParserRULE_table_constraint = 52 + SqlParserRULE_table_constraint_primary_key = 53 + SqlParserRULE_table_constraint_foreign_key = 54 + SqlParserRULE_table_constraint_unique = 55 + SqlParserRULE_table_constraint_key = 56 + SqlParserRULE_fk_origin_column_name = 57 + SqlParserRULE_with_clause = 58 + SqlParserRULE_qualified_table_name = 59 + SqlParserRULE_ordering_term = 60 + SqlParserRULE_pragma_value = 61 + SqlParserRULE_common_table_expression = 62 + SqlParserRULE_result_column = 63 + SqlParserRULE_table_or_subquery = 64 + SqlParserRULE_join_clause = 65 + SqlParserRULE_join_operator = 66 + SqlParserRULE_join_constraint = 67 + SqlParserRULE_select_core = 68 + SqlParserRULE_compound_operator = 69 + SqlParserRULE_cte_table_name = 70 + SqlParserRULE_signed_number = 71 + SqlParserRULE_literal_value = 72 + SqlParserRULE_unary_operator = 73 + SqlParserRULE_error_message = 74 + SqlParserRULE_module_argument = 75 + SqlParserRULE_column_alias = 76 + SqlParserRULE_keyword = 77 + SqlParserRULE_unknown = 78 + SqlParserRULE_name = 79 + SqlParserRULE_function_name = 80 + SqlParserRULE_database_name = 81 + SqlParserRULE_source_table_name = 82 + SqlParserRULE_table_name = 83 + SqlParserRULE_table_or_index_name = 84 + SqlParserRULE_new_table_name = 85 + SqlParserRULE_column_name = 86 + SqlParserRULE_collation_name = 87 + SqlParserRULE_foreign_table = 88 + SqlParserRULE_index_name = 89 + SqlParserRULE_trigger_name = 90 + SqlParserRULE_view_name = 91 + SqlParserRULE_module_name = 92 + SqlParserRULE_pragma_name = 93 + SqlParserRULE_savepoint_name = 94 + SqlParserRULE_table_alias = 95 + SqlParserRULE_transaction_name = 96 + SqlParserRULE_any_name = 97 +) + +// IParseContext is an interface to support dynamic dispatch. +type IParseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsParseContext differentiates from other interfaces. + IsParseContext() +} + +type ParseContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyParseContext() *ParseContext { + var p = new(ParseContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_parse + return p +} + +func (*ParseContext) IsParseContext() {} + +func NewParseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ParseContext { + var p = new(ParseContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_parse + + return p +} + +func (s *ParseContext) GetParser() antlr.Parser { return s.parser } + +func (s *ParseContext) EOF() antlr.TerminalNode { + return s.GetToken(SqlParserEOF, 0) +} + +func (s *ParseContext) AllSql_stmt_list() []ISql_stmt_listContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISql_stmt_listContext); ok { + len++ + } + } + + tst := make([]ISql_stmt_listContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISql_stmt_listContext); ok { + tst[i] = t.(ISql_stmt_listContext) + i++ + } + } + + return tst +} + +func (s *ParseContext) Sql_stmt_list(i int) ISql_stmt_listContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISql_stmt_listContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISql_stmt_listContext) +} + +func (s *ParseContext) AllError() []IErrorContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IErrorContext); ok { + len++ + } + } + + tst := make([]IErrorContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IErrorContext); ok { + tst[i] = t.(IErrorContext) + i++ + } + } + + return tst +} + +func (s *ParseContext) Error(i int) IErrorContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IErrorContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IErrorContext) +} + +func (s *ParseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ParseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *ParseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterParse(s) + } +} + +func (s *ParseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitParse(s) + } +} + + + + +func (p *SqlParser) Parse() (localctx IParseContext) { + this := p + _ = this + + localctx = NewParseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 0, SqlParserRULE_parse) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(200) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserSCOL || _la == SqlParserK_ALTER || ((((_la - 32)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 32))) & ((1 << (SqlParserK_ANALYZE - 32)) | (1 << (SqlParserK_ATTACH - 32)) | (1 << (SqlParserK_BEGIN - 32)) | (1 << (SqlParserK_COMMIT - 32)) | (1 << (SqlParserK_CREATE - 32)) | (1 << (SqlParserK_DELETE - 32)) | (1 << (SqlParserK_DETACH - 32)))) != 0) || ((((_la - 64)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 64))) & ((1 << (SqlParserK_DROP - 64)) | (1 << (SqlParserK_END - 64)) | (1 << (SqlParserK_EXPLAIN - 64)) | (1 << (SqlParserK_INSERT - 64)))) != 0) || ((((_la - 116)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 116))) & ((1 << (SqlParserK_PRAGMA - 116)) | (1 << (SqlParserK_REINDEX - 116)) | (1 << (SqlParserK_RELEASE - 116)) | (1 << (SqlParserK_REPLACE - 116)) | (1 << (SqlParserK_ROLLBACK - 116)) | (1 << (SqlParserK_SAVEPOINT - 116)) | (1 << (SqlParserK_SELECT - 116)) | (1 << (SqlParserK_UPDATE - 116)) | (1 << (SqlParserK_VACUUM - 116)) | (1 << (SqlParserK_VALUES - 116)))) != 0) || _la == SqlParserK_WITH || _la == SqlParserUNEXPECTED_CHAR { + p.SetState(198) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserSCOL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_ATTACH, SqlParserK_BEGIN, SqlParserK_COMMIT, SqlParserK_CREATE, SqlParserK_DELETE, SqlParserK_DETACH, SqlParserK_DROP, SqlParserK_END, SqlParserK_EXPLAIN, SqlParserK_INSERT, SqlParserK_PRAGMA, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_REPLACE, SqlParserK_ROLLBACK, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_UPDATE, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_WITH: + { + p.SetState(196) + p.Sql_stmt_list() + } + + + case SqlParserUNEXPECTED_CHAR: + { + p.SetState(197) + p.Error() + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + p.SetState(202) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(203) + p.Match(SqlParserEOF) + } + + + + return localctx +} + + +// IErrorContext is an interface to support dynamic dispatch. +type IErrorContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Get_UNEXPECTED_CHAR returns the _UNEXPECTED_CHAR token. + Get_UNEXPECTED_CHAR() antlr.Token + + + // Set_UNEXPECTED_CHAR sets the _UNEXPECTED_CHAR token. + Set_UNEXPECTED_CHAR(antlr.Token) + + + // IsErrorContext differentiates from other interfaces. + IsErrorContext() +} + +type ErrorContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser + _UNEXPECTED_CHAR antlr.Token +} + +func NewEmptyErrorContext() *ErrorContext { + var p = new(ErrorContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_error + return p +} + +func (*ErrorContext) IsErrorContext() {} + +func NewErrorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ErrorContext { + var p = new(ErrorContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_error + + return p +} + +func (s *ErrorContext) GetParser() antlr.Parser { return s.parser } + +func (s *ErrorContext) Get_UNEXPECTED_CHAR() antlr.Token { return s._UNEXPECTED_CHAR } + + +func (s *ErrorContext) Set_UNEXPECTED_CHAR(v antlr.Token) { s._UNEXPECTED_CHAR = v } + + +func (s *ErrorContext) UNEXPECTED_CHAR() antlr.TerminalNode { + return s.GetToken(SqlParserUNEXPECTED_CHAR, 0) +} + +func (s *ErrorContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ErrorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *ErrorContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterError(s) + } +} + +func (s *ErrorContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitError(s) + } +} + + + + +func (p *SqlParser) Error() (localctx IErrorContext) { + this := p + _ = this + + localctx = NewErrorContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 2, SqlParserRULE_error) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(205) + + var _m = p.Match(SqlParserUNEXPECTED_CHAR) + + localctx.(*ErrorContext)._UNEXPECTED_CHAR = _m + } + + + + + + return localctx +} + + +// ISql_stmt_listContext is an interface to support dynamic dispatch. +type ISql_stmt_listContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSql_stmt_listContext differentiates from other interfaces. + IsSql_stmt_listContext() +} + +type Sql_stmt_listContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySql_stmt_listContext() *Sql_stmt_listContext { + var p = new(Sql_stmt_listContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_sql_stmt_list + return p +} + +func (*Sql_stmt_listContext) IsSql_stmt_listContext() {} + +func NewSql_stmt_listContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Sql_stmt_listContext { + var p = new(Sql_stmt_listContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_sql_stmt_list + + return p +} + +func (s *Sql_stmt_listContext) GetParser() antlr.Parser { return s.parser } + +func (s *Sql_stmt_listContext) AllSql_stmt() []ISql_stmtContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISql_stmtContext); ok { + len++ + } + } + + tst := make([]ISql_stmtContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISql_stmtContext); ok { + tst[i] = t.(ISql_stmtContext) + i++ + } + } + + return tst +} + +func (s *Sql_stmt_listContext) Sql_stmt(i int) ISql_stmtContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISql_stmtContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISql_stmtContext) +} + +func (s *Sql_stmt_listContext) AllSCOL() []antlr.TerminalNode { + return s.GetTokens(SqlParserSCOL) +} + +func (s *Sql_stmt_listContext) SCOL(i int) antlr.TerminalNode { + return s.GetToken(SqlParserSCOL, i) +} + +func (s *Sql_stmt_listContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Sql_stmt_listContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Sql_stmt_listContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSql_stmt_list(s) + } +} + +func (s *Sql_stmt_listContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSql_stmt_list(s) + } +} + + + + +func (p *SqlParser) Sql_stmt_list() (localctx ISql_stmt_listContext) { + this := p + _ = this + + localctx = NewSql_stmt_listContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 4, SqlParserRULE_sql_stmt_list) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + var _alt int + + p.EnterOuterAlt(localctx, 1) + p.SetState(211) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserSCOL { + { + p.SetState(208) + p.Match(SqlParserSCOL) + } + + + p.SetState(213) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(214) + p.Sql_stmt() + } + p.SetState(223) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 4, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + p.SetState(216) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for ok := true; ok; ok = _la == SqlParserSCOL { + { + p.SetState(215) + p.Match(SqlParserSCOL) + } + + + p.SetState(218) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(220) + p.Sql_stmt() + } + + + } + p.SetState(225) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 4, p.GetParserRuleContext()) + } + p.SetState(229) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 5, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(226) + p.Match(SqlParserSCOL) + } + + + } + p.SetState(231) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 5, p.GetParserRuleContext()) + } + + + + return localctx +} + + +// ISql_stmtContext is an interface to support dynamic dispatch. +type ISql_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSql_stmtContext differentiates from other interfaces. + IsSql_stmtContext() +} + +type Sql_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySql_stmtContext() *Sql_stmtContext { + var p = new(Sql_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_sql_stmt + return p +} + +func (*Sql_stmtContext) IsSql_stmtContext() {} + +func NewSql_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Sql_stmtContext { + var p = new(Sql_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_sql_stmt + + return p +} + +func (s *Sql_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Sql_stmtContext) Alter_table_stmt() IAlter_table_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAlter_table_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAlter_table_stmtContext) +} + +func (s *Sql_stmtContext) Analyze_stmt() IAnalyze_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAnalyze_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAnalyze_stmtContext) +} + +func (s *Sql_stmtContext) Attach_stmt() IAttach_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAttach_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAttach_stmtContext) +} + +func (s *Sql_stmtContext) Begin_stmt() IBegin_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBegin_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IBegin_stmtContext) +} + +func (s *Sql_stmtContext) Commit_stmt() ICommit_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICommit_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICommit_stmtContext) +} + +func (s *Sql_stmtContext) Compound_select_stmt() ICompound_select_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICompound_select_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICompound_select_stmtContext) +} + +func (s *Sql_stmtContext) Create_index_stmt() ICreate_index_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICreate_index_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICreate_index_stmtContext) +} + +func (s *Sql_stmtContext) Create_table_stmt() ICreate_table_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICreate_table_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICreate_table_stmtContext) +} + +func (s *Sql_stmtContext) Create_trigger_stmt() ICreate_trigger_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICreate_trigger_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICreate_trigger_stmtContext) +} + +func (s *Sql_stmtContext) Create_view_stmt() ICreate_view_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICreate_view_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICreate_view_stmtContext) +} + +func (s *Sql_stmtContext) Create_virtual_table_stmt() ICreate_virtual_table_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICreate_virtual_table_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICreate_virtual_table_stmtContext) +} + +func (s *Sql_stmtContext) Delete_stmt() IDelete_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDelete_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDelete_stmtContext) +} + +func (s *Sql_stmtContext) Delete_stmt_limited() IDelete_stmt_limitedContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDelete_stmt_limitedContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDelete_stmt_limitedContext) +} + +func (s *Sql_stmtContext) Detach_stmt() IDetach_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDetach_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDetach_stmtContext) +} + +func (s *Sql_stmtContext) Drop_index_stmt() IDrop_index_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDrop_index_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDrop_index_stmtContext) +} + +func (s *Sql_stmtContext) Drop_table_stmt() IDrop_table_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDrop_table_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDrop_table_stmtContext) +} + +func (s *Sql_stmtContext) Drop_trigger_stmt() IDrop_trigger_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDrop_trigger_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDrop_trigger_stmtContext) +} + +func (s *Sql_stmtContext) Drop_view_stmt() IDrop_view_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDrop_view_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDrop_view_stmtContext) +} + +func (s *Sql_stmtContext) Factored_select_stmt() IFactored_select_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFactored_select_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IFactored_select_stmtContext) +} + +func (s *Sql_stmtContext) Insert_stmt() IInsert_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInsert_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IInsert_stmtContext) +} + +func (s *Sql_stmtContext) Pragma_stmt() IPragma_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPragma_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IPragma_stmtContext) +} + +func (s *Sql_stmtContext) Reindex_stmt() IReindex_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IReindex_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IReindex_stmtContext) +} + +func (s *Sql_stmtContext) Release_stmt() IRelease_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRelease_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IRelease_stmtContext) +} + +func (s *Sql_stmtContext) Rollback_stmt() IRollback_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRollback_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IRollback_stmtContext) +} + +func (s *Sql_stmtContext) Savepoint_stmt() ISavepoint_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISavepoint_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISavepoint_stmtContext) +} + +func (s *Sql_stmtContext) Simple_select_stmt() ISimple_select_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimple_select_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISimple_select_stmtContext) +} + +func (s *Sql_stmtContext) Select_stmt() ISelect_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISelect_stmtContext) +} + +func (s *Sql_stmtContext) Update_stmt() IUpdate_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUpdate_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IUpdate_stmtContext) +} + +func (s *Sql_stmtContext) Update_stmt_limited() IUpdate_stmt_limitedContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUpdate_stmt_limitedContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IUpdate_stmt_limitedContext) +} + +func (s *Sql_stmtContext) Vacuum_stmt() IVacuum_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IVacuum_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IVacuum_stmtContext) +} + +func (s *Sql_stmtContext) K_EXPLAIN() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXPLAIN, 0) +} + +func (s *Sql_stmtContext) K_QUERY() antlr.TerminalNode { + return s.GetToken(SqlParserK_QUERY, 0) +} + +func (s *Sql_stmtContext) K_PLAN() antlr.TerminalNode { + return s.GetToken(SqlParserK_PLAN, 0) +} + +func (s *Sql_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Sql_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Sql_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSql_stmt(s) + } +} + +func (s *Sql_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSql_stmt(s) + } +} + + + + +func (p *SqlParser) Sql_stmt() (localctx ISql_stmtContext) { + this := p + _ = this + + localctx = NewSql_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 6, SqlParserRULE_sql_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(237) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_EXPLAIN { + { + p.SetState(232) + p.Match(SqlParserK_EXPLAIN) + } + p.SetState(235) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_QUERY { + { + p.SetState(233) + p.Match(SqlParserK_QUERY) + } + { + p.SetState(234) + p.Match(SqlParserK_PLAN) + } + + } + + } + p.SetState(269) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 8, p.GetParserRuleContext()) { + case 1: + { + p.SetState(239) + p.Alter_table_stmt() + } + + + case 2: + { + p.SetState(240) + p.Analyze_stmt() + } + + + case 3: + { + p.SetState(241) + p.Attach_stmt() + } + + + case 4: + { + p.SetState(242) + p.Begin_stmt() + } + + + case 5: + { + p.SetState(243) + p.Commit_stmt() + } + + + case 6: + { + p.SetState(244) + p.Compound_select_stmt() + } + + + case 7: + { + p.SetState(245) + p.Create_index_stmt() + } + + + case 8: + { + p.SetState(246) + p.Create_table_stmt() + } + + + case 9: + { + p.SetState(247) + p.Create_trigger_stmt() + } + + + case 10: + { + p.SetState(248) + p.Create_view_stmt() + } + + + case 11: + { + p.SetState(249) + p.Create_virtual_table_stmt() + } + + + case 12: + { + p.SetState(250) + p.Delete_stmt() + } + + + case 13: + { + p.SetState(251) + p.Delete_stmt_limited() + } + + + case 14: + { + p.SetState(252) + p.Detach_stmt() + } + + + case 15: + { + p.SetState(253) + p.Drop_index_stmt() + } + + + case 16: + { + p.SetState(254) + p.Drop_table_stmt() + } + + + case 17: + { + p.SetState(255) + p.Drop_trigger_stmt() + } + + + case 18: + { + p.SetState(256) + p.Drop_view_stmt() + } + + + case 19: + { + p.SetState(257) + p.Factored_select_stmt() + } + + + case 20: + { + p.SetState(258) + p.Insert_stmt() + } + + + case 21: + { + p.SetState(259) + p.Pragma_stmt() + } + + + case 22: + { + p.SetState(260) + p.Reindex_stmt() + } + + + case 23: + { + p.SetState(261) + p.Release_stmt() + } + + + case 24: + { + p.SetState(262) + p.Rollback_stmt() + } + + + case 25: + { + p.SetState(263) + p.Savepoint_stmt() + } + + + case 26: + { + p.SetState(264) + p.Simple_select_stmt() + } + + + case 27: + { + p.SetState(265) + p.Select_stmt() + } + + + case 28: + { + p.SetState(266) + p.Update_stmt() + } + + + case 29: + { + p.SetState(267) + p.Update_stmt_limited() + } + + + case 30: + { + p.SetState(268) + p.Vacuum_stmt() + } + + } + + + + return localctx +} + + +// IAlter_table_stmtContext is an interface to support dynamic dispatch. +type IAlter_table_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsAlter_table_stmtContext differentiates from other interfaces. + IsAlter_table_stmtContext() +} + +type Alter_table_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAlter_table_stmtContext() *Alter_table_stmtContext { + var p = new(Alter_table_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_alter_table_stmt + return p +} + +func (*Alter_table_stmtContext) IsAlter_table_stmtContext() {} + +func NewAlter_table_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Alter_table_stmtContext { + var p = new(Alter_table_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_alter_table_stmt + + return p +} + +func (s *Alter_table_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Alter_table_stmtContext) K_ALTER() antlr.TerminalNode { + return s.GetToken(SqlParserK_ALTER, 0) +} + +func (s *Alter_table_stmtContext) K_TABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_TABLE, 0) +} + +func (s *Alter_table_stmtContext) Source_table_name() ISource_table_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISource_table_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISource_table_nameContext) +} + +func (s *Alter_table_stmtContext) K_RENAME() antlr.TerminalNode { + return s.GetToken(SqlParserK_RENAME, 0) +} + +func (s *Alter_table_stmtContext) K_TO() antlr.TerminalNode { + return s.GetToken(SqlParserK_TO, 0) +} + +func (s *Alter_table_stmtContext) New_table_name() INew_table_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INew_table_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(INew_table_nameContext) +} + +func (s *Alter_table_stmtContext) Alter_table_add() IAlter_table_addContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAlter_table_addContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAlter_table_addContext) +} + +func (s *Alter_table_stmtContext) Alter_table_add_constraint() IAlter_table_add_constraintContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAlter_table_add_constraintContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAlter_table_add_constraintContext) +} + +func (s *Alter_table_stmtContext) K_ADD() antlr.TerminalNode { + return s.GetToken(SqlParserK_ADD, 0) +} + +func (s *Alter_table_stmtContext) Column_def() IColumn_defContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_defContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_defContext) +} + +func (s *Alter_table_stmtContext) K_ONLY() antlr.TerminalNode { + return s.GetToken(SqlParserK_ONLY, 0) +} + +func (s *Alter_table_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Alter_table_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Alter_table_stmtContext) K_ENABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_ENABLE, 0) +} + +func (s *Alter_table_stmtContext) Unknown() IUnknownContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnknownContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IUnknownContext) +} + +func (s *Alter_table_stmtContext) K_COLUMN() antlr.TerminalNode { + return s.GetToken(SqlParserK_COLUMN, 0) +} + +func (s *Alter_table_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Alter_table_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Alter_table_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterAlter_table_stmt(s) + } +} + +func (s *Alter_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitAlter_table_stmt(s) + } +} + + + + +func (p *SqlParser) Alter_table_stmt() (localctx IAlter_table_stmtContext) { + this := p + _ = this + + localctx = NewAlter_table_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 8, SqlParserRULE_alter_table_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(271) + p.Match(SqlParserK_ALTER) + } + { + p.SetState(272) + p.Match(SqlParserK_TABLE) + } + p.SetState(274) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_ONLY { + { + p.SetState(273) + p.Match(SqlParserK_ONLY) + } + + } + p.SetState(279) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 10, p.GetParserRuleContext()) == 1 { + { + p.SetState(276) + p.Database_name() + } + { + p.SetState(277) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(281) + p.Source_table_name() + } + p.SetState(292) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 12, p.GetParserRuleContext()) { + case 1: + { + p.SetState(282) + p.Match(SqlParserK_RENAME) + } + { + p.SetState(283) + p.Match(SqlParserK_TO) + } + { + p.SetState(284) + p.New_table_name() + } + + + case 2: + { + p.SetState(285) + p.Alter_table_add() + } + + + case 3: + { + p.SetState(286) + p.Alter_table_add_constraint() + } + + + case 4: + { + p.SetState(287) + p.Match(SqlParserK_ADD) + } + p.SetState(289) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 11, p.GetParserRuleContext()) == 1 { + { + p.SetState(288) + p.Match(SqlParserK_COLUMN) + } + + + } + { + p.SetState(291) + p.Column_def() + } + + } + p.SetState(295) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 13, p.GetParserRuleContext()) == 1 { + { + p.SetState(294) + p.Match(SqlParserK_ENABLE) + } + + + } + p.SetState(298) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 14, p.GetParserRuleContext()) == 1 { + { + p.SetState(297) + p.Unknown() + } + + + } + + + + return localctx +} + + +// IAlter_table_add_constraintContext is an interface to support dynamic dispatch. +type IAlter_table_add_constraintContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsAlter_table_add_constraintContext differentiates from other interfaces. + IsAlter_table_add_constraintContext() +} + +type Alter_table_add_constraintContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAlter_table_add_constraintContext() *Alter_table_add_constraintContext { + var p = new(Alter_table_add_constraintContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_alter_table_add_constraint + return p +} + +func (*Alter_table_add_constraintContext) IsAlter_table_add_constraintContext() {} + +func NewAlter_table_add_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Alter_table_add_constraintContext { + var p = new(Alter_table_add_constraintContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_alter_table_add_constraint + + return p +} + +func (s *Alter_table_add_constraintContext) GetParser() antlr.Parser { return s.parser } + +func (s *Alter_table_add_constraintContext) K_ADD() antlr.TerminalNode { + return s.GetToken(SqlParserK_ADD, 0) +} + +func (s *Alter_table_add_constraintContext) K_CONSTRAINT() antlr.TerminalNode { + return s.GetToken(SqlParserK_CONSTRAINT, 0) +} + +func (s *Alter_table_add_constraintContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Alter_table_add_constraintContext) Table_constraint() ITable_constraintContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_constraintContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_constraintContext) +} + +func (s *Alter_table_add_constraintContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Alter_table_add_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Alter_table_add_constraintContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterAlter_table_add_constraint(s) + } +} + +func (s *Alter_table_add_constraintContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitAlter_table_add_constraint(s) + } +} + + + + +func (p *SqlParser) Alter_table_add_constraint() (localctx IAlter_table_add_constraintContext) { + this := p + _ = this + + localctx = NewAlter_table_add_constraintContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 10, SqlParserRULE_alter_table_add_constraint) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(300) + p.Match(SqlParserK_ADD) + } + { + p.SetState(301) + p.Match(SqlParserK_CONSTRAINT) + } + { + p.SetState(302) + p.Any_name() + } + { + p.SetState(303) + p.Table_constraint() + } + + + + return localctx +} + + +// IAlter_table_addContext is an interface to support dynamic dispatch. +type IAlter_table_addContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsAlter_table_addContext differentiates from other interfaces. + IsAlter_table_addContext() +} + +type Alter_table_addContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAlter_table_addContext() *Alter_table_addContext { + var p = new(Alter_table_addContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_alter_table_add + return p +} + +func (*Alter_table_addContext) IsAlter_table_addContext() {} + +func NewAlter_table_addContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Alter_table_addContext { + var p = new(Alter_table_addContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_alter_table_add + + return p +} + +func (s *Alter_table_addContext) GetParser() antlr.Parser { return s.parser } + +func (s *Alter_table_addContext) K_ADD() antlr.TerminalNode { + return s.GetToken(SqlParserK_ADD, 0) +} + +func (s *Alter_table_addContext) Table_constraint() ITable_constraintContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_constraintContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_constraintContext) +} + +func (s *Alter_table_addContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Alter_table_addContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Alter_table_addContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterAlter_table_add(s) + } +} + +func (s *Alter_table_addContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitAlter_table_add(s) + } +} + + + + +func (p *SqlParser) Alter_table_add() (localctx IAlter_table_addContext) { + this := p + _ = this + + localctx = NewAlter_table_addContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 12, SqlParserRULE_alter_table_add) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(305) + p.Match(SqlParserK_ADD) + } + { + p.SetState(306) + p.Table_constraint() + } + + + + return localctx +} + + +// IAnalyze_stmtContext is an interface to support dynamic dispatch. +type IAnalyze_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsAnalyze_stmtContext differentiates from other interfaces. + IsAnalyze_stmtContext() +} + +type Analyze_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAnalyze_stmtContext() *Analyze_stmtContext { + var p = new(Analyze_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_analyze_stmt + return p +} + +func (*Analyze_stmtContext) IsAnalyze_stmtContext() {} + +func NewAnalyze_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Analyze_stmtContext { + var p = new(Analyze_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_analyze_stmt + + return p +} + +func (s *Analyze_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Analyze_stmtContext) K_ANALYZE() antlr.TerminalNode { + return s.GetToken(SqlParserK_ANALYZE, 0) +} + +func (s *Analyze_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Analyze_stmtContext) Table_or_index_name() ITable_or_index_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_or_index_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_or_index_nameContext) +} + +func (s *Analyze_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Analyze_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Analyze_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Analyze_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterAnalyze_stmt(s) + } +} + +func (s *Analyze_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitAnalyze_stmt(s) + } +} + + + + +func (p *SqlParser) Analyze_stmt() (localctx IAnalyze_stmtContext) { + this := p + _ = this + + localctx = NewAnalyze_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 14, SqlParserRULE_analyze_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(308) + p.Match(SqlParserK_ANALYZE) + } + p.SetState(315) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 15, p.GetParserRuleContext()) == 1 { + { + p.SetState(309) + p.Database_name() + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 15, p.GetParserRuleContext()) == 2 { + { + p.SetState(310) + p.Table_or_index_name() + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 15, p.GetParserRuleContext()) == 3 { + { + p.SetState(311) + p.Database_name() + } + { + p.SetState(312) + p.Match(SqlParserDOT) + } + { + p.SetState(313) + p.Table_or_index_name() + } + + + } + + + + return localctx +} + + +// IAttach_stmtContext is an interface to support dynamic dispatch. +type IAttach_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsAttach_stmtContext differentiates from other interfaces. + IsAttach_stmtContext() +} + +type Attach_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAttach_stmtContext() *Attach_stmtContext { + var p = new(Attach_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_attach_stmt + return p +} + +func (*Attach_stmtContext) IsAttach_stmtContext() {} + +func NewAttach_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Attach_stmtContext { + var p = new(Attach_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_attach_stmt + + return p +} + +func (s *Attach_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Attach_stmtContext) K_ATTACH() antlr.TerminalNode { + return s.GetToken(SqlParserK_ATTACH, 0) +} + +func (s *Attach_stmtContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Attach_stmtContext) K_AS() antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, 0) +} + +func (s *Attach_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Attach_stmtContext) K_DATABASE() antlr.TerminalNode { + return s.GetToken(SqlParserK_DATABASE, 0) +} + +func (s *Attach_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Attach_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Attach_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterAttach_stmt(s) + } +} + +func (s *Attach_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitAttach_stmt(s) + } +} + + + + +func (p *SqlParser) Attach_stmt() (localctx IAttach_stmtContext) { + this := p + _ = this + + localctx = NewAttach_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 16, SqlParserRULE_attach_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(317) + p.Match(SqlParserK_ATTACH) + } + p.SetState(319) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 16, p.GetParserRuleContext()) == 1 { + { + p.SetState(318) + p.Match(SqlParserK_DATABASE) + } + + + } + { + p.SetState(321) + p.expr(0) + } + { + p.SetState(322) + p.Match(SqlParserK_AS) + } + { + p.SetState(323) + p.Database_name() + } + + + + return localctx +} + + +// IBegin_stmtContext is an interface to support dynamic dispatch. +type IBegin_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsBegin_stmtContext differentiates from other interfaces. + IsBegin_stmtContext() +} + +type Begin_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBegin_stmtContext() *Begin_stmtContext { + var p = new(Begin_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_begin_stmt + return p +} + +func (*Begin_stmtContext) IsBegin_stmtContext() {} + +func NewBegin_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Begin_stmtContext { + var p = new(Begin_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_begin_stmt + + return p +} + +func (s *Begin_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Begin_stmtContext) K_BEGIN() antlr.TerminalNode { + return s.GetToken(SqlParserK_BEGIN, 0) +} + +func (s *Begin_stmtContext) K_TRANSACTION() antlr.TerminalNode { + return s.GetToken(SqlParserK_TRANSACTION, 0) +} + +func (s *Begin_stmtContext) K_DEFERRED() antlr.TerminalNode { + return s.GetToken(SqlParserK_DEFERRED, 0) +} + +func (s *Begin_stmtContext) K_IMMEDIATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_IMMEDIATE, 0) +} + +func (s *Begin_stmtContext) K_EXCLUSIVE() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXCLUSIVE, 0) +} + +func (s *Begin_stmtContext) Transaction_name() ITransaction_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITransaction_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITransaction_nameContext) +} + +func (s *Begin_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Begin_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Begin_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterBegin_stmt(s) + } +} + +func (s *Begin_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitBegin_stmt(s) + } +} + + + + +func (p *SqlParser) Begin_stmt() (localctx IBegin_stmtContext) { + this := p + _ = this + + localctx = NewBegin_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 18, SqlParserRULE_begin_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(325) + p.Match(SqlParserK_BEGIN) + } + p.SetState(327) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if ((((_la - 59)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 59))) & ((1 << (SqlParserK_DEFERRED - 59)) | (1 << (SqlParserK_EXCLUSIVE - 59)) | (1 << (SqlParserK_IMMEDIATE - 59)))) != 0) { + { + p.SetState(326) + _la = p.GetTokenStream().LA(1) + + if !(((((_la - 59)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 59))) & ((1 << (SqlParserK_DEFERRED - 59)) | (1 << (SqlParserK_EXCLUSIVE - 59)) | (1 << (SqlParserK_IMMEDIATE - 59)))) != 0)) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + } + p.SetState(333) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_TRANSACTION { + { + p.SetState(329) + p.Match(SqlParserK_TRANSACTION) + } + p.SetState(331) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 18, p.GetParserRuleContext()) == 1 { + { + p.SetState(330) + p.Transaction_name() + } + + + } + + } + + + + return localctx +} + + +// ICommit_stmtContext is an interface to support dynamic dispatch. +type ICommit_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCommit_stmtContext differentiates from other interfaces. + IsCommit_stmtContext() +} + +type Commit_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCommit_stmtContext() *Commit_stmtContext { + var p = new(Commit_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_commit_stmt + return p +} + +func (*Commit_stmtContext) IsCommit_stmtContext() {} + +func NewCommit_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Commit_stmtContext { + var p = new(Commit_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_commit_stmt + + return p +} + +func (s *Commit_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Commit_stmtContext) K_COMMIT() antlr.TerminalNode { + return s.GetToken(SqlParserK_COMMIT, 0) +} + +func (s *Commit_stmtContext) K_END() antlr.TerminalNode { + return s.GetToken(SqlParserK_END, 0) +} + +func (s *Commit_stmtContext) K_TRANSACTION() antlr.TerminalNode { + return s.GetToken(SqlParserK_TRANSACTION, 0) +} + +func (s *Commit_stmtContext) Transaction_name() ITransaction_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITransaction_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITransaction_nameContext) +} + +func (s *Commit_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Commit_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Commit_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCommit_stmt(s) + } +} + +func (s *Commit_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCommit_stmt(s) + } +} + + + + +func (p *SqlParser) Commit_stmt() (localctx ICommit_stmtContext) { + this := p + _ = this + + localctx = NewCommit_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 20, SqlParserRULE_commit_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(335) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_COMMIT || _la == SqlParserK_END) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + p.SetState(340) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_TRANSACTION { + { + p.SetState(336) + p.Match(SqlParserK_TRANSACTION) + } + p.SetState(338) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 20, p.GetParserRuleContext()) == 1 { + { + p.SetState(337) + p.Transaction_name() + } + + + } + + } + + + + return localctx +} + + +// ICompound_select_stmtContext is an interface to support dynamic dispatch. +type ICompound_select_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCompound_select_stmtContext differentiates from other interfaces. + IsCompound_select_stmtContext() +} + +type Compound_select_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCompound_select_stmtContext() *Compound_select_stmtContext { + var p = new(Compound_select_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_compound_select_stmt + return p +} + +func (*Compound_select_stmtContext) IsCompound_select_stmtContext() {} + +func NewCompound_select_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Compound_select_stmtContext { + var p = new(Compound_select_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_compound_select_stmt + + return p +} + +func (s *Compound_select_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Compound_select_stmtContext) AllSelect_core() []ISelect_coreContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISelect_coreContext); ok { + len++ + } + } + + tst := make([]ISelect_coreContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISelect_coreContext); ok { + tst[i] = t.(ISelect_coreContext) + i++ + } + } + + return tst +} + +func (s *Compound_select_stmtContext) Select_core(i int) ISelect_coreContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_coreContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISelect_coreContext) +} + +func (s *Compound_select_stmtContext) K_WITH() antlr.TerminalNode { + return s.GetToken(SqlParserK_WITH, 0) +} + +func (s *Compound_select_stmtContext) AllCommon_table_expression() []ICommon_table_expressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ICommon_table_expressionContext); ok { + len++ + } + } + + tst := make([]ICommon_table_expressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ICommon_table_expressionContext); ok { + tst[i] = t.(ICommon_table_expressionContext) + i++ + } + } + + return tst +} + +func (s *Compound_select_stmtContext) Common_table_expression(i int) ICommon_table_expressionContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICommon_table_expressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ICommon_table_expressionContext) +} + +func (s *Compound_select_stmtContext) K_ORDER() antlr.TerminalNode { + return s.GetToken(SqlParserK_ORDER, 0) +} + +func (s *Compound_select_stmtContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Compound_select_stmtContext) AllOrdering_term() []IOrdering_termContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IOrdering_termContext); ok { + len++ + } + } + + tst := make([]IOrdering_termContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IOrdering_termContext); ok { + tst[i] = t.(IOrdering_termContext) + i++ + } + } + + return tst +} + +func (s *Compound_select_stmtContext) Ordering_term(i int) IOrdering_termContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOrdering_termContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IOrdering_termContext) +} + +func (s *Compound_select_stmtContext) K_LIMIT() antlr.TerminalNode { + return s.GetToken(SqlParserK_LIMIT, 0) +} + +func (s *Compound_select_stmtContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Compound_select_stmtContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Compound_select_stmtContext) AllK_UNION() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_UNION) +} + +func (s *Compound_select_stmtContext) K_UNION(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_UNION, i) +} + +func (s *Compound_select_stmtContext) AllK_INTERSECT() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_INTERSECT) +} + +func (s *Compound_select_stmtContext) K_INTERSECT(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_INTERSECT, i) +} + +func (s *Compound_select_stmtContext) AllK_EXCEPT() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_EXCEPT) +} + +func (s *Compound_select_stmtContext) K_EXCEPT(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_EXCEPT, i) +} + +func (s *Compound_select_stmtContext) K_RECURSIVE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RECURSIVE, 0) +} + +func (s *Compound_select_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Compound_select_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Compound_select_stmtContext) K_OFFSET() antlr.TerminalNode { + return s.GetToken(SqlParserK_OFFSET, 0) +} + +func (s *Compound_select_stmtContext) AllK_ALL() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_ALL) +} + +func (s *Compound_select_stmtContext) K_ALL(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_ALL, i) +} + +func (s *Compound_select_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Compound_select_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Compound_select_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCompound_select_stmt(s) + } +} + +func (s *Compound_select_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCompound_select_stmt(s) + } +} + + + + +func (p *SqlParser) Compound_select_stmt() (localctx ICompound_select_stmtContext) { + this := p + _ = this + + localctx = NewCompound_select_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 22, SqlParserRULE_compound_select_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(354) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WITH { + { + p.SetState(342) + p.Match(SqlParserK_WITH) + } + p.SetState(344) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 22, p.GetParserRuleContext()) == 1 { + { + p.SetState(343) + p.Match(SqlParserK_RECURSIVE) + } + + + } + { + p.SetState(346) + p.Common_table_expression() + } + p.SetState(351) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(347) + p.Match(SqlParserCOMMA) + } + { + p.SetState(348) + p.Common_table_expression() + } + + + p.SetState(353) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + { + p.SetState(356) + p.Select_core() + } + p.SetState(366) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for ok := true; ok; ok = _la == SqlParserK_EXCEPT || _la == SqlParserK_INTERSECT || _la == SqlParserK_UNION { + p.SetState(363) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_UNION: + { + p.SetState(357) + p.Match(SqlParserK_UNION) + } + p.SetState(359) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_ALL { + { + p.SetState(358) + p.Match(SqlParserK_ALL) + } + + } + + + case SqlParserK_INTERSECT: + { + p.SetState(361) + p.Match(SqlParserK_INTERSECT) + } + + + case SqlParserK_EXCEPT: + { + p.SetState(362) + p.Match(SqlParserK_EXCEPT) + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + { + p.SetState(365) + p.Select_core() + } + + + p.SetState(368) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + p.SetState(380) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_ORDER { + { + p.SetState(370) + p.Match(SqlParserK_ORDER) + } + { + p.SetState(371) + p.Match(SqlParserK_BY) + } + { + p.SetState(372) + p.Ordering_term() + } + p.SetState(377) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(373) + p.Match(SqlParserCOMMA) + } + { + p.SetState(374) + p.Ordering_term() + } + + + p.SetState(379) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + p.SetState(388) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_LIMIT { + { + p.SetState(382) + p.Match(SqlParserK_LIMIT) + } + { + p.SetState(383) + p.expr(0) + } + p.SetState(386) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { + { + p.SetState(384) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(385) + p.expr(0) + } + + } + + } + + + + return localctx +} + + +// ICreate_index_stmtContext is an interface to support dynamic dispatch. +type ICreate_index_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCreate_index_stmtContext differentiates from other interfaces. + IsCreate_index_stmtContext() +} + +type Create_index_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCreate_index_stmtContext() *Create_index_stmtContext { + var p = new(Create_index_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_create_index_stmt + return p +} + +func (*Create_index_stmtContext) IsCreate_index_stmtContext() {} + +func NewCreate_index_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_index_stmtContext { + var p = new(Create_index_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_create_index_stmt + + return p +} + +func (s *Create_index_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Create_index_stmtContext) K_CREATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CREATE, 0) +} + +func (s *Create_index_stmtContext) K_INDEX() antlr.TerminalNode { + return s.GetToken(SqlParserK_INDEX, 0) +} + +func (s *Create_index_stmtContext) Index_name() IIndex_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndex_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IIndex_nameContext) +} + +func (s *Create_index_stmtContext) K_ON() antlr.TerminalNode { + return s.GetToken(SqlParserK_ON, 0) +} + +func (s *Create_index_stmtContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Create_index_stmtContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Create_index_stmtContext) AllIndexed_column() []IIndexed_columnContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IIndexed_columnContext); ok { + len++ + } + } + + tst := make([]IIndexed_columnContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IIndexed_columnContext); ok { + tst[i] = t.(IIndexed_columnContext) + i++ + } + } + + return tst +} + +func (s *Create_index_stmtContext) Indexed_column(i int) IIndexed_columnContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndexed_columnContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IIndexed_columnContext) +} + +func (s *Create_index_stmtContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Create_index_stmtContext) K_UNIQUE() antlr.TerminalNode { + return s.GetToken(SqlParserK_UNIQUE, 0) +} + +func (s *Create_index_stmtContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *Create_index_stmtContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Create_index_stmtContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *Create_index_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Create_index_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Create_index_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Create_index_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Create_index_stmtContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) +} + +func (s *Create_index_stmtContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Create_index_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Create_index_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Create_index_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCreate_index_stmt(s) + } +} + +func (s *Create_index_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCreate_index_stmt(s) + } +} + + + + +func (p *SqlParser) Create_index_stmt() (localctx ICreate_index_stmtContext) { + this := p + _ = this + + localctx = NewCreate_index_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 24, SqlParserRULE_create_index_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(390) + p.Match(SqlParserK_CREATE) + } + p.SetState(392) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_UNIQUE { + { + p.SetState(391) + p.Match(SqlParserK_UNIQUE) + } + + } + { + p.SetState(394) + p.Match(SqlParserK_INDEX) + } + p.SetState(398) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 33, p.GetParserRuleContext()) == 1 { + { + p.SetState(395) + p.Match(SqlParserK_IF) + } + { + p.SetState(396) + p.Match(SqlParserK_NOT) + } + { + p.SetState(397) + p.Match(SqlParserK_EXISTS) + } + + + } + p.SetState(403) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 34, p.GetParserRuleContext()) == 1 { + { + p.SetState(400) + p.Database_name() + } + { + p.SetState(401) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(405) + p.Index_name() + } + { + p.SetState(406) + p.Match(SqlParserK_ON) + } + { + p.SetState(407) + p.Table_name() + } + { + p.SetState(408) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(409) + p.Indexed_column() + } + p.SetState(414) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(410) + p.Match(SqlParserCOMMA) + } + { + p.SetState(411) + p.Indexed_column() + } + + + p.SetState(416) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(417) + p.Match(SqlParserCLOSE_PAR) + } + p.SetState(420) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WHERE { + { + p.SetState(418) + p.Match(SqlParserK_WHERE) + } + { + p.SetState(419) + p.expr(0) + } + + } + + + + return localctx +} + + +// ICreate_table_stmtContext is an interface to support dynamic dispatch. +type ICreate_table_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCreate_table_stmtContext differentiates from other interfaces. + IsCreate_table_stmtContext() +} + +type Create_table_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCreate_table_stmtContext() *Create_table_stmtContext { + var p = new(Create_table_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_create_table_stmt + return p +} + +func (*Create_table_stmtContext) IsCreate_table_stmtContext() {} + +func NewCreate_table_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_table_stmtContext { + var p = new(Create_table_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_create_table_stmt + + return p +} + +func (s *Create_table_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Create_table_stmtContext) K_CREATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CREATE, 0) +} + +func (s *Create_table_stmtContext) K_TABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_TABLE, 0) +} + +func (s *Create_table_stmtContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Create_table_stmtContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Create_table_stmtContext) AllColumn_def() []IColumn_defContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumn_defContext); ok { + len++ + } + } + + tst := make([]IColumn_defContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumn_defContext); ok { + tst[i] = t.(IColumn_defContext) + i++ + } + } + + return tst +} + +func (s *Create_table_stmtContext) Column_def(i int) IColumn_defContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_defContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumn_defContext) +} + +func (s *Create_table_stmtContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Create_table_stmtContext) K_AS() antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, 0) +} + +func (s *Create_table_stmtContext) Select_stmt() ISelect_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISelect_stmtContext) +} + +func (s *Create_table_stmtContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *Create_table_stmtContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Create_table_stmtContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *Create_table_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Create_table_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Create_table_stmtContext) Unknown() IUnknownContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnknownContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IUnknownContext) +} + +func (s *Create_table_stmtContext) K_TEMP() antlr.TerminalNode { + return s.GetToken(SqlParserK_TEMP, 0) +} + +func (s *Create_table_stmtContext) K_TEMPORARY() antlr.TerminalNode { + return s.GetToken(SqlParserK_TEMPORARY, 0) +} + +func (s *Create_table_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Create_table_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Create_table_stmtContext) AllTable_constraint() []ITable_constraintContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ITable_constraintContext); ok { + len++ + } + } + + tst := make([]ITable_constraintContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ITable_constraintContext); ok { + tst[i] = t.(ITable_constraintContext) + i++ + } + } + + return tst +} + +func (s *Create_table_stmtContext) Table_constraint(i int) ITable_constraintContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_constraintContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ITable_constraintContext) +} + +func (s *Create_table_stmtContext) K_WITHOUT() antlr.TerminalNode { + return s.GetToken(SqlParserK_WITHOUT, 0) +} + +func (s *Create_table_stmtContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(SqlParserIDENTIFIER, 0) +} + +func (s *Create_table_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Create_table_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Create_table_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCreate_table_stmt(s) + } +} + +func (s *Create_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCreate_table_stmt(s) + } +} + + + + +func (p *SqlParser) Create_table_stmt() (localctx ICreate_table_stmtContext) { + this := p + _ = this + + localctx = NewCreate_table_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 26, SqlParserRULE_create_table_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(422) + p.Match(SqlParserK_CREATE) + } + p.SetState(424) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY { + { + p.SetState(423) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + } + { + p.SetState(426) + p.Match(SqlParserK_TABLE) + } + p.SetState(430) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 38, p.GetParserRuleContext()) == 1 { + { + p.SetState(427) + p.Match(SqlParserK_IF) + } + { + p.SetState(428) + p.Match(SqlParserK_NOT) + } + { + p.SetState(429) + p.Match(SqlParserK_EXISTS) + } + + + } + p.SetState(435) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 39, p.GetParserRuleContext()) == 1 { + { + p.SetState(432) + p.Database_name() + } + { + p.SetState(433) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(437) + p.Table_name() + } + p.SetState(456) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserOPEN_PAR: + { + p.SetState(438) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(439) + p.Column_def() + } + p.SetState(446) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + p.SetState(444) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 40, p.GetParserRuleContext()) { + case 1: + { + p.SetState(440) + p.Match(SqlParserCOMMA) + } + { + p.SetState(441) + p.Table_constraint() + } + + + case 2: + { + p.SetState(442) + p.Match(SqlParserCOMMA) + } + { + p.SetState(443) + p.Column_def() + } + + } + + p.SetState(448) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(449) + p.Match(SqlParserCLOSE_PAR) + } + p.SetState(452) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 42, p.GetParserRuleContext()) == 1 { + { + p.SetState(450) + p.Match(SqlParserK_WITHOUT) + } + { + p.SetState(451) + p.Match(SqlParserIDENTIFIER) + } + + + } + + + case SqlParserK_AS: + { + p.SetState(454) + p.Match(SqlParserK_AS) + } + { + p.SetState(455) + p.Select_stmt() + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + p.SetState(459) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 44, p.GetParserRuleContext()) == 1 { + { + p.SetState(458) + p.Unknown() + } + + + } + + + + return localctx +} + + +// ICreate_trigger_stmtContext is an interface to support dynamic dispatch. +type ICreate_trigger_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCreate_trigger_stmtContext differentiates from other interfaces. + IsCreate_trigger_stmtContext() +} + +type Create_trigger_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCreate_trigger_stmtContext() *Create_trigger_stmtContext { + var p = new(Create_trigger_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_create_trigger_stmt + return p +} + +func (*Create_trigger_stmtContext) IsCreate_trigger_stmtContext() {} + +func NewCreate_trigger_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_trigger_stmtContext { + var p = new(Create_trigger_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_create_trigger_stmt + + return p +} + +func (s *Create_trigger_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Create_trigger_stmtContext) K_CREATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CREATE, 0) +} + +func (s *Create_trigger_stmtContext) K_TRIGGER() antlr.TerminalNode { + return s.GetToken(SqlParserK_TRIGGER, 0) +} + +func (s *Create_trigger_stmtContext) Trigger_name() ITrigger_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITrigger_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITrigger_nameContext) +} + +func (s *Create_trigger_stmtContext) K_ON() antlr.TerminalNode { + return s.GetToken(SqlParserK_ON, 0) +} + +func (s *Create_trigger_stmtContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Create_trigger_stmtContext) K_BEGIN() antlr.TerminalNode { + return s.GetToken(SqlParserK_BEGIN, 0) +} + +func (s *Create_trigger_stmtContext) K_END() antlr.TerminalNode { + return s.GetToken(SqlParserK_END, 0) +} + +func (s *Create_trigger_stmtContext) K_DELETE() antlr.TerminalNode { + return s.GetToken(SqlParserK_DELETE, 0) +} + +func (s *Create_trigger_stmtContext) K_INSERT() antlr.TerminalNode { + return s.GetToken(SqlParserK_INSERT, 0) +} + +func (s *Create_trigger_stmtContext) K_UPDATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_UPDATE, 0) +} + +func (s *Create_trigger_stmtContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *Create_trigger_stmtContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Create_trigger_stmtContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *Create_trigger_stmtContext) AllDatabase_name() []IDatabase_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IDatabase_nameContext); ok { + len++ + } + } + + tst := make([]IDatabase_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IDatabase_nameContext); ok { + tst[i] = t.(IDatabase_nameContext) + i++ + } + } + + return tst +} + +func (s *Create_trigger_stmtContext) Database_name(i int) IDatabase_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Create_trigger_stmtContext) AllDOT() []antlr.TerminalNode { + return s.GetTokens(SqlParserDOT) +} + +func (s *Create_trigger_stmtContext) DOT(i int) antlr.TerminalNode { + return s.GetToken(SqlParserDOT, i) +} + +func (s *Create_trigger_stmtContext) K_BEFORE() antlr.TerminalNode { + return s.GetToken(SqlParserK_BEFORE, 0) +} + +func (s *Create_trigger_stmtContext) K_AFTER() antlr.TerminalNode { + return s.GetToken(SqlParserK_AFTER, 0) +} + +func (s *Create_trigger_stmtContext) K_INSTEAD() antlr.TerminalNode { + return s.GetToken(SqlParserK_INSTEAD, 0) +} + +func (s *Create_trigger_stmtContext) AllK_OF() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_OF) +} + +func (s *Create_trigger_stmtContext) K_OF(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_OF, i) +} + +func (s *Create_trigger_stmtContext) K_FOR() antlr.TerminalNode { + return s.GetToken(SqlParserK_FOR, 0) +} + +func (s *Create_trigger_stmtContext) K_EACH() antlr.TerminalNode { + return s.GetToken(SqlParserK_EACH, 0) +} + +func (s *Create_trigger_stmtContext) K_ROW() antlr.TerminalNode { + return s.GetToken(SqlParserK_ROW, 0) +} + +func (s *Create_trigger_stmtContext) K_WHEN() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHEN, 0) +} + +func (s *Create_trigger_stmtContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Create_trigger_stmtContext) AllSCOL() []antlr.TerminalNode { + return s.GetTokens(SqlParserSCOL) +} + +func (s *Create_trigger_stmtContext) SCOL(i int) antlr.TerminalNode { + return s.GetToken(SqlParserSCOL, i) +} + +func (s *Create_trigger_stmtContext) K_TEMP() antlr.TerminalNode { + return s.GetToken(SqlParserK_TEMP, 0) +} + +func (s *Create_trigger_stmtContext) K_TEMPORARY() antlr.TerminalNode { + return s.GetToken(SqlParserK_TEMPORARY, 0) +} + +func (s *Create_trigger_stmtContext) AllColumn_name() []IColumn_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumn_nameContext); ok { + len++ + } + } + + tst := make([]IColumn_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumn_nameContext); ok { + tst[i] = t.(IColumn_nameContext) + i++ + } + } + + return tst +} + +func (s *Create_trigger_stmtContext) Column_name(i int) IColumn_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Create_trigger_stmtContext) AllUpdate_stmt() []IUpdate_stmtContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IUpdate_stmtContext); ok { + len++ + } + } + + tst := make([]IUpdate_stmtContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IUpdate_stmtContext); ok { + tst[i] = t.(IUpdate_stmtContext) + i++ + } + } + + return tst +} + +func (s *Create_trigger_stmtContext) Update_stmt(i int) IUpdate_stmtContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUpdate_stmtContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IUpdate_stmtContext) +} + +func (s *Create_trigger_stmtContext) AllInsert_stmt() []IInsert_stmtContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IInsert_stmtContext); ok { + len++ + } + } + + tst := make([]IInsert_stmtContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IInsert_stmtContext); ok { + tst[i] = t.(IInsert_stmtContext) + i++ + } + } + + return tst +} + +func (s *Create_trigger_stmtContext) Insert_stmt(i int) IInsert_stmtContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInsert_stmtContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IInsert_stmtContext) +} + +func (s *Create_trigger_stmtContext) AllDelete_stmt() []IDelete_stmtContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IDelete_stmtContext); ok { + len++ + } + } + + tst := make([]IDelete_stmtContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IDelete_stmtContext); ok { + tst[i] = t.(IDelete_stmtContext) + i++ + } + } + + return tst +} + +func (s *Create_trigger_stmtContext) Delete_stmt(i int) IDelete_stmtContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDelete_stmtContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IDelete_stmtContext) +} + +func (s *Create_trigger_stmtContext) AllSelect_stmt() []ISelect_stmtContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISelect_stmtContext); ok { + len++ + } + } + + tst := make([]ISelect_stmtContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISelect_stmtContext); ok { + tst[i] = t.(ISelect_stmtContext) + i++ + } + } + + return tst +} + +func (s *Create_trigger_stmtContext) Select_stmt(i int) ISelect_stmtContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_stmtContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISelect_stmtContext) +} + +func (s *Create_trigger_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Create_trigger_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Create_trigger_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Create_trigger_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Create_trigger_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCreate_trigger_stmt(s) + } +} + +func (s *Create_trigger_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCreate_trigger_stmt(s) + } +} + + + + +func (p *SqlParser) Create_trigger_stmt() (localctx ICreate_trigger_stmtContext) { + this := p + _ = this + + localctx = NewCreate_trigger_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 28, SqlParserRULE_create_trigger_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(461) + p.Match(SqlParserK_CREATE) + } + p.SetState(463) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY { + { + p.SetState(462) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + } + { + p.SetState(465) + p.Match(SqlParserK_TRIGGER) + } + p.SetState(469) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 46, p.GetParserRuleContext()) == 1 { + { + p.SetState(466) + p.Match(SqlParserK_IF) + } + { + p.SetState(467) + p.Match(SqlParserK_NOT) + } + { + p.SetState(468) + p.Match(SqlParserK_EXISTS) + } + + + } + p.SetState(474) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 47, p.GetParserRuleContext()) == 1 { + { + p.SetState(471) + p.Database_name() + } + { + p.SetState(472) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(476) + p.Trigger_name() + } + p.SetState(481) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_BEFORE: + { + p.SetState(477) + p.Match(SqlParserK_BEFORE) + } + + + case SqlParserK_AFTER: + { + p.SetState(478) + p.Match(SqlParserK_AFTER) + } + + + case SqlParserK_INSTEAD: + { + p.SetState(479) + p.Match(SqlParserK_INSTEAD) + } + { + p.SetState(480) + p.Match(SqlParserK_OF) + } + + + case SqlParserK_DELETE, SqlParserK_INSERT, SqlParserK_UPDATE: + + + + default: + } + p.SetState(497) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_DELETE: + { + p.SetState(483) + p.Match(SqlParserK_DELETE) + } + + + case SqlParserK_INSERT: + { + p.SetState(484) + p.Match(SqlParserK_INSERT) + } + + + case SqlParserK_UPDATE: + { + p.SetState(485) + p.Match(SqlParserK_UPDATE) + } + p.SetState(495) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_OF { + { + p.SetState(486) + p.Match(SqlParserK_OF) + } + { + p.SetState(487) + p.Column_name() + } + p.SetState(492) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(488) + p.Match(SqlParserCOMMA) + } + { + p.SetState(489) + p.Column_name() + } + + + p.SetState(494) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + { + p.SetState(499) + p.Match(SqlParserK_ON) + } + p.SetState(503) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 52, p.GetParserRuleContext()) == 1 { + { + p.SetState(500) + p.Database_name() + } + { + p.SetState(501) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(505) + p.Table_name() + } + p.SetState(509) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_FOR { + { + p.SetState(506) + p.Match(SqlParserK_FOR) + } + { + p.SetState(507) + p.Match(SqlParserK_EACH) + } + { + p.SetState(508) + p.Match(SqlParserK_ROW) + } + + } + p.SetState(513) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WHEN { + { + p.SetState(511) + p.Match(SqlParserK_WHEN) + } + { + p.SetState(512) + p.expr(0) + } + + } + { + p.SetState(515) + p.Match(SqlParserK_BEGIN) + } + p.SetState(524) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for ok := true; ok; ok = _la == SqlParserK_DELETE || _la == SqlParserK_INSERT || ((((_la - 126)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 126))) & ((1 << (SqlParserK_REPLACE - 126)) | (1 << (SqlParserK_SELECT - 126)) | (1 << (SqlParserK_UPDATE - 126)) | (1 << (SqlParserK_VALUES - 126)) | (1 << (SqlParserK_WITH - 126)))) != 0) { + p.SetState(520) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 55, p.GetParserRuleContext()) { + case 1: + { + p.SetState(516) + p.Update_stmt() + } + + + case 2: + { + p.SetState(517) + p.Insert_stmt() + } + + + case 3: + { + p.SetState(518) + p.Delete_stmt() + } + + + case 4: + { + p.SetState(519) + p.Select_stmt() + } + + } + { + p.SetState(522) + p.Match(SqlParserSCOL) + } + + + p.SetState(526) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(528) + p.Match(SqlParserK_END) + } + + + + return localctx +} + + +// ICreate_view_stmtContext is an interface to support dynamic dispatch. +type ICreate_view_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCreate_view_stmtContext differentiates from other interfaces. + IsCreate_view_stmtContext() +} + +type Create_view_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCreate_view_stmtContext() *Create_view_stmtContext { + var p = new(Create_view_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_create_view_stmt + return p +} + +func (*Create_view_stmtContext) IsCreate_view_stmtContext() {} + +func NewCreate_view_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_view_stmtContext { + var p = new(Create_view_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_create_view_stmt + + return p +} + +func (s *Create_view_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Create_view_stmtContext) K_CREATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CREATE, 0) +} + +func (s *Create_view_stmtContext) K_VIEW() antlr.TerminalNode { + return s.GetToken(SqlParserK_VIEW, 0) +} + +func (s *Create_view_stmtContext) View_name() IView_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IView_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IView_nameContext) +} + +func (s *Create_view_stmtContext) K_AS() antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, 0) +} + +func (s *Create_view_stmtContext) Select_stmt() ISelect_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISelect_stmtContext) +} + +func (s *Create_view_stmtContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *Create_view_stmtContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Create_view_stmtContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *Create_view_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Create_view_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Create_view_stmtContext) K_TEMP() antlr.TerminalNode { + return s.GetToken(SqlParserK_TEMP, 0) +} + +func (s *Create_view_stmtContext) K_TEMPORARY() antlr.TerminalNode { + return s.GetToken(SqlParserK_TEMPORARY, 0) +} + +func (s *Create_view_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Create_view_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Create_view_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCreate_view_stmt(s) + } +} + +func (s *Create_view_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCreate_view_stmt(s) + } +} + + + + +func (p *SqlParser) Create_view_stmt() (localctx ICreate_view_stmtContext) { + this := p + _ = this + + localctx = NewCreate_view_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 30, SqlParserRULE_create_view_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(530) + p.Match(SqlParserK_CREATE) + } + p.SetState(532) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY { + { + p.SetState(531) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + } + { + p.SetState(534) + p.Match(SqlParserK_VIEW) + } + p.SetState(538) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 58, p.GetParserRuleContext()) == 1 { + { + p.SetState(535) + p.Match(SqlParserK_IF) + } + { + p.SetState(536) + p.Match(SqlParserK_NOT) + } + { + p.SetState(537) + p.Match(SqlParserK_EXISTS) + } + + + } + p.SetState(543) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 59, p.GetParserRuleContext()) == 1 { + { + p.SetState(540) + p.Database_name() + } + { + p.SetState(541) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(545) + p.View_name() + } + { + p.SetState(546) + p.Match(SqlParserK_AS) + } + { + p.SetState(547) + p.Select_stmt() + } + + + + return localctx +} + + +// ICreate_virtual_table_stmtContext is an interface to support dynamic dispatch. +type ICreate_virtual_table_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCreate_virtual_table_stmtContext differentiates from other interfaces. + IsCreate_virtual_table_stmtContext() +} + +type Create_virtual_table_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCreate_virtual_table_stmtContext() *Create_virtual_table_stmtContext { + var p = new(Create_virtual_table_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_create_virtual_table_stmt + return p +} + +func (*Create_virtual_table_stmtContext) IsCreate_virtual_table_stmtContext() {} + +func NewCreate_virtual_table_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_virtual_table_stmtContext { + var p = new(Create_virtual_table_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_create_virtual_table_stmt + + return p +} + +func (s *Create_virtual_table_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Create_virtual_table_stmtContext) K_CREATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CREATE, 0) +} + +func (s *Create_virtual_table_stmtContext) K_VIRTUAL() antlr.TerminalNode { + return s.GetToken(SqlParserK_VIRTUAL, 0) +} + +func (s *Create_virtual_table_stmtContext) K_TABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_TABLE, 0) +} + +func (s *Create_virtual_table_stmtContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Create_virtual_table_stmtContext) K_USING() antlr.TerminalNode { + return s.GetToken(SqlParserK_USING, 0) +} + +func (s *Create_virtual_table_stmtContext) Module_name() IModule_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IModule_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IModule_nameContext) +} + +func (s *Create_virtual_table_stmtContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *Create_virtual_table_stmtContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Create_virtual_table_stmtContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *Create_virtual_table_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Create_virtual_table_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Create_virtual_table_stmtContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Create_virtual_table_stmtContext) AllModule_argument() []IModule_argumentContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IModule_argumentContext); ok { + len++ + } + } + + tst := make([]IModule_argumentContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IModule_argumentContext); ok { + tst[i] = t.(IModule_argumentContext) + i++ + } + } + + return tst +} + +func (s *Create_virtual_table_stmtContext) Module_argument(i int) IModule_argumentContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IModule_argumentContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IModule_argumentContext) +} + +func (s *Create_virtual_table_stmtContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Create_virtual_table_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Create_virtual_table_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Create_virtual_table_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Create_virtual_table_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Create_virtual_table_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCreate_virtual_table_stmt(s) + } +} + +func (s *Create_virtual_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCreate_virtual_table_stmt(s) + } +} + + + + +func (p *SqlParser) Create_virtual_table_stmt() (localctx ICreate_virtual_table_stmtContext) { + this := p + _ = this + + localctx = NewCreate_virtual_table_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 32, SqlParserRULE_create_virtual_table_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(549) + p.Match(SqlParserK_CREATE) + } + { + p.SetState(550) + p.Match(SqlParserK_VIRTUAL) + } + { + p.SetState(551) + p.Match(SqlParserK_TABLE) + } + p.SetState(555) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 60, p.GetParserRuleContext()) == 1 { + { + p.SetState(552) + p.Match(SqlParserK_IF) + } + { + p.SetState(553) + p.Match(SqlParserK_NOT) + } + { + p.SetState(554) + p.Match(SqlParserK_EXISTS) + } + + + } + p.SetState(560) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 61, p.GetParserRuleContext()) == 1 { + { + p.SetState(557) + p.Database_name() + } + { + p.SetState(558) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(562) + p.Table_name() + } + { + p.SetState(563) + p.Match(SqlParserK_USING) + } + { + p.SetState(564) + p.Module_name() + } + p.SetState(576) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserOPEN_PAR { + { + p.SetState(565) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(566) + p.Module_argument() + } + p.SetState(571) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(567) + p.Match(SqlParserCOMMA) + } + { + p.SetState(568) + p.Module_argument() + } + + + p.SetState(573) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(574) + p.Match(SqlParserCLOSE_PAR) + } + + } + + + + return localctx +} + + +// IDelete_stmtContext is an interface to support dynamic dispatch. +type IDelete_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsDelete_stmtContext differentiates from other interfaces. + IsDelete_stmtContext() +} + +type Delete_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDelete_stmtContext() *Delete_stmtContext { + var p = new(Delete_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_delete_stmt + return p +} + +func (*Delete_stmtContext) IsDelete_stmtContext() {} + +func NewDelete_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Delete_stmtContext { + var p = new(Delete_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_delete_stmt + + return p +} + +func (s *Delete_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Delete_stmtContext) K_DELETE() antlr.TerminalNode { + return s.GetToken(SqlParserK_DELETE, 0) +} + +func (s *Delete_stmtContext) K_FROM() antlr.TerminalNode { + return s.GetToken(SqlParserK_FROM, 0) +} + +func (s *Delete_stmtContext) Qualified_table_name() IQualified_table_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IQualified_table_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IQualified_table_nameContext) +} + +func (s *Delete_stmtContext) With_clause() IWith_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWith_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IWith_clauseContext) +} + +func (s *Delete_stmtContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) +} + +func (s *Delete_stmtContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Delete_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Delete_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Delete_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterDelete_stmt(s) + } +} + +func (s *Delete_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitDelete_stmt(s) + } +} + + + + +func (p *SqlParser) Delete_stmt() (localctx IDelete_stmtContext) { + this := p + _ = this + + localctx = NewDelete_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 34, SqlParserRULE_delete_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(579) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WITH { + { + p.SetState(578) + p.With_clause() + } + + } + { + p.SetState(581) + p.Match(SqlParserK_DELETE) + } + { + p.SetState(582) + p.Match(SqlParserK_FROM) + } + { + p.SetState(583) + p.Qualified_table_name() + } + p.SetState(586) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WHERE { + { + p.SetState(584) + p.Match(SqlParserK_WHERE) + } + { + p.SetState(585) + p.expr(0) + } + + } + + + + return localctx +} + + +// IDelete_stmt_limitedContext is an interface to support dynamic dispatch. +type IDelete_stmt_limitedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsDelete_stmt_limitedContext differentiates from other interfaces. + IsDelete_stmt_limitedContext() +} + +type Delete_stmt_limitedContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDelete_stmt_limitedContext() *Delete_stmt_limitedContext { + var p = new(Delete_stmt_limitedContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_delete_stmt_limited + return p +} + +func (*Delete_stmt_limitedContext) IsDelete_stmt_limitedContext() {} + +func NewDelete_stmt_limitedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Delete_stmt_limitedContext { + var p = new(Delete_stmt_limitedContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_delete_stmt_limited + + return p +} + +func (s *Delete_stmt_limitedContext) GetParser() antlr.Parser { return s.parser } + +func (s *Delete_stmt_limitedContext) K_DELETE() antlr.TerminalNode { + return s.GetToken(SqlParserK_DELETE, 0) +} + +func (s *Delete_stmt_limitedContext) K_FROM() antlr.TerminalNode { + return s.GetToken(SqlParserK_FROM, 0) +} + +func (s *Delete_stmt_limitedContext) Qualified_table_name() IQualified_table_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IQualified_table_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IQualified_table_nameContext) +} + +func (s *Delete_stmt_limitedContext) With_clause() IWith_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWith_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IWith_clauseContext) +} + +func (s *Delete_stmt_limitedContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) +} + +func (s *Delete_stmt_limitedContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Delete_stmt_limitedContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Delete_stmt_limitedContext) K_LIMIT() antlr.TerminalNode { + return s.GetToken(SqlParserK_LIMIT, 0) +} + +func (s *Delete_stmt_limitedContext) K_ORDER() antlr.TerminalNode { + return s.GetToken(SqlParserK_ORDER, 0) +} + +func (s *Delete_stmt_limitedContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Delete_stmt_limitedContext) AllOrdering_term() []IOrdering_termContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IOrdering_termContext); ok { + len++ + } + } + + tst := make([]IOrdering_termContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IOrdering_termContext); ok { + tst[i] = t.(IOrdering_termContext) + i++ + } + } + + return tst +} + +func (s *Delete_stmt_limitedContext) Ordering_term(i int) IOrdering_termContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOrdering_termContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IOrdering_termContext) +} + +func (s *Delete_stmt_limitedContext) K_OFFSET() antlr.TerminalNode { + return s.GetToken(SqlParserK_OFFSET, 0) +} + +func (s *Delete_stmt_limitedContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Delete_stmt_limitedContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Delete_stmt_limitedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Delete_stmt_limitedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Delete_stmt_limitedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterDelete_stmt_limited(s) + } +} + +func (s *Delete_stmt_limitedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitDelete_stmt_limited(s) + } +} + + + + +func (p *SqlParser) Delete_stmt_limited() (localctx IDelete_stmt_limitedContext) { + this := p + _ = this + + localctx = NewDelete_stmt_limitedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 36, SqlParserRULE_delete_stmt_limited) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(589) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WITH { + { + p.SetState(588) + p.With_clause() + } + + } + { + p.SetState(591) + p.Match(SqlParserK_DELETE) + } + { + p.SetState(592) + p.Match(SqlParserK_FROM) + } + { + p.SetState(593) + p.Qualified_table_name() + } + p.SetState(596) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WHERE { + { + p.SetState(594) + p.Match(SqlParserK_WHERE) + } + { + p.SetState(595) + p.expr(0) + } + + } + p.SetState(616) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_LIMIT || _la == SqlParserK_ORDER { + p.SetState(608) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_ORDER { + { + p.SetState(598) + p.Match(SqlParserK_ORDER) + } + { + p.SetState(599) + p.Match(SqlParserK_BY) + } + { + p.SetState(600) + p.Ordering_term() + } + p.SetState(605) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(601) + p.Match(SqlParserCOMMA) + } + { + p.SetState(602) + p.Ordering_term() + } + + + p.SetState(607) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + { + p.SetState(610) + p.Match(SqlParserK_LIMIT) + } + { + p.SetState(611) + p.expr(0) + } + p.SetState(614) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { + { + p.SetState(612) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(613) + p.expr(0) + } + + } + + } + + + + return localctx +} + + +// IDetach_stmtContext is an interface to support dynamic dispatch. +type IDetach_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsDetach_stmtContext differentiates from other interfaces. + IsDetach_stmtContext() +} + +type Detach_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDetach_stmtContext() *Detach_stmtContext { + var p = new(Detach_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_detach_stmt + return p +} + +func (*Detach_stmtContext) IsDetach_stmtContext() {} + +func NewDetach_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Detach_stmtContext { + var p = new(Detach_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_detach_stmt + + return p +} + +func (s *Detach_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Detach_stmtContext) K_DETACH() antlr.TerminalNode { + return s.GetToken(SqlParserK_DETACH, 0) +} + +func (s *Detach_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Detach_stmtContext) K_DATABASE() antlr.TerminalNode { + return s.GetToken(SqlParserK_DATABASE, 0) +} + +func (s *Detach_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Detach_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Detach_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterDetach_stmt(s) + } +} + +func (s *Detach_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitDetach_stmt(s) + } +} + + + + +func (p *SqlParser) Detach_stmt() (localctx IDetach_stmtContext) { + this := p + _ = this + + localctx = NewDetach_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 38, SqlParserRULE_detach_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(618) + p.Match(SqlParserK_DETACH) + } + p.SetState(620) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 72, p.GetParserRuleContext()) == 1 { + { + p.SetState(619) + p.Match(SqlParserK_DATABASE) + } + + + } + { + p.SetState(622) + p.Database_name() + } + + + + return localctx +} + + +// IDrop_index_stmtContext is an interface to support dynamic dispatch. +type IDrop_index_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsDrop_index_stmtContext differentiates from other interfaces. + IsDrop_index_stmtContext() +} + +type Drop_index_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDrop_index_stmtContext() *Drop_index_stmtContext { + var p = new(Drop_index_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_drop_index_stmt + return p +} + +func (*Drop_index_stmtContext) IsDrop_index_stmtContext() {} + +func NewDrop_index_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_index_stmtContext { + var p = new(Drop_index_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_drop_index_stmt + + return p +} + +func (s *Drop_index_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Drop_index_stmtContext) K_DROP() antlr.TerminalNode { + return s.GetToken(SqlParserK_DROP, 0) +} + +func (s *Drop_index_stmtContext) K_INDEX() antlr.TerminalNode { + return s.GetToken(SqlParserK_INDEX, 0) +} + +func (s *Drop_index_stmtContext) Index_name() IIndex_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndex_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IIndex_nameContext) +} + +func (s *Drop_index_stmtContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *Drop_index_stmtContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *Drop_index_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Drop_index_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Drop_index_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Drop_index_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Drop_index_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterDrop_index_stmt(s) + } +} + +func (s *Drop_index_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitDrop_index_stmt(s) + } +} + + + + +func (p *SqlParser) Drop_index_stmt() (localctx IDrop_index_stmtContext) { + this := p + _ = this + + localctx = NewDrop_index_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 40, SqlParserRULE_drop_index_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(624) + p.Match(SqlParserK_DROP) + } + { + p.SetState(625) + p.Match(SqlParserK_INDEX) + } + p.SetState(628) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 73, p.GetParserRuleContext()) == 1 { + { + p.SetState(626) + p.Match(SqlParserK_IF) + } + { + p.SetState(627) + p.Match(SqlParserK_EXISTS) + } + + + } + p.SetState(633) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 74, p.GetParserRuleContext()) == 1 { + { + p.SetState(630) + p.Database_name() + } + { + p.SetState(631) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(635) + p.Index_name() + } + + + + return localctx +} + + +// IDrop_table_stmtContext is an interface to support dynamic dispatch. +type IDrop_table_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsDrop_table_stmtContext differentiates from other interfaces. + IsDrop_table_stmtContext() +} + +type Drop_table_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDrop_table_stmtContext() *Drop_table_stmtContext { + var p = new(Drop_table_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_drop_table_stmt + return p +} + +func (*Drop_table_stmtContext) IsDrop_table_stmtContext() {} + +func NewDrop_table_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_table_stmtContext { + var p = new(Drop_table_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_drop_table_stmt + + return p +} + +func (s *Drop_table_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Drop_table_stmtContext) K_DROP() antlr.TerminalNode { + return s.GetToken(SqlParserK_DROP, 0) +} + +func (s *Drop_table_stmtContext) K_TABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_TABLE, 0) +} + +func (s *Drop_table_stmtContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Drop_table_stmtContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *Drop_table_stmtContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *Drop_table_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Drop_table_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Drop_table_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Drop_table_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Drop_table_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterDrop_table_stmt(s) + } +} + +func (s *Drop_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitDrop_table_stmt(s) + } +} + + + + +func (p *SqlParser) Drop_table_stmt() (localctx IDrop_table_stmtContext) { + this := p + _ = this + + localctx = NewDrop_table_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 42, SqlParserRULE_drop_table_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(637) + p.Match(SqlParserK_DROP) + } + { + p.SetState(638) + p.Match(SqlParserK_TABLE) + } + p.SetState(641) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 75, p.GetParserRuleContext()) == 1 { + { + p.SetState(639) + p.Match(SqlParserK_IF) + } + { + p.SetState(640) + p.Match(SqlParserK_EXISTS) + } + + + } + p.SetState(646) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 76, p.GetParserRuleContext()) == 1 { + { + p.SetState(643) + p.Database_name() + } + { + p.SetState(644) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(648) + p.Table_name() + } + + + + return localctx +} + + +// IDrop_trigger_stmtContext is an interface to support dynamic dispatch. +type IDrop_trigger_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsDrop_trigger_stmtContext differentiates from other interfaces. + IsDrop_trigger_stmtContext() +} + +type Drop_trigger_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDrop_trigger_stmtContext() *Drop_trigger_stmtContext { + var p = new(Drop_trigger_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_drop_trigger_stmt + return p +} + +func (*Drop_trigger_stmtContext) IsDrop_trigger_stmtContext() {} + +func NewDrop_trigger_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_trigger_stmtContext { + var p = new(Drop_trigger_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_drop_trigger_stmt + + return p +} + +func (s *Drop_trigger_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Drop_trigger_stmtContext) K_DROP() antlr.TerminalNode { + return s.GetToken(SqlParserK_DROP, 0) +} + +func (s *Drop_trigger_stmtContext) K_TRIGGER() antlr.TerminalNode { + return s.GetToken(SqlParserK_TRIGGER, 0) +} + +func (s *Drop_trigger_stmtContext) Trigger_name() ITrigger_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITrigger_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITrigger_nameContext) +} + +func (s *Drop_trigger_stmtContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *Drop_trigger_stmtContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *Drop_trigger_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Drop_trigger_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Drop_trigger_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Drop_trigger_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Drop_trigger_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterDrop_trigger_stmt(s) + } +} + +func (s *Drop_trigger_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitDrop_trigger_stmt(s) + } +} + + + + +func (p *SqlParser) Drop_trigger_stmt() (localctx IDrop_trigger_stmtContext) { + this := p + _ = this + + localctx = NewDrop_trigger_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 44, SqlParserRULE_drop_trigger_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(650) + p.Match(SqlParserK_DROP) + } + { + p.SetState(651) + p.Match(SqlParserK_TRIGGER) + } + p.SetState(654) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 77, p.GetParserRuleContext()) == 1 { + { + p.SetState(652) + p.Match(SqlParserK_IF) + } + { + p.SetState(653) + p.Match(SqlParserK_EXISTS) + } + + + } + p.SetState(659) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 78, p.GetParserRuleContext()) == 1 { + { + p.SetState(656) + p.Database_name() + } + { + p.SetState(657) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(661) + p.Trigger_name() + } + + + + return localctx +} + + +// IDrop_view_stmtContext is an interface to support dynamic dispatch. +type IDrop_view_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsDrop_view_stmtContext differentiates from other interfaces. + IsDrop_view_stmtContext() +} + +type Drop_view_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDrop_view_stmtContext() *Drop_view_stmtContext { + var p = new(Drop_view_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_drop_view_stmt + return p +} + +func (*Drop_view_stmtContext) IsDrop_view_stmtContext() {} + +func NewDrop_view_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_view_stmtContext { + var p = new(Drop_view_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_drop_view_stmt + + return p +} + +func (s *Drop_view_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Drop_view_stmtContext) K_DROP() antlr.TerminalNode { + return s.GetToken(SqlParserK_DROP, 0) +} + +func (s *Drop_view_stmtContext) K_VIEW() antlr.TerminalNode { + return s.GetToken(SqlParserK_VIEW, 0) +} + +func (s *Drop_view_stmtContext) View_name() IView_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IView_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IView_nameContext) +} + +func (s *Drop_view_stmtContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *Drop_view_stmtContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *Drop_view_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Drop_view_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Drop_view_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Drop_view_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Drop_view_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterDrop_view_stmt(s) + } +} + +func (s *Drop_view_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitDrop_view_stmt(s) + } +} + + + + +func (p *SqlParser) Drop_view_stmt() (localctx IDrop_view_stmtContext) { + this := p + _ = this + + localctx = NewDrop_view_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 46, SqlParserRULE_drop_view_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(663) + p.Match(SqlParserK_DROP) + } + { + p.SetState(664) + p.Match(SqlParserK_VIEW) + } + p.SetState(667) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 79, p.GetParserRuleContext()) == 1 { + { + p.SetState(665) + p.Match(SqlParserK_IF) + } + { + p.SetState(666) + p.Match(SqlParserK_EXISTS) + } + + + } + p.SetState(672) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 80, p.GetParserRuleContext()) == 1 { + { + p.SetState(669) + p.Database_name() + } + { + p.SetState(670) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(674) + p.View_name() + } + + + + return localctx +} + + +// IFactored_select_stmtContext is an interface to support dynamic dispatch. +type IFactored_select_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsFactored_select_stmtContext differentiates from other interfaces. + IsFactored_select_stmtContext() +} + +type Factored_select_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFactored_select_stmtContext() *Factored_select_stmtContext { + var p = new(Factored_select_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_factored_select_stmt + return p +} + +func (*Factored_select_stmtContext) IsFactored_select_stmtContext() {} + +func NewFactored_select_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Factored_select_stmtContext { + var p = new(Factored_select_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_factored_select_stmt + + return p +} + +func (s *Factored_select_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Factored_select_stmtContext) AllSelect_core() []ISelect_coreContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISelect_coreContext); ok { + len++ + } + } + + tst := make([]ISelect_coreContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISelect_coreContext); ok { + tst[i] = t.(ISelect_coreContext) + i++ + } + } + + return tst +} + +func (s *Factored_select_stmtContext) Select_core(i int) ISelect_coreContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_coreContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISelect_coreContext) +} + +func (s *Factored_select_stmtContext) K_WITH() antlr.TerminalNode { + return s.GetToken(SqlParserK_WITH, 0) +} + +func (s *Factored_select_stmtContext) AllCommon_table_expression() []ICommon_table_expressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ICommon_table_expressionContext); ok { + len++ + } + } + + tst := make([]ICommon_table_expressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ICommon_table_expressionContext); ok { + tst[i] = t.(ICommon_table_expressionContext) + i++ + } + } + + return tst +} + +func (s *Factored_select_stmtContext) Common_table_expression(i int) ICommon_table_expressionContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICommon_table_expressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ICommon_table_expressionContext) +} + +func (s *Factored_select_stmtContext) AllCompound_operator() []ICompound_operatorContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ICompound_operatorContext); ok { + len++ + } + } + + tst := make([]ICompound_operatorContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ICompound_operatorContext); ok { + tst[i] = t.(ICompound_operatorContext) + i++ + } + } + + return tst +} + +func (s *Factored_select_stmtContext) Compound_operator(i int) ICompound_operatorContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICompound_operatorContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ICompound_operatorContext) +} + +func (s *Factored_select_stmtContext) K_ORDER() antlr.TerminalNode { + return s.GetToken(SqlParserK_ORDER, 0) +} + +func (s *Factored_select_stmtContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Factored_select_stmtContext) AllOrdering_term() []IOrdering_termContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IOrdering_termContext); ok { + len++ + } + } + + tst := make([]IOrdering_termContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IOrdering_termContext); ok { + tst[i] = t.(IOrdering_termContext) + i++ + } + } + + return tst +} + +func (s *Factored_select_stmtContext) Ordering_term(i int) IOrdering_termContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOrdering_termContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IOrdering_termContext) +} + +func (s *Factored_select_stmtContext) K_LIMIT() antlr.TerminalNode { + return s.GetToken(SqlParserK_LIMIT, 0) +} + +func (s *Factored_select_stmtContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Factored_select_stmtContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Factored_select_stmtContext) K_RECURSIVE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RECURSIVE, 0) +} + +func (s *Factored_select_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Factored_select_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Factored_select_stmtContext) K_OFFSET() antlr.TerminalNode { + return s.GetToken(SqlParserK_OFFSET, 0) +} + +func (s *Factored_select_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Factored_select_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Factored_select_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterFactored_select_stmt(s) + } +} + +func (s *Factored_select_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitFactored_select_stmt(s) + } +} + + + + +func (p *SqlParser) Factored_select_stmt() (localctx IFactored_select_stmtContext) { + this := p + _ = this + + localctx = NewFactored_select_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 48, SqlParserRULE_factored_select_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(688) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WITH { + { + p.SetState(676) + p.Match(SqlParserK_WITH) + } + p.SetState(678) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 81, p.GetParserRuleContext()) == 1 { + { + p.SetState(677) + p.Match(SqlParserK_RECURSIVE) + } + + + } + { + p.SetState(680) + p.Common_table_expression() + } + p.SetState(685) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(681) + p.Match(SqlParserCOMMA) + } + { + p.SetState(682) + p.Common_table_expression() + } + + + p.SetState(687) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + { + p.SetState(690) + p.Select_core() + } + p.SetState(696) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserK_EXCEPT || _la == SqlParserK_INTERSECT || _la == SqlParserK_UNION { + { + p.SetState(691) + p.Compound_operator() + } + { + p.SetState(692) + p.Select_core() + } + + + p.SetState(698) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + p.SetState(709) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_ORDER { + { + p.SetState(699) + p.Match(SqlParserK_ORDER) + } + { + p.SetState(700) + p.Match(SqlParserK_BY) + } + { + p.SetState(701) + p.Ordering_term() + } + p.SetState(706) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(702) + p.Match(SqlParserCOMMA) + } + { + p.SetState(703) + p.Ordering_term() + } + + + p.SetState(708) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + p.SetState(717) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_LIMIT { + { + p.SetState(711) + p.Match(SqlParserK_LIMIT) + } + { + p.SetState(712) + p.expr(0) + } + p.SetState(715) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { + { + p.SetState(713) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(714) + p.expr(0) + } + + } + + } + + + + return localctx +} + + +// IInsert_stmtContext is an interface to support dynamic dispatch. +type IInsert_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsInsert_stmtContext differentiates from other interfaces. + IsInsert_stmtContext() +} + +type Insert_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyInsert_stmtContext() *Insert_stmtContext { + var p = new(Insert_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_insert_stmt + return p +} + +func (*Insert_stmtContext) IsInsert_stmtContext() {} + +func NewInsert_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Insert_stmtContext { + var p = new(Insert_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_insert_stmt + + return p +} + +func (s *Insert_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Insert_stmtContext) K_INTO() antlr.TerminalNode { + return s.GetToken(SqlParserK_INTO, 0) +} + +func (s *Insert_stmtContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Insert_stmtContext) K_INSERT() antlr.TerminalNode { + return s.GetToken(SqlParserK_INSERT, 0) +} + +func (s *Insert_stmtContext) K_REPLACE() antlr.TerminalNode { + return s.GetToken(SqlParserK_REPLACE, 0) +} + +func (s *Insert_stmtContext) K_OR() antlr.TerminalNode { + return s.GetToken(SqlParserK_OR, 0) +} + +func (s *Insert_stmtContext) K_ROLLBACK() antlr.TerminalNode { + return s.GetToken(SqlParserK_ROLLBACK, 0) +} + +func (s *Insert_stmtContext) K_ABORT() antlr.TerminalNode { + return s.GetToken(SqlParserK_ABORT, 0) +} + +func (s *Insert_stmtContext) K_FAIL() antlr.TerminalNode { + return s.GetToken(SqlParserK_FAIL, 0) +} + +func (s *Insert_stmtContext) K_IGNORE() antlr.TerminalNode { + return s.GetToken(SqlParserK_IGNORE, 0) +} + +func (s *Insert_stmtContext) K_VALUES() antlr.TerminalNode { + return s.GetToken(SqlParserK_VALUES, 0) +} + +func (s *Insert_stmtContext) AllOPEN_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserOPEN_PAR) +} + +func (s *Insert_stmtContext) OPEN_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, i) +} + +func (s *Insert_stmtContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Insert_stmtContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Insert_stmtContext) AllCLOSE_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserCLOSE_PAR) +} + +func (s *Insert_stmtContext) CLOSE_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, i) +} + +func (s *Insert_stmtContext) Select_stmt() ISelect_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISelect_stmtContext) +} + +func (s *Insert_stmtContext) K_DEFAULT() antlr.TerminalNode { + return s.GetToken(SqlParserK_DEFAULT, 0) +} + +func (s *Insert_stmtContext) With_clause() IWith_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWith_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IWith_clauseContext) +} + +func (s *Insert_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Insert_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Insert_stmtContext) AllColumn_name() []IColumn_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumn_nameContext); ok { + len++ + } + } + + tst := make([]IColumn_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumn_nameContext); ok { + tst[i] = t.(IColumn_nameContext) + i++ + } + } + + return tst +} + +func (s *Insert_stmtContext) Column_name(i int) IColumn_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Insert_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Insert_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Insert_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Insert_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Insert_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterInsert_stmt(s) + } +} + +func (s *Insert_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitInsert_stmt(s) + } +} + + + + +func (p *SqlParser) Insert_stmt() (localctx IInsert_stmtContext) { + this := p + _ = this + + localctx = NewInsert_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 50, SqlParserRULE_insert_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(720) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WITH { + { + p.SetState(719) + p.With_clause() + } + + } + p.SetState(739) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 90, p.GetParserRuleContext()) { + case 1: + { + p.SetState(722) + p.Match(SqlParserK_INSERT) + } + + + case 2: + { + p.SetState(723) + p.Match(SqlParserK_REPLACE) + } + + + case 3: + { + p.SetState(724) + p.Match(SqlParserK_INSERT) + } + { + p.SetState(725) + p.Match(SqlParserK_OR) + } + { + p.SetState(726) + p.Match(SqlParserK_REPLACE) + } + + + case 4: + { + p.SetState(727) + p.Match(SqlParserK_INSERT) + } + { + p.SetState(728) + p.Match(SqlParserK_OR) + } + { + p.SetState(729) + p.Match(SqlParserK_ROLLBACK) + } + + + case 5: + { + p.SetState(730) + p.Match(SqlParserK_INSERT) + } + { + p.SetState(731) + p.Match(SqlParserK_OR) + } + { + p.SetState(732) + p.Match(SqlParserK_ABORT) + } + + + case 6: + { + p.SetState(733) + p.Match(SqlParserK_INSERT) + } + { + p.SetState(734) + p.Match(SqlParserK_OR) + } + { + p.SetState(735) + p.Match(SqlParserK_FAIL) + } + + + case 7: + { + p.SetState(736) + p.Match(SqlParserK_INSERT) + } + { + p.SetState(737) + p.Match(SqlParserK_OR) + } + { + p.SetState(738) + p.Match(SqlParserK_IGNORE) + } + + } + { + p.SetState(741) + p.Match(SqlParserK_INTO) + } + p.SetState(745) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 91, p.GetParserRuleContext()) == 1 { + { + p.SetState(742) + p.Database_name() + } + { + p.SetState(743) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(747) + p.Table_name() + } + p.SetState(759) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserOPEN_PAR { + { + p.SetState(748) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(749) + p.Column_name() + } + p.SetState(754) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(750) + p.Match(SqlParserCOMMA) + } + { + p.SetState(751) + p.Column_name() + } + + + p.SetState(756) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(757) + p.Match(SqlParserCLOSE_PAR) + } + + } + p.SetState(792) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 97, p.GetParserRuleContext()) { + case 1: + { + p.SetState(761) + p.Match(SqlParserK_VALUES) + } + { + p.SetState(762) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(763) + p.expr(0) + } + p.SetState(768) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(764) + p.Match(SqlParserCOMMA) + } + { + p.SetState(765) + p.expr(0) + } + + + p.SetState(770) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(771) + p.Match(SqlParserCLOSE_PAR) + } + p.SetState(786) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(772) + p.Match(SqlParserCOMMA) + } + { + p.SetState(773) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(774) + p.expr(0) + } + p.SetState(779) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(775) + p.Match(SqlParserCOMMA) + } + { + p.SetState(776) + p.expr(0) + } + + + p.SetState(781) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(782) + p.Match(SqlParserCLOSE_PAR) + } + + + p.SetState(788) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + + case 2: + { + p.SetState(789) + p.Select_stmt() + } + + + case 3: + { + p.SetState(790) + p.Match(SqlParserK_DEFAULT) + } + { + p.SetState(791) + p.Match(SqlParserK_VALUES) + } + + } + + + + return localctx +} + + +// IPragma_stmtContext is an interface to support dynamic dispatch. +type IPragma_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsPragma_stmtContext differentiates from other interfaces. + IsPragma_stmtContext() +} + +type Pragma_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPragma_stmtContext() *Pragma_stmtContext { + var p = new(Pragma_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_pragma_stmt + return p +} + +func (*Pragma_stmtContext) IsPragma_stmtContext() {} + +func NewPragma_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Pragma_stmtContext { + var p = new(Pragma_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_pragma_stmt + + return p +} + +func (s *Pragma_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Pragma_stmtContext) K_PRAGMA() antlr.TerminalNode { + return s.GetToken(SqlParserK_PRAGMA, 0) +} + +func (s *Pragma_stmtContext) Pragma_name() IPragma_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPragma_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IPragma_nameContext) +} + +func (s *Pragma_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Pragma_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Pragma_stmtContext) ASSIGN() antlr.TerminalNode { + return s.GetToken(SqlParserASSIGN, 0) +} + +func (s *Pragma_stmtContext) Pragma_value() IPragma_valueContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPragma_valueContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IPragma_valueContext) +} + +func (s *Pragma_stmtContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Pragma_stmtContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Pragma_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Pragma_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Pragma_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterPragma_stmt(s) + } +} + +func (s *Pragma_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitPragma_stmt(s) + } +} + + + + +func (p *SqlParser) Pragma_stmt() (localctx IPragma_stmtContext) { + this := p + _ = this + + localctx = NewPragma_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 52, SqlParserRULE_pragma_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(794) + p.Match(SqlParserK_PRAGMA) + } + p.SetState(798) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 98, p.GetParserRuleContext()) == 1 { + { + p.SetState(795) + p.Database_name() + } + { + p.SetState(796) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(800) + p.Pragma_name() + } + p.SetState(807) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserASSIGN: + { + p.SetState(801) + p.Match(SqlParserASSIGN) + } + { + p.SetState(802) + p.Pragma_value() + } + + + case SqlParserOPEN_PAR: + { + p.SetState(803) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(804) + p.Pragma_value() + } + { + p.SetState(805) + p.Match(SqlParserCLOSE_PAR) + } + + + case SqlParserEOF, SqlParserSCOL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_ATTACH, SqlParserK_BEGIN, SqlParserK_COMMIT, SqlParserK_CREATE, SqlParserK_DELETE, SqlParserK_DETACH, SqlParserK_DROP, SqlParserK_END, SqlParserK_EXPLAIN, SqlParserK_INSERT, SqlParserK_PRAGMA, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_REPLACE, SqlParserK_ROLLBACK, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_UPDATE, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_WITH, SqlParserUNEXPECTED_CHAR: + + + + default: + } + + + + return localctx +} + + +// IReindex_stmtContext is an interface to support dynamic dispatch. +type IReindex_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsReindex_stmtContext differentiates from other interfaces. + IsReindex_stmtContext() +} + +type Reindex_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyReindex_stmtContext() *Reindex_stmtContext { + var p = new(Reindex_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_reindex_stmt + return p +} + +func (*Reindex_stmtContext) IsReindex_stmtContext() {} + +func NewReindex_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Reindex_stmtContext { + var p = new(Reindex_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_reindex_stmt + + return p +} + +func (s *Reindex_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Reindex_stmtContext) K_REINDEX() antlr.TerminalNode { + return s.GetToken(SqlParserK_REINDEX, 0) +} + +func (s *Reindex_stmtContext) Collation_name() ICollation_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICollation_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICollation_nameContext) +} + +func (s *Reindex_stmtContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Reindex_stmtContext) Index_name() IIndex_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndex_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IIndex_nameContext) +} + +func (s *Reindex_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Reindex_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Reindex_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Reindex_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Reindex_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterReindex_stmt(s) + } +} + +func (s *Reindex_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitReindex_stmt(s) + } +} + + + + +func (p *SqlParser) Reindex_stmt() (localctx IReindex_stmtContext) { + this := p + _ = this + + localctx = NewReindex_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 54, SqlParserRULE_reindex_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(809) + p.Match(SqlParserK_REINDEX) + } + p.SetState(820) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 102, p.GetParserRuleContext()) == 1 { + { + p.SetState(810) + p.Collation_name() + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 102, p.GetParserRuleContext()) == 2 { + p.SetState(814) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 100, p.GetParserRuleContext()) == 1 { + { + p.SetState(811) + p.Database_name() + } + { + p.SetState(812) + p.Match(SqlParserDOT) + } + + + } + p.SetState(818) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 101, p.GetParserRuleContext()) { + case 1: + { + p.SetState(816) + p.Table_name() + } + + + case 2: + { + p.SetState(817) + p.Index_name() + } + + } + + + } + + + + return localctx +} + + +// IRelease_stmtContext is an interface to support dynamic dispatch. +type IRelease_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsRelease_stmtContext differentiates from other interfaces. + IsRelease_stmtContext() +} + +type Release_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRelease_stmtContext() *Release_stmtContext { + var p = new(Release_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_release_stmt + return p +} + +func (*Release_stmtContext) IsRelease_stmtContext() {} + +func NewRelease_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Release_stmtContext { + var p = new(Release_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_release_stmt + + return p +} + +func (s *Release_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Release_stmtContext) K_RELEASE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RELEASE, 0) +} + +func (s *Release_stmtContext) Savepoint_name() ISavepoint_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISavepoint_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISavepoint_nameContext) +} + +func (s *Release_stmtContext) K_SAVEPOINT() antlr.TerminalNode { + return s.GetToken(SqlParserK_SAVEPOINT, 0) +} + +func (s *Release_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Release_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Release_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterRelease_stmt(s) + } +} + +func (s *Release_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitRelease_stmt(s) + } +} + + + + +func (p *SqlParser) Release_stmt() (localctx IRelease_stmtContext) { + this := p + _ = this + + localctx = NewRelease_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 56, SqlParserRULE_release_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(822) + p.Match(SqlParserK_RELEASE) + } + p.SetState(824) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 103, p.GetParserRuleContext()) == 1 { + { + p.SetState(823) + p.Match(SqlParserK_SAVEPOINT) + } + + + } + { + p.SetState(826) + p.Savepoint_name() + } + + + + return localctx +} + + +// IRollback_stmtContext is an interface to support dynamic dispatch. +type IRollback_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsRollback_stmtContext differentiates from other interfaces. + IsRollback_stmtContext() +} + +type Rollback_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRollback_stmtContext() *Rollback_stmtContext { + var p = new(Rollback_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_rollback_stmt + return p +} + +func (*Rollback_stmtContext) IsRollback_stmtContext() {} + +func NewRollback_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Rollback_stmtContext { + var p = new(Rollback_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_rollback_stmt + + return p +} + +func (s *Rollback_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Rollback_stmtContext) K_ROLLBACK() antlr.TerminalNode { + return s.GetToken(SqlParserK_ROLLBACK, 0) +} + +func (s *Rollback_stmtContext) K_TRANSACTION() antlr.TerminalNode { + return s.GetToken(SqlParserK_TRANSACTION, 0) +} + +func (s *Rollback_stmtContext) K_TO() antlr.TerminalNode { + return s.GetToken(SqlParserK_TO, 0) +} + +func (s *Rollback_stmtContext) Savepoint_name() ISavepoint_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISavepoint_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISavepoint_nameContext) +} + +func (s *Rollback_stmtContext) Transaction_name() ITransaction_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITransaction_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITransaction_nameContext) +} + +func (s *Rollback_stmtContext) K_SAVEPOINT() antlr.TerminalNode { + return s.GetToken(SqlParserK_SAVEPOINT, 0) +} + +func (s *Rollback_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Rollback_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Rollback_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterRollback_stmt(s) + } +} + +func (s *Rollback_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitRollback_stmt(s) + } +} + + + + +func (p *SqlParser) Rollback_stmt() (localctx IRollback_stmtContext) { + this := p + _ = this + + localctx = NewRollback_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 58, SqlParserRULE_rollback_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(828) + p.Match(SqlParserK_ROLLBACK) + } + p.SetState(833) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_TRANSACTION { + { + p.SetState(829) + p.Match(SqlParserK_TRANSACTION) + } + p.SetState(831) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 104, p.GetParserRuleContext()) == 1 { + { + p.SetState(830) + p.Transaction_name() + } + + + } + + } + p.SetState(840) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_TO { + { + p.SetState(835) + p.Match(SqlParserK_TO) + } + p.SetState(837) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 106, p.GetParserRuleContext()) == 1 { + { + p.SetState(836) + p.Match(SqlParserK_SAVEPOINT) + } + + + } + { + p.SetState(839) + p.Savepoint_name() + } + + } + + + + return localctx +} + + +// ISavepoint_stmtContext is an interface to support dynamic dispatch. +type ISavepoint_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSavepoint_stmtContext differentiates from other interfaces. + IsSavepoint_stmtContext() +} + +type Savepoint_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySavepoint_stmtContext() *Savepoint_stmtContext { + var p = new(Savepoint_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_savepoint_stmt + return p +} + +func (*Savepoint_stmtContext) IsSavepoint_stmtContext() {} + +func NewSavepoint_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Savepoint_stmtContext { + var p = new(Savepoint_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_savepoint_stmt + + return p +} + +func (s *Savepoint_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Savepoint_stmtContext) K_SAVEPOINT() antlr.TerminalNode { + return s.GetToken(SqlParserK_SAVEPOINT, 0) +} + +func (s *Savepoint_stmtContext) Savepoint_name() ISavepoint_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISavepoint_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISavepoint_nameContext) +} + +func (s *Savepoint_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Savepoint_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Savepoint_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSavepoint_stmt(s) + } +} + +func (s *Savepoint_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSavepoint_stmt(s) + } +} + + + + +func (p *SqlParser) Savepoint_stmt() (localctx ISavepoint_stmtContext) { + this := p + _ = this + + localctx = NewSavepoint_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 60, SqlParserRULE_savepoint_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(842) + p.Match(SqlParserK_SAVEPOINT) + } + { + p.SetState(843) + p.Savepoint_name() + } + + + + return localctx +} + + +// ISimple_select_stmtContext is an interface to support dynamic dispatch. +type ISimple_select_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSimple_select_stmtContext differentiates from other interfaces. + IsSimple_select_stmtContext() +} + +type Simple_select_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimple_select_stmtContext() *Simple_select_stmtContext { + var p = new(Simple_select_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_simple_select_stmt + return p +} + +func (*Simple_select_stmtContext) IsSimple_select_stmtContext() {} + +func NewSimple_select_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Simple_select_stmtContext { + var p = new(Simple_select_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_simple_select_stmt + + return p +} + +func (s *Simple_select_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Simple_select_stmtContext) Select_core() ISelect_coreContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_coreContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISelect_coreContext) +} + +func (s *Simple_select_stmtContext) K_WITH() antlr.TerminalNode { + return s.GetToken(SqlParserK_WITH, 0) +} + +func (s *Simple_select_stmtContext) AllCommon_table_expression() []ICommon_table_expressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ICommon_table_expressionContext); ok { + len++ + } + } + + tst := make([]ICommon_table_expressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ICommon_table_expressionContext); ok { + tst[i] = t.(ICommon_table_expressionContext) + i++ + } + } + + return tst +} + +func (s *Simple_select_stmtContext) Common_table_expression(i int) ICommon_table_expressionContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICommon_table_expressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ICommon_table_expressionContext) +} + +func (s *Simple_select_stmtContext) K_ORDER() antlr.TerminalNode { + return s.GetToken(SqlParserK_ORDER, 0) +} + +func (s *Simple_select_stmtContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Simple_select_stmtContext) AllOrdering_term() []IOrdering_termContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IOrdering_termContext); ok { + len++ + } + } + + tst := make([]IOrdering_termContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IOrdering_termContext); ok { + tst[i] = t.(IOrdering_termContext) + i++ + } + } + + return tst +} + +func (s *Simple_select_stmtContext) Ordering_term(i int) IOrdering_termContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOrdering_termContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IOrdering_termContext) +} + +func (s *Simple_select_stmtContext) K_LIMIT() antlr.TerminalNode { + return s.GetToken(SqlParserK_LIMIT, 0) +} + +func (s *Simple_select_stmtContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Simple_select_stmtContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Simple_select_stmtContext) K_RECURSIVE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RECURSIVE, 0) +} + +func (s *Simple_select_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Simple_select_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Simple_select_stmtContext) K_OFFSET() antlr.TerminalNode { + return s.GetToken(SqlParserK_OFFSET, 0) +} + +func (s *Simple_select_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Simple_select_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Simple_select_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSimple_select_stmt(s) + } +} + +func (s *Simple_select_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSimple_select_stmt(s) + } +} + + + + +func (p *SqlParser) Simple_select_stmt() (localctx ISimple_select_stmtContext) { + this := p + _ = this + + localctx = NewSimple_select_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 62, SqlParserRULE_simple_select_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(857) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WITH { + { + p.SetState(845) + p.Match(SqlParserK_WITH) + } + p.SetState(847) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 108, p.GetParserRuleContext()) == 1 { + { + p.SetState(846) + p.Match(SqlParserK_RECURSIVE) + } + + + } + { + p.SetState(849) + p.Common_table_expression() + } + p.SetState(854) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(850) + p.Match(SqlParserCOMMA) + } + { + p.SetState(851) + p.Common_table_expression() + } + + + p.SetState(856) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + { + p.SetState(859) + p.Select_core() + } + p.SetState(870) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_ORDER { + { + p.SetState(860) + p.Match(SqlParserK_ORDER) + } + { + p.SetState(861) + p.Match(SqlParserK_BY) + } + { + p.SetState(862) + p.Ordering_term() + } + p.SetState(867) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(863) + p.Match(SqlParserCOMMA) + } + { + p.SetState(864) + p.Ordering_term() + } + + + p.SetState(869) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + p.SetState(878) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_LIMIT { + { + p.SetState(872) + p.Match(SqlParserK_LIMIT) + } + { + p.SetState(873) + p.expr(0) + } + p.SetState(876) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { + { + p.SetState(874) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(875) + p.expr(0) + } + + } + + } + + + + return localctx +} + + +// ISelect_stmtContext is an interface to support dynamic dispatch. +type ISelect_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSelect_stmtContext differentiates from other interfaces. + IsSelect_stmtContext() +} + +type Select_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySelect_stmtContext() *Select_stmtContext { + var p = new(Select_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_select_stmt + return p +} + +func (*Select_stmtContext) IsSelect_stmtContext() {} + +func NewSelect_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Select_stmtContext { + var p = new(Select_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_select_stmt + + return p +} + +func (s *Select_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Select_stmtContext) AllSelect_or_values() []ISelect_or_valuesContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISelect_or_valuesContext); ok { + len++ + } + } + + tst := make([]ISelect_or_valuesContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISelect_or_valuesContext); ok { + tst[i] = t.(ISelect_or_valuesContext) + i++ + } + } + + return tst +} + +func (s *Select_stmtContext) Select_or_values(i int) ISelect_or_valuesContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_or_valuesContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISelect_or_valuesContext) +} + +func (s *Select_stmtContext) K_WITH() antlr.TerminalNode { + return s.GetToken(SqlParserK_WITH, 0) +} + +func (s *Select_stmtContext) AllCommon_table_expression() []ICommon_table_expressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ICommon_table_expressionContext); ok { + len++ + } + } + + tst := make([]ICommon_table_expressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ICommon_table_expressionContext); ok { + tst[i] = t.(ICommon_table_expressionContext) + i++ + } + } + + return tst +} + +func (s *Select_stmtContext) Common_table_expression(i int) ICommon_table_expressionContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICommon_table_expressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ICommon_table_expressionContext) +} + +func (s *Select_stmtContext) AllCompound_operator() []ICompound_operatorContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ICompound_operatorContext); ok { + len++ + } + } + + tst := make([]ICompound_operatorContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ICompound_operatorContext); ok { + tst[i] = t.(ICompound_operatorContext) + i++ + } + } + + return tst +} + +func (s *Select_stmtContext) Compound_operator(i int) ICompound_operatorContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICompound_operatorContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ICompound_operatorContext) +} + +func (s *Select_stmtContext) K_ORDER() antlr.TerminalNode { + return s.GetToken(SqlParserK_ORDER, 0) +} + +func (s *Select_stmtContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Select_stmtContext) AllOrdering_term() []IOrdering_termContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IOrdering_termContext); ok { + len++ + } + } + + tst := make([]IOrdering_termContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IOrdering_termContext); ok { + tst[i] = t.(IOrdering_termContext) + i++ + } + } + + return tst +} + +func (s *Select_stmtContext) Ordering_term(i int) IOrdering_termContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOrdering_termContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IOrdering_termContext) +} + +func (s *Select_stmtContext) K_LIMIT() antlr.TerminalNode { + return s.GetToken(SqlParserK_LIMIT, 0) +} + +func (s *Select_stmtContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Select_stmtContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Select_stmtContext) K_RECURSIVE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RECURSIVE, 0) +} + +func (s *Select_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Select_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Select_stmtContext) K_OFFSET() antlr.TerminalNode { + return s.GetToken(SqlParserK_OFFSET, 0) +} + +func (s *Select_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Select_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Select_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSelect_stmt(s) + } +} + +func (s *Select_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSelect_stmt(s) + } +} + + + + +func (p *SqlParser) Select_stmt() (localctx ISelect_stmtContext) { + this := p + _ = this + + localctx = NewSelect_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 64, SqlParserRULE_select_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + var _alt int + + p.EnterOuterAlt(localctx, 1) + p.SetState(892) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WITH { + { + p.SetState(880) + p.Match(SqlParserK_WITH) + } + p.SetState(882) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 115, p.GetParserRuleContext()) == 1 { + { + p.SetState(881) + p.Match(SqlParserK_RECURSIVE) + } + + + } + { + p.SetState(884) + p.Common_table_expression() + } + p.SetState(889) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(885) + p.Match(SqlParserCOMMA) + } + { + p.SetState(886) + p.Common_table_expression() + } + + + p.SetState(891) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + { + p.SetState(894) + p.Select_or_values() + } + p.SetState(900) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 118, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(895) + p.Compound_operator() + } + { + p.SetState(896) + p.Select_or_values() + } + + + } + p.SetState(902) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 118, p.GetParserRuleContext()) + } + p.SetState(913) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 120, p.GetParserRuleContext()) == 1 { + { + p.SetState(903) + p.Match(SqlParserK_ORDER) + } + { + p.SetState(904) + p.Match(SqlParserK_BY) + } + { + p.SetState(905) + p.Ordering_term() + } + p.SetState(910) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 119, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(906) + p.Match(SqlParserCOMMA) + } + { + p.SetState(907) + p.Ordering_term() + } + + + } + p.SetState(912) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 119, p.GetParserRuleContext()) + } + + + } + p.SetState(921) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 122, p.GetParserRuleContext()) == 1 { + { + p.SetState(915) + p.Match(SqlParserK_LIMIT) + } + { + p.SetState(916) + p.expr(0) + } + p.SetState(919) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 121, p.GetParserRuleContext()) == 1 { + { + p.SetState(917) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(918) + p.expr(0) + } + + + } + + + } + + + + return localctx +} + + +// ISelect_or_valuesContext is an interface to support dynamic dispatch. +type ISelect_or_valuesContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSelect_or_valuesContext differentiates from other interfaces. + IsSelect_or_valuesContext() +} + +type Select_or_valuesContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySelect_or_valuesContext() *Select_or_valuesContext { + var p = new(Select_or_valuesContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_select_or_values + return p +} + +func (*Select_or_valuesContext) IsSelect_or_valuesContext() {} + +func NewSelect_or_valuesContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Select_or_valuesContext { + var p = new(Select_or_valuesContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_select_or_values + + return p +} + +func (s *Select_or_valuesContext) GetParser() antlr.Parser { return s.parser } + +func (s *Select_or_valuesContext) K_SELECT() antlr.TerminalNode { + return s.GetToken(SqlParserK_SELECT, 0) +} + +func (s *Select_or_valuesContext) AllResult_column() []IResult_columnContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IResult_columnContext); ok { + len++ + } + } + + tst := make([]IResult_columnContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IResult_columnContext); ok { + tst[i] = t.(IResult_columnContext) + i++ + } + } + + return tst +} + +func (s *Select_or_valuesContext) Result_column(i int) IResult_columnContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IResult_columnContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IResult_columnContext) +} + +func (s *Select_or_valuesContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Select_or_valuesContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Select_or_valuesContext) K_FROM() antlr.TerminalNode { + return s.GetToken(SqlParserK_FROM, 0) +} + +func (s *Select_or_valuesContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) +} + +func (s *Select_or_valuesContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Select_or_valuesContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Select_or_valuesContext) K_GROUP() antlr.TerminalNode { + return s.GetToken(SqlParserK_GROUP, 0) +} + +func (s *Select_or_valuesContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Select_or_valuesContext) K_DISTINCT() antlr.TerminalNode { + return s.GetToken(SqlParserK_DISTINCT, 0) +} + +func (s *Select_or_valuesContext) K_ALL() antlr.TerminalNode { + return s.GetToken(SqlParserK_ALL, 0) +} + +func (s *Select_or_valuesContext) AllTable_or_subquery() []ITable_or_subqueryContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ITable_or_subqueryContext); ok { + len++ + } + } + + tst := make([]ITable_or_subqueryContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ITable_or_subqueryContext); ok { + tst[i] = t.(ITable_or_subqueryContext) + i++ + } + } + + return tst +} + +func (s *Select_or_valuesContext) Table_or_subquery(i int) ITable_or_subqueryContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_or_subqueryContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ITable_or_subqueryContext) +} + +func (s *Select_or_valuesContext) Join_clause() IJoin_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IJoin_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IJoin_clauseContext) +} + +func (s *Select_or_valuesContext) K_HAVING() antlr.TerminalNode { + return s.GetToken(SqlParserK_HAVING, 0) +} + +func (s *Select_or_valuesContext) K_VALUES() antlr.TerminalNode { + return s.GetToken(SqlParserK_VALUES, 0) +} + +func (s *Select_or_valuesContext) AllOPEN_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserOPEN_PAR) +} + +func (s *Select_or_valuesContext) OPEN_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, i) +} + +func (s *Select_or_valuesContext) AllCLOSE_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserCLOSE_PAR) +} + +func (s *Select_or_valuesContext) CLOSE_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, i) +} + +func (s *Select_or_valuesContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Select_or_valuesContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Select_or_valuesContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSelect_or_values(s) + } +} + +func (s *Select_or_valuesContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSelect_or_values(s) + } +} + + + + +func (p *SqlParser) Select_or_values() (localctx ISelect_or_valuesContext) { + this := p + _ = this + + localctx = NewSelect_or_valuesContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 66, SqlParserRULE_select_or_values) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + var _alt int + + p.SetState(997) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_SELECT: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(923) + p.Match(SqlParserK_SELECT) + } + p.SetState(925) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 123, p.GetParserRuleContext()) == 1 { + { + p.SetState(924) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_ALL || _la == SqlParserK_DISTINCT) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + + } + { + p.SetState(927) + p.Result_column() + } + p.SetState(932) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 124, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(928) + p.Match(SqlParserCOMMA) + } + { + p.SetState(929) + p.Result_column() + } + + + } + p.SetState(934) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 124, p.GetParserRuleContext()) + } + p.SetState(947) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 127, p.GetParserRuleContext()) == 1 { + { + p.SetState(935) + p.Match(SqlParserK_FROM) + } + p.SetState(945) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 126, p.GetParserRuleContext()) { + case 1: + { + p.SetState(936) + p.Table_or_subquery() + } + p.SetState(941) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 125, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(937) + p.Match(SqlParserCOMMA) + } + { + p.SetState(938) + p.Table_or_subquery() + } + + + } + p.SetState(943) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 125, p.GetParserRuleContext()) + } + + + case 2: + { + p.SetState(944) + p.Join_clause() + } + + } + + + } + p.SetState(951) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 128, p.GetParserRuleContext()) == 1 { + { + p.SetState(949) + p.Match(SqlParserK_WHERE) + } + { + p.SetState(950) + p.expr(0) + } + + + } + p.SetState(967) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 131, p.GetParserRuleContext()) == 1 { + { + p.SetState(953) + p.Match(SqlParserK_GROUP) + } + { + p.SetState(954) + p.Match(SqlParserK_BY) + } + { + p.SetState(955) + p.expr(0) + } + p.SetState(960) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 129, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(956) + p.Match(SqlParserCOMMA) + } + { + p.SetState(957) + p.expr(0) + } + + + } + p.SetState(962) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 129, p.GetParserRuleContext()) + } + p.SetState(965) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 130, p.GetParserRuleContext()) == 1 { + { + p.SetState(963) + p.Match(SqlParserK_HAVING) + } + { + p.SetState(964) + p.expr(0) + } + + + } + + + } + + + case SqlParserK_VALUES: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(969) + p.Match(SqlParserK_VALUES) + } + { + p.SetState(970) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(971) + p.expr(0) + } + p.SetState(976) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(972) + p.Match(SqlParserCOMMA) + } + { + p.SetState(973) + p.expr(0) + } + + + p.SetState(978) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(979) + p.Match(SqlParserCLOSE_PAR) + } + p.SetState(994) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 134, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(980) + p.Match(SqlParserCOMMA) + } + { + p.SetState(981) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(982) + p.expr(0) + } + p.SetState(987) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(983) + p.Match(SqlParserCOMMA) + } + { + p.SetState(984) + p.expr(0) + } + + + p.SetState(989) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(990) + p.Match(SqlParserCLOSE_PAR) + } + + + } + p.SetState(996) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 134, p.GetParserRuleContext()) + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + + return localctx +} + + +// IUpdate_stmtContext is an interface to support dynamic dispatch. +type IUpdate_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsUpdate_stmtContext differentiates from other interfaces. + IsUpdate_stmtContext() +} + +type Update_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyUpdate_stmtContext() *Update_stmtContext { + var p = new(Update_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_update_stmt + return p +} + +func (*Update_stmtContext) IsUpdate_stmtContext() {} + +func NewUpdate_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Update_stmtContext { + var p = new(Update_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_update_stmt + + return p +} + +func (s *Update_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Update_stmtContext) K_UPDATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_UPDATE, 0) +} + +func (s *Update_stmtContext) Qualified_table_name() IQualified_table_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IQualified_table_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IQualified_table_nameContext) +} + +func (s *Update_stmtContext) K_SET() antlr.TerminalNode { + return s.GetToken(SqlParserK_SET, 0) +} + +func (s *Update_stmtContext) AllColumn_name() []IColumn_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumn_nameContext); ok { + len++ + } + } + + tst := make([]IColumn_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumn_nameContext); ok { + tst[i] = t.(IColumn_nameContext) + i++ + } + } + + return tst +} + +func (s *Update_stmtContext) Column_name(i int) IColumn_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Update_stmtContext) AllASSIGN() []antlr.TerminalNode { + return s.GetTokens(SqlParserASSIGN) +} + +func (s *Update_stmtContext) ASSIGN(i int) antlr.TerminalNode { + return s.GetToken(SqlParserASSIGN, i) +} + +func (s *Update_stmtContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Update_stmtContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Update_stmtContext) With_clause() IWith_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWith_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IWith_clauseContext) +} + +func (s *Update_stmtContext) K_OR() antlr.TerminalNode { + return s.GetToken(SqlParserK_OR, 0) +} + +func (s *Update_stmtContext) K_ROLLBACK() antlr.TerminalNode { + return s.GetToken(SqlParserK_ROLLBACK, 0) +} + +func (s *Update_stmtContext) K_ABORT() antlr.TerminalNode { + return s.GetToken(SqlParserK_ABORT, 0) +} + +func (s *Update_stmtContext) K_REPLACE() antlr.TerminalNode { + return s.GetToken(SqlParserK_REPLACE, 0) +} + +func (s *Update_stmtContext) K_FAIL() antlr.TerminalNode { + return s.GetToken(SqlParserK_FAIL, 0) +} + +func (s *Update_stmtContext) K_IGNORE() antlr.TerminalNode { + return s.GetToken(SqlParserK_IGNORE, 0) +} + +func (s *Update_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Update_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Update_stmtContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) +} + +func (s *Update_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Update_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Update_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterUpdate_stmt(s) + } +} + +func (s *Update_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitUpdate_stmt(s) + } +} + + + + +func (p *SqlParser) Update_stmt() (localctx IUpdate_stmtContext) { + this := p + _ = this + + localctx = NewUpdate_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 68, SqlParserRULE_update_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(1000) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WITH { + { + p.SetState(999) + p.With_clause() + } + + } + { + p.SetState(1002) + p.Match(SqlParserK_UPDATE) + } + p.SetState(1013) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 1 { + { + p.SetState(1003) + p.Match(SqlParserK_OR) + } + { + p.SetState(1004) + p.Match(SqlParserK_ROLLBACK) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 2 { + { + p.SetState(1005) + p.Match(SqlParserK_OR) + } + { + p.SetState(1006) + p.Match(SqlParserK_ABORT) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 3 { + { + p.SetState(1007) + p.Match(SqlParserK_OR) + } + { + p.SetState(1008) + p.Match(SqlParserK_REPLACE) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 4 { + { + p.SetState(1009) + p.Match(SqlParserK_OR) + } + { + p.SetState(1010) + p.Match(SqlParserK_FAIL) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 5 { + { + p.SetState(1011) + p.Match(SqlParserK_OR) + } + { + p.SetState(1012) + p.Match(SqlParserK_IGNORE) + } + + + } + { + p.SetState(1015) + p.Qualified_table_name() + } + { + p.SetState(1016) + p.Match(SqlParserK_SET) + } + { + p.SetState(1017) + p.Column_name() + } + { + p.SetState(1018) + p.Match(SqlParserASSIGN) + } + { + p.SetState(1019) + p.expr(0) + } + p.SetState(1027) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1020) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1021) + p.Column_name() + } + { + p.SetState(1022) + p.Match(SqlParserASSIGN) + } + { + p.SetState(1023) + p.expr(0) + } + + + p.SetState(1029) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + p.SetState(1032) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WHERE { + { + p.SetState(1030) + p.Match(SqlParserK_WHERE) + } + { + p.SetState(1031) + p.expr(0) + } + + } + + + + return localctx +} + + +// IUpdate_stmt_limitedContext is an interface to support dynamic dispatch. +type IUpdate_stmt_limitedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsUpdate_stmt_limitedContext differentiates from other interfaces. + IsUpdate_stmt_limitedContext() +} + +type Update_stmt_limitedContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyUpdate_stmt_limitedContext() *Update_stmt_limitedContext { + var p = new(Update_stmt_limitedContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_update_stmt_limited + return p +} + +func (*Update_stmt_limitedContext) IsUpdate_stmt_limitedContext() {} + +func NewUpdate_stmt_limitedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Update_stmt_limitedContext { + var p = new(Update_stmt_limitedContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_update_stmt_limited + + return p +} + +func (s *Update_stmt_limitedContext) GetParser() antlr.Parser { return s.parser } + +func (s *Update_stmt_limitedContext) K_UPDATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_UPDATE, 0) +} + +func (s *Update_stmt_limitedContext) Qualified_table_name() IQualified_table_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IQualified_table_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IQualified_table_nameContext) +} + +func (s *Update_stmt_limitedContext) K_SET() antlr.TerminalNode { + return s.GetToken(SqlParserK_SET, 0) +} + +func (s *Update_stmt_limitedContext) AllColumn_name() []IColumn_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumn_nameContext); ok { + len++ + } + } + + tst := make([]IColumn_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumn_nameContext); ok { + tst[i] = t.(IColumn_nameContext) + i++ + } + } + + return tst +} + +func (s *Update_stmt_limitedContext) Column_name(i int) IColumn_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Update_stmt_limitedContext) AllASSIGN() []antlr.TerminalNode { + return s.GetTokens(SqlParserASSIGN) +} + +func (s *Update_stmt_limitedContext) ASSIGN(i int) antlr.TerminalNode { + return s.GetToken(SqlParserASSIGN, i) +} + +func (s *Update_stmt_limitedContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Update_stmt_limitedContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Update_stmt_limitedContext) With_clause() IWith_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWith_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IWith_clauseContext) +} + +func (s *Update_stmt_limitedContext) K_OR() antlr.TerminalNode { + return s.GetToken(SqlParserK_OR, 0) +} + +func (s *Update_stmt_limitedContext) K_ROLLBACK() antlr.TerminalNode { + return s.GetToken(SqlParserK_ROLLBACK, 0) +} + +func (s *Update_stmt_limitedContext) K_ABORT() antlr.TerminalNode { + return s.GetToken(SqlParserK_ABORT, 0) +} + +func (s *Update_stmt_limitedContext) K_REPLACE() antlr.TerminalNode { + return s.GetToken(SqlParserK_REPLACE, 0) +} + +func (s *Update_stmt_limitedContext) K_FAIL() antlr.TerminalNode { + return s.GetToken(SqlParserK_FAIL, 0) +} + +func (s *Update_stmt_limitedContext) K_IGNORE() antlr.TerminalNode { + return s.GetToken(SqlParserK_IGNORE, 0) +} + +func (s *Update_stmt_limitedContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Update_stmt_limitedContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Update_stmt_limitedContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) +} + +func (s *Update_stmt_limitedContext) K_LIMIT() antlr.TerminalNode { + return s.GetToken(SqlParserK_LIMIT, 0) +} + +func (s *Update_stmt_limitedContext) K_ORDER() antlr.TerminalNode { + return s.GetToken(SqlParserK_ORDER, 0) +} + +func (s *Update_stmt_limitedContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Update_stmt_limitedContext) AllOrdering_term() []IOrdering_termContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IOrdering_termContext); ok { + len++ + } + } + + tst := make([]IOrdering_termContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IOrdering_termContext); ok { + tst[i] = t.(IOrdering_termContext) + i++ + } + } + + return tst +} + +func (s *Update_stmt_limitedContext) Ordering_term(i int) IOrdering_termContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOrdering_termContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IOrdering_termContext) +} + +func (s *Update_stmt_limitedContext) K_OFFSET() antlr.TerminalNode { + return s.GetToken(SqlParserK_OFFSET, 0) +} + +func (s *Update_stmt_limitedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Update_stmt_limitedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Update_stmt_limitedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterUpdate_stmt_limited(s) + } +} + +func (s *Update_stmt_limitedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitUpdate_stmt_limited(s) + } +} + + + + +func (p *SqlParser) Update_stmt_limited() (localctx IUpdate_stmt_limitedContext) { + this := p + _ = this + + localctx = NewUpdate_stmt_limitedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 70, SqlParserRULE_update_stmt_limited) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(1035) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WITH { + { + p.SetState(1034) + p.With_clause() + } + + } + { + p.SetState(1037) + p.Match(SqlParserK_UPDATE) + } + p.SetState(1048) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 1 { + { + p.SetState(1038) + p.Match(SqlParserK_OR) + } + { + p.SetState(1039) + p.Match(SqlParserK_ROLLBACK) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 2 { + { + p.SetState(1040) + p.Match(SqlParserK_OR) + } + { + p.SetState(1041) + p.Match(SqlParserK_ABORT) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 3 { + { + p.SetState(1042) + p.Match(SqlParserK_OR) + } + { + p.SetState(1043) + p.Match(SqlParserK_REPLACE) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 4 { + { + p.SetState(1044) + p.Match(SqlParserK_OR) + } + { + p.SetState(1045) + p.Match(SqlParserK_FAIL) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 5 { + { + p.SetState(1046) + p.Match(SqlParserK_OR) + } + { + p.SetState(1047) + p.Match(SqlParserK_IGNORE) + } + + + } + { + p.SetState(1050) + p.Qualified_table_name() + } + { + p.SetState(1051) + p.Match(SqlParserK_SET) + } + { + p.SetState(1052) + p.Column_name() + } + { + p.SetState(1053) + p.Match(SqlParserASSIGN) + } + { + p.SetState(1054) + p.expr(0) + } + p.SetState(1062) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1055) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1056) + p.Column_name() + } + { + p.SetState(1057) + p.Match(SqlParserASSIGN) + } + { + p.SetState(1058) + p.expr(0) + } + + + p.SetState(1064) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + p.SetState(1067) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WHERE { + { + p.SetState(1065) + p.Match(SqlParserK_WHERE) + } + { + p.SetState(1066) + p.expr(0) + } + + } + p.SetState(1087) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_LIMIT || _la == SqlParserK_ORDER { + p.SetState(1079) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_ORDER { + { + p.SetState(1069) + p.Match(SqlParserK_ORDER) + } + { + p.SetState(1070) + p.Match(SqlParserK_BY) + } + { + p.SetState(1071) + p.Ordering_term() + } + p.SetState(1076) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1072) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1073) + p.Ordering_term() + } + + + p.SetState(1078) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + { + p.SetState(1081) + p.Match(SqlParserK_LIMIT) + } + { + p.SetState(1082) + p.expr(0) + } + p.SetState(1085) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { + { + p.SetState(1083) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(1084) + p.expr(0) + } + + } + + } + + + + return localctx +} + + +// IVacuum_stmtContext is an interface to support dynamic dispatch. +type IVacuum_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsVacuum_stmtContext differentiates from other interfaces. + IsVacuum_stmtContext() +} + +type Vacuum_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyVacuum_stmtContext() *Vacuum_stmtContext { + var p = new(Vacuum_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_vacuum_stmt + return p +} + +func (*Vacuum_stmtContext) IsVacuum_stmtContext() {} + +func NewVacuum_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Vacuum_stmtContext { + var p = new(Vacuum_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_vacuum_stmt + + return p +} + +func (s *Vacuum_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Vacuum_stmtContext) K_VACUUM() antlr.TerminalNode { + return s.GetToken(SqlParserK_VACUUM, 0) +} + +func (s *Vacuum_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Vacuum_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Vacuum_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterVacuum_stmt(s) + } +} + +func (s *Vacuum_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitVacuum_stmt(s) + } +} + + + + +func (p *SqlParser) Vacuum_stmt() (localctx IVacuum_stmtContext) { + this := p + _ = this + + localctx = NewVacuum_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 72, SqlParserRULE_vacuum_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1089) + p.Match(SqlParserK_VACUUM) + } + + + + return localctx +} + + +// IColumn_defContext is an interface to support dynamic dispatch. +type IColumn_defContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_defContext differentiates from other interfaces. + IsColumn_defContext() +} + +type Column_defContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_defContext() *Column_defContext { + var p = new(Column_defContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_def + return p +} + +func (*Column_defContext) IsColumn_defContext() {} + +func NewColumn_defContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_defContext { + var p = new(Column_defContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_def + + return p +} + +func (s *Column_defContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_defContext) Column_name() IColumn_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Column_defContext) AllColumn_constraint() []IColumn_constraintContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumn_constraintContext); ok { + len++ + } + } + + tst := make([]IColumn_constraintContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumn_constraintContext); ok { + tst[i] = t.(IColumn_constraintContext) + i++ + } + } + + return tst +} + +func (s *Column_defContext) Column_constraint(i int) IColumn_constraintContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_constraintContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumn_constraintContext) +} + +func (s *Column_defContext) AllType_name() []IType_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IType_nameContext); ok { + len++ + } + } + + tst := make([]IType_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IType_nameContext); ok { + tst[i] = t.(IType_nameContext) + i++ + } + } + + return tst +} + +func (s *Column_defContext) Type_name(i int) IType_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IType_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IType_nameContext) +} + +func (s *Column_defContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_defContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_defContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_def(s) + } +} + +func (s *Column_defContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_def(s) + } +} + + + + +func (p *SqlParser) Column_def() (localctx IColumn_defContext) { + this := p + _ = this + + localctx = NewColumn_defContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 74, SqlParserRULE_column_def) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + var _alt int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1091) + p.Column_name() + } + p.SetState(1096) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 149, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + p.SetState(1094) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 148, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1092) + p.Column_constraint() + } + + + case 2: + { + p.SetState(1093) + p.Type_name() + } + + } + + } + p.SetState(1098) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 149, p.GetParserRuleContext()) + } + + + + return localctx +} + + +// IType_nameContext is an interface to support dynamic dispatch. +type IType_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsType_nameContext differentiates from other interfaces. + IsType_nameContext() +} + +type Type_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyType_nameContext() *Type_nameContext { + var p = new(Type_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_type_name + return p +} + +func (*Type_nameContext) IsType_nameContext() {} + +func NewType_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Type_nameContext { + var p = new(Type_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_type_name + + return p +} + +func (s *Type_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Type_nameContext) Name() INameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(INameContext) +} + +func (s *Type_nameContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Type_nameContext) AllSigned_number() []ISigned_numberContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISigned_numberContext); ok { + len++ + } + } + + tst := make([]ISigned_numberContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISigned_numberContext); ok { + tst[i] = t.(ISigned_numberContext) + i++ + } + } + + return tst +} + +func (s *Type_nameContext) Signed_number(i int) ISigned_numberContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISigned_numberContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISigned_numberContext) +} + +func (s *Type_nameContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Type_nameContext) COMMA() antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, 0) +} + +func (s *Type_nameContext) AllAny_name() []IAny_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IAny_nameContext); ok { + len++ + } + } + + tst := make([]IAny_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IAny_nameContext); ok { + tst[i] = t.(IAny_nameContext) + i++ + } + } + + return tst +} + +func (s *Type_nameContext) Any_name(i int) IAny_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Type_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Type_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Type_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterType_name(s) + } +} + +func (s *Type_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitType_name(s) + } +} + + + + +func (p *SqlParser) Type_name() (localctx IType_nameContext) { + this := p + _ = this + + localctx = NewType_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 76, SqlParserRULE_type_name) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1099) + p.Name() + } + p.SetState(1119) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 153, p.GetParserRuleContext()) == 1 { + { + p.SetState(1100) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1101) + p.Signed_number() + } + p.SetState(1103) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if (((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserOPEN_PAR) | (1 << SqlParserK_ABORT) | (1 << SqlParserK_ACTION) | (1 << SqlParserK_ADD) | (1 << SqlParserK_AFTER) | (1 << SqlParserK_ALL) | (1 << SqlParserK_ALTER))) != 0) || ((((_la - 32)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 32))) & ((1 << (SqlParserK_ANALYZE - 32)) | (1 << (SqlParserK_AND - 32)) | (1 << (SqlParserK_AS - 32)) | (1 << (SqlParserK_ASC - 32)) | (1 << (SqlParserK_ATTACH - 32)) | (1 << (SqlParserK_AUTOINCREMENT - 32)) | (1 << (SqlParserK_BEFORE - 32)) | (1 << (SqlParserK_BEGIN - 32)) | (1 << (SqlParserK_BETWEEN - 32)) | (1 << (SqlParserK_BY - 32)) | (1 << (SqlParserK_CASCADE - 32)) | (1 << (SqlParserK_CASE - 32)) | (1 << (SqlParserK_CAST - 32)) | (1 << (SqlParserK_CHECK - 32)) | (1 << (SqlParserK_COLLATE - 32)) | (1 << (SqlParserK_COLUMN - 32)) | (1 << (SqlParserK_COMMIT - 32)) | (1 << (SqlParserK_CONFLICT - 32)) | (1 << (SqlParserK_CONSTRAINT - 32)) | (1 << (SqlParserK_CREATE - 32)) | (1 << (SqlParserK_CROSS - 32)) | (1 << (SqlParserK_CURRENT_DATE - 32)) | (1 << (SqlParserK_CURRENT_TIME - 32)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 32)) | (1 << (SqlParserK_DATABASE - 32)) | (1 << (SqlParserK_DEFAULT - 32)) | (1 << (SqlParserK_DEFERRABLE - 32)) | (1 << (SqlParserK_DEFERRED - 32)) | (1 << (SqlParserK_DELETE - 32)) | (1 << (SqlParserK_DESC - 32)) | (1 << (SqlParserK_DETACH - 32)) | (1 << (SqlParserK_DISTINCT - 32)))) != 0) || ((((_la - 64)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 64))) & ((1 << (SqlParserK_DROP - 64)) | (1 << (SqlParserK_EACH - 64)) | (1 << (SqlParserK_ELSE - 64)) | (1 << (SqlParserK_END - 64)) | (1 << (SqlParserK_ENABLE - 64)) | (1 << (SqlParserK_ESCAPE - 64)) | (1 << (SqlParserK_EXCEPT - 64)) | (1 << (SqlParserK_EXCLUSIVE - 64)) | (1 << (SqlParserK_EXISTS - 64)) | (1 << (SqlParserK_EXPLAIN - 64)) | (1 << (SqlParserK_FAIL - 64)) | (1 << (SqlParserK_FOR - 64)) | (1 << (SqlParserK_FOREIGN - 64)) | (1 << (SqlParserK_FROM - 64)) | (1 << (SqlParserK_FULL - 64)) | (1 << (SqlParserK_GLOB - 64)) | (1 << (SqlParserK_GROUP - 64)) | (1 << (SqlParserK_HAVING - 64)) | (1 << (SqlParserK_IF - 64)) | (1 << (SqlParserK_IGNORE - 64)) | (1 << (SqlParserK_IMMEDIATE - 64)) | (1 << (SqlParserK_IN - 64)) | (1 << (SqlParserK_INDEX - 64)) | (1 << (SqlParserK_INDEXED - 64)) | (1 << (SqlParserK_INITIALLY - 64)) | (1 << (SqlParserK_INNER - 64)) | (1 << (SqlParserK_INSERT - 64)) | (1 << (SqlParserK_INSTEAD - 64)) | (1 << (SqlParserK_INTERSECT - 64)) | (1 << (SqlParserK_INTO - 64)) | (1 << (SqlParserK_IS - 64)) | (1 << (SqlParserK_ISNULL - 64)))) != 0) || ((((_la - 96)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 96))) & ((1 << (SqlParserK_JOIN - 96)) | (1 << (SqlParserK_KEY - 96)) | (1 << (SqlParserK_LEFT - 96)) | (1 << (SqlParserK_LIKE - 96)) | (1 << (SqlParserK_LIMIT - 96)) | (1 << (SqlParserK_MATCH - 96)) | (1 << (SqlParserK_NATURAL - 96)) | (1 << (SqlParserK_NEXTVAL - 96)) | (1 << (SqlParserK_NO - 96)) | (1 << (SqlParserK_NOT - 96)) | (1 << (SqlParserK_NOTNULL - 96)) | (1 << (SqlParserK_NULL - 96)) | (1 << (SqlParserK_OF - 96)) | (1 << (SqlParserK_OFFSET - 96)) | (1 << (SqlParserK_ON - 96)) | (1 << (SqlParserK_OR - 96)) | (1 << (SqlParserK_ORDER - 96)) | (1 << (SqlParserK_OUTER - 96)) | (1 << (SqlParserK_PLAN - 96)) | (1 << (SqlParserK_PRAGMA - 96)) | (1 << (SqlParserK_PRIMARY - 96)) | (1 << (SqlParserK_QUERY - 96)) | (1 << (SqlParserK_RAISE - 96)) | (1 << (SqlParserK_RECURSIVE - 96)) | (1 << (SqlParserK_REFERENCES - 96)) | (1 << (SqlParserK_REGEXP - 96)) | (1 << (SqlParserK_REINDEX - 96)) | (1 << (SqlParserK_RELEASE - 96)) | (1 << (SqlParserK_RENAME - 96)) | (1 << (SqlParserK_REPLACE - 96)) | (1 << (SqlParserK_RESTRICT - 96)))) != 0) || ((((_la - 128)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 128))) & ((1 << (SqlParserK_RIGHT - 128)) | (1 << (SqlParserK_ROLLBACK - 128)) | (1 << (SqlParserK_ROW - 128)) | (1 << (SqlParserK_SAVEPOINT - 128)) | (1 << (SqlParserK_SELECT - 128)) | (1 << (SqlParserK_SET - 128)) | (1 << (SqlParserK_TABLE - 128)) | (1 << (SqlParserK_TEMP - 128)) | (1 << (SqlParserK_TEMPORARY - 128)) | (1 << (SqlParserK_THEN - 128)) | (1 << (SqlParserK_TO - 128)) | (1 << (SqlParserK_TRANSACTION - 128)) | (1 << (SqlParserK_TRIGGER - 128)) | (1 << (SqlParserK_UNION - 128)) | (1 << (SqlParserK_UNIQUE - 128)) | (1 << (SqlParserK_UPDATE - 128)) | (1 << (SqlParserK_USING - 128)) | (1 << (SqlParserK_VACUUM - 128)) | (1 << (SqlParserK_VALUES - 128)) | (1 << (SqlParserK_VIEW - 128)) | (1 << (SqlParserK_VIRTUAL - 128)) | (1 << (SqlParserK_WHEN - 128)) | (1 << (SqlParserK_WHERE - 128)) | (1 << (SqlParserK_WITH - 128)) | (1 << (SqlParserK_WITHOUT - 128)) | (1 << (SqlParserIDENTIFIER - 128)) | (1 << (SqlParserSTRING_LITERAL - 128)))) != 0) { + { + p.SetState(1102) + p.Any_name() + } + + } + { + p.SetState(1105) + p.Match(SqlParserCLOSE_PAR) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 153, p.GetParserRuleContext()) == 2 { + { + p.SetState(1107) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1108) + p.Signed_number() + } + p.SetState(1110) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if (((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserOPEN_PAR) | (1 << SqlParserK_ABORT) | (1 << SqlParserK_ACTION) | (1 << SqlParserK_ADD) | (1 << SqlParserK_AFTER) | (1 << SqlParserK_ALL) | (1 << SqlParserK_ALTER))) != 0) || ((((_la - 32)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 32))) & ((1 << (SqlParserK_ANALYZE - 32)) | (1 << (SqlParserK_AND - 32)) | (1 << (SqlParserK_AS - 32)) | (1 << (SqlParserK_ASC - 32)) | (1 << (SqlParserK_ATTACH - 32)) | (1 << (SqlParserK_AUTOINCREMENT - 32)) | (1 << (SqlParserK_BEFORE - 32)) | (1 << (SqlParserK_BEGIN - 32)) | (1 << (SqlParserK_BETWEEN - 32)) | (1 << (SqlParserK_BY - 32)) | (1 << (SqlParserK_CASCADE - 32)) | (1 << (SqlParserK_CASE - 32)) | (1 << (SqlParserK_CAST - 32)) | (1 << (SqlParserK_CHECK - 32)) | (1 << (SqlParserK_COLLATE - 32)) | (1 << (SqlParserK_COLUMN - 32)) | (1 << (SqlParserK_COMMIT - 32)) | (1 << (SqlParserK_CONFLICT - 32)) | (1 << (SqlParserK_CONSTRAINT - 32)) | (1 << (SqlParserK_CREATE - 32)) | (1 << (SqlParserK_CROSS - 32)) | (1 << (SqlParserK_CURRENT_DATE - 32)) | (1 << (SqlParserK_CURRENT_TIME - 32)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 32)) | (1 << (SqlParserK_DATABASE - 32)) | (1 << (SqlParserK_DEFAULT - 32)) | (1 << (SqlParserK_DEFERRABLE - 32)) | (1 << (SqlParserK_DEFERRED - 32)) | (1 << (SqlParserK_DELETE - 32)) | (1 << (SqlParserK_DESC - 32)) | (1 << (SqlParserK_DETACH - 32)) | (1 << (SqlParserK_DISTINCT - 32)))) != 0) || ((((_la - 64)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 64))) & ((1 << (SqlParserK_DROP - 64)) | (1 << (SqlParserK_EACH - 64)) | (1 << (SqlParserK_ELSE - 64)) | (1 << (SqlParserK_END - 64)) | (1 << (SqlParserK_ENABLE - 64)) | (1 << (SqlParserK_ESCAPE - 64)) | (1 << (SqlParserK_EXCEPT - 64)) | (1 << (SqlParserK_EXCLUSIVE - 64)) | (1 << (SqlParserK_EXISTS - 64)) | (1 << (SqlParserK_EXPLAIN - 64)) | (1 << (SqlParserK_FAIL - 64)) | (1 << (SqlParserK_FOR - 64)) | (1 << (SqlParserK_FOREIGN - 64)) | (1 << (SqlParserK_FROM - 64)) | (1 << (SqlParserK_FULL - 64)) | (1 << (SqlParserK_GLOB - 64)) | (1 << (SqlParserK_GROUP - 64)) | (1 << (SqlParserK_HAVING - 64)) | (1 << (SqlParserK_IF - 64)) | (1 << (SqlParserK_IGNORE - 64)) | (1 << (SqlParserK_IMMEDIATE - 64)) | (1 << (SqlParserK_IN - 64)) | (1 << (SqlParserK_INDEX - 64)) | (1 << (SqlParserK_INDEXED - 64)) | (1 << (SqlParserK_INITIALLY - 64)) | (1 << (SqlParserK_INNER - 64)) | (1 << (SqlParserK_INSERT - 64)) | (1 << (SqlParserK_INSTEAD - 64)) | (1 << (SqlParserK_INTERSECT - 64)) | (1 << (SqlParserK_INTO - 64)) | (1 << (SqlParserK_IS - 64)) | (1 << (SqlParserK_ISNULL - 64)))) != 0) || ((((_la - 96)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 96))) & ((1 << (SqlParserK_JOIN - 96)) | (1 << (SqlParserK_KEY - 96)) | (1 << (SqlParserK_LEFT - 96)) | (1 << (SqlParserK_LIKE - 96)) | (1 << (SqlParserK_LIMIT - 96)) | (1 << (SqlParserK_MATCH - 96)) | (1 << (SqlParserK_NATURAL - 96)) | (1 << (SqlParserK_NEXTVAL - 96)) | (1 << (SqlParserK_NO - 96)) | (1 << (SqlParserK_NOT - 96)) | (1 << (SqlParserK_NOTNULL - 96)) | (1 << (SqlParserK_NULL - 96)) | (1 << (SqlParserK_OF - 96)) | (1 << (SqlParserK_OFFSET - 96)) | (1 << (SqlParserK_ON - 96)) | (1 << (SqlParserK_OR - 96)) | (1 << (SqlParserK_ORDER - 96)) | (1 << (SqlParserK_OUTER - 96)) | (1 << (SqlParserK_PLAN - 96)) | (1 << (SqlParserK_PRAGMA - 96)) | (1 << (SqlParserK_PRIMARY - 96)) | (1 << (SqlParserK_QUERY - 96)) | (1 << (SqlParserK_RAISE - 96)) | (1 << (SqlParserK_RECURSIVE - 96)) | (1 << (SqlParserK_REFERENCES - 96)) | (1 << (SqlParserK_REGEXP - 96)) | (1 << (SqlParserK_REINDEX - 96)) | (1 << (SqlParserK_RELEASE - 96)) | (1 << (SqlParserK_RENAME - 96)) | (1 << (SqlParserK_REPLACE - 96)) | (1 << (SqlParserK_RESTRICT - 96)))) != 0) || ((((_la - 128)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 128))) & ((1 << (SqlParserK_RIGHT - 128)) | (1 << (SqlParserK_ROLLBACK - 128)) | (1 << (SqlParserK_ROW - 128)) | (1 << (SqlParserK_SAVEPOINT - 128)) | (1 << (SqlParserK_SELECT - 128)) | (1 << (SqlParserK_SET - 128)) | (1 << (SqlParserK_TABLE - 128)) | (1 << (SqlParserK_TEMP - 128)) | (1 << (SqlParserK_TEMPORARY - 128)) | (1 << (SqlParserK_THEN - 128)) | (1 << (SqlParserK_TO - 128)) | (1 << (SqlParserK_TRANSACTION - 128)) | (1 << (SqlParserK_TRIGGER - 128)) | (1 << (SqlParserK_UNION - 128)) | (1 << (SqlParserK_UNIQUE - 128)) | (1 << (SqlParserK_UPDATE - 128)) | (1 << (SqlParserK_USING - 128)) | (1 << (SqlParserK_VACUUM - 128)) | (1 << (SqlParserK_VALUES - 128)) | (1 << (SqlParserK_VIEW - 128)) | (1 << (SqlParserK_VIRTUAL - 128)) | (1 << (SqlParserK_WHEN - 128)) | (1 << (SqlParserK_WHERE - 128)) | (1 << (SqlParserK_WITH - 128)) | (1 << (SqlParserK_WITHOUT - 128)) | (1 << (SqlParserIDENTIFIER - 128)) | (1 << (SqlParserSTRING_LITERAL - 128)))) != 0) { + { + p.SetState(1109) + p.Any_name() + } + + } + { + p.SetState(1112) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1113) + p.Signed_number() + } + p.SetState(1115) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if (((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserOPEN_PAR) | (1 << SqlParserK_ABORT) | (1 << SqlParserK_ACTION) | (1 << SqlParserK_ADD) | (1 << SqlParserK_AFTER) | (1 << SqlParserK_ALL) | (1 << SqlParserK_ALTER))) != 0) || ((((_la - 32)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 32))) & ((1 << (SqlParserK_ANALYZE - 32)) | (1 << (SqlParserK_AND - 32)) | (1 << (SqlParserK_AS - 32)) | (1 << (SqlParserK_ASC - 32)) | (1 << (SqlParserK_ATTACH - 32)) | (1 << (SqlParserK_AUTOINCREMENT - 32)) | (1 << (SqlParserK_BEFORE - 32)) | (1 << (SqlParserK_BEGIN - 32)) | (1 << (SqlParserK_BETWEEN - 32)) | (1 << (SqlParserK_BY - 32)) | (1 << (SqlParserK_CASCADE - 32)) | (1 << (SqlParserK_CASE - 32)) | (1 << (SqlParserK_CAST - 32)) | (1 << (SqlParserK_CHECK - 32)) | (1 << (SqlParserK_COLLATE - 32)) | (1 << (SqlParserK_COLUMN - 32)) | (1 << (SqlParserK_COMMIT - 32)) | (1 << (SqlParserK_CONFLICT - 32)) | (1 << (SqlParserK_CONSTRAINT - 32)) | (1 << (SqlParserK_CREATE - 32)) | (1 << (SqlParserK_CROSS - 32)) | (1 << (SqlParserK_CURRENT_DATE - 32)) | (1 << (SqlParserK_CURRENT_TIME - 32)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 32)) | (1 << (SqlParserK_DATABASE - 32)) | (1 << (SqlParserK_DEFAULT - 32)) | (1 << (SqlParserK_DEFERRABLE - 32)) | (1 << (SqlParserK_DEFERRED - 32)) | (1 << (SqlParserK_DELETE - 32)) | (1 << (SqlParserK_DESC - 32)) | (1 << (SqlParserK_DETACH - 32)) | (1 << (SqlParserK_DISTINCT - 32)))) != 0) || ((((_la - 64)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 64))) & ((1 << (SqlParserK_DROP - 64)) | (1 << (SqlParserK_EACH - 64)) | (1 << (SqlParserK_ELSE - 64)) | (1 << (SqlParserK_END - 64)) | (1 << (SqlParserK_ENABLE - 64)) | (1 << (SqlParserK_ESCAPE - 64)) | (1 << (SqlParserK_EXCEPT - 64)) | (1 << (SqlParserK_EXCLUSIVE - 64)) | (1 << (SqlParserK_EXISTS - 64)) | (1 << (SqlParserK_EXPLAIN - 64)) | (1 << (SqlParserK_FAIL - 64)) | (1 << (SqlParserK_FOR - 64)) | (1 << (SqlParserK_FOREIGN - 64)) | (1 << (SqlParserK_FROM - 64)) | (1 << (SqlParserK_FULL - 64)) | (1 << (SqlParserK_GLOB - 64)) | (1 << (SqlParserK_GROUP - 64)) | (1 << (SqlParserK_HAVING - 64)) | (1 << (SqlParserK_IF - 64)) | (1 << (SqlParserK_IGNORE - 64)) | (1 << (SqlParserK_IMMEDIATE - 64)) | (1 << (SqlParserK_IN - 64)) | (1 << (SqlParserK_INDEX - 64)) | (1 << (SqlParserK_INDEXED - 64)) | (1 << (SqlParserK_INITIALLY - 64)) | (1 << (SqlParserK_INNER - 64)) | (1 << (SqlParserK_INSERT - 64)) | (1 << (SqlParserK_INSTEAD - 64)) | (1 << (SqlParserK_INTERSECT - 64)) | (1 << (SqlParserK_INTO - 64)) | (1 << (SqlParserK_IS - 64)) | (1 << (SqlParserK_ISNULL - 64)))) != 0) || ((((_la - 96)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 96))) & ((1 << (SqlParserK_JOIN - 96)) | (1 << (SqlParserK_KEY - 96)) | (1 << (SqlParserK_LEFT - 96)) | (1 << (SqlParserK_LIKE - 96)) | (1 << (SqlParserK_LIMIT - 96)) | (1 << (SqlParserK_MATCH - 96)) | (1 << (SqlParserK_NATURAL - 96)) | (1 << (SqlParserK_NEXTVAL - 96)) | (1 << (SqlParserK_NO - 96)) | (1 << (SqlParserK_NOT - 96)) | (1 << (SqlParserK_NOTNULL - 96)) | (1 << (SqlParserK_NULL - 96)) | (1 << (SqlParserK_OF - 96)) | (1 << (SqlParserK_OFFSET - 96)) | (1 << (SqlParserK_ON - 96)) | (1 << (SqlParserK_OR - 96)) | (1 << (SqlParserK_ORDER - 96)) | (1 << (SqlParserK_OUTER - 96)) | (1 << (SqlParserK_PLAN - 96)) | (1 << (SqlParserK_PRAGMA - 96)) | (1 << (SqlParserK_PRIMARY - 96)) | (1 << (SqlParserK_QUERY - 96)) | (1 << (SqlParserK_RAISE - 96)) | (1 << (SqlParserK_RECURSIVE - 96)) | (1 << (SqlParserK_REFERENCES - 96)) | (1 << (SqlParserK_REGEXP - 96)) | (1 << (SqlParserK_REINDEX - 96)) | (1 << (SqlParserK_RELEASE - 96)) | (1 << (SqlParserK_RENAME - 96)) | (1 << (SqlParserK_REPLACE - 96)) | (1 << (SqlParserK_RESTRICT - 96)))) != 0) || ((((_la - 128)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 128))) & ((1 << (SqlParserK_RIGHT - 128)) | (1 << (SqlParserK_ROLLBACK - 128)) | (1 << (SqlParserK_ROW - 128)) | (1 << (SqlParserK_SAVEPOINT - 128)) | (1 << (SqlParserK_SELECT - 128)) | (1 << (SqlParserK_SET - 128)) | (1 << (SqlParserK_TABLE - 128)) | (1 << (SqlParserK_TEMP - 128)) | (1 << (SqlParserK_TEMPORARY - 128)) | (1 << (SqlParserK_THEN - 128)) | (1 << (SqlParserK_TO - 128)) | (1 << (SqlParserK_TRANSACTION - 128)) | (1 << (SqlParserK_TRIGGER - 128)) | (1 << (SqlParserK_UNION - 128)) | (1 << (SqlParserK_UNIQUE - 128)) | (1 << (SqlParserK_UPDATE - 128)) | (1 << (SqlParserK_USING - 128)) | (1 << (SqlParserK_VACUUM - 128)) | (1 << (SqlParserK_VALUES - 128)) | (1 << (SqlParserK_VIEW - 128)) | (1 << (SqlParserK_VIRTUAL - 128)) | (1 << (SqlParserK_WHEN - 128)) | (1 << (SqlParserK_WHERE - 128)) | (1 << (SqlParserK_WITH - 128)) | (1 << (SqlParserK_WITHOUT - 128)) | (1 << (SqlParserIDENTIFIER - 128)) | (1 << (SqlParserSTRING_LITERAL - 128)))) != 0) { + { + p.SetState(1114) + p.Any_name() + } + + } + { + p.SetState(1117) + p.Match(SqlParserCLOSE_PAR) + } + + + } + + + + return localctx +} + + +// IColumn_constraintContext is an interface to support dynamic dispatch. +type IColumn_constraintContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_constraintContext differentiates from other interfaces. + IsColumn_constraintContext() +} + +type Column_constraintContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_constraintContext() *Column_constraintContext { + var p = new(Column_constraintContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_constraint + return p +} + +func (*Column_constraintContext) IsColumn_constraintContext() {} + +func NewColumn_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraintContext { + var p = new(Column_constraintContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_constraint + + return p +} + +func (s *Column_constraintContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_constraintContext) Column_constraint_primary_key() IColumn_constraint_primary_keyContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_constraint_primary_keyContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_constraint_primary_keyContext) +} + +func (s *Column_constraintContext) Column_constraint_foreign_key() IColumn_constraint_foreign_keyContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_constraint_foreign_keyContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_constraint_foreign_keyContext) +} + +func (s *Column_constraintContext) Column_constraint_not_null() IColumn_constraint_not_nullContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_constraint_not_nullContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_constraint_not_nullContext) +} + +func (s *Column_constraintContext) Column_constraint_null() IColumn_constraint_nullContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_constraint_nullContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_constraint_nullContext) +} + +func (s *Column_constraintContext) K_UNIQUE() antlr.TerminalNode { + return s.GetToken(SqlParserK_UNIQUE, 0) +} + +func (s *Column_constraintContext) Conflict_clause() IConflict_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IConflict_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IConflict_clauseContext) +} + +func (s *Column_constraintContext) K_CHECK() antlr.TerminalNode { + return s.GetToken(SqlParserK_CHECK, 0) +} + +func (s *Column_constraintContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Column_constraintContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Column_constraintContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Column_constraintContext) Column_default() IColumn_defaultContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_defaultContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_defaultContext) +} + +func (s *Column_constraintContext) K_COLLATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_COLLATE, 0) +} + +func (s *Column_constraintContext) Collation_name() ICollation_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICollation_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICollation_nameContext) +} + +func (s *Column_constraintContext) K_CONSTRAINT() antlr.TerminalNode { + return s.GetToken(SqlParserK_CONSTRAINT, 0) +} + +func (s *Column_constraintContext) Name() INameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(INameContext) +} + +func (s *Column_constraintContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_constraintContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_constraint(s) + } +} + +func (s *Column_constraintContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_constraint(s) + } +} + + + + +func (p *SqlParser) Column_constraint() (localctx IColumn_constraintContext) { + this := p + _ = this + + localctx = NewColumn_constraintContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 78, SqlParserRULE_column_constraint) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(1123) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_CONSTRAINT { + { + p.SetState(1121) + p.Match(SqlParserK_CONSTRAINT) + } + { + p.SetState(1122) + p.Name() + } + + } + p.SetState(1139) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_PRIMARY: + { + p.SetState(1125) + p.Column_constraint_primary_key() + } + + + case SqlParserK_REFERENCES: + { + p.SetState(1126) + p.Column_constraint_foreign_key() + } + + + case SqlParserK_NOT: + { + p.SetState(1127) + p.Column_constraint_not_null() + } + + + case SqlParserK_NULL: + { + p.SetState(1128) + p.Column_constraint_null() + } + + + case SqlParserK_UNIQUE: + { + p.SetState(1129) + p.Match(SqlParserK_UNIQUE) + } + { + p.SetState(1130) + p.Conflict_clause() + } + + + case SqlParserK_CHECK: + { + p.SetState(1131) + p.Match(SqlParserK_CHECK) + } + { + p.SetState(1132) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1133) + p.expr(0) + } + { + p.SetState(1134) + p.Match(SqlParserCLOSE_PAR) + } + + + case SqlParserK_DEFAULT: + { + p.SetState(1136) + p.Column_default() + } + + + case SqlParserK_COLLATE: + { + p.SetState(1137) + p.Match(SqlParserK_COLLATE) + } + { + p.SetState(1138) + p.Collation_name() + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + + + return localctx +} + + +// IColumn_constraint_primary_keyContext is an interface to support dynamic dispatch. +type IColumn_constraint_primary_keyContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_constraint_primary_keyContext differentiates from other interfaces. + IsColumn_constraint_primary_keyContext() +} + +type Column_constraint_primary_keyContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_constraint_primary_keyContext() *Column_constraint_primary_keyContext { + var p = new(Column_constraint_primary_keyContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_constraint_primary_key + return p +} + +func (*Column_constraint_primary_keyContext) IsColumn_constraint_primary_keyContext() {} + +func NewColumn_constraint_primary_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraint_primary_keyContext { + var p = new(Column_constraint_primary_keyContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_constraint_primary_key + + return p +} + +func (s *Column_constraint_primary_keyContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_constraint_primary_keyContext) K_PRIMARY() antlr.TerminalNode { + return s.GetToken(SqlParserK_PRIMARY, 0) +} + +func (s *Column_constraint_primary_keyContext) K_KEY() antlr.TerminalNode { + return s.GetToken(SqlParserK_KEY, 0) +} + +func (s *Column_constraint_primary_keyContext) Conflict_clause() IConflict_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IConflict_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IConflict_clauseContext) +} + +func (s *Column_constraint_primary_keyContext) K_AUTOINCREMENT() antlr.TerminalNode { + return s.GetToken(SqlParserK_AUTOINCREMENT, 0) +} + +func (s *Column_constraint_primary_keyContext) K_ASC() antlr.TerminalNode { + return s.GetToken(SqlParserK_ASC, 0) +} + +func (s *Column_constraint_primary_keyContext) K_DESC() antlr.TerminalNode { + return s.GetToken(SqlParserK_DESC, 0) +} + +func (s *Column_constraint_primary_keyContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_constraint_primary_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_constraint_primary_keyContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_constraint_primary_key(s) + } +} + +func (s *Column_constraint_primary_keyContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_constraint_primary_key(s) + } +} + + + + +func (p *SqlParser) Column_constraint_primary_key() (localctx IColumn_constraint_primary_keyContext) { + this := p + _ = this + + localctx = NewColumn_constraint_primary_keyContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 80, SqlParserRULE_column_constraint_primary_key) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1141) + p.Match(SqlParserK_PRIMARY) + } + { + p.SetState(1142) + p.Match(SqlParserK_KEY) + } + p.SetState(1144) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 156, p.GetParserRuleContext()) == 1 { + { + p.SetState(1143) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_ASC || _la == SqlParserK_DESC) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + + } + { + p.SetState(1146) + p.Conflict_clause() + } + p.SetState(1148) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 157, p.GetParserRuleContext()) == 1 { + { + p.SetState(1147) + p.Match(SqlParserK_AUTOINCREMENT) + } + + + } + + + + return localctx +} + + +// IColumn_constraint_foreign_keyContext is an interface to support dynamic dispatch. +type IColumn_constraint_foreign_keyContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_constraint_foreign_keyContext differentiates from other interfaces. + IsColumn_constraint_foreign_keyContext() +} + +type Column_constraint_foreign_keyContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_constraint_foreign_keyContext() *Column_constraint_foreign_keyContext { + var p = new(Column_constraint_foreign_keyContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_constraint_foreign_key + return p +} + +func (*Column_constraint_foreign_keyContext) IsColumn_constraint_foreign_keyContext() {} + +func NewColumn_constraint_foreign_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraint_foreign_keyContext { + var p = new(Column_constraint_foreign_keyContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_constraint_foreign_key + + return p +} + +func (s *Column_constraint_foreign_keyContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_constraint_foreign_keyContext) Foreign_key_clause() IForeign_key_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForeign_key_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IForeign_key_clauseContext) +} + +func (s *Column_constraint_foreign_keyContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_constraint_foreign_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_constraint_foreign_keyContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_constraint_foreign_key(s) + } +} + +func (s *Column_constraint_foreign_keyContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_constraint_foreign_key(s) + } +} + + + + +func (p *SqlParser) Column_constraint_foreign_key() (localctx IColumn_constraint_foreign_keyContext) { + this := p + _ = this + + localctx = NewColumn_constraint_foreign_keyContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 82, SqlParserRULE_column_constraint_foreign_key) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1150) + p.Foreign_key_clause() + } + + + + return localctx +} + + +// IColumn_constraint_not_nullContext is an interface to support dynamic dispatch. +type IColumn_constraint_not_nullContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_constraint_not_nullContext differentiates from other interfaces. + IsColumn_constraint_not_nullContext() +} + +type Column_constraint_not_nullContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_constraint_not_nullContext() *Column_constraint_not_nullContext { + var p = new(Column_constraint_not_nullContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_constraint_not_null + return p +} + +func (*Column_constraint_not_nullContext) IsColumn_constraint_not_nullContext() {} + +func NewColumn_constraint_not_nullContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraint_not_nullContext { + var p = new(Column_constraint_not_nullContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_constraint_not_null + + return p +} + +func (s *Column_constraint_not_nullContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_constraint_not_nullContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Column_constraint_not_nullContext) K_NULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NULL, 0) +} + +func (s *Column_constraint_not_nullContext) Conflict_clause() IConflict_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IConflict_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IConflict_clauseContext) +} + +func (s *Column_constraint_not_nullContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_constraint_not_nullContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_constraint_not_nullContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_constraint_not_null(s) + } +} + +func (s *Column_constraint_not_nullContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_constraint_not_null(s) + } +} + + + + +func (p *SqlParser) Column_constraint_not_null() (localctx IColumn_constraint_not_nullContext) { + this := p + _ = this + + localctx = NewColumn_constraint_not_nullContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 84, SqlParserRULE_column_constraint_not_null) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1152) + p.Match(SqlParserK_NOT) + } + { + p.SetState(1153) + p.Match(SqlParserK_NULL) + } + { + p.SetState(1154) + p.Conflict_clause() + } + + + + return localctx +} + + +// IColumn_constraint_nullContext is an interface to support dynamic dispatch. +type IColumn_constraint_nullContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_constraint_nullContext differentiates from other interfaces. + IsColumn_constraint_nullContext() +} + +type Column_constraint_nullContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_constraint_nullContext() *Column_constraint_nullContext { + var p = new(Column_constraint_nullContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_constraint_null + return p +} + +func (*Column_constraint_nullContext) IsColumn_constraint_nullContext() {} + +func NewColumn_constraint_nullContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraint_nullContext { + var p = new(Column_constraint_nullContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_constraint_null + + return p +} + +func (s *Column_constraint_nullContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_constraint_nullContext) K_NULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NULL, 0) +} + +func (s *Column_constraint_nullContext) Conflict_clause() IConflict_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IConflict_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IConflict_clauseContext) +} + +func (s *Column_constraint_nullContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_constraint_nullContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_constraint_nullContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_constraint_null(s) + } +} + +func (s *Column_constraint_nullContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_constraint_null(s) + } +} + + + + +func (p *SqlParser) Column_constraint_null() (localctx IColumn_constraint_nullContext) { + this := p + _ = this + + localctx = NewColumn_constraint_nullContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 86, SqlParserRULE_column_constraint_null) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1156) + p.Match(SqlParserK_NULL) + } + { + p.SetState(1157) + p.Conflict_clause() + } + + + + return localctx +} + + +// IColumn_defaultContext is an interface to support dynamic dispatch. +type IColumn_defaultContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_defaultContext differentiates from other interfaces. + IsColumn_defaultContext() +} + +type Column_defaultContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_defaultContext() *Column_defaultContext { + var p = new(Column_defaultContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_default + return p +} + +func (*Column_defaultContext) IsColumn_defaultContext() {} + +func NewColumn_defaultContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_defaultContext { + var p = new(Column_defaultContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_default + + return p +} + +func (s *Column_defaultContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_defaultContext) K_DEFAULT() antlr.TerminalNode { + return s.GetToken(SqlParserK_DEFAULT, 0) +} + +func (s *Column_defaultContext) Column_default_value() IColumn_default_valueContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_default_valueContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_default_valueContext) +} + +func (s *Column_defaultContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Column_defaultContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Column_defaultContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Column_defaultContext) K_NEXTVAL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NEXTVAL, 0) +} + +func (s *Column_defaultContext) AllAny_name() []IAny_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IAny_nameContext); ok { + len++ + } + } + + tst := make([]IAny_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IAny_nameContext); ok { + tst[i] = t.(IAny_nameContext) + i++ + } + } + + return tst +} + +func (s *Column_defaultContext) Any_name(i int) IAny_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Column_defaultContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_defaultContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_defaultContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_default(s) + } +} + +func (s *Column_defaultContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_default(s) + } +} + + + + +func (p *SqlParser) Column_default() (localctx IColumn_defaultContext) { + this := p + _ = this + + localctx = NewColumn_defaultContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 88, SqlParserRULE_column_default) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + var _alt int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1159) + p.Match(SqlParserK_DEFAULT) + } + p.SetState(1171) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 158, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1160) + p.Column_default_value() + } + + + case 2: + { + p.SetState(1161) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1162) + p.expr(0) + } + { + p.SetState(1163) + p.Match(SqlParserCLOSE_PAR) + } + + + case 3: + { + p.SetState(1165) + p.Match(SqlParserK_NEXTVAL) + } + { + p.SetState(1166) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1167) + p.expr(0) + } + { + p.SetState(1168) + p.Match(SqlParserCLOSE_PAR) + } + + + case 4: + { + p.SetState(1170) + p.Any_name() + } + + } + p.SetState(1179) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 160, p.GetParserRuleContext()) == 1 { + { + p.SetState(1173) + p.Match(SqlParserT__0) + } + p.SetState(1175) + p.GetErrorHandler().Sync(p) + _alt = 1 + for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + switch _alt { + case 1: + { + p.SetState(1174) + p.Any_name() + } + + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + p.SetState(1177) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 159, p.GetParserRuleContext()) + } + + + } + + + + return localctx +} + + +// IColumn_default_valueContext is an interface to support dynamic dispatch. +type IColumn_default_valueContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_default_valueContext differentiates from other interfaces. + IsColumn_default_valueContext() +} + +type Column_default_valueContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_default_valueContext() *Column_default_valueContext { + var p = new(Column_default_valueContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_default_value + return p +} + +func (*Column_default_valueContext) IsColumn_default_valueContext() {} + +func NewColumn_default_valueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_default_valueContext { + var p = new(Column_default_valueContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_default_value + + return p +} + +func (s *Column_default_valueContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_default_valueContext) Signed_number() ISigned_numberContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISigned_numberContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISigned_numberContext) +} + +func (s *Column_default_valueContext) Literal_value() ILiteral_valueContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILiteral_valueContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ILiteral_valueContext) +} + +func (s *Column_default_valueContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_default_valueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_default_valueContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_default_value(s) + } +} + +func (s *Column_default_valueContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_default_value(s) + } +} + + + + +func (p *SqlParser) Column_default_value() (localctx IColumn_default_valueContext) { + this := p + _ = this + + localctx = NewColumn_default_valueContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 90, SqlParserRULE_column_default_value) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(1183) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 161, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1181) + p.Signed_number() + } + + + case 2: + { + p.SetState(1182) + p.Literal_value() + } + + } + + + + return localctx +} + + +// IConflict_clauseContext is an interface to support dynamic dispatch. +type IConflict_clauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsConflict_clauseContext differentiates from other interfaces. + IsConflict_clauseContext() +} + +type Conflict_clauseContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyConflict_clauseContext() *Conflict_clauseContext { + var p = new(Conflict_clauseContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_conflict_clause + return p +} + +func (*Conflict_clauseContext) IsConflict_clauseContext() {} + +func NewConflict_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Conflict_clauseContext { + var p = new(Conflict_clauseContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_conflict_clause + + return p +} + +func (s *Conflict_clauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *Conflict_clauseContext) K_ON() antlr.TerminalNode { + return s.GetToken(SqlParserK_ON, 0) +} + +func (s *Conflict_clauseContext) K_CONFLICT() antlr.TerminalNode { + return s.GetToken(SqlParserK_CONFLICT, 0) +} + +func (s *Conflict_clauseContext) K_ROLLBACK() antlr.TerminalNode { + return s.GetToken(SqlParserK_ROLLBACK, 0) +} + +func (s *Conflict_clauseContext) K_ABORT() antlr.TerminalNode { + return s.GetToken(SqlParserK_ABORT, 0) +} + +func (s *Conflict_clauseContext) K_FAIL() antlr.TerminalNode { + return s.GetToken(SqlParserK_FAIL, 0) +} + +func (s *Conflict_clauseContext) K_IGNORE() antlr.TerminalNode { + return s.GetToken(SqlParserK_IGNORE, 0) +} + +func (s *Conflict_clauseContext) K_REPLACE() antlr.TerminalNode { + return s.GetToken(SqlParserK_REPLACE, 0) +} + +func (s *Conflict_clauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Conflict_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Conflict_clauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterConflict_clause(s) + } +} + +func (s *Conflict_clauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitConflict_clause(s) + } +} + + + + +func (p *SqlParser) Conflict_clause() (localctx IConflict_clauseContext) { + this := p + _ = this + + localctx = NewConflict_clauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 92, SqlParserRULE_conflict_clause) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(1188) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 162, p.GetParserRuleContext()) == 1 { + { + p.SetState(1185) + p.Match(SqlParserK_ON) + } + { + p.SetState(1186) + p.Match(SqlParserK_CONFLICT) + } + { + p.SetState(1187) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_ABORT || _la == SqlParserK_FAIL || _la == SqlParserK_IGNORE || _la == SqlParserK_REPLACE || _la == SqlParserK_ROLLBACK) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + + } + + + + return localctx +} + + +// IExprContext is an interface to support dynamic dispatch. +type IExprContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsExprContext differentiates from other interfaces. + IsExprContext() +} + +type ExprContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyExprContext() *ExprContext { + var p = new(ExprContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_expr + return p +} + +func (*ExprContext) IsExprContext() {} + +func NewExprContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExprContext { + var p = new(ExprContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_expr + + return p +} + +func (s *ExprContext) GetParser() antlr.Parser { return s.parser } + +func (s *ExprContext) Literal_value() ILiteral_valueContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILiteral_valueContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ILiteral_valueContext) +} + +func (s *ExprContext) BIND_PARAMETER() antlr.TerminalNode { + return s.GetToken(SqlParserBIND_PARAMETER, 0) +} + +func (s *ExprContext) Column_name() IColumn_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *ExprContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *ExprContext) AllDOT() []antlr.TerminalNode { + return s.GetTokens(SqlParserDOT) +} + +func (s *ExprContext) DOT(i int) antlr.TerminalNode { + return s.GetToken(SqlParserDOT, i) +} + +func (s *ExprContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *ExprContext) Unary_operator() IUnary_operatorContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnary_operatorContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IUnary_operatorContext) +} + +func (s *ExprContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *ExprContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *ExprContext) Function_name() IFunction_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFunction_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IFunction_nameContext) +} + +func (s *ExprContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *ExprContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *ExprContext) STAR() antlr.TerminalNode { + return s.GetToken(SqlParserSTAR, 0) +} + +func (s *ExprContext) K_DISTINCT() antlr.TerminalNode { + return s.GetToken(SqlParserK_DISTINCT, 0) +} + +func (s *ExprContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *ExprContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *ExprContext) K_CAST() antlr.TerminalNode { + return s.GetToken(SqlParserK_CAST, 0) +} + +func (s *ExprContext) K_AS() antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, 0) +} + +func (s *ExprContext) Type_name() IType_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IType_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IType_nameContext) +} + +func (s *ExprContext) Select_stmt() ISelect_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISelect_stmtContext) +} + +func (s *ExprContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *ExprContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *ExprContext) K_CASE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CASE, 0) +} + +func (s *ExprContext) K_END() antlr.TerminalNode { + return s.GetToken(SqlParserK_END, 0) +} + +func (s *ExprContext) AllK_WHEN() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_WHEN) +} + +func (s *ExprContext) K_WHEN(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_WHEN, i) +} + +func (s *ExprContext) AllK_THEN() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_THEN) +} + +func (s *ExprContext) K_THEN(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_THEN, i) +} + +func (s *ExprContext) K_ELSE() antlr.TerminalNode { + return s.GetToken(SqlParserK_ELSE, 0) +} + +func (s *ExprContext) Raise_function() IRaise_functionContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRaise_functionContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IRaise_functionContext) +} + +func (s *ExprContext) PIPE2() antlr.TerminalNode { + return s.GetToken(SqlParserPIPE2, 0) +} + +func (s *ExprContext) DIV() antlr.TerminalNode { + return s.GetToken(SqlParserDIV, 0) +} + +func (s *ExprContext) MOD() antlr.TerminalNode { + return s.GetToken(SqlParserMOD, 0) +} + +func (s *ExprContext) PLUS() antlr.TerminalNode { + return s.GetToken(SqlParserPLUS, 0) +} + +func (s *ExprContext) MINUS() antlr.TerminalNode { + return s.GetToken(SqlParserMINUS, 0) +} + +func (s *ExprContext) LT2() antlr.TerminalNode { + return s.GetToken(SqlParserLT2, 0) +} + +func (s *ExprContext) GT2() antlr.TerminalNode { + return s.GetToken(SqlParserGT2, 0) +} + +func (s *ExprContext) AMP() antlr.TerminalNode { + return s.GetToken(SqlParserAMP, 0) +} + +func (s *ExprContext) PIPE() antlr.TerminalNode { + return s.GetToken(SqlParserPIPE, 0) +} + +func (s *ExprContext) LT() antlr.TerminalNode { + return s.GetToken(SqlParserLT, 0) +} + +func (s *ExprContext) LT_EQ() antlr.TerminalNode { + return s.GetToken(SqlParserLT_EQ, 0) +} + +func (s *ExprContext) GT() antlr.TerminalNode { + return s.GetToken(SqlParserGT, 0) +} + +func (s *ExprContext) GT_EQ() antlr.TerminalNode { + return s.GetToken(SqlParserGT_EQ, 0) +} + +func (s *ExprContext) ASSIGN() antlr.TerminalNode { + return s.GetToken(SqlParserASSIGN, 0) +} + +func (s *ExprContext) EQ() antlr.TerminalNode { + return s.GetToken(SqlParserEQ, 0) +} + +func (s *ExprContext) NOT_EQ1() antlr.TerminalNode { + return s.GetToken(SqlParserNOT_EQ1, 0) +} + +func (s *ExprContext) NOT_EQ2() antlr.TerminalNode { + return s.GetToken(SqlParserNOT_EQ2, 0) +} + +func (s *ExprContext) K_IS() antlr.TerminalNode { + return s.GetToken(SqlParserK_IS, 0) +} + +func (s *ExprContext) K_IN() antlr.TerminalNode { + return s.GetToken(SqlParserK_IN, 0) +} + +func (s *ExprContext) K_LIKE() antlr.TerminalNode { + return s.GetToken(SqlParserK_LIKE, 0) +} + +func (s *ExprContext) K_GLOB() antlr.TerminalNode { + return s.GetToken(SqlParserK_GLOB, 0) +} + +func (s *ExprContext) K_MATCH() antlr.TerminalNode { + return s.GetToken(SqlParserK_MATCH, 0) +} + +func (s *ExprContext) K_REGEXP() antlr.TerminalNode { + return s.GetToken(SqlParserK_REGEXP, 0) +} + +func (s *ExprContext) K_AND() antlr.TerminalNode { + return s.GetToken(SqlParserK_AND, 0) +} + +func (s *ExprContext) K_OR() antlr.TerminalNode { + return s.GetToken(SqlParserK_OR, 0) +} + +func (s *ExprContext) K_BETWEEN() antlr.TerminalNode { + return s.GetToken(SqlParserK_BETWEEN, 0) +} + +func (s *ExprContext) K_COLLATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_COLLATE, 0) +} + +func (s *ExprContext) Collation_name() ICollation_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICollation_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICollation_nameContext) +} + +func (s *ExprContext) K_ESCAPE() antlr.TerminalNode { + return s.GetToken(SqlParserK_ESCAPE, 0) +} + +func (s *ExprContext) K_ISNULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_ISNULL, 0) +} + +func (s *ExprContext) K_NOTNULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOTNULL, 0) +} + +func (s *ExprContext) K_NULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NULL, 0) +} + +func (s *ExprContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ExprContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *ExprContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterExpr(s) + } +} + +func (s *ExprContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitExpr(s) + } +} + + + + + +func (p *SqlParser) Expr() (localctx IExprContext) { + return p.expr(0) +} + +func (p *SqlParser) expr(_p int) (localctx IExprContext) { + this := p + _ = this + + var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext() + _parentState := p.GetState() + localctx = NewExprContext(p, p.GetParserRuleContext(), _parentState) + var _prevctx IExprContext = localctx + var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. + _startState := 94 + p.EnterRecursionRule(localctx, 94, SqlParserRULE_expr, _p) + var _la int + + + defer func() { + p.UnrollRecursionContexts(_parentctx) + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + var _alt int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1266) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 173, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1191) + p.Literal_value() + } + + + case 2: + { + p.SetState(1192) + p.Match(SqlParserBIND_PARAMETER) + } + + + case 3: + p.SetState(1201) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 164, p.GetParserRuleContext()) == 1 { + p.SetState(1196) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 163, p.GetParserRuleContext()) == 1 { + { + p.SetState(1193) + p.Database_name() + } + { + p.SetState(1194) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(1198) + p.Table_name() + } + { + p.SetState(1199) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(1203) + p.Column_name() + } + + + case 4: + { + p.SetState(1204) + p.Unary_operator() + } + { + p.SetState(1205) + p.expr(21) + } + + + case 5: + { + p.SetState(1207) + p.Function_name() + } + { + p.SetState(1208) + p.Match(SqlParserOPEN_PAR) + } + p.SetState(1221) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserOPEN_PAR, SqlParserPLUS, SqlParserMINUS, SqlParserTILDE, SqlParserK_ABORT, SqlParserK_ACTION, SqlParserK_ADD, SqlParserK_AFTER, SqlParserK_ALL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_AND, SqlParserK_AS, SqlParserK_ASC, SqlParserK_ATTACH, SqlParserK_AUTOINCREMENT, SqlParserK_BEFORE, SqlParserK_BEGIN, SqlParserK_BETWEEN, SqlParserK_BY, SqlParserK_CASCADE, SqlParserK_CASE, SqlParserK_CAST, SqlParserK_CHECK, SqlParserK_COLLATE, SqlParserK_COLUMN, SqlParserK_COMMIT, SqlParserK_CONFLICT, SqlParserK_CONSTRAINT, SqlParserK_CREATE, SqlParserK_CROSS, SqlParserK_CURRENT_DATE, SqlParserK_CURRENT_TIME, SqlParserK_CURRENT_TIMESTAMP, SqlParserK_DATABASE, SqlParserK_DEFAULT, SqlParserK_DEFERRABLE, SqlParserK_DEFERRED, SqlParserK_DELETE, SqlParserK_DESC, SqlParserK_DETACH, SqlParserK_DISTINCT, SqlParserK_DROP, SqlParserK_EACH, SqlParserK_ELSE, SqlParserK_END, SqlParserK_ENABLE, SqlParserK_ESCAPE, SqlParserK_EXCEPT, SqlParserK_EXCLUSIVE, SqlParserK_EXISTS, SqlParserK_EXPLAIN, SqlParserK_FAIL, SqlParserK_FOR, SqlParserK_FOREIGN, SqlParserK_FROM, SqlParserK_FULL, SqlParserK_GLOB, SqlParserK_GROUP, SqlParserK_HAVING, SqlParserK_IF, SqlParserK_IGNORE, SqlParserK_IMMEDIATE, SqlParserK_IN, SqlParserK_INDEX, SqlParserK_INDEXED, SqlParserK_INITIALLY, SqlParserK_INNER, SqlParserK_INSERT, SqlParserK_INSTEAD, SqlParserK_INTERSECT, SqlParserK_INTO, SqlParserK_IS, SqlParserK_ISNULL, SqlParserK_JOIN, SqlParserK_KEY, SqlParserK_LEFT, SqlParserK_LIKE, SqlParserK_LIMIT, SqlParserK_MATCH, SqlParserK_NATURAL, SqlParserK_NEXTVAL, SqlParserK_NO, SqlParserK_NOT, SqlParserK_NOTNULL, SqlParserK_NULL, SqlParserK_OF, SqlParserK_OFFSET, SqlParserK_ON, SqlParserK_OR, SqlParserK_ORDER, SqlParserK_OUTER, SqlParserK_PLAN, SqlParserK_PRAGMA, SqlParserK_PRIMARY, SqlParserK_QUERY, SqlParserK_RAISE, SqlParserK_RECURSIVE, SqlParserK_REFERENCES, SqlParserK_REGEXP, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_RENAME, SqlParserK_REPLACE, SqlParserK_RESTRICT, SqlParserK_RIGHT, SqlParserK_ROLLBACK, SqlParserK_ROW, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_SET, SqlParserK_TABLE, SqlParserK_TEMP, SqlParserK_TEMPORARY, SqlParserK_THEN, SqlParserK_TO, SqlParserK_TRANSACTION, SqlParserK_TRIGGER, SqlParserK_UNION, SqlParserK_UNIQUE, SqlParserK_UPDATE, SqlParserK_USING, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_VIEW, SqlParserK_VIRTUAL, SqlParserK_WHEN, SqlParserK_WHERE, SqlParserK_WITH, SqlParserK_WITHOUT, SqlParserIDENTIFIER, SqlParserNUMERIC_LITERAL, SqlParserBIND_PARAMETER, SqlParserSTRING_LITERAL, SqlParserBLOB_LITERAL: + p.SetState(1210) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 165, p.GetParserRuleContext()) == 1 { + { + p.SetState(1209) + p.Match(SqlParserK_DISTINCT) + } + + + } + { + p.SetState(1212) + p.expr(0) + } + p.SetState(1217) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1213) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1214) + p.expr(0) + } + + + p.SetState(1219) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + + case SqlParserSTAR: + { + p.SetState(1220) + p.Match(SqlParserSTAR) + } + + + case SqlParserCLOSE_PAR: + + + + default: + } + { + p.SetState(1223) + p.Match(SqlParserCLOSE_PAR) + } + + + case 6: + { + p.SetState(1225) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1226) + p.expr(0) + } + { + p.SetState(1227) + p.Match(SqlParserCLOSE_PAR) + } + + + case 7: + { + p.SetState(1229) + p.Match(SqlParserK_CAST) + } + { + p.SetState(1230) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1231) + p.expr(0) + } + { + p.SetState(1232) + p.Match(SqlParserK_AS) + } + { + p.SetState(1233) + p.Type_name() + } + { + p.SetState(1234) + p.Match(SqlParserCLOSE_PAR) + } + + + case 8: + p.SetState(1240) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_EXISTS || _la == SqlParserK_NOT { + p.SetState(1237) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_NOT { + { + p.SetState(1236) + p.Match(SqlParserK_NOT) + } + + } + { + p.SetState(1239) + p.Match(SqlParserK_EXISTS) + } + + } + { + p.SetState(1242) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1243) + p.Select_stmt() + } + { + p.SetState(1244) + p.Match(SqlParserCLOSE_PAR) + } + + + case 9: + { + p.SetState(1246) + p.Match(SqlParserK_CASE) + } + p.SetState(1248) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 170, p.GetParserRuleContext()) == 1 { + { + p.SetState(1247) + p.expr(0) + } + + + } + p.SetState(1255) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for ok := true; ok; ok = _la == SqlParserK_WHEN { + { + p.SetState(1250) + p.Match(SqlParserK_WHEN) + } + { + p.SetState(1251) + p.expr(0) + } + { + p.SetState(1252) + p.Match(SqlParserK_THEN) + } + { + p.SetState(1253) + p.expr(0) + } + + + p.SetState(1257) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + p.SetState(1261) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_ELSE { + { + p.SetState(1259) + p.Match(SqlParserK_ELSE) + } + { + p.SetState(1260) + p.expr(0) + } + + } + { + p.SetState(1263) + p.Match(SqlParserK_END) + } + + + case 10: + { + p.SetState(1265) + p.Raise_function() + } + + } + p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) + p.SetState(1368) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 186, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + if p.GetParseListeners() != nil { + p.TriggerExitRuleEvent() + } + _prevctx = localctx + p.SetState(1366) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 185, p.GetParserRuleContext()) { + case 1: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1268) + + if !(p.Precpred(p.GetParserRuleContext(), 20)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 20)", "")) + } + { + p.SetState(1269) + p.Match(SqlParserPIPE2) + } + { + p.SetState(1270) + p.expr(21) + } + + + case 2: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1271) + + if !(p.Precpred(p.GetParserRuleContext(), 19)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 19)", "")) + } + { + p.SetState(1272) + _la = p.GetTokenStream().LA(1) + + if !((((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserSTAR) | (1 << SqlParserDIV) | (1 << SqlParserMOD))) != 0)) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(1273) + p.expr(20) + } + + + case 3: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1274) + + if !(p.Precpred(p.GetParserRuleContext(), 18)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 18)", "")) + } + { + p.SetState(1275) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserPLUS || _la == SqlParserMINUS) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(1276) + p.expr(19) + } + + + case 4: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1277) + + if !(p.Precpred(p.GetParserRuleContext(), 17)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 17)", "")) + } + { + p.SetState(1278) + _la = p.GetTokenStream().LA(1) + + if !((((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserLT2) | (1 << SqlParserGT2) | (1 << SqlParserAMP) | (1 << SqlParserPIPE))) != 0)) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(1279) + p.expr(18) + } + + + case 5: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1280) + + if !(p.Precpred(p.GetParserRuleContext(), 16)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 16)", "")) + } + { + p.SetState(1281) + _la = p.GetTokenStream().LA(1) + + if !((((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserLT) | (1 << SqlParserLT_EQ) | (1 << SqlParserGT) | (1 << SqlParserGT_EQ))) != 0)) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(1282) + p.expr(17) + } + + + case 6: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1283) + + if !(p.Precpred(p.GetParserRuleContext(), 15)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 15)", "")) + } + p.SetState(1296) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 174, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1284) + p.Match(SqlParserASSIGN) + } + + + case 2: + { + p.SetState(1285) + p.Match(SqlParserEQ) + } + + + case 3: + { + p.SetState(1286) + p.Match(SqlParserNOT_EQ1) + } + + + case 4: + { + p.SetState(1287) + p.Match(SqlParserNOT_EQ2) + } + + + case 5: + { + p.SetState(1288) + p.Match(SqlParserK_IS) + } + + + case 6: + { + p.SetState(1289) + p.Match(SqlParserK_IS) + } + { + p.SetState(1290) + p.Match(SqlParserK_NOT) + } + + + case 7: + { + p.SetState(1291) + p.Match(SqlParserK_IN) + } + + + case 8: + { + p.SetState(1292) + p.Match(SqlParserK_LIKE) + } + + + case 9: + { + p.SetState(1293) + p.Match(SqlParserK_GLOB) + } + + + case 10: + { + p.SetState(1294) + p.Match(SqlParserK_MATCH) + } + + + case 11: + { + p.SetState(1295) + p.Match(SqlParserK_REGEXP) + } + + } + { + p.SetState(1298) + p.expr(16) + } + + + case 7: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1299) + + if !(p.Precpred(p.GetParserRuleContext(), 14)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 14)", "")) + } + { + p.SetState(1300) + p.Match(SqlParserK_AND) + } + { + p.SetState(1301) + p.expr(15) + } + + + case 8: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1302) + + if !(p.Precpred(p.GetParserRuleContext(), 13)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 13)", "")) + } + { + p.SetState(1303) + p.Match(SqlParserK_OR) + } + { + p.SetState(1304) + p.expr(14) + } + + + case 9: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1305) + + if !(p.Precpred(p.GetParserRuleContext(), 6)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", "")) + } + { + p.SetState(1306) + p.Match(SqlParserK_IS) + } + p.SetState(1308) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 175, p.GetParserRuleContext()) == 1 { + { + p.SetState(1307) + p.Match(SqlParserK_NOT) + } + + + } + { + p.SetState(1310) + p.expr(7) + } + + + case 10: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1311) + + if !(p.Precpred(p.GetParserRuleContext(), 5)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) + } + p.SetState(1313) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_NOT { + { + p.SetState(1312) + p.Match(SqlParserK_NOT) + } + + } + { + p.SetState(1315) + p.Match(SqlParserK_BETWEEN) + } + { + p.SetState(1316) + p.expr(0) + } + { + p.SetState(1317) + p.Match(SqlParserK_AND) + } + { + p.SetState(1318) + p.expr(6) + } + + + case 11: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1320) + + if !(p.Precpred(p.GetParserRuleContext(), 9)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 9)", "")) + } + { + p.SetState(1321) + p.Match(SqlParserK_COLLATE) + } + { + p.SetState(1322) + p.Collation_name() + } + + + case 12: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1323) + + if !(p.Precpred(p.GetParserRuleContext(), 8)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 8)", "")) + } + p.SetState(1325) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_NOT { + { + p.SetState(1324) + p.Match(SqlParserK_NOT) + } + + } + { + p.SetState(1327) + _la = p.GetTokenStream().LA(1) + + if !(((((_la - 79)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 79))) & ((1 << (SqlParserK_GLOB - 79)) | (1 << (SqlParserK_LIKE - 79)) | (1 << (SqlParserK_MATCH - 79)))) != 0) || _la == SqlParserK_REGEXP) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(1328) + p.expr(0) + } + p.SetState(1331) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 178, p.GetParserRuleContext()) == 1 { + { + p.SetState(1329) + p.Match(SqlParserK_ESCAPE) + } + { + p.SetState(1330) + p.expr(0) + } + + + } + + + case 13: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1333) + + if !(p.Precpred(p.GetParserRuleContext(), 7)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 7)", "")) + } + p.SetState(1338) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_ISNULL: + { + p.SetState(1334) + p.Match(SqlParserK_ISNULL) + } + + + case SqlParserK_NOTNULL: + { + p.SetState(1335) + p.Match(SqlParserK_NOTNULL) + } + + + case SqlParserK_NOT: + { + p.SetState(1336) + p.Match(SqlParserK_NOT) + } + { + p.SetState(1337) + p.Match(SqlParserK_NULL) + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + + case 14: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1340) + + if !(p.Precpred(p.GetParserRuleContext(), 4)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) + } + p.SetState(1342) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_NOT { + { + p.SetState(1341) + p.Match(SqlParserK_NOT) + } + + } + { + p.SetState(1344) + p.Match(SqlParserK_IN) + } + p.SetState(1364) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 184, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1345) + p.Match(SqlParserOPEN_PAR) + } + p.SetState(1355) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 182, p.GetParserRuleContext()) == 1 { + { + p.SetState(1346) + p.Select_stmt() + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 182, p.GetParserRuleContext()) == 2 { + { + p.SetState(1347) + p.expr(0) + } + p.SetState(1352) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1348) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1349) + p.expr(0) + } + + + p.SetState(1354) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + + } + { + p.SetState(1357) + p.Match(SqlParserCLOSE_PAR) + } + + + case 2: + p.SetState(1361) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 183, p.GetParserRuleContext()) == 1 { + { + p.SetState(1358) + p.Database_name() + } + { + p.SetState(1359) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(1363) + p.Table_name() + } + + } + + } + + } + p.SetState(1370) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 186, p.GetParserRuleContext()) + } + + + + return localctx +} + + +// IForeign_key_clauseContext is an interface to support dynamic dispatch. +type IForeign_key_clauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsForeign_key_clauseContext differentiates from other interfaces. + IsForeign_key_clauseContext() +} + +type Foreign_key_clauseContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyForeign_key_clauseContext() *Foreign_key_clauseContext { + var p = new(Foreign_key_clauseContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_foreign_key_clause + return p +} + +func (*Foreign_key_clauseContext) IsForeign_key_clauseContext() {} + +func NewForeign_key_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Foreign_key_clauseContext { + var p = new(Foreign_key_clauseContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_foreign_key_clause + + return p +} + +func (s *Foreign_key_clauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *Foreign_key_clauseContext) K_REFERENCES() antlr.TerminalNode { + return s.GetToken(SqlParserK_REFERENCES, 0) +} + +func (s *Foreign_key_clauseContext) Foreign_table() IForeign_tableContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForeign_tableContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IForeign_tableContext) +} + +func (s *Foreign_key_clauseContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Foreign_key_clauseContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Foreign_key_clauseContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Foreign_key_clauseContext) AllFk_target_column_name() []IFk_target_column_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IFk_target_column_nameContext); ok { + len++ + } + } + + tst := make([]IFk_target_column_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IFk_target_column_nameContext); ok { + tst[i] = t.(IFk_target_column_nameContext) + i++ + } + } + + return tst +} + +func (s *Foreign_key_clauseContext) Fk_target_column_name(i int) IFk_target_column_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFk_target_column_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IFk_target_column_nameContext) +} + +func (s *Foreign_key_clauseContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Foreign_key_clauseContext) K_DEFERRABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_DEFERRABLE, 0) +} + +func (s *Foreign_key_clauseContext) AllK_ON() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_ON) +} + +func (s *Foreign_key_clauseContext) K_ON(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_ON, i) +} + +func (s *Foreign_key_clauseContext) AllK_MATCH() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_MATCH) +} + +func (s *Foreign_key_clauseContext) K_MATCH(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_MATCH, i) +} + +func (s *Foreign_key_clauseContext) AllName() []INameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(INameContext); ok { + len++ + } + } + + tst := make([]INameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(INameContext); ok { + tst[i] = t.(INameContext) + i++ + } + } + + return tst +} + +func (s *Foreign_key_clauseContext) Name(i int) INameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(INameContext) +} + +func (s *Foreign_key_clauseContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Foreign_key_clauseContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Foreign_key_clauseContext) AllK_DELETE() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_DELETE) +} + +func (s *Foreign_key_clauseContext) K_DELETE(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_DELETE, i) +} + +func (s *Foreign_key_clauseContext) AllK_UPDATE() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_UPDATE) +} + +func (s *Foreign_key_clauseContext) K_UPDATE(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_UPDATE, i) +} + +func (s *Foreign_key_clauseContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Foreign_key_clauseContext) K_INITIALLY() antlr.TerminalNode { + return s.GetToken(SqlParserK_INITIALLY, 0) +} + +func (s *Foreign_key_clauseContext) K_DEFERRED() antlr.TerminalNode { + return s.GetToken(SqlParserK_DEFERRED, 0) +} + +func (s *Foreign_key_clauseContext) K_IMMEDIATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_IMMEDIATE, 0) +} + +func (s *Foreign_key_clauseContext) K_ENABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_ENABLE, 0) +} + +func (s *Foreign_key_clauseContext) AllK_SET() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_SET) +} + +func (s *Foreign_key_clauseContext) K_SET(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_SET, i) +} + +func (s *Foreign_key_clauseContext) AllK_NULL() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_NULL) +} + +func (s *Foreign_key_clauseContext) K_NULL(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_NULL, i) +} + +func (s *Foreign_key_clauseContext) AllK_DEFAULT() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_DEFAULT) +} + +func (s *Foreign_key_clauseContext) K_DEFAULT(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_DEFAULT, i) +} + +func (s *Foreign_key_clauseContext) AllK_CASCADE() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_CASCADE) +} + +func (s *Foreign_key_clauseContext) K_CASCADE(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_CASCADE, i) +} + +func (s *Foreign_key_clauseContext) AllK_RESTRICT() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_RESTRICT) +} + +func (s *Foreign_key_clauseContext) K_RESTRICT(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_RESTRICT, i) +} + +func (s *Foreign_key_clauseContext) AllK_NO() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_NO) +} + +func (s *Foreign_key_clauseContext) K_NO(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_NO, i) +} + +func (s *Foreign_key_clauseContext) AllK_ACTION() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_ACTION) +} + +func (s *Foreign_key_clauseContext) K_ACTION(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_ACTION, i) +} + +func (s *Foreign_key_clauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Foreign_key_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Foreign_key_clauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterForeign_key_clause(s) + } +} + +func (s *Foreign_key_clauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitForeign_key_clause(s) + } +} + + + + +func (p *SqlParser) Foreign_key_clause() (localctx IForeign_key_clauseContext) { + this := p + _ = this + + localctx = NewForeign_key_clauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 96, SqlParserRULE_foreign_key_clause) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + var _alt int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1371) + p.Match(SqlParserK_REFERENCES) + } + p.SetState(1375) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 187, p.GetParserRuleContext()) == 1 { + { + p.SetState(1372) + p.Database_name() + } + { + p.SetState(1373) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(1377) + p.Foreign_table() + } + p.SetState(1389) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 189, p.GetParserRuleContext()) == 1 { + { + p.SetState(1378) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1379) + p.Fk_target_column_name() + } + p.SetState(1384) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1380) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1381) + p.Fk_target_column_name() + } + + + p.SetState(1386) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1387) + p.Match(SqlParserCLOSE_PAR) + } + + + } + p.SetState(1409) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 192, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + p.SetState(1405) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_ON: + { + p.SetState(1391) + p.Match(SqlParserK_ON) + } + { + p.SetState(1392) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_DELETE || _la == SqlParserK_UPDATE) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + p.SetState(1401) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 190, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1393) + p.Match(SqlParserK_SET) + } + { + p.SetState(1394) + p.Match(SqlParserK_NULL) + } + + + case 2: + { + p.SetState(1395) + p.Match(SqlParserK_SET) + } + { + p.SetState(1396) + p.Match(SqlParserK_DEFAULT) + } + + + case 3: + { + p.SetState(1397) + p.Match(SqlParserK_CASCADE) + } + + + case 4: + { + p.SetState(1398) + p.Match(SqlParserK_RESTRICT) + } + + + case 5: + { + p.SetState(1399) + p.Match(SqlParserK_NO) + } + { + p.SetState(1400) + p.Match(SqlParserK_ACTION) + } + + } + + + case SqlParserK_MATCH: + { + p.SetState(1403) + p.Match(SqlParserK_MATCH) + } + { + p.SetState(1404) + p.Name() + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + + } + p.SetState(1411) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 192, p.GetParserRuleContext()) + } + p.SetState(1425) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 196, p.GetParserRuleContext()) == 1 { + p.SetState(1413) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_NOT { + { + p.SetState(1412) + p.Match(SqlParserK_NOT) + } + + } + { + p.SetState(1415) + p.Match(SqlParserK_DEFERRABLE) + } + p.SetState(1420) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 194, p.GetParserRuleContext()) == 1 { + { + p.SetState(1416) + p.Match(SqlParserK_INITIALLY) + } + { + p.SetState(1417) + p.Match(SqlParserK_DEFERRED) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 194, p.GetParserRuleContext()) == 2 { + { + p.SetState(1418) + p.Match(SqlParserK_INITIALLY) + } + { + p.SetState(1419) + p.Match(SqlParserK_IMMEDIATE) + } + + + } + p.SetState(1423) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 195, p.GetParserRuleContext()) == 1 { + { + p.SetState(1422) + p.Match(SqlParserK_ENABLE) + } + + + } + + + } + + + + return localctx +} + + +// IFk_target_column_nameContext is an interface to support dynamic dispatch. +type IFk_target_column_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsFk_target_column_nameContext differentiates from other interfaces. + IsFk_target_column_nameContext() +} + +type Fk_target_column_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFk_target_column_nameContext() *Fk_target_column_nameContext { + var p = new(Fk_target_column_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_fk_target_column_name + return p +} + +func (*Fk_target_column_nameContext) IsFk_target_column_nameContext() {} + +func NewFk_target_column_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Fk_target_column_nameContext { + var p = new(Fk_target_column_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_fk_target_column_name + + return p +} + +func (s *Fk_target_column_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Fk_target_column_nameContext) Name() INameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(INameContext) +} + +func (s *Fk_target_column_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Fk_target_column_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Fk_target_column_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterFk_target_column_name(s) + } +} + +func (s *Fk_target_column_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitFk_target_column_name(s) + } +} + + + + +func (p *SqlParser) Fk_target_column_name() (localctx IFk_target_column_nameContext) { + this := p + _ = this + + localctx = NewFk_target_column_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 98, SqlParserRULE_fk_target_column_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1427) + p.Name() + } + + + + return localctx +} + + +// IRaise_functionContext is an interface to support dynamic dispatch. +type IRaise_functionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsRaise_functionContext differentiates from other interfaces. + IsRaise_functionContext() +} + +type Raise_functionContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRaise_functionContext() *Raise_functionContext { + var p = new(Raise_functionContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_raise_function + return p +} + +func (*Raise_functionContext) IsRaise_functionContext() {} + +func NewRaise_functionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Raise_functionContext { + var p = new(Raise_functionContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_raise_function + + return p +} + +func (s *Raise_functionContext) GetParser() antlr.Parser { return s.parser } + +func (s *Raise_functionContext) K_RAISE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RAISE, 0) +} + +func (s *Raise_functionContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Raise_functionContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Raise_functionContext) K_IGNORE() antlr.TerminalNode { + return s.GetToken(SqlParserK_IGNORE, 0) +} + +func (s *Raise_functionContext) COMMA() antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, 0) +} + +func (s *Raise_functionContext) Error_message() IError_messageContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IError_messageContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IError_messageContext) +} + +func (s *Raise_functionContext) K_ROLLBACK() antlr.TerminalNode { + return s.GetToken(SqlParserK_ROLLBACK, 0) +} + +func (s *Raise_functionContext) K_ABORT() antlr.TerminalNode { + return s.GetToken(SqlParserK_ABORT, 0) +} + +func (s *Raise_functionContext) K_FAIL() antlr.TerminalNode { + return s.GetToken(SqlParserK_FAIL, 0) +} + +func (s *Raise_functionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Raise_functionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Raise_functionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterRaise_function(s) + } +} + +func (s *Raise_functionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitRaise_function(s) + } +} + + + + +func (p *SqlParser) Raise_function() (localctx IRaise_functionContext) { + this := p + _ = this + + localctx = NewRaise_functionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 100, SqlParserRULE_raise_function) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1429) + p.Match(SqlParserK_RAISE) + } + { + p.SetState(1430) + p.Match(SqlParserOPEN_PAR) + } + p.SetState(1435) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_IGNORE: + { + p.SetState(1431) + p.Match(SqlParserK_IGNORE) + } + + + case SqlParserK_ABORT, SqlParserK_FAIL, SqlParserK_ROLLBACK: + { + p.SetState(1432) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_ABORT || _la == SqlParserK_FAIL || _la == SqlParserK_ROLLBACK) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(1433) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1434) + p.Error_message() + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + { + p.SetState(1437) + p.Match(SqlParserCLOSE_PAR) + } + + + + return localctx +} + + +// IIndexed_columnContext is an interface to support dynamic dispatch. +type IIndexed_columnContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsIndexed_columnContext differentiates from other interfaces. + IsIndexed_columnContext() +} + +type Indexed_columnContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyIndexed_columnContext() *Indexed_columnContext { + var p = new(Indexed_columnContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_indexed_column + return p +} + +func (*Indexed_columnContext) IsIndexed_columnContext() {} + +func NewIndexed_columnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Indexed_columnContext { + var p = new(Indexed_columnContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_indexed_column + + return p +} + +func (s *Indexed_columnContext) GetParser() antlr.Parser { return s.parser } + +func (s *Indexed_columnContext) Column_name() IColumn_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Indexed_columnContext) K_COLLATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_COLLATE, 0) +} + +func (s *Indexed_columnContext) Collation_name() ICollation_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICollation_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICollation_nameContext) +} + +func (s *Indexed_columnContext) K_ASC() antlr.TerminalNode { + return s.GetToken(SqlParserK_ASC, 0) +} + +func (s *Indexed_columnContext) K_DESC() antlr.TerminalNode { + return s.GetToken(SqlParserK_DESC, 0) +} + +func (s *Indexed_columnContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Indexed_columnContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Indexed_columnContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterIndexed_column(s) + } +} + +func (s *Indexed_columnContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitIndexed_column(s) + } +} + + + + +func (p *SqlParser) Indexed_column() (localctx IIndexed_columnContext) { + this := p + _ = this + + localctx = NewIndexed_columnContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 102, SqlParserRULE_indexed_column) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1439) + p.Column_name() + } + p.SetState(1442) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_COLLATE { + { + p.SetState(1440) + p.Match(SqlParserK_COLLATE) + } + { + p.SetState(1441) + p.Collation_name() + } + + } + p.SetState(1445) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_ASC || _la == SqlParserK_DESC { + { + p.SetState(1444) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_ASC || _la == SqlParserK_DESC) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + } + + + + return localctx +} + + +// ITable_constraintContext is an interface to support dynamic dispatch. +type ITable_constraintContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTable_constraintContext differentiates from other interfaces. + IsTable_constraintContext() +} + +type Table_constraintContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTable_constraintContext() *Table_constraintContext { + var p = new(Table_constraintContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_table_constraint + return p +} + +func (*Table_constraintContext) IsTable_constraintContext() {} + +func NewTable_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraintContext { + var p = new(Table_constraintContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_table_constraint + + return p +} + +func (s *Table_constraintContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_constraintContext) Table_constraint_primary_key() ITable_constraint_primary_keyContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_constraint_primary_keyContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_constraint_primary_keyContext) +} + +func (s *Table_constraintContext) Table_constraint_key() ITable_constraint_keyContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_constraint_keyContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_constraint_keyContext) +} + +func (s *Table_constraintContext) Table_constraint_unique() ITable_constraint_uniqueContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_constraint_uniqueContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_constraint_uniqueContext) +} + +func (s *Table_constraintContext) K_CHECK() antlr.TerminalNode { + return s.GetToken(SqlParserK_CHECK, 0) +} + +func (s *Table_constraintContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Table_constraintContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Table_constraintContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Table_constraintContext) Table_constraint_foreign_key() ITable_constraint_foreign_keyContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_constraint_foreign_keyContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_constraint_foreign_keyContext) +} + +func (s *Table_constraintContext) K_CONSTRAINT() antlr.TerminalNode { + return s.GetToken(SqlParserK_CONSTRAINT, 0) +} + +func (s *Table_constraintContext) Name() INameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(INameContext) +} + +func (s *Table_constraintContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Table_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Table_constraintContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTable_constraint(s) + } +} + +func (s *Table_constraintContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTable_constraint(s) + } +} + + + + +func (p *SqlParser) Table_constraint() (localctx ITable_constraintContext) { + this := p + _ = this + + localctx = NewTable_constraintContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 104, SqlParserRULE_table_constraint) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(1449) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_CONSTRAINT { + { + p.SetState(1447) + p.Match(SqlParserK_CONSTRAINT) + } + { + p.SetState(1448) + p.Name() + } + + } + p.SetState(1460) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_PRIMARY: + { + p.SetState(1451) + p.Table_constraint_primary_key() + } + + + case SqlParserK_KEY: + { + p.SetState(1452) + p.Table_constraint_key() + } + + + case SqlParserK_UNIQUE: + { + p.SetState(1453) + p.Table_constraint_unique() + } + + + case SqlParserK_CHECK: + { + p.SetState(1454) + p.Match(SqlParserK_CHECK) + } + { + p.SetState(1455) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1456) + p.expr(0) + } + { + p.SetState(1457) + p.Match(SqlParserCLOSE_PAR) + } + + + case SqlParserK_FOREIGN: + { + p.SetState(1459) + p.Table_constraint_foreign_key() + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + + + return localctx +} + + +// ITable_constraint_primary_keyContext is an interface to support dynamic dispatch. +type ITable_constraint_primary_keyContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTable_constraint_primary_keyContext differentiates from other interfaces. + IsTable_constraint_primary_keyContext() +} + +type Table_constraint_primary_keyContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTable_constraint_primary_keyContext() *Table_constraint_primary_keyContext { + var p = new(Table_constraint_primary_keyContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_table_constraint_primary_key + return p +} + +func (*Table_constraint_primary_keyContext) IsTable_constraint_primary_keyContext() {} + +func NewTable_constraint_primary_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraint_primary_keyContext { + var p = new(Table_constraint_primary_keyContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_table_constraint_primary_key + + return p +} + +func (s *Table_constraint_primary_keyContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_constraint_primary_keyContext) K_PRIMARY() antlr.TerminalNode { + return s.GetToken(SqlParserK_PRIMARY, 0) +} + +func (s *Table_constraint_primary_keyContext) K_KEY() antlr.TerminalNode { + return s.GetToken(SqlParserK_KEY, 0) +} + +func (s *Table_constraint_primary_keyContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Table_constraint_primary_keyContext) AllIndexed_column() []IIndexed_columnContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IIndexed_columnContext); ok { + len++ + } + } + + tst := make([]IIndexed_columnContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IIndexed_columnContext); ok { + tst[i] = t.(IIndexed_columnContext) + i++ + } + } + + return tst +} + +func (s *Table_constraint_primary_keyContext) Indexed_column(i int) IIndexed_columnContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndexed_columnContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IIndexed_columnContext) +} + +func (s *Table_constraint_primary_keyContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Table_constraint_primary_keyContext) Conflict_clause() IConflict_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IConflict_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IConflict_clauseContext) +} + +func (s *Table_constraint_primary_keyContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Table_constraint_primary_keyContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Table_constraint_primary_keyContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Table_constraint_primary_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Table_constraint_primary_keyContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTable_constraint_primary_key(s) + } +} + +func (s *Table_constraint_primary_keyContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTable_constraint_primary_key(s) + } +} + + + + +func (p *SqlParser) Table_constraint_primary_key() (localctx ITable_constraint_primary_keyContext) { + this := p + _ = this + + localctx = NewTable_constraint_primary_keyContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 106, SqlParserRULE_table_constraint_primary_key) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1462) + p.Match(SqlParserK_PRIMARY) + } + { + p.SetState(1463) + p.Match(SqlParserK_KEY) + } + { + p.SetState(1464) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1465) + p.Indexed_column() + } + p.SetState(1470) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1466) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1467) + p.Indexed_column() + } + + + p.SetState(1472) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1473) + p.Match(SqlParserCLOSE_PAR) + } + { + p.SetState(1474) + p.Conflict_clause() + } + + + + return localctx +} + + +// ITable_constraint_foreign_keyContext is an interface to support dynamic dispatch. +type ITable_constraint_foreign_keyContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTable_constraint_foreign_keyContext differentiates from other interfaces. + IsTable_constraint_foreign_keyContext() +} + +type Table_constraint_foreign_keyContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTable_constraint_foreign_keyContext() *Table_constraint_foreign_keyContext { + var p = new(Table_constraint_foreign_keyContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_table_constraint_foreign_key + return p +} + +func (*Table_constraint_foreign_keyContext) IsTable_constraint_foreign_keyContext() {} + +func NewTable_constraint_foreign_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraint_foreign_keyContext { + var p = new(Table_constraint_foreign_keyContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_table_constraint_foreign_key + + return p +} + +func (s *Table_constraint_foreign_keyContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_constraint_foreign_keyContext) K_FOREIGN() antlr.TerminalNode { + return s.GetToken(SqlParserK_FOREIGN, 0) +} + +func (s *Table_constraint_foreign_keyContext) K_KEY() antlr.TerminalNode { + return s.GetToken(SqlParserK_KEY, 0) +} + +func (s *Table_constraint_foreign_keyContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Table_constraint_foreign_keyContext) AllFk_origin_column_name() []IFk_origin_column_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IFk_origin_column_nameContext); ok { + len++ + } + } + + tst := make([]IFk_origin_column_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IFk_origin_column_nameContext); ok { + tst[i] = t.(IFk_origin_column_nameContext) + i++ + } + } + + return tst +} + +func (s *Table_constraint_foreign_keyContext) Fk_origin_column_name(i int) IFk_origin_column_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFk_origin_column_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IFk_origin_column_nameContext) +} + +func (s *Table_constraint_foreign_keyContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Table_constraint_foreign_keyContext) Foreign_key_clause() IForeign_key_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForeign_key_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IForeign_key_clauseContext) +} + +func (s *Table_constraint_foreign_keyContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Table_constraint_foreign_keyContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Table_constraint_foreign_keyContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Table_constraint_foreign_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Table_constraint_foreign_keyContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTable_constraint_foreign_key(s) + } +} + +func (s *Table_constraint_foreign_keyContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTable_constraint_foreign_key(s) + } +} + + + + +func (p *SqlParser) Table_constraint_foreign_key() (localctx ITable_constraint_foreign_keyContext) { + this := p + _ = this + + localctx = NewTable_constraint_foreign_keyContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 108, SqlParserRULE_table_constraint_foreign_key) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1476) + p.Match(SqlParserK_FOREIGN) + } + { + p.SetState(1477) + p.Match(SqlParserK_KEY) + } + { + p.SetState(1478) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1479) + p.Fk_origin_column_name() + } + p.SetState(1484) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1480) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1481) + p.Fk_origin_column_name() + } + + + p.SetState(1486) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1487) + p.Match(SqlParserCLOSE_PAR) + } + { + p.SetState(1488) + p.Foreign_key_clause() + } + + + + return localctx +} + + +// ITable_constraint_uniqueContext is an interface to support dynamic dispatch. +type ITable_constraint_uniqueContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTable_constraint_uniqueContext differentiates from other interfaces. + IsTable_constraint_uniqueContext() +} + +type Table_constraint_uniqueContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTable_constraint_uniqueContext() *Table_constraint_uniqueContext { + var p = new(Table_constraint_uniqueContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_table_constraint_unique + return p +} + +func (*Table_constraint_uniqueContext) IsTable_constraint_uniqueContext() {} + +func NewTable_constraint_uniqueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraint_uniqueContext { + var p = new(Table_constraint_uniqueContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_table_constraint_unique + + return p +} + +func (s *Table_constraint_uniqueContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_constraint_uniqueContext) K_UNIQUE() antlr.TerminalNode { + return s.GetToken(SqlParserK_UNIQUE, 0) +} + +func (s *Table_constraint_uniqueContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Table_constraint_uniqueContext) AllIndexed_column() []IIndexed_columnContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IIndexed_columnContext); ok { + len++ + } + } + + tst := make([]IIndexed_columnContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IIndexed_columnContext); ok { + tst[i] = t.(IIndexed_columnContext) + i++ + } + } + + return tst +} + +func (s *Table_constraint_uniqueContext) Indexed_column(i int) IIndexed_columnContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndexed_columnContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IIndexed_columnContext) +} + +func (s *Table_constraint_uniqueContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Table_constraint_uniqueContext) Conflict_clause() IConflict_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IConflict_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IConflict_clauseContext) +} + +func (s *Table_constraint_uniqueContext) K_KEY() antlr.TerminalNode { + return s.GetToken(SqlParserK_KEY, 0) +} + +func (s *Table_constraint_uniqueContext) Name() INameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(INameContext) +} + +func (s *Table_constraint_uniqueContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Table_constraint_uniqueContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Table_constraint_uniqueContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Table_constraint_uniqueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Table_constraint_uniqueContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTable_constraint_unique(s) + } +} + +func (s *Table_constraint_uniqueContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTable_constraint_unique(s) + } +} + + + + +func (p *SqlParser) Table_constraint_unique() (localctx ITable_constraint_uniqueContext) { + this := p + _ = this + + localctx = NewTable_constraint_uniqueContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 110, SqlParserRULE_table_constraint_unique) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1490) + p.Match(SqlParserK_UNIQUE) + } + p.SetState(1492) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 204, p.GetParserRuleContext()) == 1 { + { + p.SetState(1491) + p.Match(SqlParserK_KEY) + } + + + } + p.SetState(1495) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 205, p.GetParserRuleContext()) == 1 { + { + p.SetState(1494) + p.Name() + } + + + } + { + p.SetState(1497) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1498) + p.Indexed_column() + } + p.SetState(1503) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1499) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1500) + p.Indexed_column() + } + + + p.SetState(1505) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1506) + p.Match(SqlParserCLOSE_PAR) + } + { + p.SetState(1507) + p.Conflict_clause() + } + + + + return localctx +} + + +// ITable_constraint_keyContext is an interface to support dynamic dispatch. +type ITable_constraint_keyContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTable_constraint_keyContext differentiates from other interfaces. + IsTable_constraint_keyContext() +} + +type Table_constraint_keyContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTable_constraint_keyContext() *Table_constraint_keyContext { + var p = new(Table_constraint_keyContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_table_constraint_key + return p +} + +func (*Table_constraint_keyContext) IsTable_constraint_keyContext() {} + +func NewTable_constraint_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraint_keyContext { + var p = new(Table_constraint_keyContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_table_constraint_key + + return p +} + +func (s *Table_constraint_keyContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_constraint_keyContext) K_KEY() antlr.TerminalNode { + return s.GetToken(SqlParserK_KEY, 0) +} + +func (s *Table_constraint_keyContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Table_constraint_keyContext) AllIndexed_column() []IIndexed_columnContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IIndexed_columnContext); ok { + len++ + } + } + + tst := make([]IIndexed_columnContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IIndexed_columnContext); ok { + tst[i] = t.(IIndexed_columnContext) + i++ + } + } + + return tst +} + +func (s *Table_constraint_keyContext) Indexed_column(i int) IIndexed_columnContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndexed_columnContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IIndexed_columnContext) +} + +func (s *Table_constraint_keyContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Table_constraint_keyContext) Conflict_clause() IConflict_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IConflict_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IConflict_clauseContext) +} + +func (s *Table_constraint_keyContext) Name() INameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(INameContext) +} + +func (s *Table_constraint_keyContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Table_constraint_keyContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Table_constraint_keyContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Table_constraint_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Table_constraint_keyContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTable_constraint_key(s) + } +} + +func (s *Table_constraint_keyContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTable_constraint_key(s) + } +} + + + + +func (p *SqlParser) Table_constraint_key() (localctx ITable_constraint_keyContext) { + this := p + _ = this + + localctx = NewTable_constraint_keyContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 112, SqlParserRULE_table_constraint_key) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1509) + p.Match(SqlParserK_KEY) + } + p.SetState(1511) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 207, p.GetParserRuleContext()) == 1 { + { + p.SetState(1510) + p.Name() + } + + + } + { + p.SetState(1513) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1514) + p.Indexed_column() + } + p.SetState(1519) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1515) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1516) + p.Indexed_column() + } + + + p.SetState(1521) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1522) + p.Match(SqlParserCLOSE_PAR) + } + { + p.SetState(1523) + p.Conflict_clause() + } + + + + return localctx +} + + +// IFk_origin_column_nameContext is an interface to support dynamic dispatch. +type IFk_origin_column_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsFk_origin_column_nameContext differentiates from other interfaces. + IsFk_origin_column_nameContext() +} + +type Fk_origin_column_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFk_origin_column_nameContext() *Fk_origin_column_nameContext { + var p = new(Fk_origin_column_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_fk_origin_column_name + return p +} + +func (*Fk_origin_column_nameContext) IsFk_origin_column_nameContext() {} + +func NewFk_origin_column_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Fk_origin_column_nameContext { + var p = new(Fk_origin_column_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_fk_origin_column_name + + return p +} + +func (s *Fk_origin_column_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Fk_origin_column_nameContext) Column_name() IColumn_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Fk_origin_column_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Fk_origin_column_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Fk_origin_column_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterFk_origin_column_name(s) + } +} + +func (s *Fk_origin_column_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitFk_origin_column_name(s) + } +} + + + + +func (p *SqlParser) Fk_origin_column_name() (localctx IFk_origin_column_nameContext) { + this := p + _ = this + + localctx = NewFk_origin_column_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 114, SqlParserRULE_fk_origin_column_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1525) + p.Column_name() + } + + + + return localctx +} + + +// IWith_clauseContext is an interface to support dynamic dispatch. +type IWith_clauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsWith_clauseContext differentiates from other interfaces. + IsWith_clauseContext() +} + +type With_clauseContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyWith_clauseContext() *With_clauseContext { + var p = new(With_clauseContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_with_clause + return p +} + +func (*With_clauseContext) IsWith_clauseContext() {} + +func NewWith_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *With_clauseContext { + var p = new(With_clauseContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_with_clause + + return p +} + +func (s *With_clauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *With_clauseContext) K_WITH() antlr.TerminalNode { + return s.GetToken(SqlParserK_WITH, 0) +} + +func (s *With_clauseContext) AllCte_table_name() []ICte_table_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ICte_table_nameContext); ok { + len++ + } + } + + tst := make([]ICte_table_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ICte_table_nameContext); ok { + tst[i] = t.(ICte_table_nameContext) + i++ + } + } + + return tst +} + +func (s *With_clauseContext) Cte_table_name(i int) ICte_table_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICte_table_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ICte_table_nameContext) +} + +func (s *With_clauseContext) AllK_AS() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_AS) +} + +func (s *With_clauseContext) K_AS(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, i) +} + +func (s *With_clauseContext) AllOPEN_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserOPEN_PAR) +} + +func (s *With_clauseContext) OPEN_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, i) +} + +func (s *With_clauseContext) AllSelect_stmt() []ISelect_stmtContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISelect_stmtContext); ok { + len++ + } + } + + tst := make([]ISelect_stmtContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISelect_stmtContext); ok { + tst[i] = t.(ISelect_stmtContext) + i++ + } + } + + return tst +} + +func (s *With_clauseContext) Select_stmt(i int) ISelect_stmtContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_stmtContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISelect_stmtContext) +} + +func (s *With_clauseContext) AllCLOSE_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserCLOSE_PAR) +} + +func (s *With_clauseContext) CLOSE_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, i) +} + +func (s *With_clauseContext) K_RECURSIVE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RECURSIVE, 0) +} + +func (s *With_clauseContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *With_clauseContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *With_clauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *With_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *With_clauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterWith_clause(s) + } +} + +func (s *With_clauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitWith_clause(s) + } +} + + + + +func (p *SqlParser) With_clause() (localctx IWith_clauseContext) { + this := p + _ = this + + localctx = NewWith_clauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 116, SqlParserRULE_with_clause) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1527) + p.Match(SqlParserK_WITH) + } + p.SetState(1529) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 209, p.GetParserRuleContext()) == 1 { + { + p.SetState(1528) + p.Match(SqlParserK_RECURSIVE) + } + + + } + { + p.SetState(1531) + p.Cte_table_name() + } + { + p.SetState(1532) + p.Match(SqlParserK_AS) + } + { + p.SetState(1533) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1534) + p.Select_stmt() + } + { + p.SetState(1535) + p.Match(SqlParserCLOSE_PAR) + } + p.SetState(1545) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1536) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1537) + p.Cte_table_name() + } + { + p.SetState(1538) + p.Match(SqlParserK_AS) + } + { + p.SetState(1539) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1540) + p.Select_stmt() + } + { + p.SetState(1541) + p.Match(SqlParserCLOSE_PAR) + } + + + p.SetState(1547) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + + + return localctx +} + + +// IQualified_table_nameContext is an interface to support dynamic dispatch. +type IQualified_table_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsQualified_table_nameContext differentiates from other interfaces. + IsQualified_table_nameContext() +} + +type Qualified_table_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyQualified_table_nameContext() *Qualified_table_nameContext { + var p = new(Qualified_table_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_qualified_table_name + return p +} + +func (*Qualified_table_nameContext) IsQualified_table_nameContext() {} + +func NewQualified_table_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Qualified_table_nameContext { + var p = new(Qualified_table_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_qualified_table_name + + return p +} + +func (s *Qualified_table_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Qualified_table_nameContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Qualified_table_nameContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Qualified_table_nameContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Qualified_table_nameContext) K_INDEXED() antlr.TerminalNode { + return s.GetToken(SqlParserK_INDEXED, 0) +} + +func (s *Qualified_table_nameContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Qualified_table_nameContext) Index_name() IIndex_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndex_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IIndex_nameContext) +} + +func (s *Qualified_table_nameContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Qualified_table_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Qualified_table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Qualified_table_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterQualified_table_name(s) + } +} + +func (s *Qualified_table_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitQualified_table_name(s) + } +} + + + + +func (p *SqlParser) Qualified_table_name() (localctx IQualified_table_nameContext) { + this := p + _ = this + + localctx = NewQualified_table_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 118, SqlParserRULE_qualified_table_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(1551) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 211, p.GetParserRuleContext()) == 1 { + { + p.SetState(1548) + p.Database_name() + } + { + p.SetState(1549) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(1553) + p.Table_name() + } + p.SetState(1559) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_INDEXED: + { + p.SetState(1554) + p.Match(SqlParserK_INDEXED) + } + { + p.SetState(1555) + p.Match(SqlParserK_BY) + } + { + p.SetState(1556) + p.Index_name() + } + + + case SqlParserK_NOT: + { + p.SetState(1557) + p.Match(SqlParserK_NOT) + } + { + p.SetState(1558) + p.Match(SqlParserK_INDEXED) + } + + + case SqlParserEOF, SqlParserSCOL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_ATTACH, SqlParserK_BEGIN, SqlParserK_COMMIT, SqlParserK_CREATE, SqlParserK_DELETE, SqlParserK_DETACH, SqlParserK_DROP, SqlParserK_END, SqlParserK_EXPLAIN, SqlParserK_INSERT, SqlParserK_LIMIT, SqlParserK_ORDER, SqlParserK_PRAGMA, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_REPLACE, SqlParserK_ROLLBACK, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_SET, SqlParserK_UPDATE, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_WHERE, SqlParserK_WITH, SqlParserUNEXPECTED_CHAR: + + + + default: + } + + + + return localctx +} + + +// IOrdering_termContext is an interface to support dynamic dispatch. +type IOrdering_termContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsOrdering_termContext differentiates from other interfaces. + IsOrdering_termContext() +} + +type Ordering_termContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyOrdering_termContext() *Ordering_termContext { + var p = new(Ordering_termContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_ordering_term + return p +} + +func (*Ordering_termContext) IsOrdering_termContext() {} + +func NewOrdering_termContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Ordering_termContext { + var p = new(Ordering_termContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_ordering_term + + return p +} + +func (s *Ordering_termContext) GetParser() antlr.Parser { return s.parser } + +func (s *Ordering_termContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Ordering_termContext) K_COLLATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_COLLATE, 0) +} + +func (s *Ordering_termContext) Collation_name() ICollation_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICollation_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICollation_nameContext) +} + +func (s *Ordering_termContext) K_ASC() antlr.TerminalNode { + return s.GetToken(SqlParserK_ASC, 0) +} + +func (s *Ordering_termContext) K_DESC() antlr.TerminalNode { + return s.GetToken(SqlParserK_DESC, 0) +} + +func (s *Ordering_termContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Ordering_termContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Ordering_termContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterOrdering_term(s) + } +} + +func (s *Ordering_termContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitOrdering_term(s) + } +} + + + + +func (p *SqlParser) Ordering_term() (localctx IOrdering_termContext) { + this := p + _ = this + + localctx = NewOrdering_termContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 120, SqlParserRULE_ordering_term) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1561) + p.expr(0) + } + p.SetState(1564) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 213, p.GetParserRuleContext()) == 1 { + { + p.SetState(1562) + p.Match(SqlParserK_COLLATE) + } + { + p.SetState(1563) + p.Collation_name() + } + + + } + p.SetState(1567) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 214, p.GetParserRuleContext()) == 1 { + { + p.SetState(1566) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_ASC || _la == SqlParserK_DESC) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + + } + + + + return localctx +} + + +// IPragma_valueContext is an interface to support dynamic dispatch. +type IPragma_valueContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsPragma_valueContext differentiates from other interfaces. + IsPragma_valueContext() +} + +type Pragma_valueContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPragma_valueContext() *Pragma_valueContext { + var p = new(Pragma_valueContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_pragma_value + return p +} + +func (*Pragma_valueContext) IsPragma_valueContext() {} + +func NewPragma_valueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Pragma_valueContext { + var p = new(Pragma_valueContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_pragma_value + + return p +} + +func (s *Pragma_valueContext) GetParser() antlr.Parser { return s.parser } + +func (s *Pragma_valueContext) Signed_number() ISigned_numberContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISigned_numberContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISigned_numberContext) +} + +func (s *Pragma_valueContext) Name() INameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(INameContext) +} + +func (s *Pragma_valueContext) STRING_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserSTRING_LITERAL, 0) +} + +func (s *Pragma_valueContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Pragma_valueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Pragma_valueContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterPragma_value(s) + } +} + +func (s *Pragma_valueContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitPragma_value(s) + } +} + + + + +func (p *SqlParser) Pragma_value() (localctx IPragma_valueContext) { + this := p + _ = this + + localctx = NewPragma_valueContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 122, SqlParserRULE_pragma_value) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(1572) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 215, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1569) + p.Signed_number() + } + + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1570) + p.Name() + } + + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1571) + p.Match(SqlParserSTRING_LITERAL) + } + + } + + + return localctx +} + + +// ICommon_table_expressionContext is an interface to support dynamic dispatch. +type ICommon_table_expressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCommon_table_expressionContext differentiates from other interfaces. + IsCommon_table_expressionContext() +} + +type Common_table_expressionContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCommon_table_expressionContext() *Common_table_expressionContext { + var p = new(Common_table_expressionContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_common_table_expression + return p +} + +func (*Common_table_expressionContext) IsCommon_table_expressionContext() {} + +func NewCommon_table_expressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Common_table_expressionContext { + var p = new(Common_table_expressionContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_common_table_expression + + return p +} + +func (s *Common_table_expressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *Common_table_expressionContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Common_table_expressionContext) K_AS() antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, 0) +} + +func (s *Common_table_expressionContext) AllOPEN_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserOPEN_PAR) +} + +func (s *Common_table_expressionContext) OPEN_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, i) +} + +func (s *Common_table_expressionContext) Select_stmt() ISelect_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISelect_stmtContext) +} + +func (s *Common_table_expressionContext) AllCLOSE_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserCLOSE_PAR) +} + +func (s *Common_table_expressionContext) CLOSE_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, i) +} + +func (s *Common_table_expressionContext) AllColumn_name() []IColumn_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumn_nameContext); ok { + len++ + } + } + + tst := make([]IColumn_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumn_nameContext); ok { + tst[i] = t.(IColumn_nameContext) + i++ + } + } + + return tst +} + +func (s *Common_table_expressionContext) Column_name(i int) IColumn_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Common_table_expressionContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Common_table_expressionContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Common_table_expressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Common_table_expressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Common_table_expressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCommon_table_expression(s) + } +} + +func (s *Common_table_expressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCommon_table_expression(s) + } +} + + + + +func (p *SqlParser) Common_table_expression() (localctx ICommon_table_expressionContext) { + this := p + _ = this + + localctx = NewCommon_table_expressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 124, SqlParserRULE_common_table_expression) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1574) + p.Table_name() + } + p.SetState(1586) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserOPEN_PAR { + { + p.SetState(1575) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1576) + p.Column_name() + } + p.SetState(1581) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1577) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1578) + p.Column_name() + } + + + p.SetState(1583) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1584) + p.Match(SqlParserCLOSE_PAR) + } + + } + { + p.SetState(1588) + p.Match(SqlParserK_AS) + } + { + p.SetState(1589) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1590) + p.Select_stmt() + } + { + p.SetState(1591) + p.Match(SqlParserCLOSE_PAR) + } + + + + return localctx +} + + +// IResult_columnContext is an interface to support dynamic dispatch. +type IResult_columnContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsResult_columnContext differentiates from other interfaces. + IsResult_columnContext() +} + +type Result_columnContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyResult_columnContext() *Result_columnContext { + var p = new(Result_columnContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_result_column + return p +} + +func (*Result_columnContext) IsResult_columnContext() {} + +func NewResult_columnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Result_columnContext { + var p = new(Result_columnContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_result_column + + return p +} + +func (s *Result_columnContext) GetParser() antlr.Parser { return s.parser } + +func (s *Result_columnContext) STAR() antlr.TerminalNode { + return s.GetToken(SqlParserSTAR, 0) +} + +func (s *Result_columnContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Result_columnContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Result_columnContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Result_columnContext) Column_alias() IColumn_aliasContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_aliasContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_aliasContext) +} + +func (s *Result_columnContext) K_AS() antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, 0) +} + +func (s *Result_columnContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Result_columnContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Result_columnContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterResult_column(s) + } +} + +func (s *Result_columnContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitResult_column(s) + } +} + + + + +func (p *SqlParser) Result_column() (localctx IResult_columnContext) { + this := p + _ = this + + localctx = NewResult_columnContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 126, SqlParserRULE_result_column) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(1605) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 220, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1593) + p.Match(SqlParserSTAR) + } + + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1594) + p.Table_name() + } + { + p.SetState(1595) + p.Match(SqlParserDOT) + } + { + p.SetState(1596) + p.Match(SqlParserSTAR) + } + + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1598) + p.expr(0) + } + p.SetState(1603) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 219, p.GetParserRuleContext()) == 1 { + p.SetState(1600) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_AS { + { + p.SetState(1599) + p.Match(SqlParserK_AS) + } + + } + { + p.SetState(1602) + p.Column_alias() + } + + + } + + } + + + return localctx +} + + +// ITable_or_subqueryContext is an interface to support dynamic dispatch. +type ITable_or_subqueryContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTable_or_subqueryContext differentiates from other interfaces. + IsTable_or_subqueryContext() +} + +type Table_or_subqueryContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTable_or_subqueryContext() *Table_or_subqueryContext { + var p = new(Table_or_subqueryContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_table_or_subquery + return p +} + +func (*Table_or_subqueryContext) IsTable_or_subqueryContext() {} + +func NewTable_or_subqueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_or_subqueryContext { + var p = new(Table_or_subqueryContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_table_or_subquery + + return p +} + +func (s *Table_or_subqueryContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_or_subqueryContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Table_or_subqueryContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Table_or_subqueryContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Table_or_subqueryContext) Table_alias() ITable_aliasContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_aliasContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_aliasContext) +} + +func (s *Table_or_subqueryContext) K_INDEXED() antlr.TerminalNode { + return s.GetToken(SqlParserK_INDEXED, 0) +} + +func (s *Table_or_subqueryContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Table_or_subqueryContext) Index_name() IIndex_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndex_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IIndex_nameContext) +} + +func (s *Table_or_subqueryContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Table_or_subqueryContext) K_AS() antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, 0) +} + +func (s *Table_or_subqueryContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Table_or_subqueryContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Table_or_subqueryContext) AllTable_or_subquery() []ITable_or_subqueryContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ITable_or_subqueryContext); ok { + len++ + } + } + + tst := make([]ITable_or_subqueryContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ITable_or_subqueryContext); ok { + tst[i] = t.(ITable_or_subqueryContext) + i++ + } + } + + return tst +} + +func (s *Table_or_subqueryContext) Table_or_subquery(i int) ITable_or_subqueryContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_or_subqueryContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ITable_or_subqueryContext) +} + +func (s *Table_or_subqueryContext) Join_clause() IJoin_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IJoin_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IJoin_clauseContext) +} + +func (s *Table_or_subqueryContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Table_or_subqueryContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Table_or_subqueryContext) Select_stmt() ISelect_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISelect_stmtContext) +} + +func (s *Table_or_subqueryContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Table_or_subqueryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Table_or_subqueryContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTable_or_subquery(s) + } +} + +func (s *Table_or_subqueryContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTable_or_subquery(s) + } +} + + + + +func (p *SqlParser) Table_or_subquery() (localctx ITable_or_subqueryContext) { + this := p + _ = this + + localctx = NewTable_or_subqueryContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 128, SqlParserRULE_table_or_subquery) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(1654) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 231, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + p.SetState(1610) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 221, p.GetParserRuleContext()) == 1 { + { + p.SetState(1607) + p.Database_name() + } + { + p.SetState(1608) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(1612) + p.Table_name() + } + p.SetState(1617) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 223, p.GetParserRuleContext()) == 1 { + p.SetState(1614) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 222, p.GetParserRuleContext()) == 1 { + { + p.SetState(1613) + p.Match(SqlParserK_AS) + } + + + } + { + p.SetState(1616) + p.Table_alias() + } + + + } + p.SetState(1624) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 224, p.GetParserRuleContext()) == 1 { + { + p.SetState(1619) + p.Match(SqlParserK_INDEXED) + } + { + p.SetState(1620) + p.Match(SqlParserK_BY) + } + { + p.SetState(1621) + p.Index_name() + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 224, p.GetParserRuleContext()) == 2 { + { + p.SetState(1622) + p.Match(SqlParserK_NOT) + } + { + p.SetState(1623) + p.Match(SqlParserK_INDEXED) + } + + + } + + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1626) + p.Match(SqlParserOPEN_PAR) + } + p.SetState(1636) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 226, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1627) + p.Table_or_subquery() + } + p.SetState(1632) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1628) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1629) + p.Table_or_subquery() + } + + + p.SetState(1634) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + + case 2: + { + p.SetState(1635) + p.Join_clause() + } + + } + { + p.SetState(1638) + p.Match(SqlParserCLOSE_PAR) + } + p.SetState(1643) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 228, p.GetParserRuleContext()) == 1 { + p.SetState(1640) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 227, p.GetParserRuleContext()) == 1 { + { + p.SetState(1639) + p.Match(SqlParserK_AS) + } + + + } + { + p.SetState(1642) + p.Table_alias() + } + + + } + + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1645) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1646) + p.Select_stmt() + } + { + p.SetState(1647) + p.Match(SqlParserCLOSE_PAR) + } + p.SetState(1652) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 230, p.GetParserRuleContext()) == 1 { + p.SetState(1649) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 229, p.GetParserRuleContext()) == 1 { + { + p.SetState(1648) + p.Match(SqlParserK_AS) + } + + + } + { + p.SetState(1651) + p.Table_alias() + } + + + } + + } + + + return localctx +} + + +// IJoin_clauseContext is an interface to support dynamic dispatch. +type IJoin_clauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsJoin_clauseContext differentiates from other interfaces. + IsJoin_clauseContext() +} + +type Join_clauseContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyJoin_clauseContext() *Join_clauseContext { + var p = new(Join_clauseContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_join_clause + return p +} + +func (*Join_clauseContext) IsJoin_clauseContext() {} + +func NewJoin_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Join_clauseContext { + var p = new(Join_clauseContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_join_clause + + return p +} + +func (s *Join_clauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *Join_clauseContext) AllTable_or_subquery() []ITable_or_subqueryContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ITable_or_subqueryContext); ok { + len++ + } + } + + tst := make([]ITable_or_subqueryContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ITable_or_subqueryContext); ok { + tst[i] = t.(ITable_or_subqueryContext) + i++ + } + } + + return tst +} + +func (s *Join_clauseContext) Table_or_subquery(i int) ITable_or_subqueryContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_or_subqueryContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ITable_or_subqueryContext) +} + +func (s *Join_clauseContext) AllJoin_operator() []IJoin_operatorContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IJoin_operatorContext); ok { + len++ + } + } + + tst := make([]IJoin_operatorContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IJoin_operatorContext); ok { + tst[i] = t.(IJoin_operatorContext) + i++ + } + } + + return tst +} + +func (s *Join_clauseContext) Join_operator(i int) IJoin_operatorContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IJoin_operatorContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IJoin_operatorContext) +} + +func (s *Join_clauseContext) AllJoin_constraint() []IJoin_constraintContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IJoin_constraintContext); ok { + len++ + } + } + + tst := make([]IJoin_constraintContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IJoin_constraintContext); ok { + tst[i] = t.(IJoin_constraintContext) + i++ + } + } + + return tst +} + +func (s *Join_clauseContext) Join_constraint(i int) IJoin_constraintContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IJoin_constraintContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IJoin_constraintContext) +} + +func (s *Join_clauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Join_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Join_clauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterJoin_clause(s) + } +} + +func (s *Join_clauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitJoin_clause(s) + } +} + + + + +func (p *SqlParser) Join_clause() (localctx IJoin_clauseContext) { + this := p + _ = this + + localctx = NewJoin_clauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 130, SqlParserRULE_join_clause) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + var _alt int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1656) + p.Table_or_subquery() + } + p.SetState(1663) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 232, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(1657) + p.Join_operator() + } + { + p.SetState(1658) + p.Table_or_subquery() + } + { + p.SetState(1659) + p.Join_constraint() + } + + + } + p.SetState(1665) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 232, p.GetParserRuleContext()) + } + + + + return localctx +} + + +// IJoin_operatorContext is an interface to support dynamic dispatch. +type IJoin_operatorContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsJoin_operatorContext differentiates from other interfaces. + IsJoin_operatorContext() +} + +type Join_operatorContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyJoin_operatorContext() *Join_operatorContext { + var p = new(Join_operatorContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_join_operator + return p +} + +func (*Join_operatorContext) IsJoin_operatorContext() {} + +func NewJoin_operatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Join_operatorContext { + var p = new(Join_operatorContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_join_operator + + return p +} + +func (s *Join_operatorContext) GetParser() antlr.Parser { return s.parser } + +func (s *Join_operatorContext) COMMA() antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, 0) +} + +func (s *Join_operatorContext) K_JOIN() antlr.TerminalNode { + return s.GetToken(SqlParserK_JOIN, 0) +} + +func (s *Join_operatorContext) K_NATURAL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NATURAL, 0) +} + +func (s *Join_operatorContext) K_LEFT() antlr.TerminalNode { + return s.GetToken(SqlParserK_LEFT, 0) +} + +func (s *Join_operatorContext) K_INNER() antlr.TerminalNode { + return s.GetToken(SqlParserK_INNER, 0) +} + +func (s *Join_operatorContext) K_CROSS() antlr.TerminalNode { + return s.GetToken(SqlParserK_CROSS, 0) +} + +func (s *Join_operatorContext) K_OUTER() antlr.TerminalNode { + return s.GetToken(SqlParserK_OUTER, 0) +} + +func (s *Join_operatorContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Join_operatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Join_operatorContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterJoin_operator(s) + } +} + +func (s *Join_operatorContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitJoin_operator(s) + } +} + + + + +func (p *SqlParser) Join_operator() (localctx IJoin_operatorContext) { + this := p + _ = this + + localctx = NewJoin_operatorContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 132, SqlParserRULE_join_operator) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(1679) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserCOMMA: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1666) + p.Match(SqlParserCOMMA) + } + + + case SqlParserK_CROSS, SqlParserK_INNER, SqlParserK_JOIN, SqlParserK_LEFT, SqlParserK_NATURAL: + p.EnterOuterAlt(localctx, 2) + p.SetState(1668) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_NATURAL { + { + p.SetState(1667) + p.Match(SqlParserK_NATURAL) + } + + } + p.SetState(1676) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_LEFT: + { + p.SetState(1670) + p.Match(SqlParserK_LEFT) + } + p.SetState(1672) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_OUTER { + { + p.SetState(1671) + p.Match(SqlParserK_OUTER) + } + + } + + + case SqlParserK_INNER: + { + p.SetState(1674) + p.Match(SqlParserK_INNER) + } + + + case SqlParserK_CROSS: + { + p.SetState(1675) + p.Match(SqlParserK_CROSS) + } + + + case SqlParserK_JOIN: + + + + default: + } + { + p.SetState(1678) + p.Match(SqlParserK_JOIN) + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + + return localctx +} + + +// IJoin_constraintContext is an interface to support dynamic dispatch. +type IJoin_constraintContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsJoin_constraintContext differentiates from other interfaces. + IsJoin_constraintContext() +} + +type Join_constraintContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyJoin_constraintContext() *Join_constraintContext { + var p = new(Join_constraintContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_join_constraint + return p +} + +func (*Join_constraintContext) IsJoin_constraintContext() {} + +func NewJoin_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Join_constraintContext { + var p = new(Join_constraintContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_join_constraint + + return p +} + +func (s *Join_constraintContext) GetParser() antlr.Parser { return s.parser } + +func (s *Join_constraintContext) K_ON() antlr.TerminalNode { + return s.GetToken(SqlParserK_ON, 0) +} + +func (s *Join_constraintContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Join_constraintContext) K_USING() antlr.TerminalNode { + return s.GetToken(SqlParserK_USING, 0) +} + +func (s *Join_constraintContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Join_constraintContext) AllColumn_name() []IColumn_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumn_nameContext); ok { + len++ + } + } + + tst := make([]IColumn_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumn_nameContext); ok { + tst[i] = t.(IColumn_nameContext) + i++ + } + } + + return tst +} + +func (s *Join_constraintContext) Column_name(i int) IColumn_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Join_constraintContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Join_constraintContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Join_constraintContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Join_constraintContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Join_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Join_constraintContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterJoin_constraint(s) + } +} + +func (s *Join_constraintContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitJoin_constraint(s) + } +} + + + + +func (p *SqlParser) Join_constraint() (localctx IJoin_constraintContext) { + this := p + _ = this + + localctx = NewJoin_constraintContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 134, SqlParserRULE_join_constraint) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(1695) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 238, p.GetParserRuleContext()) == 1 { + { + p.SetState(1681) + p.Match(SqlParserK_ON) + } + { + p.SetState(1682) + p.expr(0) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 238, p.GetParserRuleContext()) == 2 { + { + p.SetState(1683) + p.Match(SqlParserK_USING) + } + { + p.SetState(1684) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1685) + p.Column_name() + } + p.SetState(1690) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1686) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1687) + p.Column_name() + } + + + p.SetState(1692) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1693) + p.Match(SqlParserCLOSE_PAR) + } + + + } + + + + return localctx +} + + +// ISelect_coreContext is an interface to support dynamic dispatch. +type ISelect_coreContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSelect_coreContext differentiates from other interfaces. + IsSelect_coreContext() +} + +type Select_coreContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySelect_coreContext() *Select_coreContext { + var p = new(Select_coreContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_select_core + return p +} + +func (*Select_coreContext) IsSelect_coreContext() {} + +func NewSelect_coreContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Select_coreContext { + var p = new(Select_coreContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_select_core + + return p +} + +func (s *Select_coreContext) GetParser() antlr.Parser { return s.parser } + +func (s *Select_coreContext) K_SELECT() antlr.TerminalNode { + return s.GetToken(SqlParserK_SELECT, 0) +} + +func (s *Select_coreContext) AllResult_column() []IResult_columnContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IResult_columnContext); ok { + len++ + } + } + + tst := make([]IResult_columnContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IResult_columnContext); ok { + tst[i] = t.(IResult_columnContext) + i++ + } + } + + return tst +} + +func (s *Select_coreContext) Result_column(i int) IResult_columnContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IResult_columnContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IResult_columnContext) +} + +func (s *Select_coreContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Select_coreContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Select_coreContext) K_FROM() antlr.TerminalNode { + return s.GetToken(SqlParserK_FROM, 0) +} + +func (s *Select_coreContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) +} + +func (s *Select_coreContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Select_coreContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Select_coreContext) K_GROUP() antlr.TerminalNode { + return s.GetToken(SqlParserK_GROUP, 0) +} + +func (s *Select_coreContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Select_coreContext) K_DISTINCT() antlr.TerminalNode { + return s.GetToken(SqlParserK_DISTINCT, 0) +} + +func (s *Select_coreContext) K_ALL() antlr.TerminalNode { + return s.GetToken(SqlParserK_ALL, 0) +} + +func (s *Select_coreContext) AllTable_or_subquery() []ITable_or_subqueryContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ITable_or_subqueryContext); ok { + len++ + } + } + + tst := make([]ITable_or_subqueryContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ITable_or_subqueryContext); ok { + tst[i] = t.(ITable_or_subqueryContext) + i++ + } + } + + return tst +} + +func (s *Select_coreContext) Table_or_subquery(i int) ITable_or_subqueryContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_or_subqueryContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ITable_or_subqueryContext) +} + +func (s *Select_coreContext) Join_clause() IJoin_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IJoin_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IJoin_clauseContext) +} + +func (s *Select_coreContext) K_HAVING() antlr.TerminalNode { + return s.GetToken(SqlParserK_HAVING, 0) +} + +func (s *Select_coreContext) K_VALUES() antlr.TerminalNode { + return s.GetToken(SqlParserK_VALUES, 0) +} + +func (s *Select_coreContext) AllOPEN_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserOPEN_PAR) +} + +func (s *Select_coreContext) OPEN_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, i) +} + +func (s *Select_coreContext) AllCLOSE_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserCLOSE_PAR) +} + +func (s *Select_coreContext) CLOSE_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, i) +} + +func (s *Select_coreContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Select_coreContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Select_coreContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSelect_core(s) + } +} + +func (s *Select_coreContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSelect_core(s) + } +} + + + + +func (p *SqlParser) Select_core() (localctx ISelect_coreContext) { + this := p + _ = this + + localctx = NewSelect_coreContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 136, SqlParserRULE_select_core) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(1771) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_SELECT: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1697) + p.Match(SqlParserK_SELECT) + } + p.SetState(1699) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 239, p.GetParserRuleContext()) == 1 { + { + p.SetState(1698) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_ALL || _la == SqlParserK_DISTINCT) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + + } + { + p.SetState(1701) + p.Result_column() + } + p.SetState(1706) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1702) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1703) + p.Result_column() + } + + + p.SetState(1708) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + p.SetState(1721) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_FROM { + { + p.SetState(1709) + p.Match(SqlParserK_FROM) + } + p.SetState(1719) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 242, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1710) + p.Table_or_subquery() + } + p.SetState(1715) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1711) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1712) + p.Table_or_subquery() + } + + + p.SetState(1717) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + + case 2: + { + p.SetState(1718) + p.Join_clause() + } + + } + + } + p.SetState(1725) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WHERE { + { + p.SetState(1723) + p.Match(SqlParserK_WHERE) + } + { + p.SetState(1724) + p.expr(0) + } + + } + p.SetState(1741) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_GROUP { + { + p.SetState(1727) + p.Match(SqlParserK_GROUP) + } + { + p.SetState(1728) + p.Match(SqlParserK_BY) + } + { + p.SetState(1729) + p.expr(0) + } + p.SetState(1734) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1730) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1731) + p.expr(0) + } + + + p.SetState(1736) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + p.SetState(1739) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_HAVING { + { + p.SetState(1737) + p.Match(SqlParserK_HAVING) + } + { + p.SetState(1738) + p.expr(0) + } + + } + + } + + + case SqlParserK_VALUES: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1743) + p.Match(SqlParserK_VALUES) + } + { + p.SetState(1744) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1745) + p.expr(0) + } + p.SetState(1750) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1746) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1747) + p.expr(0) + } + + + p.SetState(1752) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1753) + p.Match(SqlParserCLOSE_PAR) + } + p.SetState(1768) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1754) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1755) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1756) + p.expr(0) + } + p.SetState(1761) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1757) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1758) + p.expr(0) + } + + + p.SetState(1763) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1764) + p.Match(SqlParserCLOSE_PAR) + } + + + p.SetState(1770) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + + return localctx +} + + +// ICompound_operatorContext is an interface to support dynamic dispatch. +type ICompound_operatorContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCompound_operatorContext differentiates from other interfaces. + IsCompound_operatorContext() +} + +type Compound_operatorContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCompound_operatorContext() *Compound_operatorContext { + var p = new(Compound_operatorContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_compound_operator + return p +} + +func (*Compound_operatorContext) IsCompound_operatorContext() {} + +func NewCompound_operatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Compound_operatorContext { + var p = new(Compound_operatorContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_compound_operator + + return p +} + +func (s *Compound_operatorContext) GetParser() antlr.Parser { return s.parser } + +func (s *Compound_operatorContext) K_UNION() antlr.TerminalNode { + return s.GetToken(SqlParserK_UNION, 0) +} + +func (s *Compound_operatorContext) K_ALL() antlr.TerminalNode { + return s.GetToken(SqlParserK_ALL, 0) +} + +func (s *Compound_operatorContext) K_INTERSECT() antlr.TerminalNode { + return s.GetToken(SqlParserK_INTERSECT, 0) +} + +func (s *Compound_operatorContext) K_EXCEPT() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXCEPT, 0) +} + +func (s *Compound_operatorContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Compound_operatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Compound_operatorContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCompound_operator(s) + } +} + +func (s *Compound_operatorContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCompound_operator(s) + } +} + + + + +func (p *SqlParser) Compound_operator() (localctx ICompound_operatorContext) { + this := p + _ = this + + localctx = NewCompound_operatorContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 138, SqlParserRULE_compound_operator) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(1778) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 252, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1773) + p.Match(SqlParserK_UNION) + } + + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1774) + p.Match(SqlParserK_UNION) + } + { + p.SetState(1775) + p.Match(SqlParserK_ALL) + } + + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1776) + p.Match(SqlParserK_INTERSECT) + } + + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(1777) + p.Match(SqlParserK_EXCEPT) + } + + } + + + return localctx +} + + +// ICte_table_nameContext is an interface to support dynamic dispatch. +type ICte_table_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCte_table_nameContext differentiates from other interfaces. + IsCte_table_nameContext() +} + +type Cte_table_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCte_table_nameContext() *Cte_table_nameContext { + var p = new(Cte_table_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_cte_table_name + return p +} + +func (*Cte_table_nameContext) IsCte_table_nameContext() {} + +func NewCte_table_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Cte_table_nameContext { + var p = new(Cte_table_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_cte_table_name + + return p +} + +func (s *Cte_table_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Cte_table_nameContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Cte_table_nameContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Cte_table_nameContext) AllColumn_name() []IColumn_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumn_nameContext); ok { + len++ + } + } + + tst := make([]IColumn_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumn_nameContext); ok { + tst[i] = t.(IColumn_nameContext) + i++ + } + } + + return tst +} + +func (s *Cte_table_nameContext) Column_name(i int) IColumn_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Cte_table_nameContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Cte_table_nameContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Cte_table_nameContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Cte_table_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Cte_table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Cte_table_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCte_table_name(s) + } +} + +func (s *Cte_table_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCte_table_name(s) + } +} + + + + +func (p *SqlParser) Cte_table_name() (localctx ICte_table_nameContext) { + this := p + _ = this + + localctx = NewCte_table_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 140, SqlParserRULE_cte_table_name) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1780) + p.Table_name() + } + p.SetState(1792) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserOPEN_PAR { + { + p.SetState(1781) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1782) + p.Column_name() + } + p.SetState(1787) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1783) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1784) + p.Column_name() + } + + + p.SetState(1789) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1790) + p.Match(SqlParserCLOSE_PAR) + } + + } + + + + return localctx +} + + +// ISigned_numberContext is an interface to support dynamic dispatch. +type ISigned_numberContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSigned_numberContext differentiates from other interfaces. + IsSigned_numberContext() +} + +type Signed_numberContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySigned_numberContext() *Signed_numberContext { + var p = new(Signed_numberContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_signed_number + return p +} + +func (*Signed_numberContext) IsSigned_numberContext() {} + +func NewSigned_numberContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Signed_numberContext { + var p = new(Signed_numberContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_signed_number + + return p +} + +func (s *Signed_numberContext) GetParser() antlr.Parser { return s.parser } + +func (s *Signed_numberContext) NUMERIC_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserNUMERIC_LITERAL, 0) +} + +func (s *Signed_numberContext) STAR() antlr.TerminalNode { + return s.GetToken(SqlParserSTAR, 0) +} + +func (s *Signed_numberContext) PLUS() antlr.TerminalNode { + return s.GetToken(SqlParserPLUS, 0) +} + +func (s *Signed_numberContext) MINUS() antlr.TerminalNode { + return s.GetToken(SqlParserMINUS, 0) +} + +func (s *Signed_numberContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Signed_numberContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Signed_numberContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSigned_number(s) + } +} + +func (s *Signed_numberContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSigned_number(s) + } +} + + + + +func (p *SqlParser) Signed_number() (localctx ISigned_numberContext) { + this := p + _ = this + + localctx = NewSigned_numberContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 142, SqlParserRULE_signed_number) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(1799) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserPLUS, SqlParserMINUS, SqlParserNUMERIC_LITERAL: + p.SetState(1795) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserPLUS || _la == SqlParserMINUS { + { + p.SetState(1794) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserPLUS || _la == SqlParserMINUS) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + } + { + p.SetState(1797) + p.Match(SqlParserNUMERIC_LITERAL) + } + + + case SqlParserSTAR: + { + p.SetState(1798) + p.Match(SqlParserSTAR) + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + + + return localctx +} + + +// ILiteral_valueContext is an interface to support dynamic dispatch. +type ILiteral_valueContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsLiteral_valueContext differentiates from other interfaces. + IsLiteral_valueContext() +} + +type Literal_valueContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLiteral_valueContext() *Literal_valueContext { + var p = new(Literal_valueContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_literal_value + return p +} + +func (*Literal_valueContext) IsLiteral_valueContext() {} + +func NewLiteral_valueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Literal_valueContext { + var p = new(Literal_valueContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_literal_value + + return p +} + +func (s *Literal_valueContext) GetParser() antlr.Parser { return s.parser } + +func (s *Literal_valueContext) NUMERIC_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserNUMERIC_LITERAL, 0) +} + +func (s *Literal_valueContext) STRING_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserSTRING_LITERAL, 0) +} + +func (s *Literal_valueContext) BLOB_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserBLOB_LITERAL, 0) +} + +func (s *Literal_valueContext) K_NULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NULL, 0) +} + +func (s *Literal_valueContext) K_CURRENT_TIME() antlr.TerminalNode { + return s.GetToken(SqlParserK_CURRENT_TIME, 0) +} + +func (s *Literal_valueContext) K_CURRENT_DATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CURRENT_DATE, 0) +} + +func (s *Literal_valueContext) K_CURRENT_TIMESTAMP() antlr.TerminalNode { + return s.GetToken(SqlParserK_CURRENT_TIMESTAMP, 0) +} + +func (s *Literal_valueContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Literal_valueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Literal_valueContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterLiteral_value(s) + } +} + +func (s *Literal_valueContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitLiteral_value(s) + } +} + + + + +func (p *SqlParser) Literal_value() (localctx ILiteral_valueContext) { + this := p + _ = this + + localctx = NewLiteral_valueContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 144, SqlParserRULE_literal_value) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1801) + _la = p.GetTokenStream().LA(1) + + if !(((((_la - 53)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 53))) & ((1 << (SqlParserK_CURRENT_DATE - 53)) | (1 << (SqlParserK_CURRENT_TIME - 53)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 53)))) != 0) || _la == SqlParserK_NULL || ((((_la - 154)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 154))) & ((1 << (SqlParserNUMERIC_LITERAL - 154)) | (1 << (SqlParserSTRING_LITERAL - 154)) | (1 << (SqlParserBLOB_LITERAL - 154)))) != 0)) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + + + return localctx +} + + +// IUnary_operatorContext is an interface to support dynamic dispatch. +type IUnary_operatorContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsUnary_operatorContext differentiates from other interfaces. + IsUnary_operatorContext() +} + +type Unary_operatorContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyUnary_operatorContext() *Unary_operatorContext { + var p = new(Unary_operatorContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_unary_operator + return p +} + +func (*Unary_operatorContext) IsUnary_operatorContext() {} + +func NewUnary_operatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Unary_operatorContext { + var p = new(Unary_operatorContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_unary_operator + + return p +} + +func (s *Unary_operatorContext) GetParser() antlr.Parser { return s.parser } + +func (s *Unary_operatorContext) MINUS() antlr.TerminalNode { + return s.GetToken(SqlParserMINUS, 0) +} + +func (s *Unary_operatorContext) PLUS() antlr.TerminalNode { + return s.GetToken(SqlParserPLUS, 0) +} + +func (s *Unary_operatorContext) TILDE() antlr.TerminalNode { + return s.GetToken(SqlParserTILDE, 0) +} + +func (s *Unary_operatorContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Unary_operatorContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Unary_operatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Unary_operatorContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterUnary_operator(s) + } +} + +func (s *Unary_operatorContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitUnary_operator(s) + } +} + + + + +func (p *SqlParser) Unary_operator() (localctx IUnary_operatorContext) { + this := p + _ = this + + localctx = NewUnary_operatorContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 146, SqlParserRULE_unary_operator) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1803) + _la = p.GetTokenStream().LA(1) + + if !((((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserPLUS) | (1 << SqlParserMINUS) | (1 << SqlParserTILDE))) != 0) || _la == SqlParserK_NOT) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + + + return localctx +} + + +// IError_messageContext is an interface to support dynamic dispatch. +type IError_messageContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsError_messageContext differentiates from other interfaces. + IsError_messageContext() +} + +type Error_messageContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyError_messageContext() *Error_messageContext { + var p = new(Error_messageContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_error_message + return p +} + +func (*Error_messageContext) IsError_messageContext() {} + +func NewError_messageContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Error_messageContext { + var p = new(Error_messageContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_error_message + + return p +} + +func (s *Error_messageContext) GetParser() antlr.Parser { return s.parser } + +func (s *Error_messageContext) STRING_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserSTRING_LITERAL, 0) +} + +func (s *Error_messageContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Error_messageContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Error_messageContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterError_message(s) + } +} + +func (s *Error_messageContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitError_message(s) + } +} + + + + +func (p *SqlParser) Error_message() (localctx IError_messageContext) { + this := p + _ = this + + localctx = NewError_messageContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 148, SqlParserRULE_error_message) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1805) + p.Match(SqlParserSTRING_LITERAL) + } + + + + return localctx +} + + +// IModule_argumentContext is an interface to support dynamic dispatch. +type IModule_argumentContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsModule_argumentContext differentiates from other interfaces. + IsModule_argumentContext() +} + +type Module_argumentContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyModule_argumentContext() *Module_argumentContext { + var p = new(Module_argumentContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_module_argument + return p +} + +func (*Module_argumentContext) IsModule_argumentContext() {} + +func NewModule_argumentContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Module_argumentContext { + var p = new(Module_argumentContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_module_argument + + return p +} + +func (s *Module_argumentContext) GetParser() antlr.Parser { return s.parser } + +func (s *Module_argumentContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Module_argumentContext) Column_def() IColumn_defContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_defContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_defContext) +} + +func (s *Module_argumentContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Module_argumentContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Module_argumentContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterModule_argument(s) + } +} + +func (s *Module_argumentContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitModule_argument(s) + } +} + + + + +func (p *SqlParser) Module_argument() (localctx IModule_argumentContext) { + this := p + _ = this + + localctx = NewModule_argumentContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 150, SqlParserRULE_module_argument) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(1809) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 257, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1807) + p.expr(0) + } + + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1808) + p.Column_def() + } + + } + + + return localctx +} + + +// IColumn_aliasContext is an interface to support dynamic dispatch. +type IColumn_aliasContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_aliasContext differentiates from other interfaces. + IsColumn_aliasContext() +} + +type Column_aliasContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_aliasContext() *Column_aliasContext { + var p = new(Column_aliasContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_alias + return p +} + +func (*Column_aliasContext) IsColumn_aliasContext() {} + +func NewColumn_aliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_aliasContext { + var p = new(Column_aliasContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_alias + + return p +} + +func (s *Column_aliasContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_aliasContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(SqlParserIDENTIFIER, 0) +} + +func (s *Column_aliasContext) STRING_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserSTRING_LITERAL, 0) +} + +func (s *Column_aliasContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_aliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_aliasContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_alias(s) + } +} + +func (s *Column_aliasContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_alias(s) + } +} + + + + +func (p *SqlParser) Column_alias() (localctx IColumn_aliasContext) { + this := p + _ = this + + localctx = NewColumn_aliasContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 152, SqlParserRULE_column_alias) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1811) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserIDENTIFIER || _la == SqlParserSTRING_LITERAL) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + + + return localctx +} + + +// IKeywordContext is an interface to support dynamic dispatch. +type IKeywordContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsKeywordContext differentiates from other interfaces. + IsKeywordContext() +} + +type KeywordContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyKeywordContext() *KeywordContext { + var p = new(KeywordContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_keyword + return p +} + +func (*KeywordContext) IsKeywordContext() {} + +func NewKeywordContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *KeywordContext { + var p = new(KeywordContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_keyword + + return p +} + +func (s *KeywordContext) GetParser() antlr.Parser { return s.parser } + +func (s *KeywordContext) K_ABORT() antlr.TerminalNode { + return s.GetToken(SqlParserK_ABORT, 0) +} + +func (s *KeywordContext) K_ACTION() antlr.TerminalNode { + return s.GetToken(SqlParserK_ACTION, 0) +} + +func (s *KeywordContext) K_ADD() antlr.TerminalNode { + return s.GetToken(SqlParserK_ADD, 0) +} + +func (s *KeywordContext) K_AFTER() antlr.TerminalNode { + return s.GetToken(SqlParserK_AFTER, 0) +} + +func (s *KeywordContext) K_ALL() antlr.TerminalNode { + return s.GetToken(SqlParserK_ALL, 0) +} + +func (s *KeywordContext) K_ALTER() antlr.TerminalNode { + return s.GetToken(SqlParserK_ALTER, 0) +} + +func (s *KeywordContext) K_ANALYZE() antlr.TerminalNode { + return s.GetToken(SqlParserK_ANALYZE, 0) +} + +func (s *KeywordContext) K_AND() antlr.TerminalNode { + return s.GetToken(SqlParserK_AND, 0) +} + +func (s *KeywordContext) K_AS() antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, 0) +} + +func (s *KeywordContext) K_ASC() antlr.TerminalNode { + return s.GetToken(SqlParserK_ASC, 0) +} + +func (s *KeywordContext) K_ATTACH() antlr.TerminalNode { + return s.GetToken(SqlParserK_ATTACH, 0) +} + +func (s *KeywordContext) K_AUTOINCREMENT() antlr.TerminalNode { + return s.GetToken(SqlParserK_AUTOINCREMENT, 0) +} + +func (s *KeywordContext) K_BEFORE() antlr.TerminalNode { + return s.GetToken(SqlParserK_BEFORE, 0) +} + +func (s *KeywordContext) K_BEGIN() antlr.TerminalNode { + return s.GetToken(SqlParserK_BEGIN, 0) +} + +func (s *KeywordContext) K_BETWEEN() antlr.TerminalNode { + return s.GetToken(SqlParserK_BETWEEN, 0) +} + +func (s *KeywordContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *KeywordContext) K_CASCADE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CASCADE, 0) +} + +func (s *KeywordContext) K_CASE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CASE, 0) +} + +func (s *KeywordContext) K_CAST() antlr.TerminalNode { + return s.GetToken(SqlParserK_CAST, 0) +} + +func (s *KeywordContext) K_CHECK() antlr.TerminalNode { + return s.GetToken(SqlParserK_CHECK, 0) +} + +func (s *KeywordContext) K_COLLATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_COLLATE, 0) +} + +func (s *KeywordContext) K_COLUMN() antlr.TerminalNode { + return s.GetToken(SqlParserK_COLUMN, 0) +} + +func (s *KeywordContext) K_COMMIT() antlr.TerminalNode { + return s.GetToken(SqlParserK_COMMIT, 0) +} + +func (s *KeywordContext) K_CONFLICT() antlr.TerminalNode { + return s.GetToken(SqlParserK_CONFLICT, 0) +} + +func (s *KeywordContext) K_CONSTRAINT() antlr.TerminalNode { + return s.GetToken(SqlParserK_CONSTRAINT, 0) +} + +func (s *KeywordContext) K_CREATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CREATE, 0) +} + +func (s *KeywordContext) K_CROSS() antlr.TerminalNode { + return s.GetToken(SqlParserK_CROSS, 0) +} + +func (s *KeywordContext) K_CURRENT_DATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CURRENT_DATE, 0) +} + +func (s *KeywordContext) K_CURRENT_TIME() antlr.TerminalNode { + return s.GetToken(SqlParserK_CURRENT_TIME, 0) +} + +func (s *KeywordContext) K_CURRENT_TIMESTAMP() antlr.TerminalNode { + return s.GetToken(SqlParserK_CURRENT_TIMESTAMP, 0) +} + +func (s *KeywordContext) K_DATABASE() antlr.TerminalNode { + return s.GetToken(SqlParserK_DATABASE, 0) +} + +func (s *KeywordContext) K_DEFAULT() antlr.TerminalNode { + return s.GetToken(SqlParserK_DEFAULT, 0) +} + +func (s *KeywordContext) K_DEFERRABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_DEFERRABLE, 0) +} + +func (s *KeywordContext) K_DEFERRED() antlr.TerminalNode { + return s.GetToken(SqlParserK_DEFERRED, 0) +} + +func (s *KeywordContext) K_DELETE() antlr.TerminalNode { + return s.GetToken(SqlParserK_DELETE, 0) +} + +func (s *KeywordContext) K_DESC() antlr.TerminalNode { + return s.GetToken(SqlParserK_DESC, 0) +} + +func (s *KeywordContext) K_DETACH() antlr.TerminalNode { + return s.GetToken(SqlParserK_DETACH, 0) +} + +func (s *KeywordContext) K_DISTINCT() antlr.TerminalNode { + return s.GetToken(SqlParserK_DISTINCT, 0) +} + +func (s *KeywordContext) K_DROP() antlr.TerminalNode { + return s.GetToken(SqlParserK_DROP, 0) +} + +func (s *KeywordContext) K_EACH() antlr.TerminalNode { + return s.GetToken(SqlParserK_EACH, 0) +} + +func (s *KeywordContext) K_ELSE() antlr.TerminalNode { + return s.GetToken(SqlParserK_ELSE, 0) +} + +func (s *KeywordContext) K_END() antlr.TerminalNode { + return s.GetToken(SqlParserK_END, 0) +} + +func (s *KeywordContext) K_ENABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_ENABLE, 0) +} + +func (s *KeywordContext) K_ESCAPE() antlr.TerminalNode { + return s.GetToken(SqlParserK_ESCAPE, 0) +} + +func (s *KeywordContext) K_EXCEPT() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXCEPT, 0) +} + +func (s *KeywordContext) K_EXCLUSIVE() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXCLUSIVE, 0) +} + +func (s *KeywordContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *KeywordContext) K_EXPLAIN() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXPLAIN, 0) +} + +func (s *KeywordContext) K_FAIL() antlr.TerminalNode { + return s.GetToken(SqlParserK_FAIL, 0) +} + +func (s *KeywordContext) K_FOR() antlr.TerminalNode { + return s.GetToken(SqlParserK_FOR, 0) +} + +func (s *KeywordContext) K_FOREIGN() antlr.TerminalNode { + return s.GetToken(SqlParserK_FOREIGN, 0) +} + +func (s *KeywordContext) K_FROM() antlr.TerminalNode { + return s.GetToken(SqlParserK_FROM, 0) +} + +func (s *KeywordContext) K_FULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_FULL, 0) +} + +func (s *KeywordContext) K_GLOB() antlr.TerminalNode { + return s.GetToken(SqlParserK_GLOB, 0) +} + +func (s *KeywordContext) K_GROUP() antlr.TerminalNode { + return s.GetToken(SqlParserK_GROUP, 0) +} + +func (s *KeywordContext) K_HAVING() antlr.TerminalNode { + return s.GetToken(SqlParserK_HAVING, 0) +} + +func (s *KeywordContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *KeywordContext) K_IGNORE() antlr.TerminalNode { + return s.GetToken(SqlParserK_IGNORE, 0) +} + +func (s *KeywordContext) K_IMMEDIATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_IMMEDIATE, 0) +} + +func (s *KeywordContext) K_IN() antlr.TerminalNode { + return s.GetToken(SqlParserK_IN, 0) +} + +func (s *KeywordContext) K_INDEX() antlr.TerminalNode { + return s.GetToken(SqlParserK_INDEX, 0) +} + +func (s *KeywordContext) K_INDEXED() antlr.TerminalNode { + return s.GetToken(SqlParserK_INDEXED, 0) +} + +func (s *KeywordContext) K_INITIALLY() antlr.TerminalNode { + return s.GetToken(SqlParserK_INITIALLY, 0) +} + +func (s *KeywordContext) K_INNER() antlr.TerminalNode { + return s.GetToken(SqlParserK_INNER, 0) +} + +func (s *KeywordContext) K_INSERT() antlr.TerminalNode { + return s.GetToken(SqlParserK_INSERT, 0) +} + +func (s *KeywordContext) K_INSTEAD() antlr.TerminalNode { + return s.GetToken(SqlParserK_INSTEAD, 0) +} + +func (s *KeywordContext) K_INTERSECT() antlr.TerminalNode { + return s.GetToken(SqlParserK_INTERSECT, 0) +} + +func (s *KeywordContext) K_INTO() antlr.TerminalNode { + return s.GetToken(SqlParserK_INTO, 0) +} + +func (s *KeywordContext) K_IS() antlr.TerminalNode { + return s.GetToken(SqlParserK_IS, 0) +} + +func (s *KeywordContext) K_ISNULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_ISNULL, 0) +} + +func (s *KeywordContext) K_JOIN() antlr.TerminalNode { + return s.GetToken(SqlParserK_JOIN, 0) +} + +func (s *KeywordContext) K_KEY() antlr.TerminalNode { + return s.GetToken(SqlParserK_KEY, 0) +} + +func (s *KeywordContext) K_LEFT() antlr.TerminalNode { + return s.GetToken(SqlParserK_LEFT, 0) +} + +func (s *KeywordContext) K_LIKE() antlr.TerminalNode { + return s.GetToken(SqlParserK_LIKE, 0) +} + +func (s *KeywordContext) K_LIMIT() antlr.TerminalNode { + return s.GetToken(SqlParserK_LIMIT, 0) +} + +func (s *KeywordContext) K_MATCH() antlr.TerminalNode { + return s.GetToken(SqlParserK_MATCH, 0) +} + +func (s *KeywordContext) K_NATURAL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NATURAL, 0) +} + +func (s *KeywordContext) K_NO() antlr.TerminalNode { + return s.GetToken(SqlParserK_NO, 0) +} + +func (s *KeywordContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *KeywordContext) K_NOTNULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOTNULL, 0) +} + +func (s *KeywordContext) K_NULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NULL, 0) +} + +func (s *KeywordContext) K_OF() antlr.TerminalNode { + return s.GetToken(SqlParserK_OF, 0) +} + +func (s *KeywordContext) K_OFFSET() antlr.TerminalNode { + return s.GetToken(SqlParserK_OFFSET, 0) +} + +func (s *KeywordContext) K_ON() antlr.TerminalNode { + return s.GetToken(SqlParserK_ON, 0) +} + +func (s *KeywordContext) K_OR() antlr.TerminalNode { + return s.GetToken(SqlParserK_OR, 0) +} + +func (s *KeywordContext) K_ORDER() antlr.TerminalNode { + return s.GetToken(SqlParserK_ORDER, 0) +} + +func (s *KeywordContext) K_OUTER() antlr.TerminalNode { + return s.GetToken(SqlParserK_OUTER, 0) +} + +func (s *KeywordContext) K_PLAN() antlr.TerminalNode { + return s.GetToken(SqlParserK_PLAN, 0) +} + +func (s *KeywordContext) K_PRAGMA() antlr.TerminalNode { + return s.GetToken(SqlParserK_PRAGMA, 0) +} + +func (s *KeywordContext) K_PRIMARY() antlr.TerminalNode { + return s.GetToken(SqlParserK_PRIMARY, 0) +} + +func (s *KeywordContext) K_QUERY() antlr.TerminalNode { + return s.GetToken(SqlParserK_QUERY, 0) +} + +func (s *KeywordContext) K_RAISE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RAISE, 0) +} + +func (s *KeywordContext) K_RECURSIVE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RECURSIVE, 0) +} + +func (s *KeywordContext) K_REFERENCES() antlr.TerminalNode { + return s.GetToken(SqlParserK_REFERENCES, 0) +} + +func (s *KeywordContext) K_REGEXP() antlr.TerminalNode { + return s.GetToken(SqlParserK_REGEXP, 0) +} + +func (s *KeywordContext) K_REINDEX() antlr.TerminalNode { + return s.GetToken(SqlParserK_REINDEX, 0) +} + +func (s *KeywordContext) K_RELEASE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RELEASE, 0) +} + +func (s *KeywordContext) K_RENAME() antlr.TerminalNode { + return s.GetToken(SqlParserK_RENAME, 0) +} + +func (s *KeywordContext) K_REPLACE() antlr.TerminalNode { + return s.GetToken(SqlParserK_REPLACE, 0) +} + +func (s *KeywordContext) K_RESTRICT() antlr.TerminalNode { + return s.GetToken(SqlParserK_RESTRICT, 0) +} + +func (s *KeywordContext) K_RIGHT() antlr.TerminalNode { + return s.GetToken(SqlParserK_RIGHT, 0) +} + +func (s *KeywordContext) K_ROLLBACK() antlr.TerminalNode { + return s.GetToken(SqlParserK_ROLLBACK, 0) +} + +func (s *KeywordContext) K_ROW() antlr.TerminalNode { + return s.GetToken(SqlParserK_ROW, 0) +} + +func (s *KeywordContext) K_SAVEPOINT() antlr.TerminalNode { + return s.GetToken(SqlParserK_SAVEPOINT, 0) +} + +func (s *KeywordContext) K_SELECT() antlr.TerminalNode { + return s.GetToken(SqlParserK_SELECT, 0) +} + +func (s *KeywordContext) K_SET() antlr.TerminalNode { + return s.GetToken(SqlParserK_SET, 0) +} + +func (s *KeywordContext) K_TABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_TABLE, 0) +} + +func (s *KeywordContext) K_TEMP() antlr.TerminalNode { + return s.GetToken(SqlParserK_TEMP, 0) +} + +func (s *KeywordContext) K_TEMPORARY() antlr.TerminalNode { + return s.GetToken(SqlParserK_TEMPORARY, 0) +} + +func (s *KeywordContext) K_THEN() antlr.TerminalNode { + return s.GetToken(SqlParserK_THEN, 0) +} + +func (s *KeywordContext) K_TO() antlr.TerminalNode { + return s.GetToken(SqlParserK_TO, 0) +} + +func (s *KeywordContext) K_TRANSACTION() antlr.TerminalNode { + return s.GetToken(SqlParserK_TRANSACTION, 0) +} + +func (s *KeywordContext) K_TRIGGER() antlr.TerminalNode { + return s.GetToken(SqlParserK_TRIGGER, 0) +} + +func (s *KeywordContext) K_UNION() antlr.TerminalNode { + return s.GetToken(SqlParserK_UNION, 0) +} + +func (s *KeywordContext) K_UNIQUE() antlr.TerminalNode { + return s.GetToken(SqlParserK_UNIQUE, 0) +} + +func (s *KeywordContext) K_UPDATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_UPDATE, 0) +} + +func (s *KeywordContext) K_USING() antlr.TerminalNode { + return s.GetToken(SqlParserK_USING, 0) +} + +func (s *KeywordContext) K_VACUUM() antlr.TerminalNode { + return s.GetToken(SqlParserK_VACUUM, 0) +} + +func (s *KeywordContext) K_VALUES() antlr.TerminalNode { + return s.GetToken(SqlParserK_VALUES, 0) +} + +func (s *KeywordContext) K_VIEW() antlr.TerminalNode { + return s.GetToken(SqlParserK_VIEW, 0) +} + +func (s *KeywordContext) K_VIRTUAL() antlr.TerminalNode { + return s.GetToken(SqlParserK_VIRTUAL, 0) +} + +func (s *KeywordContext) K_WHEN() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHEN, 0) +} + +func (s *KeywordContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) +} + +func (s *KeywordContext) K_WITH() antlr.TerminalNode { + return s.GetToken(SqlParserK_WITH, 0) +} + +func (s *KeywordContext) K_WITHOUT() antlr.TerminalNode { + return s.GetToken(SqlParserK_WITHOUT, 0) +} + +func (s *KeywordContext) K_NEXTVAL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NEXTVAL, 0) +} + +func (s *KeywordContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *KeywordContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *KeywordContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterKeyword(s) + } +} + +func (s *KeywordContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitKeyword(s) + } +} + + + + +func (p *SqlParser) Keyword() (localctx IKeywordContext) { + this := p + _ = this + + localctx = NewKeywordContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 154, SqlParserRULE_keyword) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1813) + _la = p.GetTokenStream().LA(1) + + if !(((((_la - 26)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 26))) & ((1 << (SqlParserK_ABORT - 26)) | (1 << (SqlParserK_ACTION - 26)) | (1 << (SqlParserK_ADD - 26)) | (1 << (SqlParserK_AFTER - 26)) | (1 << (SqlParserK_ALL - 26)) | (1 << (SqlParserK_ALTER - 26)) | (1 << (SqlParserK_ANALYZE - 26)) | (1 << (SqlParserK_AND - 26)) | (1 << (SqlParserK_AS - 26)) | (1 << (SqlParserK_ASC - 26)) | (1 << (SqlParserK_ATTACH - 26)) | (1 << (SqlParserK_AUTOINCREMENT - 26)) | (1 << (SqlParserK_BEFORE - 26)) | (1 << (SqlParserK_BEGIN - 26)) | (1 << (SqlParserK_BETWEEN - 26)) | (1 << (SqlParserK_BY - 26)) | (1 << (SqlParserK_CASCADE - 26)) | (1 << (SqlParserK_CASE - 26)) | (1 << (SqlParserK_CAST - 26)) | (1 << (SqlParserK_CHECK - 26)) | (1 << (SqlParserK_COLLATE - 26)) | (1 << (SqlParserK_COLUMN - 26)) | (1 << (SqlParserK_COMMIT - 26)) | (1 << (SqlParserK_CONFLICT - 26)) | (1 << (SqlParserK_CONSTRAINT - 26)) | (1 << (SqlParserK_CREATE - 26)) | (1 << (SqlParserK_CROSS - 26)) | (1 << (SqlParserK_CURRENT_DATE - 26)) | (1 << (SqlParserK_CURRENT_TIME - 26)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 26)) | (1 << (SqlParserK_DATABASE - 26)) | (1 << (SqlParserK_DEFAULT - 26)))) != 0) || ((((_la - 58)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 58))) & ((1 << (SqlParserK_DEFERRABLE - 58)) | (1 << (SqlParserK_DEFERRED - 58)) | (1 << (SqlParserK_DELETE - 58)) | (1 << (SqlParserK_DESC - 58)) | (1 << (SqlParserK_DETACH - 58)) | (1 << (SqlParserK_DISTINCT - 58)) | (1 << (SqlParserK_DROP - 58)) | (1 << (SqlParserK_EACH - 58)) | (1 << (SqlParserK_ELSE - 58)) | (1 << (SqlParserK_END - 58)) | (1 << (SqlParserK_ENABLE - 58)) | (1 << (SqlParserK_ESCAPE - 58)) | (1 << (SqlParserK_EXCEPT - 58)) | (1 << (SqlParserK_EXCLUSIVE - 58)) | (1 << (SqlParserK_EXISTS - 58)) | (1 << (SqlParserK_EXPLAIN - 58)) | (1 << (SqlParserK_FAIL - 58)) | (1 << (SqlParserK_FOR - 58)) | (1 << (SqlParserK_FOREIGN - 58)) | (1 << (SqlParserK_FROM - 58)) | (1 << (SqlParserK_FULL - 58)) | (1 << (SqlParserK_GLOB - 58)) | (1 << (SqlParserK_GROUP - 58)) | (1 << (SqlParserK_HAVING - 58)) | (1 << (SqlParserK_IF - 58)) | (1 << (SqlParserK_IGNORE - 58)) | (1 << (SqlParserK_IMMEDIATE - 58)) | (1 << (SqlParserK_IN - 58)) | (1 << (SqlParserK_INDEX - 58)) | (1 << (SqlParserK_INDEXED - 58)) | (1 << (SqlParserK_INITIALLY - 58)) | (1 << (SqlParserK_INNER - 58)))) != 0) || ((((_la - 90)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 90))) & ((1 << (SqlParserK_INSERT - 90)) | (1 << (SqlParserK_INSTEAD - 90)) | (1 << (SqlParserK_INTERSECT - 90)) | (1 << (SqlParserK_INTO - 90)) | (1 << (SqlParserK_IS - 90)) | (1 << (SqlParserK_ISNULL - 90)) | (1 << (SqlParserK_JOIN - 90)) | (1 << (SqlParserK_KEY - 90)) | (1 << (SqlParserK_LEFT - 90)) | (1 << (SqlParserK_LIKE - 90)) | (1 << (SqlParserK_LIMIT - 90)) | (1 << (SqlParserK_MATCH - 90)) | (1 << (SqlParserK_NATURAL - 90)) | (1 << (SqlParserK_NEXTVAL - 90)) | (1 << (SqlParserK_NO - 90)) | (1 << (SqlParserK_NOT - 90)) | (1 << (SqlParserK_NOTNULL - 90)) | (1 << (SqlParserK_NULL - 90)) | (1 << (SqlParserK_OF - 90)) | (1 << (SqlParserK_OFFSET - 90)) | (1 << (SqlParserK_ON - 90)) | (1 << (SqlParserK_OR - 90)) | (1 << (SqlParserK_ORDER - 90)) | (1 << (SqlParserK_OUTER - 90)) | (1 << (SqlParserK_PLAN - 90)) | (1 << (SqlParserK_PRAGMA - 90)) | (1 << (SqlParserK_PRIMARY - 90)) | (1 << (SqlParserK_QUERY - 90)) | (1 << (SqlParserK_RAISE - 90)) | (1 << (SqlParserK_RECURSIVE - 90)) | (1 << (SqlParserK_REFERENCES - 90)))) != 0) || ((((_la - 122)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 122))) & ((1 << (SqlParserK_REGEXP - 122)) | (1 << (SqlParserK_REINDEX - 122)) | (1 << (SqlParserK_RELEASE - 122)) | (1 << (SqlParserK_RENAME - 122)) | (1 << (SqlParserK_REPLACE - 122)) | (1 << (SqlParserK_RESTRICT - 122)) | (1 << (SqlParserK_RIGHT - 122)) | (1 << (SqlParserK_ROLLBACK - 122)) | (1 << (SqlParserK_ROW - 122)) | (1 << (SqlParserK_SAVEPOINT - 122)) | (1 << (SqlParserK_SELECT - 122)) | (1 << (SqlParserK_SET - 122)) | (1 << (SqlParserK_TABLE - 122)) | (1 << (SqlParserK_TEMP - 122)) | (1 << (SqlParserK_TEMPORARY - 122)) | (1 << (SqlParserK_THEN - 122)) | (1 << (SqlParserK_TO - 122)) | (1 << (SqlParserK_TRANSACTION - 122)) | (1 << (SqlParserK_TRIGGER - 122)) | (1 << (SqlParserK_UNION - 122)) | (1 << (SqlParserK_UNIQUE - 122)) | (1 << (SqlParserK_UPDATE - 122)) | (1 << (SqlParserK_USING - 122)) | (1 << (SqlParserK_VACUUM - 122)) | (1 << (SqlParserK_VALUES - 122)) | (1 << (SqlParserK_VIEW - 122)) | (1 << (SqlParserK_VIRTUAL - 122)) | (1 << (SqlParserK_WHEN - 122)) | (1 << (SqlParserK_WHERE - 122)) | (1 << (SqlParserK_WITH - 122)) | (1 << (SqlParserK_WITHOUT - 122)))) != 0)) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + + + return localctx +} + + +// IUnknownContext is an interface to support dynamic dispatch. +type IUnknownContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsUnknownContext differentiates from other interfaces. + IsUnknownContext() +} + +type UnknownContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyUnknownContext() *UnknownContext { + var p = new(UnknownContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_unknown + return p +} + +func (*UnknownContext) IsUnknownContext() {} + +func NewUnknownContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UnknownContext { + var p = new(UnknownContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_unknown + + return p +} + +func (s *UnknownContext) GetParser() antlr.Parser { return s.parser } +func (s *UnknownContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *UnknownContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *UnknownContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterUnknown(s) + } +} + +func (s *UnknownContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitUnknown(s) + } +} + + + + +func (p *SqlParser) Unknown() (localctx IUnknownContext) { + this := p + _ = this + + localctx = NewUnknownContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 156, SqlParserRULE_unknown) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + var _alt int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1816) + p.GetErrorHandler().Sync(p) + _alt = 1 + for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + switch _alt { + case 1: + p.SetState(1815) + p.MatchWildcard() + + + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + p.SetState(1818) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 258, p.GetParserRuleContext()) + } + + + + return localctx +} + + +// INameContext is an interface to support dynamic dispatch. +type INameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsNameContext differentiates from other interfaces. + IsNameContext() +} + +type NameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNameContext() *NameContext { + var p = new(NameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_name + return p +} + +func (*NameContext) IsNameContext() {} + +func NewNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NameContext { + var p = new(NameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_name + + return p +} + +func (s *NameContext) GetParser() antlr.Parser { return s.parser } + +func (s *NameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *NameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *NameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterName(s) + } +} + +func (s *NameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitName(s) + } +} + + + + +func (p *SqlParser) Name() (localctx INameContext) { + this := p + _ = this + + localctx = NewNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 158, SqlParserRULE_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1820) + p.Any_name() + } + + + + return localctx +} + + +// IFunction_nameContext is an interface to support dynamic dispatch. +type IFunction_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsFunction_nameContext differentiates from other interfaces. + IsFunction_nameContext() +} + +type Function_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFunction_nameContext() *Function_nameContext { + var p = new(Function_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_function_name + return p +} + +func (*Function_nameContext) IsFunction_nameContext() {} + +func NewFunction_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Function_nameContext { + var p = new(Function_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_function_name + + return p +} + +func (s *Function_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Function_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Function_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Function_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Function_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterFunction_name(s) + } +} + +func (s *Function_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitFunction_name(s) + } +} + + + + +func (p *SqlParser) Function_name() (localctx IFunction_nameContext) { + this := p + _ = this + + localctx = NewFunction_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 160, SqlParserRULE_function_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1822) + p.Any_name() + } + + + + return localctx +} + + +// IDatabase_nameContext is an interface to support dynamic dispatch. +type IDatabase_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsDatabase_nameContext differentiates from other interfaces. + IsDatabase_nameContext() +} + +type Database_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDatabase_nameContext() *Database_nameContext { + var p = new(Database_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_database_name + return p +} + +func (*Database_nameContext) IsDatabase_nameContext() {} + +func NewDatabase_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Database_nameContext { + var p = new(Database_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_database_name + + return p +} + +func (s *Database_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Database_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Database_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Database_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Database_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterDatabase_name(s) + } +} + +func (s *Database_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitDatabase_name(s) + } +} + + + + +func (p *SqlParser) Database_name() (localctx IDatabase_nameContext) { + this := p + _ = this + + localctx = NewDatabase_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 162, SqlParserRULE_database_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1824) + p.Any_name() + } + + + + return localctx +} + + +// ISource_table_nameContext is an interface to support dynamic dispatch. +type ISource_table_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSource_table_nameContext differentiates from other interfaces. + IsSource_table_nameContext() +} + +type Source_table_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySource_table_nameContext() *Source_table_nameContext { + var p = new(Source_table_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_source_table_name + return p +} + +func (*Source_table_nameContext) IsSource_table_nameContext() {} + +func NewSource_table_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Source_table_nameContext { + var p = new(Source_table_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_source_table_name + + return p +} + +func (s *Source_table_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Source_table_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Source_table_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Source_table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Source_table_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSource_table_name(s) + } +} + +func (s *Source_table_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSource_table_name(s) + } +} + + + + +func (p *SqlParser) Source_table_name() (localctx ISource_table_nameContext) { + this := p + _ = this + + localctx = NewSource_table_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 164, SqlParserRULE_source_table_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1826) + p.Any_name() + } + + + + return localctx +} + + +// ITable_nameContext is an interface to support dynamic dispatch. +type ITable_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTable_nameContext differentiates from other interfaces. + IsTable_nameContext() +} + +type Table_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTable_nameContext() *Table_nameContext { + var p = new(Table_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_table_name + return p +} + +func (*Table_nameContext) IsTable_nameContext() {} + +func NewTable_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_nameContext { + var p = new(Table_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_table_name + + return p +} + +func (s *Table_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Table_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Table_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTable_name(s) + } +} + +func (s *Table_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTable_name(s) + } +} + + + + +func (p *SqlParser) Table_name() (localctx ITable_nameContext) { + this := p + _ = this + + localctx = NewTable_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 166, SqlParserRULE_table_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1828) + p.Any_name() + } + + + + return localctx +} + + +// ITable_or_index_nameContext is an interface to support dynamic dispatch. +type ITable_or_index_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTable_or_index_nameContext differentiates from other interfaces. + IsTable_or_index_nameContext() +} + +type Table_or_index_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTable_or_index_nameContext() *Table_or_index_nameContext { + var p = new(Table_or_index_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_table_or_index_name + return p +} + +func (*Table_or_index_nameContext) IsTable_or_index_nameContext() {} + +func NewTable_or_index_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_or_index_nameContext { + var p = new(Table_or_index_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_table_or_index_name + + return p +} + +func (s *Table_or_index_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_or_index_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Table_or_index_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Table_or_index_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Table_or_index_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTable_or_index_name(s) + } +} + +func (s *Table_or_index_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTable_or_index_name(s) + } +} + + + + +func (p *SqlParser) Table_or_index_name() (localctx ITable_or_index_nameContext) { + this := p + _ = this + + localctx = NewTable_or_index_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 168, SqlParserRULE_table_or_index_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1830) + p.Any_name() + } + + + + return localctx +} + + +// INew_table_nameContext is an interface to support dynamic dispatch. +type INew_table_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsNew_table_nameContext differentiates from other interfaces. + IsNew_table_nameContext() +} + +type New_table_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNew_table_nameContext() *New_table_nameContext { + var p = new(New_table_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_new_table_name + return p +} + +func (*New_table_nameContext) IsNew_table_nameContext() {} + +func NewNew_table_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *New_table_nameContext { + var p = new(New_table_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_new_table_name + + return p +} + +func (s *New_table_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *New_table_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *New_table_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *New_table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *New_table_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterNew_table_name(s) + } +} + +func (s *New_table_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitNew_table_name(s) + } +} + + + + +func (p *SqlParser) New_table_name() (localctx INew_table_nameContext) { + this := p + _ = this + + localctx = NewNew_table_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 170, SqlParserRULE_new_table_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1832) + p.Any_name() + } + + + + return localctx +} + + +// IColumn_nameContext is an interface to support dynamic dispatch. +type IColumn_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_nameContext differentiates from other interfaces. + IsColumn_nameContext() +} + +type Column_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_nameContext() *Column_nameContext { + var p = new(Column_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_name + return p +} + +func (*Column_nameContext) IsColumn_nameContext() {} + +func NewColumn_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_nameContext { + var p = new(Column_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_name + + return p +} + +func (s *Column_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Column_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_name(s) + } +} + +func (s *Column_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_name(s) + } +} + + + + +func (p *SqlParser) Column_name() (localctx IColumn_nameContext) { + this := p + _ = this + + localctx = NewColumn_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 172, SqlParserRULE_column_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1834) + p.Any_name() + } + + + + return localctx +} + + +// ICollation_nameContext is an interface to support dynamic dispatch. +type ICollation_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCollation_nameContext differentiates from other interfaces. + IsCollation_nameContext() +} + +type Collation_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCollation_nameContext() *Collation_nameContext { + var p = new(Collation_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_collation_name + return p +} + +func (*Collation_nameContext) IsCollation_nameContext() {} + +func NewCollation_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Collation_nameContext { + var p = new(Collation_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_collation_name + + return p +} + +func (s *Collation_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Collation_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Collation_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Collation_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Collation_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCollation_name(s) + } +} + +func (s *Collation_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCollation_name(s) + } +} + + + + +func (p *SqlParser) Collation_name() (localctx ICollation_nameContext) { + this := p + _ = this + + localctx = NewCollation_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 174, SqlParserRULE_collation_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1836) + p.Any_name() + } + + + + return localctx +} + + +// IForeign_tableContext is an interface to support dynamic dispatch. +type IForeign_tableContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsForeign_tableContext differentiates from other interfaces. + IsForeign_tableContext() +} + +type Foreign_tableContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyForeign_tableContext() *Foreign_tableContext { + var p = new(Foreign_tableContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_foreign_table + return p +} + +func (*Foreign_tableContext) IsForeign_tableContext() {} + +func NewForeign_tableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Foreign_tableContext { + var p = new(Foreign_tableContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_foreign_table + + return p +} + +func (s *Foreign_tableContext) GetParser() antlr.Parser { return s.parser } + +func (s *Foreign_tableContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Foreign_tableContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Foreign_tableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Foreign_tableContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterForeign_table(s) + } +} + +func (s *Foreign_tableContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitForeign_table(s) + } +} + + + + +func (p *SqlParser) Foreign_table() (localctx IForeign_tableContext) { + this := p + _ = this + + localctx = NewForeign_tableContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 176, SqlParserRULE_foreign_table) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1838) + p.Any_name() + } + + + + return localctx +} + + +// IIndex_nameContext is an interface to support dynamic dispatch. +type IIndex_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsIndex_nameContext differentiates from other interfaces. + IsIndex_nameContext() +} + +type Index_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyIndex_nameContext() *Index_nameContext { + var p = new(Index_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_index_name + return p +} + +func (*Index_nameContext) IsIndex_nameContext() {} + +func NewIndex_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Index_nameContext { + var p = new(Index_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_index_name + + return p +} + +func (s *Index_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Index_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Index_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Index_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Index_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterIndex_name(s) + } +} + +func (s *Index_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitIndex_name(s) + } +} + + + + +func (p *SqlParser) Index_name() (localctx IIndex_nameContext) { + this := p + _ = this + + localctx = NewIndex_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 178, SqlParserRULE_index_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1840) + p.Any_name() + } + + + + return localctx +} + + +// ITrigger_nameContext is an interface to support dynamic dispatch. +type ITrigger_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTrigger_nameContext differentiates from other interfaces. + IsTrigger_nameContext() +} + +type Trigger_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTrigger_nameContext() *Trigger_nameContext { + var p = new(Trigger_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_trigger_name + return p +} + +func (*Trigger_nameContext) IsTrigger_nameContext() {} + +func NewTrigger_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Trigger_nameContext { + var p = new(Trigger_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_trigger_name + + return p +} + +func (s *Trigger_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Trigger_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Trigger_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Trigger_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Trigger_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTrigger_name(s) + } +} + +func (s *Trigger_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTrigger_name(s) + } +} + + + + +func (p *SqlParser) Trigger_name() (localctx ITrigger_nameContext) { + this := p + _ = this + + localctx = NewTrigger_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 180, SqlParserRULE_trigger_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1842) + p.Any_name() + } + + + + return localctx +} + + +// IView_nameContext is an interface to support dynamic dispatch. +type IView_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsView_nameContext differentiates from other interfaces. + IsView_nameContext() +} + +type View_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyView_nameContext() *View_nameContext { + var p = new(View_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_view_name + return p +} + +func (*View_nameContext) IsView_nameContext() {} + +func NewView_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *View_nameContext { + var p = new(View_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_view_name + + return p +} + +func (s *View_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *View_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *View_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *View_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *View_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterView_name(s) + } +} + +func (s *View_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitView_name(s) + } +} + + + + +func (p *SqlParser) View_name() (localctx IView_nameContext) { + this := p + _ = this + + localctx = NewView_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 182, SqlParserRULE_view_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1844) + p.Any_name() + } + + + + return localctx +} + + +// IModule_nameContext is an interface to support dynamic dispatch. +type IModule_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsModule_nameContext differentiates from other interfaces. + IsModule_nameContext() +} + +type Module_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyModule_nameContext() *Module_nameContext { + var p = new(Module_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_module_name + return p +} + +func (*Module_nameContext) IsModule_nameContext() {} + +func NewModule_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Module_nameContext { + var p = new(Module_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_module_name + + return p +} + +func (s *Module_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Module_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Module_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Module_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Module_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterModule_name(s) + } +} + +func (s *Module_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitModule_name(s) + } +} + + + + +func (p *SqlParser) Module_name() (localctx IModule_nameContext) { + this := p + _ = this + + localctx = NewModule_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 184, SqlParserRULE_module_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1846) + p.Any_name() + } + + + + return localctx +} + + +// IPragma_nameContext is an interface to support dynamic dispatch. +type IPragma_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsPragma_nameContext differentiates from other interfaces. + IsPragma_nameContext() +} + +type Pragma_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPragma_nameContext() *Pragma_nameContext { + var p = new(Pragma_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_pragma_name + return p +} + +func (*Pragma_nameContext) IsPragma_nameContext() {} + +func NewPragma_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Pragma_nameContext { + var p = new(Pragma_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_pragma_name + + return p +} + +func (s *Pragma_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Pragma_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Pragma_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Pragma_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Pragma_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterPragma_name(s) + } +} + +func (s *Pragma_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitPragma_name(s) + } +} + + + + +func (p *SqlParser) Pragma_name() (localctx IPragma_nameContext) { + this := p + _ = this + + localctx = NewPragma_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 186, SqlParserRULE_pragma_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1848) + p.Any_name() + } + + + + return localctx +} + + +// ISavepoint_nameContext is an interface to support dynamic dispatch. +type ISavepoint_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSavepoint_nameContext differentiates from other interfaces. + IsSavepoint_nameContext() +} + +type Savepoint_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySavepoint_nameContext() *Savepoint_nameContext { + var p = new(Savepoint_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_savepoint_name + return p +} + +func (*Savepoint_nameContext) IsSavepoint_nameContext() {} + +func NewSavepoint_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Savepoint_nameContext { + var p = new(Savepoint_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_savepoint_name + + return p +} + +func (s *Savepoint_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Savepoint_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Savepoint_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Savepoint_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Savepoint_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSavepoint_name(s) + } +} + +func (s *Savepoint_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSavepoint_name(s) + } +} + + + + +func (p *SqlParser) Savepoint_name() (localctx ISavepoint_nameContext) { + this := p + _ = this + + localctx = NewSavepoint_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 188, SqlParserRULE_savepoint_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1850) + p.Any_name() + } + + + + return localctx +} + + +// ITable_aliasContext is an interface to support dynamic dispatch. +type ITable_aliasContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTable_aliasContext differentiates from other interfaces. + IsTable_aliasContext() +} + +type Table_aliasContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTable_aliasContext() *Table_aliasContext { + var p = new(Table_aliasContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_table_alias + return p +} + +func (*Table_aliasContext) IsTable_aliasContext() {} + +func NewTable_aliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_aliasContext { + var p = new(Table_aliasContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_table_alias + + return p +} + +func (s *Table_aliasContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_aliasContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Table_aliasContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Table_aliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Table_aliasContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTable_alias(s) + } +} + +func (s *Table_aliasContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTable_alias(s) + } +} + + + + +func (p *SqlParser) Table_alias() (localctx ITable_aliasContext) { + this := p + _ = this + + localctx = NewTable_aliasContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 190, SqlParserRULE_table_alias) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1852) + p.Any_name() + } + + + + return localctx +} + + +// ITransaction_nameContext is an interface to support dynamic dispatch. +type ITransaction_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTransaction_nameContext differentiates from other interfaces. + IsTransaction_nameContext() +} + +type Transaction_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTransaction_nameContext() *Transaction_nameContext { + var p = new(Transaction_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_transaction_name + return p +} + +func (*Transaction_nameContext) IsTransaction_nameContext() {} + +func NewTransaction_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Transaction_nameContext { + var p = new(Transaction_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_transaction_name + + return p +} + +func (s *Transaction_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Transaction_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Transaction_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Transaction_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Transaction_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTransaction_name(s) + } +} + +func (s *Transaction_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTransaction_name(s) + } +} + + + + +func (p *SqlParser) Transaction_name() (localctx ITransaction_nameContext) { + this := p + _ = this + + localctx = NewTransaction_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 192, SqlParserRULE_transaction_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1854) + p.Any_name() + } + + + + return localctx +} + + +// IAny_nameContext is an interface to support dynamic dispatch. +type IAny_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsAny_nameContext differentiates from other interfaces. + IsAny_nameContext() +} + +type Any_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAny_nameContext() *Any_nameContext { + var p = new(Any_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_any_name + return p +} + +func (*Any_nameContext) IsAny_nameContext() {} + +func NewAny_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Any_nameContext { + var p = new(Any_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_any_name + + return p +} + +func (s *Any_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Any_nameContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(SqlParserIDENTIFIER, 0) +} + +func (s *Any_nameContext) Keyword() IKeywordContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IKeywordContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IKeywordContext) +} + +func (s *Any_nameContext) STRING_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserSTRING_LITERAL, 0) +} + +func (s *Any_nameContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Any_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Any_nameContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Any_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Any_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Any_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterAny_name(s) + } +} + +func (s *Any_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitAny_name(s) + } +} + + + + +func (p *SqlParser) Any_name() (localctx IAny_nameContext) { + this := p + _ = this + + localctx = NewAny_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 194, SqlParserRULE_any_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(1863) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserIDENTIFIER: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1856) + p.Match(SqlParserIDENTIFIER) + } + + + case SqlParserK_ABORT, SqlParserK_ACTION, SqlParserK_ADD, SqlParserK_AFTER, SqlParserK_ALL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_AND, SqlParserK_AS, SqlParserK_ASC, SqlParserK_ATTACH, SqlParserK_AUTOINCREMENT, SqlParserK_BEFORE, SqlParserK_BEGIN, SqlParserK_BETWEEN, SqlParserK_BY, SqlParserK_CASCADE, SqlParserK_CASE, SqlParserK_CAST, SqlParserK_CHECK, SqlParserK_COLLATE, SqlParserK_COLUMN, SqlParserK_COMMIT, SqlParserK_CONFLICT, SqlParserK_CONSTRAINT, SqlParserK_CREATE, SqlParserK_CROSS, SqlParserK_CURRENT_DATE, SqlParserK_CURRENT_TIME, SqlParserK_CURRENT_TIMESTAMP, SqlParserK_DATABASE, SqlParserK_DEFAULT, SqlParserK_DEFERRABLE, SqlParserK_DEFERRED, SqlParserK_DELETE, SqlParserK_DESC, SqlParserK_DETACH, SqlParserK_DISTINCT, SqlParserK_DROP, SqlParserK_EACH, SqlParserK_ELSE, SqlParserK_END, SqlParserK_ENABLE, SqlParserK_ESCAPE, SqlParserK_EXCEPT, SqlParserK_EXCLUSIVE, SqlParserK_EXISTS, SqlParserK_EXPLAIN, SqlParserK_FAIL, SqlParserK_FOR, SqlParserK_FOREIGN, SqlParserK_FROM, SqlParserK_FULL, SqlParserK_GLOB, SqlParserK_GROUP, SqlParserK_HAVING, SqlParserK_IF, SqlParserK_IGNORE, SqlParserK_IMMEDIATE, SqlParserK_IN, SqlParserK_INDEX, SqlParserK_INDEXED, SqlParserK_INITIALLY, SqlParserK_INNER, SqlParserK_INSERT, SqlParserK_INSTEAD, SqlParserK_INTERSECT, SqlParserK_INTO, SqlParserK_IS, SqlParserK_ISNULL, SqlParserK_JOIN, SqlParserK_KEY, SqlParserK_LEFT, SqlParserK_LIKE, SqlParserK_LIMIT, SqlParserK_MATCH, SqlParserK_NATURAL, SqlParserK_NEXTVAL, SqlParserK_NO, SqlParserK_NOT, SqlParserK_NOTNULL, SqlParserK_NULL, SqlParserK_OF, SqlParserK_OFFSET, SqlParserK_ON, SqlParserK_OR, SqlParserK_ORDER, SqlParserK_OUTER, SqlParserK_PLAN, SqlParserK_PRAGMA, SqlParserK_PRIMARY, SqlParserK_QUERY, SqlParserK_RAISE, SqlParserK_RECURSIVE, SqlParserK_REFERENCES, SqlParserK_REGEXP, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_RENAME, SqlParserK_REPLACE, SqlParserK_RESTRICT, SqlParserK_RIGHT, SqlParserK_ROLLBACK, SqlParserK_ROW, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_SET, SqlParserK_TABLE, SqlParserK_TEMP, SqlParserK_TEMPORARY, SqlParserK_THEN, SqlParserK_TO, SqlParserK_TRANSACTION, SqlParserK_TRIGGER, SqlParserK_UNION, SqlParserK_UNIQUE, SqlParserK_UPDATE, SqlParserK_USING, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_VIEW, SqlParserK_VIRTUAL, SqlParserK_WHEN, SqlParserK_WHERE, SqlParserK_WITH, SqlParserK_WITHOUT: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1857) + p.Keyword() + } + + + case SqlParserSTRING_LITERAL: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1858) + p.Match(SqlParserSTRING_LITERAL) + } + + + case SqlParserOPEN_PAR: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(1859) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1860) + p.Any_name() + } + { + p.SetState(1861) + p.Match(SqlParserCLOSE_PAR) + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + + return localctx +} + + +func (p *SqlParser) Sempred(localctx antlr.RuleContext, ruleIndex, predIndex int) bool { + switch ruleIndex { + case 47: + var t *ExprContext = nil + if localctx != nil { t = localctx.(*ExprContext) } + return p.Expr_Sempred(t, predIndex) + + + default: + panic("No predicate with index: " + fmt.Sprint(ruleIndex)) + } +} + +func (p *SqlParser) Expr_Sempred(localctx antlr.RuleContext, predIndex int) bool { + this := p + _ = this + + switch predIndex { + case 0: + return p.Precpred(p.GetParserRuleContext(), 20) + + case 1: + return p.Precpred(p.GetParserRuleContext(), 19) + + case 2: + return p.Precpred(p.GetParserRuleContext(), 18) + + case 3: + return p.Precpred(p.GetParserRuleContext(), 17) + + case 4: + return p.Precpred(p.GetParserRuleContext(), 16) + + case 5: + return p.Precpred(p.GetParserRuleContext(), 15) + + case 6: + return p.Precpred(p.GetParserRuleContext(), 14) + + case 7: + return p.Precpred(p.GetParserRuleContext(), 13) + + case 8: + return p.Precpred(p.GetParserRuleContext(), 6) + + case 9: + return p.Precpred(p.GetParserRuleContext(), 5) + + case 10: + return p.Precpred(p.GetParserRuleContext(), 9) + + case 11: + return p.Precpred(p.GetParserRuleContext(), 8) + + case 12: + return p.Precpred(p.GetParserRuleContext(), 7) + + case 13: + return p.Precpred(p.GetParserRuleContext(), 4) + + default: + panic("No predicate with index: " + fmt.Sprint(predIndex)) + } +} + From a5e794a84beedcfec37a60cd6d1dbe3b946ed062 Mon Sep 17 00:00:00 2001 From: Anton Chirikalov Date: Thu, 16 Jun 2022 22:12:17 +0300 Subject: [PATCH 02/31] Deleted unnecessary testing staff --- processor/stream_processor/test/Sql.g4 | 980 - .../stream_processor/test/parser/Sql.interp | 431 - .../stream_processor/test/parser/Sql.tokens | 186 - .../test/parser/SqlLexer.interp | 527 - .../test/parser/SqlLexer.tokens | 186 - .../test/parser/sql_base_listener.go | 618 - .../stream_processor/test/parser/sql_lexer.go | 1002 - .../test/parser/sql_lexer_test.go | 22 - .../test/parser/sql_listener.go | 598 - .../test/parser/sql_parser.go | 25479 ---------------- 10 files changed, 30029 deletions(-) delete mode 100644 processor/stream_processor/test/Sql.g4 delete mode 100644 processor/stream_processor/test/parser/Sql.interp delete mode 100644 processor/stream_processor/test/parser/Sql.tokens delete mode 100644 processor/stream_processor/test/parser/SqlLexer.interp delete mode 100644 processor/stream_processor/test/parser/SqlLexer.tokens delete mode 100644 processor/stream_processor/test/parser/sql_base_listener.go delete mode 100644 processor/stream_processor/test/parser/sql_lexer.go delete mode 100644 processor/stream_processor/test/parser/sql_lexer_test.go delete mode 100644 processor/stream_processor/test/parser/sql_listener.go delete mode 100644 processor/stream_processor/test/parser/sql_parser.go diff --git a/processor/stream_processor/test/Sql.g4 b/processor/stream_processor/test/Sql.g4 deleted file mode 100644 index 2022d75525a2..000000000000 --- a/processor/stream_processor/test/Sql.g4 +++ /dev/null @@ -1,980 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2014 by Bart Kiers - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - * - * Project : sqlite-parser; an ANTLR4 grammar for SQLite - * https://github.com/bkiers/sqlite-parser - * Developed by : Bart Kiers, bart@big-o.nl - */ -grammar Sql; - -parse - : ( sql_stmt_list | error )* EOF - ; - -error - : UNEXPECTED_CHAR - { - throw new RuntimeException("UNEXPECTED_CHAR=" + $UNEXPECTED_CHAR.text); - } - ; - -sql_stmt_list - : ';'* sql_stmt ( ';'+ sql_stmt )* ';'* - ; - -sql_stmt - : ( K_EXPLAIN ( K_QUERY K_PLAN )? )? ( alter_table_stmt - | analyze_stmt - | attach_stmt - | begin_stmt - | commit_stmt - | compound_select_stmt - | create_index_stmt - | create_table_stmt - | create_trigger_stmt - | create_view_stmt - | create_virtual_table_stmt - | delete_stmt - | delete_stmt_limited - | detach_stmt - | drop_index_stmt - | drop_table_stmt - | drop_trigger_stmt - | drop_view_stmt - | factored_select_stmt - | insert_stmt - | pragma_stmt - | reindex_stmt - | release_stmt - | rollback_stmt - | savepoint_stmt - | simple_select_stmt - | select_stmt - | update_stmt - | update_stmt_limited - | vacuum_stmt ) - ; - -alter_table_stmt - : K_ALTER K_TABLE K_ONLY? ( database_name '.' )? source_table_name - ( K_RENAME K_TO new_table_name - | alter_table_add - | alter_table_add_constraint - | K_ADD K_COLUMN? column_def - ) - K_ENABLE? (unknown)? - ; - -alter_table_add_constraint - : K_ADD K_CONSTRAINT any_name table_constraint - ; - -alter_table_add - : K_ADD table_constraint - ; - -analyze_stmt - : K_ANALYZE ( database_name | table_or_index_name | database_name '.' table_or_index_name )? - ; - -attach_stmt - : K_ATTACH K_DATABASE? expr K_AS database_name - ; - -begin_stmt - : K_BEGIN ( K_DEFERRED | K_IMMEDIATE | K_EXCLUSIVE )? ( K_TRANSACTION transaction_name? )? - ; - -commit_stmt - : ( K_COMMIT | K_END ) ( K_TRANSACTION transaction_name? )? - ; - -compound_select_stmt - : ( K_WITH K_RECURSIVE? common_table_expression ( ',' common_table_expression )* )? - select_core ( ( K_UNION K_ALL? | K_INTERSECT | K_EXCEPT ) select_core )+ - ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? - ( K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? )? - ; - -create_index_stmt - : K_CREATE K_UNIQUE? K_INDEX ( K_IF K_NOT K_EXISTS )? - ( database_name '.' )? index_name K_ON table_name '(' indexed_column ( ',' indexed_column )* ')' - ( K_WHERE expr )? - ; - -create_table_stmt - : K_CREATE ( K_TEMP | K_TEMPORARY )? K_TABLE ( K_IF K_NOT K_EXISTS )? - ( database_name '.' )? table_name - ( '(' column_def ( ',' table_constraint | ',' column_def )* ')' ( K_WITHOUT IDENTIFIER )? - | K_AS select_stmt - ) (unknown)? - ; - -create_trigger_stmt - : K_CREATE ( K_TEMP | K_TEMPORARY )? K_TRIGGER ( K_IF K_NOT K_EXISTS )? - ( database_name '.' )? trigger_name ( K_BEFORE | K_AFTER | K_INSTEAD K_OF )? - ( K_DELETE | K_INSERT | K_UPDATE ( K_OF column_name ( ',' column_name )* )? ) K_ON ( database_name '.' )? table_name - ( K_FOR K_EACH K_ROW )? ( K_WHEN expr )? - K_BEGIN ( ( update_stmt | insert_stmt | delete_stmt | select_stmt ) ';' )+ K_END - ; - -create_view_stmt - : K_CREATE ( K_TEMP | K_TEMPORARY )? K_VIEW ( K_IF K_NOT K_EXISTS )? - ( database_name '.' )? view_name K_AS select_stmt - ; - -create_virtual_table_stmt - : K_CREATE K_VIRTUAL K_TABLE ( K_IF K_NOT K_EXISTS )? - ( database_name '.' )? table_name - K_USING module_name ( '(' module_argument ( ',' module_argument )* ')' )? - ; - -delete_stmt - : with_clause? K_DELETE K_FROM qualified_table_name - ( K_WHERE expr )? - ; - -delete_stmt_limited - : with_clause? K_DELETE K_FROM qualified_table_name - ( K_WHERE expr )? - ( ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? - K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? - )? - ; - -detach_stmt - : K_DETACH K_DATABASE? database_name - ; - -drop_index_stmt - : K_DROP K_INDEX ( K_IF K_EXISTS )? ( database_name '.' )? index_name - ; - -drop_table_stmt - : K_DROP K_TABLE ( K_IF K_EXISTS )? ( database_name '.' )? table_name - ; - -drop_trigger_stmt - : K_DROP K_TRIGGER ( K_IF K_EXISTS )? ( database_name '.' )? trigger_name - ; - -drop_view_stmt - : K_DROP K_VIEW ( K_IF K_EXISTS )? ( database_name '.' )? view_name - ; - -factored_select_stmt - : ( K_WITH K_RECURSIVE? common_table_expression ( ',' common_table_expression )* )? - select_core ( compound_operator select_core )* - ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? - ( K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? )? - ; - -insert_stmt - : with_clause? ( K_INSERT - | K_REPLACE - | K_INSERT K_OR K_REPLACE - | K_INSERT K_OR K_ROLLBACK - | K_INSERT K_OR K_ABORT - | K_INSERT K_OR K_FAIL - | K_INSERT K_OR K_IGNORE ) K_INTO - ( database_name '.' )? table_name ( '(' column_name ( ',' column_name )* ')' )? - ( K_VALUES '(' expr ( ',' expr )* ')' ( ',' '(' expr ( ',' expr )* ')' )* - | select_stmt - | K_DEFAULT K_VALUES - ) - ; - -pragma_stmt - : K_PRAGMA ( database_name '.' )? pragma_name ( '=' pragma_value - | '(' pragma_value ')' )? - ; - -reindex_stmt - : K_REINDEX ( collation_name - | ( database_name '.' )? ( table_name | index_name ) - )? - ; - -release_stmt - : K_RELEASE K_SAVEPOINT? savepoint_name - ; - -rollback_stmt - : K_ROLLBACK ( K_TRANSACTION transaction_name? )? ( K_TO K_SAVEPOINT? savepoint_name )? - ; - -savepoint_stmt - : K_SAVEPOINT savepoint_name - ; - -simple_select_stmt - : ( K_WITH K_RECURSIVE? common_table_expression ( ',' common_table_expression )* )? - select_core ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? - ( K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? )? - ; - -select_stmt - : ( K_WITH K_RECURSIVE? common_table_expression ( ',' common_table_expression )* )? - select_or_values ( compound_operator select_or_values )* - ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? - ( K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? )? - ; - -select_or_values - : K_SELECT ( K_DISTINCT | K_ALL )? result_column ( ',' result_column )* - ( K_FROM ( table_or_subquery ( ',' table_or_subquery )* | join_clause ) )? - ( K_WHERE expr )? - ( K_GROUP K_BY expr ( ',' expr )* ( K_HAVING expr )? )? - | K_VALUES '(' expr ( ',' expr )* ')' ( ',' '(' expr ( ',' expr )* ')' )* - ; - -update_stmt - : with_clause? K_UPDATE ( K_OR K_ROLLBACK - | K_OR K_ABORT - | K_OR K_REPLACE - | K_OR K_FAIL - | K_OR K_IGNORE )? qualified_table_name - K_SET column_name '=' expr ( ',' column_name '=' expr )* ( K_WHERE expr )? - ; - -update_stmt_limited - : with_clause? K_UPDATE ( K_OR K_ROLLBACK - | K_OR K_ABORT - | K_OR K_REPLACE - | K_OR K_FAIL - | K_OR K_IGNORE )? qualified_table_name - K_SET column_name '=' expr ( ',' column_name '=' expr )* ( K_WHERE expr )? - ( ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? - K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? - )? - ; - -vacuum_stmt - : K_VACUUM - ; - -column_def - : column_name ( column_constraint | type_name )* - ; - -type_name - : name ( '(' signed_number (any_name)? ')' - | '(' signed_number (any_name)? ',' signed_number (any_name)? ')' )? - ; - -column_constraint - : ( K_CONSTRAINT name )? - ( column_constraint_primary_key - | column_constraint_foreign_key - | column_constraint_not_null - | column_constraint_null - | K_UNIQUE conflict_clause - | K_CHECK '(' expr ')' - | column_default - | K_COLLATE collation_name - ) - ; - -column_constraint_primary_key - : K_PRIMARY K_KEY ( K_ASC | K_DESC )? conflict_clause K_AUTOINCREMENT? - ; - -column_constraint_foreign_key - : foreign_key_clause - ; - -column_constraint_not_null - : K_NOT K_NULL conflict_clause - ; - -column_constraint_null - : K_NULL conflict_clause - ; - -column_default - : K_DEFAULT (column_default_value | '(' expr ')' | K_NEXTVAL '(' expr ')' | any_name ) ( '::' any_name+ )? - ; - -column_default_value - : ( signed_number | literal_value ) - ; - -conflict_clause - : ( K_ON K_CONFLICT ( K_ROLLBACK - | K_ABORT - | K_FAIL - | K_IGNORE - | K_REPLACE - ) - )? - ; - -/* - SQLite understands the following binary operators, in order from highest to - lowest precedence: - - || - * / % - + - - << >> & | - < <= > >= - = == != <> IS IS NOT IN LIKE GLOB MATCH REGEXP - AND - OR -*/ -expr - : literal_value - | BIND_PARAMETER - | ( ( database_name '.' )? table_name '.' )? column_name - | unary_operator expr - | expr '||' expr - | expr ( '*' | '/' | '%' ) expr - | expr ( '+' | '-' ) expr - | expr ( '<<' | '>>' | '&' | '|' ) expr - | expr ( '<' | '<=' | '>' | '>=' ) expr - | expr ( '=' | '==' | '!=' | '<>' | K_IS | K_IS K_NOT | K_IN | K_LIKE | K_GLOB | K_MATCH | K_REGEXP ) expr - | expr K_AND expr - | expr K_OR expr - | function_name '(' ( K_DISTINCT? expr ( ',' expr )* | '*' )? ')' - | '(' expr ')' - | K_CAST '(' expr K_AS type_name ')' - | expr K_COLLATE collation_name - | expr K_NOT? ( K_LIKE | K_GLOB | K_REGEXP | K_MATCH ) expr ( K_ESCAPE expr )? - | expr ( K_ISNULL | K_NOTNULL | K_NOT K_NULL ) - | expr K_IS K_NOT? expr - | expr K_NOT? K_BETWEEN expr K_AND expr - | expr K_NOT? K_IN ( '(' ( select_stmt - | expr ( ',' expr )* - )? - ')' - | ( database_name '.' )? table_name ) - | ( ( K_NOT )? K_EXISTS )? '(' select_stmt ')' - | K_CASE expr? ( K_WHEN expr K_THEN expr )+ ( K_ELSE expr )? K_END - | raise_function - ; - -foreign_key_clause - : K_REFERENCES ( database_name '.' )? foreign_table ( '(' fk_target_column_name ( ',' fk_target_column_name )* ')' )? - ( ( K_ON ( K_DELETE | K_UPDATE ) ( K_SET K_NULL - | K_SET K_DEFAULT - | K_CASCADE - | K_RESTRICT - | K_NO K_ACTION ) - | K_MATCH name - ) - )* - ( K_NOT? K_DEFERRABLE ( K_INITIALLY K_DEFERRED | K_INITIALLY K_IMMEDIATE )? K_ENABLE? )? - ; - -fk_target_column_name - : name - ; - -raise_function - : K_RAISE '(' ( K_IGNORE - | ( K_ROLLBACK | K_ABORT | K_FAIL ) ',' error_message ) - ')' - ; - -indexed_column - : column_name ( K_COLLATE collation_name )? ( K_ASC | K_DESC )? - ; - -table_constraint - : ( K_CONSTRAINT name )? - ( table_constraint_primary_key - | table_constraint_key - | table_constraint_unique - | K_CHECK '(' expr ')' - | table_constraint_foreign_key - ) - ; - -table_constraint_primary_key - : K_PRIMARY K_KEY '(' indexed_column ( ',' indexed_column )* ')' conflict_clause - ; - -table_constraint_foreign_key - : K_FOREIGN K_KEY '(' fk_origin_column_name ( ',' fk_origin_column_name )* ')' foreign_key_clause - ; - -table_constraint_unique - : K_UNIQUE K_KEY? name? '(' indexed_column ( ',' indexed_column )* ')' conflict_clause - ; - -table_constraint_key - : K_KEY name? '(' indexed_column ( ',' indexed_column )* ')' conflict_clause - ; - -fk_origin_column_name - : column_name - ; - -with_clause - : K_WITH K_RECURSIVE? cte_table_name K_AS '(' select_stmt ')' ( ',' cte_table_name K_AS '(' select_stmt ')' )* - ; - -qualified_table_name - : ( database_name '.' )? table_name ( K_INDEXED K_BY index_name - | K_NOT K_INDEXED )? - ; - -ordering_term - : expr ( K_COLLATE collation_name )? ( K_ASC | K_DESC )? - ; - -pragma_value - : signed_number - | name - | STRING_LITERAL - ; - -common_table_expression - : table_name ( '(' column_name ( ',' column_name )* ')' )? K_AS '(' select_stmt ')' - ; - -result_column - : '*' - | table_name '.' '*' - | expr ( K_AS? column_alias )? - ; - -table_or_subquery - : ( database_name '.' )? table_name ( K_AS? table_alias )? - ( K_INDEXED K_BY index_name - | K_NOT K_INDEXED )? - | '(' ( table_or_subquery ( ',' table_or_subquery )* - | join_clause ) - ')' ( K_AS? table_alias )? - | '(' select_stmt ')' ( K_AS? table_alias )? - ; - -join_clause - : table_or_subquery ( join_operator table_or_subquery join_constraint )* - ; - -join_operator - : ',' - | K_NATURAL? ( K_LEFT K_OUTER? | K_INNER | K_CROSS )? K_JOIN - ; - -join_constraint - : ( K_ON expr - | K_USING '(' column_name ( ',' column_name )* ')' )? - ; - -select_core - : K_SELECT ( K_DISTINCT | K_ALL )? result_column ( ',' result_column )* - ( K_FROM ( table_or_subquery ( ',' table_or_subquery )* | join_clause ) )? - ( K_WHERE expr )? - ( K_GROUP K_BY expr ( ',' expr )* ( K_HAVING expr )? )? - | K_VALUES '(' expr ( ',' expr )* ')' ( ',' '(' expr ( ',' expr )* ')' )* - ; - -compound_operator - : K_UNION - | K_UNION K_ALL - | K_INTERSECT - | K_EXCEPT - ; - -cte_table_name - : table_name ( '(' column_name ( ',' column_name )* ')' )? - ; - -signed_number - : ( ( '+' | '-' )? NUMERIC_LITERAL | '*' ) - ; - -literal_value - : NUMERIC_LITERAL - | STRING_LITERAL - | BLOB_LITERAL - | K_NULL - | K_CURRENT_TIME - | K_CURRENT_DATE - | K_CURRENT_TIMESTAMP - ; - -unary_operator - : '-' - | '+' - | '~' - | K_NOT - ; - -error_message - : STRING_LITERAL - ; - -module_argument // TODO check what exactly is permitted here - : expr - | column_def - ; - -column_alias - : IDENTIFIER - | STRING_LITERAL - ; - -keyword - : K_ABORT - | K_ACTION - | K_ADD - | K_AFTER - | K_ALL - | K_ALTER - | K_ANALYZE - | K_AND - | K_AS - | K_ASC - | K_ATTACH - | K_AUTOINCREMENT - | K_BEFORE - | K_BEGIN - | K_BETWEEN - | K_BY - | K_CASCADE - | K_CASE - | K_CAST - | K_CHECK - | K_COLLATE - | K_COLUMN - | K_COMMIT - | K_CONFLICT - | K_CONSTRAINT - | K_CREATE - | K_CROSS - | K_CURRENT_DATE - | K_CURRENT_TIME - | K_CURRENT_TIMESTAMP - | K_DATABASE - | K_DEFAULT - | K_DEFERRABLE - | K_DEFERRED - | K_DELETE - | K_DESC - | K_DETACH - | K_DISTINCT - | K_DROP - | K_EACH - | K_ELSE - | K_END - | K_ENABLE - | K_ESCAPE - | K_EXCEPT - | K_EXCLUSIVE - | K_EXISTS - | K_EXPLAIN - | K_FAIL - | K_FOR - | K_FOREIGN - | K_FROM - | K_FULL - | K_GLOB - | K_GROUP - | K_HAVING - | K_IF - | K_IGNORE - | K_IMMEDIATE - | K_IN - | K_INDEX - | K_INDEXED - | K_INITIALLY - | K_INNER - | K_INSERT - | K_INSTEAD - | K_INTERSECT - | K_INTO - | K_IS - | K_ISNULL - | K_JOIN - | K_KEY - | K_LEFT - | K_LIKE - | K_LIMIT - | K_MATCH - | K_NATURAL - | K_NO - | K_NOT - | K_NOTNULL - | K_NULL - | K_OF - | K_OFFSET - | K_ON - | K_OR - | K_ORDER - | K_OUTER - | K_PLAN - | K_PRAGMA - | K_PRIMARY - | K_QUERY - | K_RAISE - | K_RECURSIVE - | K_REFERENCES - | K_REGEXP - | K_REINDEX - | K_RELEASE - | K_RENAME - | K_REPLACE - | K_RESTRICT - | K_RIGHT - | K_ROLLBACK - | K_ROW - | K_SAVEPOINT - | K_SELECT - | K_SET - | K_TABLE - | K_TEMP - | K_TEMPORARY - | K_THEN - | K_TO - | K_TRANSACTION - | K_TRIGGER - | K_UNION - | K_UNIQUE - | K_UPDATE - | K_USING - | K_VACUUM - | K_VALUES - | K_VIEW - | K_VIRTUAL - | K_WHEN - | K_WHERE - | K_WITH - | K_WITHOUT - | K_NEXTVAL - ; - -// TODO check all names below - -//[a-zA-Z_0-9\t \-\[\]\=]+ -unknown - : .+ - ; - -name - : any_name - ; - -function_name - : any_name - ; - -database_name - : any_name - ; - -source_table_name - : any_name - ; - -table_name - : any_name - ; - -table_or_index_name - : any_name - ; - -new_table_name - : any_name - ; - -column_name - : any_name - ; - -collation_name - : any_name - ; - -foreign_table - : any_name - ; - -index_name - : any_name - ; - -trigger_name - : any_name - ; - -view_name - : any_name - ; - -module_name - : any_name - ; - -pragma_name - : any_name - ; - -savepoint_name - : any_name - ; - -table_alias - : any_name - ; - -transaction_name - : any_name - ; - -any_name - : IDENTIFIER - | keyword - | STRING_LITERAL - | '(' any_name ')' - ; - -SCOL : ';'; -DOT : '.'; -OPEN_PAR : '('; -CLOSE_PAR : ')'; -COMMA : ','; -ASSIGN : '='; -STAR : '*'; -PLUS : '+'; -MINUS : '-'; -TILDE : '~'; -PIPE2 : '||'; -DIV : '/'; -MOD : '%'; -LT2 : '<<'; -GT2 : '>>'; -AMP : '&'; -PIPE : '|'; -LT : '<'; -LT_EQ : '<='; -GT : '>'; -GT_EQ : '>='; -EQ : '=='; -NOT_EQ1 : '!='; -NOT_EQ2 : '<>'; - -// http://www.sqlite.org/lang_keywords.html -K_ABORT : A B O R T; -K_ACTION : A C T I O N; -K_ADD : A D D; -K_AFTER : A F T E R; -K_ALL : A L L; -K_ALTER : A L T E R; -K_ANALYZE : A N A L Y Z E; -K_AND : A N D; -K_AS : A S; -K_ASC : A S C; -K_ATTACH : A T T A C H; -K_AUTOINCREMENT : A U T O I N C R E M E N T; -K_BEFORE : B E F O R E; -K_BEGIN : B E G I N; -K_BETWEEN : B E T W E E N; -K_BY : B Y; -K_CASCADE : C A S C A D E; -K_CASE : C A S E; -K_CAST : C A S T; -K_CHECK : C H E C K; -K_COLLATE : C O L L A T E; -K_COLUMN : C O L U M N; -K_COMMIT : C O M M I T; -K_CONFLICT : C O N F L I C T; -K_CONSTRAINT : C O N S T R A I N T; -K_CREATE : C R E A T E; -K_CROSS : C R O S S; -K_CURRENT_DATE : C U R R E N T '_' D A T E; -K_CURRENT_TIME : C U R R E N T '_' T I M E; -K_CURRENT_TIMESTAMP : C U R R E N T '_' T I M E S T A M P; -K_DATABASE : D A T A B A S E; -K_DEFAULT : D E F A U L T; -K_DEFERRABLE : D E F E R R A B L E; -K_DEFERRED : D E F E R R E D; -K_DELETE : D E L E T E; -K_DESC : D E S C; -K_DETACH : D E T A C H; -K_DISTINCT : D I S T I N C T; -K_DROP : D R O P; -K_EACH : E A C H; -K_ELSE : E L S E; -K_END : E N D; -K_ENABLE : E N A B L E; -K_ESCAPE : E S C A P E; -K_EXCEPT : E X C E P T; -K_EXCLUSIVE : E X C L U S I V E; -K_EXISTS : E X I S T S; -K_EXPLAIN : E X P L A I N; -K_FAIL : F A I L; -K_FOR : F O R; -K_FOREIGN : F O R E I G N; -K_FROM : F R O M; -K_FULL : F U L L; -K_GLOB : G L O B; -K_GROUP : G R O U P; -K_HAVING : H A V I N G; -K_IF : I F; -K_IGNORE : I G N O R E; -K_IMMEDIATE : I M M E D I A T E; -K_IN : I N; -K_INDEX : I N D E X; -K_INDEXED : I N D E X E D; -K_INITIALLY : I N I T I A L L Y; -K_INNER : I N N E R; -K_INSERT : I N S E R T; -K_INSTEAD : I N S T E A D; -K_INTERSECT : I N T E R S E C T; -K_INTO : I N T O; -K_IS : I S; -K_ISNULL : I S N U L L; -K_JOIN : J O I N; -K_KEY : K E Y; -K_LEFT : L E F T; -K_LIKE : L I K E; -K_LIMIT : L I M I T; -K_MATCH : M A T C H; -K_NATURAL : N A T U R A L; -K_NEXTVAL : N E X T V A L; -K_NO : N O; -K_NOT : N O T; -K_NOTNULL : N O T N U L L; -K_NULL : N U L L; -K_OF : O F; -K_OFFSET : O F F S E T; -K_ON : O N; -K_ONLY : O N L Y; -K_OR : O R; -K_ORDER : O R D E R; -K_OUTER : O U T E R; -K_PLAN : P L A N; -K_PRAGMA : P R A G M A; -K_PRIMARY : P R I M A R Y; -K_QUERY : Q U E R Y; -K_RAISE : R A I S E; -K_RECURSIVE : R E C U R S I V E; -K_REFERENCES : R E F E R E N C E S; -K_REGEXP : R E G E X P; -K_REINDEX : R E I N D E X; -K_RELEASE : R E L E A S E; -K_RENAME : R E N A M E; -K_REPLACE : R E P L A C E; -K_RESTRICT : R E S T R I C T; -K_RIGHT : R I G H T; -K_ROLLBACK : R O L L B A C K; -K_ROW : R O W; -K_SAVEPOINT : S A V E P O I N T; -K_SELECT : S E L E C T; -K_SET : S E T; -K_TABLE : T A B L E; -K_TEMP : T E M P; -K_TEMPORARY : T E M P O R A R Y; -K_THEN : T H E N; -K_TO : T O; -K_TRANSACTION : T R A N S A C T I O N; -K_TRIGGER : T R I G G E R; -K_UNION : U N I O N; -K_UNIQUE : U N I Q U E; -K_UPDATE : U P D A T E; -K_USING : U S I N G; -K_VACUUM : V A C U U M; -K_VALUES : V A L U E S; -K_VIEW : V I E W; -K_VIRTUAL : V I R T U A L; -K_WHEN : W H E N; -K_WHERE : W H E R E; -K_WITH : W I T H; -K_WITHOUT : W I T H O U T; - -IDENTIFIER - : '"' (~'"' | '""')* '"' - | '`' (~'`' | '``')* '`' - | '[' ~']'* ']' - | [a-zA-Z_] [a-zA-Z_0-9]* // TODO check: needs more chars in set - ; - -NUMERIC_LITERAL - : DIGIT+ ( '.' DIGIT* )? ( E [-+]? DIGIT+ )? - | '.' DIGIT+ ( E [-+]? DIGIT+ )? - ; - -BIND_PARAMETER - : '?' DIGIT* - | [:@$] IDENTIFIER - ; - -STRING_LITERAL - : '\'' ( ~'\'' | '\'\'' )* '\'' - ; - -BLOB_LITERAL - : X STRING_LITERAL - ; - -SINGLE_LINE_COMMENT - : '--' ~[\r\n]* -> channel(HIDDEN) - ; - -MULTILINE_COMMENT - : '/*' .*? ( '*/' | EOF ) -> channel(HIDDEN) - ; - -SPACES - : [ \u000B\t\r\n] -> channel(HIDDEN) - ; - -UNEXPECTED_CHAR - : . - ; - -fragment DIGIT : [0-9]; - -fragment A : [aA]; -fragment B : [bB]; -fragment C : [cC]; -fragment D : [dD]; -fragment E : [eE]; -fragment F : [fF]; -fragment G : [gG]; -fragment H : [hH]; -fragment I : [iI]; -fragment J : [jJ]; -fragment K : [kK]; -fragment L : [lL]; -fragment M : [mM]; -fragment N : [nN]; -fragment O : [oO]; -fragment P : [pP]; -fragment Q : [qQ]; -fragment R : [rR]; -fragment S : [sS]; -fragment T : [tT]; -fragment U : [uU]; -fragment V : [vV]; -fragment W : [wW]; -fragment X : [xX]; -fragment Y : [yY]; -fragment Z : [zZ]; \ No newline at end of file diff --git a/processor/stream_processor/test/parser/Sql.interp b/processor/stream_processor/test/parser/Sql.interp deleted file mode 100644 index 2390b99ed92a..000000000000 --- a/processor/stream_processor/test/parser/Sql.interp +++ /dev/null @@ -1,431 +0,0 @@ -token literal names: -null -'::' -';' -'.' -'(' -')' -',' -'=' -'*' -'+' -'-' -'~' -'||' -'/' -'%' -'<<' -'>>' -'&' -'|' -'<' -'<=' -'>' -'>=' -'==' -'!=' -'<>' -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null - -token symbolic names: -null -null -SCOL -DOT -OPEN_PAR -CLOSE_PAR -COMMA -ASSIGN -STAR -PLUS -MINUS -TILDE -PIPE2 -DIV -MOD -LT2 -GT2 -AMP -PIPE -LT -LT_EQ -GT -GT_EQ -EQ -NOT_EQ1 -NOT_EQ2 -K_ABORT -K_ACTION -K_ADD -K_AFTER -K_ALL -K_ALTER -K_ANALYZE -K_AND -K_AS -K_ASC -K_ATTACH -K_AUTOINCREMENT -K_BEFORE -K_BEGIN -K_BETWEEN -K_BY -K_CASCADE -K_CASE -K_CAST -K_CHECK -K_COLLATE -K_COLUMN -K_COMMIT -K_CONFLICT -K_CONSTRAINT -K_CREATE -K_CROSS -K_CURRENT_DATE -K_CURRENT_TIME -K_CURRENT_TIMESTAMP -K_DATABASE -K_DEFAULT -K_DEFERRABLE -K_DEFERRED -K_DELETE -K_DESC -K_DETACH -K_DISTINCT -K_DROP -K_EACH -K_ELSE -K_END -K_ENABLE -K_ESCAPE -K_EXCEPT -K_EXCLUSIVE -K_EXISTS -K_EXPLAIN -K_FAIL -K_FOR -K_FOREIGN -K_FROM -K_FULL -K_GLOB -K_GROUP -K_HAVING -K_IF -K_IGNORE -K_IMMEDIATE -K_IN -K_INDEX -K_INDEXED -K_INITIALLY -K_INNER -K_INSERT -K_INSTEAD -K_INTERSECT -K_INTO -K_IS -K_ISNULL -K_JOIN -K_KEY -K_LEFT -K_LIKE -K_LIMIT -K_MATCH -K_NATURAL -K_NEXTVAL -K_NO -K_NOT -K_NOTNULL -K_NULL -K_OF -K_OFFSET -K_ON -K_ONLY -K_OR -K_ORDER -K_OUTER -K_PLAN -K_PRAGMA -K_PRIMARY -K_QUERY -K_RAISE -K_RECURSIVE -K_REFERENCES -K_REGEXP -K_REINDEX -K_RELEASE -K_RENAME -K_REPLACE -K_RESTRICT -K_RIGHT -K_ROLLBACK -K_ROW -K_SAVEPOINT -K_SELECT -K_SET -K_TABLE -K_TEMP -K_TEMPORARY -K_THEN -K_TO -K_TRANSACTION -K_TRIGGER -K_UNION -K_UNIQUE -K_UPDATE -K_USING -K_VACUUM -K_VALUES -K_VIEW -K_VIRTUAL -K_WHEN -K_WHERE -K_WITH -K_WITHOUT -IDENTIFIER -NUMERIC_LITERAL -BIND_PARAMETER -STRING_LITERAL -BLOB_LITERAL -SINGLE_LINE_COMMENT -MULTILINE_COMMENT -SPACES -UNEXPECTED_CHAR - -rule names: -parse -error -sql_stmt_list -sql_stmt -alter_table_stmt -alter_table_add_constraint -alter_table_add -analyze_stmt -attach_stmt -begin_stmt -commit_stmt -compound_select_stmt -create_index_stmt -create_table_stmt -create_trigger_stmt -create_view_stmt -create_virtual_table_stmt -delete_stmt -delete_stmt_limited -detach_stmt -drop_index_stmt -drop_table_stmt -drop_trigger_stmt -drop_view_stmt -factored_select_stmt -insert_stmt -pragma_stmt -reindex_stmt -release_stmt -rollback_stmt -savepoint_stmt -simple_select_stmt -select_stmt -select_or_values -update_stmt -update_stmt_limited -vacuum_stmt -column_def -type_name -column_constraint -column_constraint_primary_key -column_constraint_foreign_key -column_constraint_not_null -column_constraint_null -column_default -column_default_value -conflict_clause -expr -foreign_key_clause -fk_target_column_name -raise_function -indexed_column -table_constraint -table_constraint_primary_key -table_constraint_foreign_key -table_constraint_unique -table_constraint_key -fk_origin_column_name -with_clause -qualified_table_name -ordering_term -pragma_value -common_table_expression -result_column -table_or_subquery -join_clause -join_operator -join_constraint -select_core -compound_operator -cte_table_name -signed_number -literal_value -unary_operator -error_message -module_argument -column_alias -keyword -unknown -name -function_name -database_name -source_table_name -table_name -table_or_index_name -new_table_name -column_name -collation_name -foreign_table -index_name -trigger_name -view_name -module_name -pragma_name -savepoint_name -table_alias -transaction_name -any_name - - -atn: -[4, 1, 161, 1866, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 1, 0, 1, 0, 5, 0, 199, 8, 0, 10, 0, 12, 0, 202, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 5, 2, 210, 8, 2, 10, 2, 12, 2, 213, 9, 2, 1, 2, 1, 2, 4, 2, 217, 8, 2, 11, 2, 12, 2, 218, 1, 2, 5, 2, 222, 8, 2, 10, 2, 12, 2, 225, 9, 2, 1, 2, 5, 2, 228, 8, 2, 10, 2, 12, 2, 231, 9, 2, 1, 3, 1, 3, 1, 3, 3, 3, 236, 8, 3, 3, 3, 238, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 270, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 275, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 280, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 290, 8, 4, 1, 4, 3, 4, 293, 8, 4, 1, 4, 3, 4, 296, 8, 4, 1, 4, 3, 4, 299, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 316, 8, 7, 1, 8, 1, 8, 3, 8, 320, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 3, 9, 328, 8, 9, 1, 9, 1, 9, 3, 9, 332, 8, 9, 3, 9, 334, 8, 9, 1, 10, 1, 10, 1, 10, 3, 10, 339, 8, 10, 3, 10, 341, 8, 10, 1, 11, 1, 11, 3, 11, 345, 8, 11, 1, 11, 1, 11, 1, 11, 5, 11, 350, 8, 11, 10, 11, 12, 11, 353, 9, 11, 3, 11, 355, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 360, 8, 11, 1, 11, 1, 11, 3, 11, 364, 8, 11, 1, 11, 4, 11, 367, 8, 11, 11, 11, 12, 11, 368, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 376, 8, 11, 10, 11, 12, 11, 379, 9, 11, 3, 11, 381, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 387, 8, 11, 3, 11, 389, 8, 11, 1, 12, 1, 12, 3, 12, 393, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 399, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 404, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 413, 8, 12, 10, 12, 12, 12, 416, 9, 12, 1, 12, 1, 12, 1, 12, 3, 12, 421, 8, 12, 1, 13, 1, 13, 3, 13, 425, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 431, 8, 13, 1, 13, 1, 13, 1, 13, 3, 13, 436, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 445, 8, 13, 10, 13, 12, 13, 448, 9, 13, 1, 13, 1, 13, 1, 13, 3, 13, 453, 8, 13, 1, 13, 1, 13, 3, 13, 457, 8, 13, 1, 13, 3, 13, 460, 8, 13, 1, 14, 1, 14, 3, 14, 464, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 470, 8, 14, 1, 14, 1, 14, 1, 14, 3, 14, 475, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 482, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 491, 8, 14, 10, 14, 12, 14, 494, 9, 14, 3, 14, 496, 8, 14, 3, 14, 498, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 504, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 510, 8, 14, 1, 14, 1, 14, 3, 14, 514, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 521, 8, 14, 1, 14, 1, 14, 4, 14, 525, 8, 14, 11, 14, 12, 14, 526, 1, 14, 1, 14, 1, 15, 1, 15, 3, 15, 533, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 539, 8, 15, 1, 15, 1, 15, 1, 15, 3, 15, 544, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 556, 8, 16, 1, 16, 1, 16, 1, 16, 3, 16, 561, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 570, 8, 16, 10, 16, 12, 16, 573, 9, 16, 1, 16, 1, 16, 3, 16, 577, 8, 16, 1, 17, 3, 17, 580, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 587, 8, 17, 1, 18, 3, 18, 590, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 597, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 604, 8, 18, 10, 18, 12, 18, 607, 9, 18, 3, 18, 609, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 615, 8, 18, 3, 18, 617, 8, 18, 1, 19, 1, 19, 3, 19, 621, 8, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 629, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 634, 8, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 642, 8, 21, 1, 21, 1, 21, 1, 21, 3, 21, 647, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 655, 8, 22, 1, 22, 1, 22, 1, 22, 3, 22, 660, 8, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 668, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 673, 8, 23, 1, 23, 1, 23, 1, 24, 1, 24, 3, 24, 679, 8, 24, 1, 24, 1, 24, 1, 24, 5, 24, 684, 8, 24, 10, 24, 12, 24, 687, 9, 24, 3, 24, 689, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 695, 8, 24, 10, 24, 12, 24, 698, 9, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 705, 8, 24, 10, 24, 12, 24, 708, 9, 24, 3, 24, 710, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 716, 8, 24, 3, 24, 718, 8, 24, 1, 25, 3, 25, 721, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 740, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 746, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 753, 8, 25, 10, 25, 12, 25, 756, 9, 25, 1, 25, 1, 25, 3, 25, 760, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 767, 8, 25, 10, 25, 12, 25, 770, 9, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 778, 8, 25, 10, 25, 12, 25, 781, 9, 25, 1, 25, 1, 25, 5, 25, 785, 8, 25, 10, 25, 12, 25, 788, 9, 25, 1, 25, 1, 25, 1, 25, 3, 25, 793, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 799, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 808, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 815, 8, 27, 1, 27, 1, 27, 3, 27, 819, 8, 27, 3, 27, 821, 8, 27, 1, 28, 1, 28, 3, 28, 825, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 3, 29, 832, 8, 29, 3, 29, 834, 8, 29, 1, 29, 1, 29, 3, 29, 838, 8, 29, 1, 29, 3, 29, 841, 8, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 3, 31, 848, 8, 31, 1, 31, 1, 31, 1, 31, 5, 31, 853, 8, 31, 10, 31, 12, 31, 856, 9, 31, 3, 31, 858, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 866, 8, 31, 10, 31, 12, 31, 869, 9, 31, 3, 31, 871, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 877, 8, 31, 3, 31, 879, 8, 31, 1, 32, 1, 32, 3, 32, 883, 8, 32, 1, 32, 1, 32, 1, 32, 5, 32, 888, 8, 32, 10, 32, 12, 32, 891, 9, 32, 3, 32, 893, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 899, 8, 32, 10, 32, 12, 32, 902, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 909, 8, 32, 10, 32, 12, 32, 912, 9, 32, 3, 32, 914, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 920, 8, 32, 3, 32, 922, 8, 32, 1, 33, 1, 33, 3, 33, 926, 8, 33, 1, 33, 1, 33, 1, 33, 5, 33, 931, 8, 33, 10, 33, 12, 33, 934, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 940, 8, 33, 10, 33, 12, 33, 943, 9, 33, 1, 33, 3, 33, 946, 8, 33, 3, 33, 948, 8, 33, 1, 33, 1, 33, 3, 33, 952, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 959, 8, 33, 10, 33, 12, 33, 962, 9, 33, 1, 33, 1, 33, 3, 33, 966, 8, 33, 3, 33, 968, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 975, 8, 33, 10, 33, 12, 33, 978, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 986, 8, 33, 10, 33, 12, 33, 989, 9, 33, 1, 33, 1, 33, 5, 33, 993, 8, 33, 10, 33, 12, 33, 996, 9, 33, 3, 33, 998, 8, 33, 1, 34, 3, 34, 1001, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 1014, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 1026, 8, 34, 10, 34, 12, 34, 1029, 9, 34, 1, 34, 1, 34, 3, 34, 1033, 8, 34, 1, 35, 3, 35, 1036, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1049, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 1061, 8, 35, 10, 35, 12, 35, 1064, 9, 35, 1, 35, 1, 35, 3, 35, 1068, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 1075, 8, 35, 10, 35, 12, 35, 1078, 9, 35, 3, 35, 1080, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1086, 8, 35, 3, 35, 1088, 8, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 5, 37, 1095, 8, 37, 10, 37, 12, 37, 1098, 9, 37, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1104, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1111, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1116, 8, 38, 1, 38, 1, 38, 3, 38, 1120, 8, 38, 1, 39, 1, 39, 3, 39, 1124, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1140, 8, 39, 1, 40, 1, 40, 1, 40, 3, 40, 1145, 8, 40, 1, 40, 1, 40, 3, 40, 1149, 8, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1172, 8, 44, 1, 44, 1, 44, 4, 44, 1176, 8, 44, 11, 44, 12, 44, 1177, 3, 44, 1180, 8, 44, 1, 45, 1, 45, 3, 45, 1184, 8, 45, 1, 46, 1, 46, 1, 46, 3, 46, 1189, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1197, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1202, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1211, 8, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1216, 8, 47, 10, 47, 12, 47, 1219, 9, 47, 1, 47, 3, 47, 1222, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1238, 8, 47, 1, 47, 3, 47, 1241, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1249, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 4, 47, 1256, 8, 47, 11, 47, 12, 47, 1257, 1, 47, 1, 47, 3, 47, 1262, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1267, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1297, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1309, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1314, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1326, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1332, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1339, 8, 47, 1, 47, 1, 47, 3, 47, 1343, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1351, 8, 47, 10, 47, 12, 47, 1354, 9, 47, 3, 47, 1356, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1362, 8, 47, 1, 47, 3, 47, 1365, 8, 47, 5, 47, 1367, 8, 47, 10, 47, 12, 47, 1370, 9, 47, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1376, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 5, 48, 1383, 8, 48, 10, 48, 12, 48, 1386, 9, 48, 1, 48, 1, 48, 3, 48, 1390, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1402, 8, 48, 1, 48, 1, 48, 3, 48, 1406, 8, 48, 5, 48, 1408, 8, 48, 10, 48, 12, 48, 1411, 9, 48, 1, 48, 3, 48, 1414, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1421, 8, 48, 1, 48, 3, 48, 1424, 8, 48, 3, 48, 1426, 8, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1436, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 3, 51, 1443, 8, 51, 1, 51, 3, 51, 1446, 8, 51, 1, 52, 1, 52, 3, 52, 1450, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1461, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1469, 8, 53, 10, 53, 12, 53, 1472, 9, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1483, 8, 54, 10, 54, 12, 54, 1486, 9, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 3, 55, 1493, 8, 55, 1, 55, 3, 55, 1496, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1502, 8, 55, 10, 55, 12, 55, 1505, 9, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 3, 56, 1512, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 5, 56, 1518, 8, 56, 10, 56, 12, 56, 1521, 9, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 3, 58, 1530, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 1544, 8, 58, 10, 58, 12, 58, 1547, 9, 58, 1, 59, 1, 59, 1, 59, 3, 59, 1552, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1560, 8, 59, 1, 60, 1, 60, 1, 60, 3, 60, 1565, 8, 60, 1, 60, 3, 60, 1568, 8, 60, 1, 61, 1, 61, 1, 61, 3, 61, 1573, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 1580, 8, 62, 10, 62, 12, 62, 1583, 9, 62, 1, 62, 1, 62, 3, 62, 1587, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1601, 8, 63, 1, 63, 3, 63, 1604, 8, 63, 3, 63, 1606, 8, 63, 1, 64, 1, 64, 1, 64, 3, 64, 1611, 8, 64, 1, 64, 1, 64, 3, 64, 1615, 8, 64, 1, 64, 3, 64, 1618, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1625, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 1631, 8, 64, 10, 64, 12, 64, 1634, 9, 64, 1, 64, 3, 64, 1637, 8, 64, 1, 64, 1, 64, 3, 64, 1641, 8, 64, 1, 64, 3, 64, 1644, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1650, 8, 64, 1, 64, 3, 64, 1653, 8, 64, 3, 64, 1655, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 1662, 8, 65, 10, 65, 12, 65, 1665, 9, 65, 1, 66, 1, 66, 3, 66, 1669, 8, 66, 1, 66, 1, 66, 3, 66, 1673, 8, 66, 1, 66, 1, 66, 3, 66, 1677, 8, 66, 1, 66, 3, 66, 1680, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 1689, 8, 67, 10, 67, 12, 67, 1692, 9, 67, 1, 67, 1, 67, 3, 67, 1696, 8, 67, 1, 68, 1, 68, 3, 68, 1700, 8, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1705, 8, 68, 10, 68, 12, 68, 1708, 9, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1714, 8, 68, 10, 68, 12, 68, 1717, 9, 68, 1, 68, 3, 68, 1720, 8, 68, 3, 68, 1722, 8, 68, 1, 68, 1, 68, 3, 68, 1726, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1733, 8, 68, 10, 68, 12, 68, 1736, 9, 68, 1, 68, 1, 68, 3, 68, 1740, 8, 68, 3, 68, 1742, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1749, 8, 68, 10, 68, 12, 68, 1752, 9, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1760, 8, 68, 10, 68, 12, 68, 1763, 9, 68, 1, 68, 1, 68, 5, 68, 1767, 8, 68, 10, 68, 12, 68, 1770, 9, 68, 3, 68, 1772, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1779, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 1786, 8, 70, 10, 70, 12, 70, 1789, 9, 70, 1, 70, 1, 70, 3, 70, 1793, 8, 70, 1, 71, 3, 71, 1796, 8, 71, 1, 71, 1, 71, 3, 71, 1800, 8, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 75, 1, 75, 3, 75, 1810, 8, 75, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 4, 78, 1817, 8, 78, 11, 78, 12, 78, 1818, 1, 79, 1, 79, 1, 80, 1, 80, 1, 81, 1, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, 95, 1, 95, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 1864, 8, 97, 1, 97, 0, 1, 94, 98, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 0, 18, 3, 0, 59, 59, 71, 71, 84, 84, 2, 0, 48, 48, 67, 67, 2, 0, 6, 6, 109, 109, 1, 0, 135, 136, 2, 0, 30, 30, 63, 63, 2, 0, 35, 35, 61, 61, 5, 0, 26, 26, 74, 74, 83, 83, 126, 126, 129, 129, 2, 0, 8, 8, 13, 14, 1, 0, 9, 10, 1, 0, 15, 18, 1, 0, 19, 22, 4, 0, 79, 79, 99, 99, 101, 101, 122, 122, 2, 0, 60, 60, 143, 143, 3, 0, 26, 26, 74, 74, 129, 129, 4, 0, 53, 55, 107, 107, 154, 154, 156, 157, 2, 0, 9, 11, 105, 105, 2, 0, 153, 153, 156, 156, 2, 0, 26, 110, 112, 152, 2141, 0, 200, 1, 0, 0, 0, 2, 205, 1, 0, 0, 0, 4, 211, 1, 0, 0, 0, 6, 237, 1, 0, 0, 0, 8, 271, 1, 0, 0, 0, 10, 300, 1, 0, 0, 0, 12, 305, 1, 0, 0, 0, 14, 308, 1, 0, 0, 0, 16, 317, 1, 0, 0, 0, 18, 325, 1, 0, 0, 0, 20, 335, 1, 0, 0, 0, 22, 354, 1, 0, 0, 0, 24, 390, 1, 0, 0, 0, 26, 422, 1, 0, 0, 0, 28, 461, 1, 0, 0, 0, 30, 530, 1, 0, 0, 0, 32, 549, 1, 0, 0, 0, 34, 579, 1, 0, 0, 0, 36, 589, 1, 0, 0, 0, 38, 618, 1, 0, 0, 0, 40, 624, 1, 0, 0, 0, 42, 637, 1, 0, 0, 0, 44, 650, 1, 0, 0, 0, 46, 663, 1, 0, 0, 0, 48, 688, 1, 0, 0, 0, 50, 720, 1, 0, 0, 0, 52, 794, 1, 0, 0, 0, 54, 809, 1, 0, 0, 0, 56, 822, 1, 0, 0, 0, 58, 828, 1, 0, 0, 0, 60, 842, 1, 0, 0, 0, 62, 857, 1, 0, 0, 0, 64, 892, 1, 0, 0, 0, 66, 997, 1, 0, 0, 0, 68, 1000, 1, 0, 0, 0, 70, 1035, 1, 0, 0, 0, 72, 1089, 1, 0, 0, 0, 74, 1091, 1, 0, 0, 0, 76, 1099, 1, 0, 0, 0, 78, 1123, 1, 0, 0, 0, 80, 1141, 1, 0, 0, 0, 82, 1150, 1, 0, 0, 0, 84, 1152, 1, 0, 0, 0, 86, 1156, 1, 0, 0, 0, 88, 1159, 1, 0, 0, 0, 90, 1183, 1, 0, 0, 0, 92, 1188, 1, 0, 0, 0, 94, 1266, 1, 0, 0, 0, 96, 1371, 1, 0, 0, 0, 98, 1427, 1, 0, 0, 0, 100, 1429, 1, 0, 0, 0, 102, 1439, 1, 0, 0, 0, 104, 1449, 1, 0, 0, 0, 106, 1462, 1, 0, 0, 0, 108, 1476, 1, 0, 0, 0, 110, 1490, 1, 0, 0, 0, 112, 1509, 1, 0, 0, 0, 114, 1525, 1, 0, 0, 0, 116, 1527, 1, 0, 0, 0, 118, 1551, 1, 0, 0, 0, 120, 1561, 1, 0, 0, 0, 122, 1572, 1, 0, 0, 0, 124, 1574, 1, 0, 0, 0, 126, 1605, 1, 0, 0, 0, 128, 1654, 1, 0, 0, 0, 130, 1656, 1, 0, 0, 0, 132, 1679, 1, 0, 0, 0, 134, 1695, 1, 0, 0, 0, 136, 1771, 1, 0, 0, 0, 138, 1778, 1, 0, 0, 0, 140, 1780, 1, 0, 0, 0, 142, 1799, 1, 0, 0, 0, 144, 1801, 1, 0, 0, 0, 146, 1803, 1, 0, 0, 0, 148, 1805, 1, 0, 0, 0, 150, 1809, 1, 0, 0, 0, 152, 1811, 1, 0, 0, 0, 154, 1813, 1, 0, 0, 0, 156, 1816, 1, 0, 0, 0, 158, 1820, 1, 0, 0, 0, 160, 1822, 1, 0, 0, 0, 162, 1824, 1, 0, 0, 0, 164, 1826, 1, 0, 0, 0, 166, 1828, 1, 0, 0, 0, 168, 1830, 1, 0, 0, 0, 170, 1832, 1, 0, 0, 0, 172, 1834, 1, 0, 0, 0, 174, 1836, 1, 0, 0, 0, 176, 1838, 1, 0, 0, 0, 178, 1840, 1, 0, 0, 0, 180, 1842, 1, 0, 0, 0, 182, 1844, 1, 0, 0, 0, 184, 1846, 1, 0, 0, 0, 186, 1848, 1, 0, 0, 0, 188, 1850, 1, 0, 0, 0, 190, 1852, 1, 0, 0, 0, 192, 1854, 1, 0, 0, 0, 194, 1863, 1, 0, 0, 0, 196, 199, 3, 4, 2, 0, 197, 199, 3, 2, 1, 0, 198, 196, 1, 0, 0, 0, 198, 197, 1, 0, 0, 0, 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 203, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 204, 5, 0, 0, 1, 204, 1, 1, 0, 0, 0, 205, 206, 5, 161, 0, 0, 206, 207, 6, 1, -1, 0, 207, 3, 1, 0, 0, 0, 208, 210, 5, 2, 0, 0, 209, 208, 1, 0, 0, 0, 210, 213, 1, 0, 0, 0, 211, 209, 1, 0, 0, 0, 211, 212, 1, 0, 0, 0, 212, 214, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 214, 223, 3, 6, 3, 0, 215, 217, 5, 2, 0, 0, 216, 215, 1, 0, 0, 0, 217, 218, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 222, 3, 6, 3, 0, 221, 216, 1, 0, 0, 0, 222, 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 229, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 228, 5, 2, 0, 0, 227, 226, 1, 0, 0, 0, 228, 231, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 5, 1, 0, 0, 0, 231, 229, 1, 0, 0, 0, 232, 235, 5, 73, 0, 0, 233, 234, 5, 118, 0, 0, 234, 236, 5, 115, 0, 0, 235, 233, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 238, 1, 0, 0, 0, 237, 232, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 269, 1, 0, 0, 0, 239, 270, 3, 8, 4, 0, 240, 270, 3, 14, 7, 0, 241, 270, 3, 16, 8, 0, 242, 270, 3, 18, 9, 0, 243, 270, 3, 20, 10, 0, 244, 270, 3, 22, 11, 0, 245, 270, 3, 24, 12, 0, 246, 270, 3, 26, 13, 0, 247, 270, 3, 28, 14, 0, 248, 270, 3, 30, 15, 0, 249, 270, 3, 32, 16, 0, 250, 270, 3, 34, 17, 0, 251, 270, 3, 36, 18, 0, 252, 270, 3, 38, 19, 0, 253, 270, 3, 40, 20, 0, 254, 270, 3, 42, 21, 0, 255, 270, 3, 44, 22, 0, 256, 270, 3, 46, 23, 0, 257, 270, 3, 48, 24, 0, 258, 270, 3, 50, 25, 0, 259, 270, 3, 52, 26, 0, 260, 270, 3, 54, 27, 0, 261, 270, 3, 56, 28, 0, 262, 270, 3, 58, 29, 0, 263, 270, 3, 60, 30, 0, 264, 270, 3, 62, 31, 0, 265, 270, 3, 64, 32, 0, 266, 270, 3, 68, 34, 0, 267, 270, 3, 70, 35, 0, 268, 270, 3, 72, 36, 0, 269, 239, 1, 0, 0, 0, 269, 240, 1, 0, 0, 0, 269, 241, 1, 0, 0, 0, 269, 242, 1, 0, 0, 0, 269, 243, 1, 0, 0, 0, 269, 244, 1, 0, 0, 0, 269, 245, 1, 0, 0, 0, 269, 246, 1, 0, 0, 0, 269, 247, 1, 0, 0, 0, 269, 248, 1, 0, 0, 0, 269, 249, 1, 0, 0, 0, 269, 250, 1, 0, 0, 0, 269, 251, 1, 0, 0, 0, 269, 252, 1, 0, 0, 0, 269, 253, 1, 0, 0, 0, 269, 254, 1, 0, 0, 0, 269, 255, 1, 0, 0, 0, 269, 256, 1, 0, 0, 0, 269, 257, 1, 0, 0, 0, 269, 258, 1, 0, 0, 0, 269, 259, 1, 0, 0, 0, 269, 260, 1, 0, 0, 0, 269, 261, 1, 0, 0, 0, 269, 262, 1, 0, 0, 0, 269, 263, 1, 0, 0, 0, 269, 264, 1, 0, 0, 0, 269, 265, 1, 0, 0, 0, 269, 266, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 269, 268, 1, 0, 0, 0, 270, 7, 1, 0, 0, 0, 271, 272, 5, 31, 0, 0, 272, 274, 5, 134, 0, 0, 273, 275, 5, 111, 0, 0, 274, 273, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 279, 1, 0, 0, 0, 276, 277, 3, 162, 81, 0, 277, 278, 5, 3, 0, 0, 278, 280, 1, 0, 0, 0, 279, 276, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 292, 3, 164, 82, 0, 282, 283, 5, 125, 0, 0, 283, 284, 5, 138, 0, 0, 284, 293, 3, 170, 85, 0, 285, 293, 3, 12, 6, 0, 286, 293, 3, 10, 5, 0, 287, 289, 5, 28, 0, 0, 288, 290, 5, 47, 0, 0, 289, 288, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 291, 1, 0, 0, 0, 291, 293, 3, 74, 37, 0, 292, 282, 1, 0, 0, 0, 292, 285, 1, 0, 0, 0, 292, 286, 1, 0, 0, 0, 292, 287, 1, 0, 0, 0, 293, 295, 1, 0, 0, 0, 294, 296, 5, 68, 0, 0, 295, 294, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 298, 1, 0, 0, 0, 297, 299, 3, 156, 78, 0, 298, 297, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, 299, 9, 1, 0, 0, 0, 300, 301, 5, 28, 0, 0, 301, 302, 5, 50, 0, 0, 302, 303, 3, 194, 97, 0, 303, 304, 3, 104, 52, 0, 304, 11, 1, 0, 0, 0, 305, 306, 5, 28, 0, 0, 306, 307, 3, 104, 52, 0, 307, 13, 1, 0, 0, 0, 308, 315, 5, 32, 0, 0, 309, 316, 3, 162, 81, 0, 310, 316, 3, 168, 84, 0, 311, 312, 3, 162, 81, 0, 312, 313, 5, 3, 0, 0, 313, 314, 3, 168, 84, 0, 314, 316, 1, 0, 0, 0, 315, 309, 1, 0, 0, 0, 315, 310, 1, 0, 0, 0, 315, 311, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 15, 1, 0, 0, 0, 317, 319, 5, 36, 0, 0, 318, 320, 5, 56, 0, 0, 319, 318, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 322, 3, 94, 47, 0, 322, 323, 5, 34, 0, 0, 323, 324, 3, 162, 81, 0, 324, 17, 1, 0, 0, 0, 325, 327, 5, 39, 0, 0, 326, 328, 7, 0, 0, 0, 327, 326, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 333, 1, 0, 0, 0, 329, 331, 5, 139, 0, 0, 330, 332, 3, 192, 96, 0, 331, 330, 1, 0, 0, 0, 331, 332, 1, 0, 0, 0, 332, 334, 1, 0, 0, 0, 333, 329, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 19, 1, 0, 0, 0, 335, 340, 7, 1, 0, 0, 336, 338, 5, 139, 0, 0, 337, 339, 3, 192, 96, 0, 338, 337, 1, 0, 0, 0, 338, 339, 1, 0, 0, 0, 339, 341, 1, 0, 0, 0, 340, 336, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 21, 1, 0, 0, 0, 342, 344, 5, 151, 0, 0, 343, 345, 5, 120, 0, 0, 344, 343, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 351, 3, 124, 62, 0, 347, 348, 5, 6, 0, 0, 348, 350, 3, 124, 62, 0, 349, 347, 1, 0, 0, 0, 350, 353, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 355, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 354, 342, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 366, 3, 136, 68, 0, 357, 359, 5, 141, 0, 0, 358, 360, 5, 30, 0, 0, 359, 358, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 364, 1, 0, 0, 0, 361, 364, 5, 92, 0, 0, 362, 364, 5, 70, 0, 0, 363, 357, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 363, 362, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 367, 3, 136, 68, 0, 366, 363, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 380, 1, 0, 0, 0, 370, 371, 5, 113, 0, 0, 371, 372, 5, 41, 0, 0, 372, 377, 3, 120, 60, 0, 373, 374, 5, 6, 0, 0, 374, 376, 3, 120, 60, 0, 375, 373, 1, 0, 0, 0, 376, 379, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 381, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 380, 370, 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 388, 1, 0, 0, 0, 382, 383, 5, 100, 0, 0, 383, 386, 3, 94, 47, 0, 384, 385, 7, 2, 0, 0, 385, 387, 3, 94, 47, 0, 386, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 389, 1, 0, 0, 0, 388, 382, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 23, 1, 0, 0, 0, 390, 392, 5, 51, 0, 0, 391, 393, 5, 142, 0, 0, 392, 391, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 394, 1, 0, 0, 0, 394, 398, 5, 86, 0, 0, 395, 396, 5, 82, 0, 0, 396, 397, 5, 105, 0, 0, 397, 399, 5, 72, 0, 0, 398, 395, 1, 0, 0, 0, 398, 399, 1, 0, 0, 0, 399, 403, 1, 0, 0, 0, 400, 401, 3, 162, 81, 0, 401, 402, 5, 3, 0, 0, 402, 404, 1, 0, 0, 0, 403, 400, 1, 0, 0, 0, 403, 404, 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, 406, 3, 178, 89, 0, 406, 407, 5, 110, 0, 0, 407, 408, 3, 166, 83, 0, 408, 409, 5, 4, 0, 0, 409, 414, 3, 102, 51, 0, 410, 411, 5, 6, 0, 0, 411, 413, 3, 102, 51, 0, 412, 410, 1, 0, 0, 0, 413, 416, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 417, 1, 0, 0, 0, 416, 414, 1, 0, 0, 0, 417, 420, 5, 5, 0, 0, 418, 419, 5, 150, 0, 0, 419, 421, 3, 94, 47, 0, 420, 418, 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 421, 25, 1, 0, 0, 0, 422, 424, 5, 51, 0, 0, 423, 425, 7, 3, 0, 0, 424, 423, 1, 0, 0, 0, 424, 425, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 430, 5, 134, 0, 0, 427, 428, 5, 82, 0, 0, 428, 429, 5, 105, 0, 0, 429, 431, 5, 72, 0, 0, 430, 427, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 435, 1, 0, 0, 0, 432, 433, 3, 162, 81, 0, 433, 434, 5, 3, 0, 0, 434, 436, 1, 0, 0, 0, 435, 432, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 437, 1, 0, 0, 0, 437, 456, 3, 166, 83, 0, 438, 439, 5, 4, 0, 0, 439, 446, 3, 74, 37, 0, 440, 441, 5, 6, 0, 0, 441, 445, 3, 104, 52, 0, 442, 443, 5, 6, 0, 0, 443, 445, 3, 74, 37, 0, 444, 440, 1, 0, 0, 0, 444, 442, 1, 0, 0, 0, 445, 448, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 449, 1, 0, 0, 0, 448, 446, 1, 0, 0, 0, 449, 452, 5, 5, 0, 0, 450, 451, 5, 152, 0, 0, 451, 453, 5, 153, 0, 0, 452, 450, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 457, 1, 0, 0, 0, 454, 455, 5, 34, 0, 0, 455, 457, 3, 64, 32, 0, 456, 438, 1, 0, 0, 0, 456, 454, 1, 0, 0, 0, 457, 459, 1, 0, 0, 0, 458, 460, 3, 156, 78, 0, 459, 458, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 27, 1, 0, 0, 0, 461, 463, 5, 51, 0, 0, 462, 464, 7, 3, 0, 0, 463, 462, 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 469, 5, 140, 0, 0, 466, 467, 5, 82, 0, 0, 467, 468, 5, 105, 0, 0, 468, 470, 5, 72, 0, 0, 469, 466, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 474, 1, 0, 0, 0, 471, 472, 3, 162, 81, 0, 472, 473, 5, 3, 0, 0, 473, 475, 1, 0, 0, 0, 474, 471, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 481, 3, 180, 90, 0, 477, 482, 5, 38, 0, 0, 478, 482, 5, 29, 0, 0, 479, 480, 5, 91, 0, 0, 480, 482, 5, 108, 0, 0, 481, 477, 1, 0, 0, 0, 481, 478, 1, 0, 0, 0, 481, 479, 1, 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 497, 1, 0, 0, 0, 483, 498, 5, 60, 0, 0, 484, 498, 5, 90, 0, 0, 485, 495, 5, 143, 0, 0, 486, 487, 5, 108, 0, 0, 487, 492, 3, 172, 86, 0, 488, 489, 5, 6, 0, 0, 489, 491, 3, 172, 86, 0, 490, 488, 1, 0, 0, 0, 491, 494, 1, 0, 0, 0, 492, 490, 1, 0, 0, 0, 492, 493, 1, 0, 0, 0, 493, 496, 1, 0, 0, 0, 494, 492, 1, 0, 0, 0, 495, 486, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 498, 1, 0, 0, 0, 497, 483, 1, 0, 0, 0, 497, 484, 1, 0, 0, 0, 497, 485, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 503, 5, 110, 0, 0, 500, 501, 3, 162, 81, 0, 501, 502, 5, 3, 0, 0, 502, 504, 1, 0, 0, 0, 503, 500, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 509, 3, 166, 83, 0, 506, 507, 5, 75, 0, 0, 507, 508, 5, 65, 0, 0, 508, 510, 5, 130, 0, 0, 509, 506, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 513, 1, 0, 0, 0, 511, 512, 5, 149, 0, 0, 512, 514, 3, 94, 47, 0, 513, 511, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 524, 5, 39, 0, 0, 516, 521, 3, 68, 34, 0, 517, 521, 3, 50, 25, 0, 518, 521, 3, 34, 17, 0, 519, 521, 3, 64, 32, 0, 520, 516, 1, 0, 0, 0, 520, 517, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 520, 519, 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 523, 5, 2, 0, 0, 523, 525, 1, 0, 0, 0, 524, 520, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 524, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 529, 5, 67, 0, 0, 529, 29, 1, 0, 0, 0, 530, 532, 5, 51, 0, 0, 531, 533, 7, 3, 0, 0, 532, 531, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534, 538, 5, 147, 0, 0, 535, 536, 5, 82, 0, 0, 536, 537, 5, 105, 0, 0, 537, 539, 5, 72, 0, 0, 538, 535, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 543, 1, 0, 0, 0, 540, 541, 3, 162, 81, 0, 541, 542, 5, 3, 0, 0, 542, 544, 1, 0, 0, 0, 543, 540, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 3, 182, 91, 0, 546, 547, 5, 34, 0, 0, 547, 548, 3, 64, 32, 0, 548, 31, 1, 0, 0, 0, 549, 550, 5, 51, 0, 0, 550, 551, 5, 148, 0, 0, 551, 555, 5, 134, 0, 0, 552, 553, 5, 82, 0, 0, 553, 554, 5, 105, 0, 0, 554, 556, 5, 72, 0, 0, 555, 552, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 560, 1, 0, 0, 0, 557, 558, 3, 162, 81, 0, 558, 559, 5, 3, 0, 0, 559, 561, 1, 0, 0, 0, 560, 557, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 3, 166, 83, 0, 563, 564, 5, 144, 0, 0, 564, 576, 3, 184, 92, 0, 565, 566, 5, 4, 0, 0, 566, 571, 3, 150, 75, 0, 567, 568, 5, 6, 0, 0, 568, 570, 3, 150, 75, 0, 569, 567, 1, 0, 0, 0, 570, 573, 1, 0, 0, 0, 571, 569, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 574, 1, 0, 0, 0, 573, 571, 1, 0, 0, 0, 574, 575, 5, 5, 0, 0, 575, 577, 1, 0, 0, 0, 576, 565, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 33, 1, 0, 0, 0, 578, 580, 3, 116, 58, 0, 579, 578, 1, 0, 0, 0, 579, 580, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 5, 60, 0, 0, 582, 583, 5, 77, 0, 0, 583, 586, 3, 118, 59, 0, 584, 585, 5, 150, 0, 0, 585, 587, 3, 94, 47, 0, 586, 584, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 35, 1, 0, 0, 0, 588, 590, 3, 116, 58, 0, 589, 588, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 592, 5, 60, 0, 0, 592, 593, 5, 77, 0, 0, 593, 596, 3, 118, 59, 0, 594, 595, 5, 150, 0, 0, 595, 597, 3, 94, 47, 0, 596, 594, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 616, 1, 0, 0, 0, 598, 599, 5, 113, 0, 0, 599, 600, 5, 41, 0, 0, 600, 605, 3, 120, 60, 0, 601, 602, 5, 6, 0, 0, 602, 604, 3, 120, 60, 0, 603, 601, 1, 0, 0, 0, 604, 607, 1, 0, 0, 0, 605, 603, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 609, 1, 0, 0, 0, 607, 605, 1, 0, 0, 0, 608, 598, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 611, 5, 100, 0, 0, 611, 614, 3, 94, 47, 0, 612, 613, 7, 2, 0, 0, 613, 615, 3, 94, 47, 0, 614, 612, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 617, 1, 0, 0, 0, 616, 608, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 37, 1, 0, 0, 0, 618, 620, 5, 62, 0, 0, 619, 621, 5, 56, 0, 0, 620, 619, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 622, 1, 0, 0, 0, 622, 623, 3, 162, 81, 0, 623, 39, 1, 0, 0, 0, 624, 625, 5, 64, 0, 0, 625, 628, 5, 86, 0, 0, 626, 627, 5, 82, 0, 0, 627, 629, 5, 72, 0, 0, 628, 626, 1, 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 633, 1, 0, 0, 0, 630, 631, 3, 162, 81, 0, 631, 632, 5, 3, 0, 0, 632, 634, 1, 0, 0, 0, 633, 630, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 636, 3, 178, 89, 0, 636, 41, 1, 0, 0, 0, 637, 638, 5, 64, 0, 0, 638, 641, 5, 134, 0, 0, 639, 640, 5, 82, 0, 0, 640, 642, 5, 72, 0, 0, 641, 639, 1, 0, 0, 0, 641, 642, 1, 0, 0, 0, 642, 646, 1, 0, 0, 0, 643, 644, 3, 162, 81, 0, 644, 645, 5, 3, 0, 0, 645, 647, 1, 0, 0, 0, 646, 643, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 648, 1, 0, 0, 0, 648, 649, 3, 166, 83, 0, 649, 43, 1, 0, 0, 0, 650, 651, 5, 64, 0, 0, 651, 654, 5, 140, 0, 0, 652, 653, 5, 82, 0, 0, 653, 655, 5, 72, 0, 0, 654, 652, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 659, 1, 0, 0, 0, 656, 657, 3, 162, 81, 0, 657, 658, 5, 3, 0, 0, 658, 660, 1, 0, 0, 0, 659, 656, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 661, 1, 0, 0, 0, 661, 662, 3, 180, 90, 0, 662, 45, 1, 0, 0, 0, 663, 664, 5, 64, 0, 0, 664, 667, 5, 147, 0, 0, 665, 666, 5, 82, 0, 0, 666, 668, 5, 72, 0, 0, 667, 665, 1, 0, 0, 0, 667, 668, 1, 0, 0, 0, 668, 672, 1, 0, 0, 0, 669, 670, 3, 162, 81, 0, 670, 671, 5, 3, 0, 0, 671, 673, 1, 0, 0, 0, 672, 669, 1, 0, 0, 0, 672, 673, 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 675, 3, 182, 91, 0, 675, 47, 1, 0, 0, 0, 676, 678, 5, 151, 0, 0, 677, 679, 5, 120, 0, 0, 678, 677, 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 685, 3, 124, 62, 0, 681, 682, 5, 6, 0, 0, 682, 684, 3, 124, 62, 0, 683, 681, 1, 0, 0, 0, 684, 687, 1, 0, 0, 0, 685, 683, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, 689, 1, 0, 0, 0, 687, 685, 1, 0, 0, 0, 688, 676, 1, 0, 0, 0, 688, 689, 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 696, 3, 136, 68, 0, 691, 692, 3, 138, 69, 0, 692, 693, 3, 136, 68, 0, 693, 695, 1, 0, 0, 0, 694, 691, 1, 0, 0, 0, 695, 698, 1, 0, 0, 0, 696, 694, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 709, 1, 0, 0, 0, 698, 696, 1, 0, 0, 0, 699, 700, 5, 113, 0, 0, 700, 701, 5, 41, 0, 0, 701, 706, 3, 120, 60, 0, 702, 703, 5, 6, 0, 0, 703, 705, 3, 120, 60, 0, 704, 702, 1, 0, 0, 0, 705, 708, 1, 0, 0, 0, 706, 704, 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 710, 1, 0, 0, 0, 708, 706, 1, 0, 0, 0, 709, 699, 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 710, 717, 1, 0, 0, 0, 711, 712, 5, 100, 0, 0, 712, 715, 3, 94, 47, 0, 713, 714, 7, 2, 0, 0, 714, 716, 3, 94, 47, 0, 715, 713, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 718, 1, 0, 0, 0, 717, 711, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 49, 1, 0, 0, 0, 719, 721, 3, 116, 58, 0, 720, 719, 1, 0, 0, 0, 720, 721, 1, 0, 0, 0, 721, 739, 1, 0, 0, 0, 722, 740, 5, 90, 0, 0, 723, 740, 5, 126, 0, 0, 724, 725, 5, 90, 0, 0, 725, 726, 5, 112, 0, 0, 726, 740, 5, 126, 0, 0, 727, 728, 5, 90, 0, 0, 728, 729, 5, 112, 0, 0, 729, 740, 5, 129, 0, 0, 730, 731, 5, 90, 0, 0, 731, 732, 5, 112, 0, 0, 732, 740, 5, 26, 0, 0, 733, 734, 5, 90, 0, 0, 734, 735, 5, 112, 0, 0, 735, 740, 5, 74, 0, 0, 736, 737, 5, 90, 0, 0, 737, 738, 5, 112, 0, 0, 738, 740, 5, 83, 0, 0, 739, 722, 1, 0, 0, 0, 739, 723, 1, 0, 0, 0, 739, 724, 1, 0, 0, 0, 739, 727, 1, 0, 0, 0, 739, 730, 1, 0, 0, 0, 739, 733, 1, 0, 0, 0, 739, 736, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 745, 5, 93, 0, 0, 742, 743, 3, 162, 81, 0, 743, 744, 5, 3, 0, 0, 744, 746, 1, 0, 0, 0, 745, 742, 1, 0, 0, 0, 745, 746, 1, 0, 0, 0, 746, 747, 1, 0, 0, 0, 747, 759, 3, 166, 83, 0, 748, 749, 5, 4, 0, 0, 749, 754, 3, 172, 86, 0, 750, 751, 5, 6, 0, 0, 751, 753, 3, 172, 86, 0, 752, 750, 1, 0, 0, 0, 753, 756, 1, 0, 0, 0, 754, 752, 1, 0, 0, 0, 754, 755, 1, 0, 0, 0, 755, 757, 1, 0, 0, 0, 756, 754, 1, 0, 0, 0, 757, 758, 5, 5, 0, 0, 758, 760, 1, 0, 0, 0, 759, 748, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 792, 1, 0, 0, 0, 761, 762, 5, 146, 0, 0, 762, 763, 5, 4, 0, 0, 763, 768, 3, 94, 47, 0, 764, 765, 5, 6, 0, 0, 765, 767, 3, 94, 47, 0, 766, 764, 1, 0, 0, 0, 767, 770, 1, 0, 0, 0, 768, 766, 1, 0, 0, 0, 768, 769, 1, 0, 0, 0, 769, 771, 1, 0, 0, 0, 770, 768, 1, 0, 0, 0, 771, 786, 5, 5, 0, 0, 772, 773, 5, 6, 0, 0, 773, 774, 5, 4, 0, 0, 774, 779, 3, 94, 47, 0, 775, 776, 5, 6, 0, 0, 776, 778, 3, 94, 47, 0, 777, 775, 1, 0, 0, 0, 778, 781, 1, 0, 0, 0, 779, 777, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 782, 1, 0, 0, 0, 781, 779, 1, 0, 0, 0, 782, 783, 5, 5, 0, 0, 783, 785, 1, 0, 0, 0, 784, 772, 1, 0, 0, 0, 785, 788, 1, 0, 0, 0, 786, 784, 1, 0, 0, 0, 786, 787, 1, 0, 0, 0, 787, 793, 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, 789, 793, 3, 64, 32, 0, 790, 791, 5, 57, 0, 0, 791, 793, 5, 146, 0, 0, 792, 761, 1, 0, 0, 0, 792, 789, 1, 0, 0, 0, 792, 790, 1, 0, 0, 0, 793, 51, 1, 0, 0, 0, 794, 798, 5, 116, 0, 0, 795, 796, 3, 162, 81, 0, 796, 797, 5, 3, 0, 0, 797, 799, 1, 0, 0, 0, 798, 795, 1, 0, 0, 0, 798, 799, 1, 0, 0, 0, 799, 800, 1, 0, 0, 0, 800, 807, 3, 186, 93, 0, 801, 802, 5, 7, 0, 0, 802, 808, 3, 122, 61, 0, 803, 804, 5, 4, 0, 0, 804, 805, 3, 122, 61, 0, 805, 806, 5, 5, 0, 0, 806, 808, 1, 0, 0, 0, 807, 801, 1, 0, 0, 0, 807, 803, 1, 0, 0, 0, 807, 808, 1, 0, 0, 0, 808, 53, 1, 0, 0, 0, 809, 820, 5, 123, 0, 0, 810, 821, 3, 174, 87, 0, 811, 812, 3, 162, 81, 0, 812, 813, 5, 3, 0, 0, 813, 815, 1, 0, 0, 0, 814, 811, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 818, 1, 0, 0, 0, 816, 819, 3, 166, 83, 0, 817, 819, 3, 178, 89, 0, 818, 816, 1, 0, 0, 0, 818, 817, 1, 0, 0, 0, 819, 821, 1, 0, 0, 0, 820, 810, 1, 0, 0, 0, 820, 814, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 55, 1, 0, 0, 0, 822, 824, 5, 124, 0, 0, 823, 825, 5, 131, 0, 0, 824, 823, 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 826, 1, 0, 0, 0, 826, 827, 3, 188, 94, 0, 827, 57, 1, 0, 0, 0, 828, 833, 5, 129, 0, 0, 829, 831, 5, 139, 0, 0, 830, 832, 3, 192, 96, 0, 831, 830, 1, 0, 0, 0, 831, 832, 1, 0, 0, 0, 832, 834, 1, 0, 0, 0, 833, 829, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, 840, 1, 0, 0, 0, 835, 837, 5, 138, 0, 0, 836, 838, 5, 131, 0, 0, 837, 836, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 841, 3, 188, 94, 0, 840, 835, 1, 0, 0, 0, 840, 841, 1, 0, 0, 0, 841, 59, 1, 0, 0, 0, 842, 843, 5, 131, 0, 0, 843, 844, 3, 188, 94, 0, 844, 61, 1, 0, 0, 0, 845, 847, 5, 151, 0, 0, 846, 848, 5, 120, 0, 0, 847, 846, 1, 0, 0, 0, 847, 848, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 854, 3, 124, 62, 0, 850, 851, 5, 6, 0, 0, 851, 853, 3, 124, 62, 0, 852, 850, 1, 0, 0, 0, 853, 856, 1, 0, 0, 0, 854, 852, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 858, 1, 0, 0, 0, 856, 854, 1, 0, 0, 0, 857, 845, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 870, 3, 136, 68, 0, 860, 861, 5, 113, 0, 0, 861, 862, 5, 41, 0, 0, 862, 867, 3, 120, 60, 0, 863, 864, 5, 6, 0, 0, 864, 866, 3, 120, 60, 0, 865, 863, 1, 0, 0, 0, 866, 869, 1, 0, 0, 0, 867, 865, 1, 0, 0, 0, 867, 868, 1, 0, 0, 0, 868, 871, 1, 0, 0, 0, 869, 867, 1, 0, 0, 0, 870, 860, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871, 878, 1, 0, 0, 0, 872, 873, 5, 100, 0, 0, 873, 876, 3, 94, 47, 0, 874, 875, 7, 2, 0, 0, 875, 877, 3, 94, 47, 0, 876, 874, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 879, 1, 0, 0, 0, 878, 872, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 63, 1, 0, 0, 0, 880, 882, 5, 151, 0, 0, 881, 883, 5, 120, 0, 0, 882, 881, 1, 0, 0, 0, 882, 883, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 889, 3, 124, 62, 0, 885, 886, 5, 6, 0, 0, 886, 888, 3, 124, 62, 0, 887, 885, 1, 0, 0, 0, 888, 891, 1, 0, 0, 0, 889, 887, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 893, 1, 0, 0, 0, 891, 889, 1, 0, 0, 0, 892, 880, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 900, 3, 66, 33, 0, 895, 896, 3, 138, 69, 0, 896, 897, 3, 66, 33, 0, 897, 899, 1, 0, 0, 0, 898, 895, 1, 0, 0, 0, 899, 902, 1, 0, 0, 0, 900, 898, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 913, 1, 0, 0, 0, 902, 900, 1, 0, 0, 0, 903, 904, 5, 113, 0, 0, 904, 905, 5, 41, 0, 0, 905, 910, 3, 120, 60, 0, 906, 907, 5, 6, 0, 0, 907, 909, 3, 120, 60, 0, 908, 906, 1, 0, 0, 0, 909, 912, 1, 0, 0, 0, 910, 908, 1, 0, 0, 0, 910, 911, 1, 0, 0, 0, 911, 914, 1, 0, 0, 0, 912, 910, 1, 0, 0, 0, 913, 903, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 921, 1, 0, 0, 0, 915, 916, 5, 100, 0, 0, 916, 919, 3, 94, 47, 0, 917, 918, 7, 2, 0, 0, 918, 920, 3, 94, 47, 0, 919, 917, 1, 0, 0, 0, 919, 920, 1, 0, 0, 0, 920, 922, 1, 0, 0, 0, 921, 915, 1, 0, 0, 0, 921, 922, 1, 0, 0, 0, 922, 65, 1, 0, 0, 0, 923, 925, 5, 132, 0, 0, 924, 926, 7, 4, 0, 0, 925, 924, 1, 0, 0, 0, 925, 926, 1, 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 932, 3, 126, 63, 0, 928, 929, 5, 6, 0, 0, 929, 931, 3, 126, 63, 0, 930, 928, 1, 0, 0, 0, 931, 934, 1, 0, 0, 0, 932, 930, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 947, 1, 0, 0, 0, 934, 932, 1, 0, 0, 0, 935, 945, 5, 77, 0, 0, 936, 941, 3, 128, 64, 0, 937, 938, 5, 6, 0, 0, 938, 940, 3, 128, 64, 0, 939, 937, 1, 0, 0, 0, 940, 943, 1, 0, 0, 0, 941, 939, 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 946, 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 944, 946, 3, 130, 65, 0, 945, 936, 1, 0, 0, 0, 945, 944, 1, 0, 0, 0, 946, 948, 1, 0, 0, 0, 947, 935, 1, 0, 0, 0, 947, 948, 1, 0, 0, 0, 948, 951, 1, 0, 0, 0, 949, 950, 5, 150, 0, 0, 950, 952, 3, 94, 47, 0, 951, 949, 1, 0, 0, 0, 951, 952, 1, 0, 0, 0, 952, 967, 1, 0, 0, 0, 953, 954, 5, 80, 0, 0, 954, 955, 5, 41, 0, 0, 955, 960, 3, 94, 47, 0, 956, 957, 5, 6, 0, 0, 957, 959, 3, 94, 47, 0, 958, 956, 1, 0, 0, 0, 959, 962, 1, 0, 0, 0, 960, 958, 1, 0, 0, 0, 960, 961, 1, 0, 0, 0, 961, 965, 1, 0, 0, 0, 962, 960, 1, 0, 0, 0, 963, 964, 5, 81, 0, 0, 964, 966, 3, 94, 47, 0, 965, 963, 1, 0, 0, 0, 965, 966, 1, 0, 0, 0, 966, 968, 1, 0, 0, 0, 967, 953, 1, 0, 0, 0, 967, 968, 1, 0, 0, 0, 968, 998, 1, 0, 0, 0, 969, 970, 5, 146, 0, 0, 970, 971, 5, 4, 0, 0, 971, 976, 3, 94, 47, 0, 972, 973, 5, 6, 0, 0, 973, 975, 3, 94, 47, 0, 974, 972, 1, 0, 0, 0, 975, 978, 1, 0, 0, 0, 976, 974, 1, 0, 0, 0, 976, 977, 1, 0, 0, 0, 977, 979, 1, 0, 0, 0, 978, 976, 1, 0, 0, 0, 979, 994, 5, 5, 0, 0, 980, 981, 5, 6, 0, 0, 981, 982, 5, 4, 0, 0, 982, 987, 3, 94, 47, 0, 983, 984, 5, 6, 0, 0, 984, 986, 3, 94, 47, 0, 985, 983, 1, 0, 0, 0, 986, 989, 1, 0, 0, 0, 987, 985, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 990, 1, 0, 0, 0, 989, 987, 1, 0, 0, 0, 990, 991, 5, 5, 0, 0, 991, 993, 1, 0, 0, 0, 992, 980, 1, 0, 0, 0, 993, 996, 1, 0, 0, 0, 994, 992, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 998, 1, 0, 0, 0, 996, 994, 1, 0, 0, 0, 997, 923, 1, 0, 0, 0, 997, 969, 1, 0, 0, 0, 998, 67, 1, 0, 0, 0, 999, 1001, 3, 116, 58, 0, 1000, 999, 1, 0, 0, 0, 1000, 1001, 1, 0, 0, 0, 1001, 1002, 1, 0, 0, 0, 1002, 1013, 5, 143, 0, 0, 1003, 1004, 5, 112, 0, 0, 1004, 1014, 5, 129, 0, 0, 1005, 1006, 5, 112, 0, 0, 1006, 1014, 5, 26, 0, 0, 1007, 1008, 5, 112, 0, 0, 1008, 1014, 5, 126, 0, 0, 1009, 1010, 5, 112, 0, 0, 1010, 1014, 5, 74, 0, 0, 1011, 1012, 5, 112, 0, 0, 1012, 1014, 5, 83, 0, 0, 1013, 1003, 1, 0, 0, 0, 1013, 1005, 1, 0, 0, 0, 1013, 1007, 1, 0, 0, 0, 1013, 1009, 1, 0, 0, 0, 1013, 1011, 1, 0, 0, 0, 1013, 1014, 1, 0, 0, 0, 1014, 1015, 1, 0, 0, 0, 1015, 1016, 3, 118, 59, 0, 1016, 1017, 5, 133, 0, 0, 1017, 1018, 3, 172, 86, 0, 1018, 1019, 5, 7, 0, 0, 1019, 1027, 3, 94, 47, 0, 1020, 1021, 5, 6, 0, 0, 1021, 1022, 3, 172, 86, 0, 1022, 1023, 5, 7, 0, 0, 1023, 1024, 3, 94, 47, 0, 1024, 1026, 1, 0, 0, 0, 1025, 1020, 1, 0, 0, 0, 1026, 1029, 1, 0, 0, 0, 1027, 1025, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 1032, 1, 0, 0, 0, 1029, 1027, 1, 0, 0, 0, 1030, 1031, 5, 150, 0, 0, 1031, 1033, 3, 94, 47, 0, 1032, 1030, 1, 0, 0, 0, 1032, 1033, 1, 0, 0, 0, 1033, 69, 1, 0, 0, 0, 1034, 1036, 3, 116, 58, 0, 1035, 1034, 1, 0, 0, 0, 1035, 1036, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1048, 5, 143, 0, 0, 1038, 1039, 5, 112, 0, 0, 1039, 1049, 5, 129, 0, 0, 1040, 1041, 5, 112, 0, 0, 1041, 1049, 5, 26, 0, 0, 1042, 1043, 5, 112, 0, 0, 1043, 1049, 5, 126, 0, 0, 1044, 1045, 5, 112, 0, 0, 1045, 1049, 5, 74, 0, 0, 1046, 1047, 5, 112, 0, 0, 1047, 1049, 5, 83, 0, 0, 1048, 1038, 1, 0, 0, 0, 1048, 1040, 1, 0, 0, 0, 1048, 1042, 1, 0, 0, 0, 1048, 1044, 1, 0, 0, 0, 1048, 1046, 1, 0, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 1050, 1, 0, 0, 0, 1050, 1051, 3, 118, 59, 0, 1051, 1052, 5, 133, 0, 0, 1052, 1053, 3, 172, 86, 0, 1053, 1054, 5, 7, 0, 0, 1054, 1062, 3, 94, 47, 0, 1055, 1056, 5, 6, 0, 0, 1056, 1057, 3, 172, 86, 0, 1057, 1058, 5, 7, 0, 0, 1058, 1059, 3, 94, 47, 0, 1059, 1061, 1, 0, 0, 0, 1060, 1055, 1, 0, 0, 0, 1061, 1064, 1, 0, 0, 0, 1062, 1060, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1067, 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1065, 1066, 5, 150, 0, 0, 1066, 1068, 3, 94, 47, 0, 1067, 1065, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1087, 1, 0, 0, 0, 1069, 1070, 5, 113, 0, 0, 1070, 1071, 5, 41, 0, 0, 1071, 1076, 3, 120, 60, 0, 1072, 1073, 5, 6, 0, 0, 1073, 1075, 3, 120, 60, 0, 1074, 1072, 1, 0, 0, 0, 1075, 1078, 1, 0, 0, 0, 1076, 1074, 1, 0, 0, 0, 1076, 1077, 1, 0, 0, 0, 1077, 1080, 1, 0, 0, 0, 1078, 1076, 1, 0, 0, 0, 1079, 1069, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 1082, 5, 100, 0, 0, 1082, 1085, 3, 94, 47, 0, 1083, 1084, 7, 2, 0, 0, 1084, 1086, 3, 94, 47, 0, 1085, 1083, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 1088, 1, 0, 0, 0, 1087, 1079, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, 71, 1, 0, 0, 0, 1089, 1090, 5, 145, 0, 0, 1090, 73, 1, 0, 0, 0, 1091, 1096, 3, 172, 86, 0, 1092, 1095, 3, 78, 39, 0, 1093, 1095, 3, 76, 38, 0, 1094, 1092, 1, 0, 0, 0, 1094, 1093, 1, 0, 0, 0, 1095, 1098, 1, 0, 0, 0, 1096, 1094, 1, 0, 0, 0, 1096, 1097, 1, 0, 0, 0, 1097, 75, 1, 0, 0, 0, 1098, 1096, 1, 0, 0, 0, 1099, 1119, 3, 158, 79, 0, 1100, 1101, 5, 4, 0, 0, 1101, 1103, 3, 142, 71, 0, 1102, 1104, 3, 194, 97, 0, 1103, 1102, 1, 0, 0, 0, 1103, 1104, 1, 0, 0, 0, 1104, 1105, 1, 0, 0, 0, 1105, 1106, 5, 5, 0, 0, 1106, 1120, 1, 0, 0, 0, 1107, 1108, 5, 4, 0, 0, 1108, 1110, 3, 142, 71, 0, 1109, 1111, 3, 194, 97, 0, 1110, 1109, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, 1112, 1, 0, 0, 0, 1112, 1113, 5, 6, 0, 0, 1113, 1115, 3, 142, 71, 0, 1114, 1116, 3, 194, 97, 0, 1115, 1114, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1117, 1, 0, 0, 0, 1117, 1118, 5, 5, 0, 0, 1118, 1120, 1, 0, 0, 0, 1119, 1100, 1, 0, 0, 0, 1119, 1107, 1, 0, 0, 0, 1119, 1120, 1, 0, 0, 0, 1120, 77, 1, 0, 0, 0, 1121, 1122, 5, 50, 0, 0, 1122, 1124, 3, 158, 79, 0, 1123, 1121, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1139, 1, 0, 0, 0, 1125, 1140, 3, 80, 40, 0, 1126, 1140, 3, 82, 41, 0, 1127, 1140, 3, 84, 42, 0, 1128, 1140, 3, 86, 43, 0, 1129, 1130, 5, 142, 0, 0, 1130, 1140, 3, 92, 46, 0, 1131, 1132, 5, 45, 0, 0, 1132, 1133, 5, 4, 0, 0, 1133, 1134, 3, 94, 47, 0, 1134, 1135, 5, 5, 0, 0, 1135, 1140, 1, 0, 0, 0, 1136, 1140, 3, 88, 44, 0, 1137, 1138, 5, 46, 0, 0, 1138, 1140, 3, 174, 87, 0, 1139, 1125, 1, 0, 0, 0, 1139, 1126, 1, 0, 0, 0, 1139, 1127, 1, 0, 0, 0, 1139, 1128, 1, 0, 0, 0, 1139, 1129, 1, 0, 0, 0, 1139, 1131, 1, 0, 0, 0, 1139, 1136, 1, 0, 0, 0, 1139, 1137, 1, 0, 0, 0, 1140, 79, 1, 0, 0, 0, 1141, 1142, 5, 117, 0, 0, 1142, 1144, 5, 97, 0, 0, 1143, 1145, 7, 5, 0, 0, 1144, 1143, 1, 0, 0, 0, 1144, 1145, 1, 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1148, 3, 92, 46, 0, 1147, 1149, 5, 37, 0, 0, 1148, 1147, 1, 0, 0, 0, 1148, 1149, 1, 0, 0, 0, 1149, 81, 1, 0, 0, 0, 1150, 1151, 3, 96, 48, 0, 1151, 83, 1, 0, 0, 0, 1152, 1153, 5, 105, 0, 0, 1153, 1154, 5, 107, 0, 0, 1154, 1155, 3, 92, 46, 0, 1155, 85, 1, 0, 0, 0, 1156, 1157, 5, 107, 0, 0, 1157, 1158, 3, 92, 46, 0, 1158, 87, 1, 0, 0, 0, 1159, 1171, 5, 57, 0, 0, 1160, 1172, 3, 90, 45, 0, 1161, 1162, 5, 4, 0, 0, 1162, 1163, 3, 94, 47, 0, 1163, 1164, 5, 5, 0, 0, 1164, 1172, 1, 0, 0, 0, 1165, 1166, 5, 103, 0, 0, 1166, 1167, 5, 4, 0, 0, 1167, 1168, 3, 94, 47, 0, 1168, 1169, 5, 5, 0, 0, 1169, 1172, 1, 0, 0, 0, 1170, 1172, 3, 194, 97, 0, 1171, 1160, 1, 0, 0, 0, 1171, 1161, 1, 0, 0, 0, 1171, 1165, 1, 0, 0, 0, 1171, 1170, 1, 0, 0, 0, 1172, 1179, 1, 0, 0, 0, 1173, 1175, 5, 1, 0, 0, 1174, 1176, 3, 194, 97, 0, 1175, 1174, 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 1175, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 1180, 1, 0, 0, 0, 1179, 1173, 1, 0, 0, 0, 1179, 1180, 1, 0, 0, 0, 1180, 89, 1, 0, 0, 0, 1181, 1184, 3, 142, 71, 0, 1182, 1184, 3, 144, 72, 0, 1183, 1181, 1, 0, 0, 0, 1183, 1182, 1, 0, 0, 0, 1184, 91, 1, 0, 0, 0, 1185, 1186, 5, 110, 0, 0, 1186, 1187, 5, 49, 0, 0, 1187, 1189, 7, 6, 0, 0, 1188, 1185, 1, 0, 0, 0, 1188, 1189, 1, 0, 0, 0, 1189, 93, 1, 0, 0, 0, 1190, 1191, 6, 47, -1, 0, 1191, 1267, 3, 144, 72, 0, 1192, 1267, 5, 155, 0, 0, 1193, 1194, 3, 162, 81, 0, 1194, 1195, 5, 3, 0, 0, 1195, 1197, 1, 0, 0, 0, 1196, 1193, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1198, 1, 0, 0, 0, 1198, 1199, 3, 166, 83, 0, 1199, 1200, 5, 3, 0, 0, 1200, 1202, 1, 0, 0, 0, 1201, 1196, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1202, 1203, 1, 0, 0, 0, 1203, 1267, 3, 172, 86, 0, 1204, 1205, 3, 146, 73, 0, 1205, 1206, 3, 94, 47, 21, 1206, 1267, 1, 0, 0, 0, 1207, 1208, 3, 160, 80, 0, 1208, 1221, 5, 4, 0, 0, 1209, 1211, 5, 63, 0, 0, 1210, 1209, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1217, 3, 94, 47, 0, 1213, 1214, 5, 6, 0, 0, 1214, 1216, 3, 94, 47, 0, 1215, 1213, 1, 0, 0, 0, 1216, 1219, 1, 0, 0, 0, 1217, 1215, 1, 0, 0, 0, 1217, 1218, 1, 0, 0, 0, 1218, 1222, 1, 0, 0, 0, 1219, 1217, 1, 0, 0, 0, 1220, 1222, 5, 8, 0, 0, 1221, 1210, 1, 0, 0, 0, 1221, 1220, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1224, 5, 5, 0, 0, 1224, 1267, 1, 0, 0, 0, 1225, 1226, 5, 4, 0, 0, 1226, 1227, 3, 94, 47, 0, 1227, 1228, 5, 5, 0, 0, 1228, 1267, 1, 0, 0, 0, 1229, 1230, 5, 44, 0, 0, 1230, 1231, 5, 4, 0, 0, 1231, 1232, 3, 94, 47, 0, 1232, 1233, 5, 34, 0, 0, 1233, 1234, 3, 76, 38, 0, 1234, 1235, 5, 5, 0, 0, 1235, 1267, 1, 0, 0, 0, 1236, 1238, 5, 105, 0, 0, 1237, 1236, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, 1, 0, 0, 0, 1239, 1241, 5, 72, 0, 0, 1240, 1237, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 1242, 1, 0, 0, 0, 1242, 1243, 5, 4, 0, 0, 1243, 1244, 3, 64, 32, 0, 1244, 1245, 5, 5, 0, 0, 1245, 1267, 1, 0, 0, 0, 1246, 1248, 5, 43, 0, 0, 1247, 1249, 3, 94, 47, 0, 1248, 1247, 1, 0, 0, 0, 1248, 1249, 1, 0, 0, 0, 1249, 1255, 1, 0, 0, 0, 1250, 1251, 5, 149, 0, 0, 1251, 1252, 3, 94, 47, 0, 1252, 1253, 5, 137, 0, 0, 1253, 1254, 3, 94, 47, 0, 1254, 1256, 1, 0, 0, 0, 1255, 1250, 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, 1255, 1, 0, 0, 0, 1257, 1258, 1, 0, 0, 0, 1258, 1261, 1, 0, 0, 0, 1259, 1260, 5, 66, 0, 0, 1260, 1262, 3, 94, 47, 0, 1261, 1259, 1, 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1264, 5, 67, 0, 0, 1264, 1267, 1, 0, 0, 0, 1265, 1267, 3, 100, 50, 0, 1266, 1190, 1, 0, 0, 0, 1266, 1192, 1, 0, 0, 0, 1266, 1201, 1, 0, 0, 0, 1266, 1204, 1, 0, 0, 0, 1266, 1207, 1, 0, 0, 0, 1266, 1225, 1, 0, 0, 0, 1266, 1229, 1, 0, 0, 0, 1266, 1240, 1, 0, 0, 0, 1266, 1246, 1, 0, 0, 0, 1266, 1265, 1, 0, 0, 0, 1267, 1368, 1, 0, 0, 0, 1268, 1269, 10, 20, 0, 0, 1269, 1270, 5, 12, 0, 0, 1270, 1367, 3, 94, 47, 21, 1271, 1272, 10, 19, 0, 0, 1272, 1273, 7, 7, 0, 0, 1273, 1367, 3, 94, 47, 20, 1274, 1275, 10, 18, 0, 0, 1275, 1276, 7, 8, 0, 0, 1276, 1367, 3, 94, 47, 19, 1277, 1278, 10, 17, 0, 0, 1278, 1279, 7, 9, 0, 0, 1279, 1367, 3, 94, 47, 18, 1280, 1281, 10, 16, 0, 0, 1281, 1282, 7, 10, 0, 0, 1282, 1367, 3, 94, 47, 17, 1283, 1296, 10, 15, 0, 0, 1284, 1297, 5, 7, 0, 0, 1285, 1297, 5, 23, 0, 0, 1286, 1297, 5, 24, 0, 0, 1287, 1297, 5, 25, 0, 0, 1288, 1297, 5, 94, 0, 0, 1289, 1290, 5, 94, 0, 0, 1290, 1297, 5, 105, 0, 0, 1291, 1297, 5, 85, 0, 0, 1292, 1297, 5, 99, 0, 0, 1293, 1297, 5, 79, 0, 0, 1294, 1297, 5, 101, 0, 0, 1295, 1297, 5, 122, 0, 0, 1296, 1284, 1, 0, 0, 0, 1296, 1285, 1, 0, 0, 0, 1296, 1286, 1, 0, 0, 0, 1296, 1287, 1, 0, 0, 0, 1296, 1288, 1, 0, 0, 0, 1296, 1289, 1, 0, 0, 0, 1296, 1291, 1, 0, 0, 0, 1296, 1292, 1, 0, 0, 0, 1296, 1293, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1295, 1, 0, 0, 0, 1297, 1298, 1, 0, 0, 0, 1298, 1367, 3, 94, 47, 16, 1299, 1300, 10, 14, 0, 0, 1300, 1301, 5, 33, 0, 0, 1301, 1367, 3, 94, 47, 15, 1302, 1303, 10, 13, 0, 0, 1303, 1304, 5, 112, 0, 0, 1304, 1367, 3, 94, 47, 14, 1305, 1306, 10, 6, 0, 0, 1306, 1308, 5, 94, 0, 0, 1307, 1309, 5, 105, 0, 0, 1308, 1307, 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1367, 3, 94, 47, 7, 1311, 1313, 10, 5, 0, 0, 1312, 1314, 5, 105, 0, 0, 1313, 1312, 1, 0, 0, 0, 1313, 1314, 1, 0, 0, 0, 1314, 1315, 1, 0, 0, 0, 1315, 1316, 5, 40, 0, 0, 1316, 1317, 3, 94, 47, 0, 1317, 1318, 5, 33, 0, 0, 1318, 1319, 3, 94, 47, 6, 1319, 1367, 1, 0, 0, 0, 1320, 1321, 10, 9, 0, 0, 1321, 1322, 5, 46, 0, 0, 1322, 1367, 3, 174, 87, 0, 1323, 1325, 10, 8, 0, 0, 1324, 1326, 5, 105, 0, 0, 1325, 1324, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1328, 7, 11, 0, 0, 1328, 1331, 3, 94, 47, 0, 1329, 1330, 5, 69, 0, 0, 1330, 1332, 3, 94, 47, 0, 1331, 1329, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1367, 1, 0, 0, 0, 1333, 1338, 10, 7, 0, 0, 1334, 1339, 5, 95, 0, 0, 1335, 1339, 5, 106, 0, 0, 1336, 1337, 5, 105, 0, 0, 1337, 1339, 5, 107, 0, 0, 1338, 1334, 1, 0, 0, 0, 1338, 1335, 1, 0, 0, 0, 1338, 1336, 1, 0, 0, 0, 1339, 1367, 1, 0, 0, 0, 1340, 1342, 10, 4, 0, 0, 1341, 1343, 5, 105, 0, 0, 1342, 1341, 1, 0, 0, 0, 1342, 1343, 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1364, 5, 85, 0, 0, 1345, 1355, 5, 4, 0, 0, 1346, 1356, 3, 64, 32, 0, 1347, 1352, 3, 94, 47, 0, 1348, 1349, 5, 6, 0, 0, 1349, 1351, 3, 94, 47, 0, 1350, 1348, 1, 0, 0, 0, 1351, 1354, 1, 0, 0, 0, 1352, 1350, 1, 0, 0, 0, 1352, 1353, 1, 0, 0, 0, 1353, 1356, 1, 0, 0, 0, 1354, 1352, 1, 0, 0, 0, 1355, 1346, 1, 0, 0, 0, 1355, 1347, 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1365, 5, 5, 0, 0, 1358, 1359, 3, 162, 81, 0, 1359, 1360, 5, 3, 0, 0, 1360, 1362, 1, 0, 0, 0, 1361, 1358, 1, 0, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, 1363, 1, 0, 0, 0, 1363, 1365, 3, 166, 83, 0, 1364, 1345, 1, 0, 0, 0, 1364, 1361, 1, 0, 0, 0, 1365, 1367, 1, 0, 0, 0, 1366, 1268, 1, 0, 0, 0, 1366, 1271, 1, 0, 0, 0, 1366, 1274, 1, 0, 0, 0, 1366, 1277, 1, 0, 0, 0, 1366, 1280, 1, 0, 0, 0, 1366, 1283, 1, 0, 0, 0, 1366, 1299, 1, 0, 0, 0, 1366, 1302, 1, 0, 0, 0, 1366, 1305, 1, 0, 0, 0, 1366, 1311, 1, 0, 0, 0, 1366, 1320, 1, 0, 0, 0, 1366, 1323, 1, 0, 0, 0, 1366, 1333, 1, 0, 0, 0, 1366, 1340, 1, 0, 0, 0, 1367, 1370, 1, 0, 0, 0, 1368, 1366, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0, 1369, 95, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1371, 1375, 5, 121, 0, 0, 1372, 1373, 3, 162, 81, 0, 1373, 1374, 5, 3, 0, 0, 1374, 1376, 1, 0, 0, 0, 1375, 1372, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, 1376, 1377, 1, 0, 0, 0, 1377, 1389, 3, 176, 88, 0, 1378, 1379, 5, 4, 0, 0, 1379, 1384, 3, 98, 49, 0, 1380, 1381, 5, 6, 0, 0, 1381, 1383, 3, 98, 49, 0, 1382, 1380, 1, 0, 0, 0, 1383, 1386, 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 1387, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1388, 5, 5, 0, 0, 1388, 1390, 1, 0, 0, 0, 1389, 1378, 1, 0, 0, 0, 1389, 1390, 1, 0, 0, 0, 1390, 1409, 1, 0, 0, 0, 1391, 1392, 5, 110, 0, 0, 1392, 1401, 7, 12, 0, 0, 1393, 1394, 5, 133, 0, 0, 1394, 1402, 5, 107, 0, 0, 1395, 1396, 5, 133, 0, 0, 1396, 1402, 5, 57, 0, 0, 1397, 1402, 5, 42, 0, 0, 1398, 1402, 5, 127, 0, 0, 1399, 1400, 5, 104, 0, 0, 1400, 1402, 5, 27, 0, 0, 1401, 1393, 1, 0, 0, 0, 1401, 1395, 1, 0, 0, 0, 1401, 1397, 1, 0, 0, 0, 1401, 1398, 1, 0, 0, 0, 1401, 1399, 1, 0, 0, 0, 1402, 1406, 1, 0, 0, 0, 1403, 1404, 5, 101, 0, 0, 1404, 1406, 3, 158, 79, 0, 1405, 1391, 1, 0, 0, 0, 1405, 1403, 1, 0, 0, 0, 1406, 1408, 1, 0, 0, 0, 1407, 1405, 1, 0, 0, 0, 1408, 1411, 1, 0, 0, 0, 1409, 1407, 1, 0, 0, 0, 1409, 1410, 1, 0, 0, 0, 1410, 1425, 1, 0, 0, 0, 1411, 1409, 1, 0, 0, 0, 1412, 1414, 5, 105, 0, 0, 1413, 1412, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1415, 1, 0, 0, 0, 1415, 1420, 5, 58, 0, 0, 1416, 1417, 5, 88, 0, 0, 1417, 1421, 5, 59, 0, 0, 1418, 1419, 5, 88, 0, 0, 1419, 1421, 5, 84, 0, 0, 1420, 1416, 1, 0, 0, 0, 1420, 1418, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1423, 1, 0, 0, 0, 1422, 1424, 5, 68, 0, 0, 1423, 1422, 1, 0, 0, 0, 1423, 1424, 1, 0, 0, 0, 1424, 1426, 1, 0, 0, 0, 1425, 1413, 1, 0, 0, 0, 1425, 1426, 1, 0, 0, 0, 1426, 97, 1, 0, 0, 0, 1427, 1428, 3, 158, 79, 0, 1428, 99, 1, 0, 0, 0, 1429, 1430, 5, 119, 0, 0, 1430, 1435, 5, 4, 0, 0, 1431, 1436, 5, 83, 0, 0, 1432, 1433, 7, 13, 0, 0, 1433, 1434, 5, 6, 0, 0, 1434, 1436, 3, 148, 74, 0, 1435, 1431, 1, 0, 0, 0, 1435, 1432, 1, 0, 0, 0, 1436, 1437, 1, 0, 0, 0, 1437, 1438, 5, 5, 0, 0, 1438, 101, 1, 0, 0, 0, 1439, 1442, 3, 172, 86, 0, 1440, 1441, 5, 46, 0, 0, 1441, 1443, 3, 174, 87, 0, 1442, 1440, 1, 0, 0, 0, 1442, 1443, 1, 0, 0, 0, 1443, 1445, 1, 0, 0, 0, 1444, 1446, 7, 5, 0, 0, 1445, 1444, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, 103, 1, 0, 0, 0, 1447, 1448, 5, 50, 0, 0, 1448, 1450, 3, 158, 79, 0, 1449, 1447, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1460, 1, 0, 0, 0, 1451, 1461, 3, 106, 53, 0, 1452, 1461, 3, 112, 56, 0, 1453, 1461, 3, 110, 55, 0, 1454, 1455, 5, 45, 0, 0, 1455, 1456, 5, 4, 0, 0, 1456, 1457, 3, 94, 47, 0, 1457, 1458, 5, 5, 0, 0, 1458, 1461, 1, 0, 0, 0, 1459, 1461, 3, 108, 54, 0, 1460, 1451, 1, 0, 0, 0, 1460, 1452, 1, 0, 0, 0, 1460, 1453, 1, 0, 0, 0, 1460, 1454, 1, 0, 0, 0, 1460, 1459, 1, 0, 0, 0, 1461, 105, 1, 0, 0, 0, 1462, 1463, 5, 117, 0, 0, 1463, 1464, 5, 97, 0, 0, 1464, 1465, 5, 4, 0, 0, 1465, 1470, 3, 102, 51, 0, 1466, 1467, 5, 6, 0, 0, 1467, 1469, 3, 102, 51, 0, 1468, 1466, 1, 0, 0, 0, 1469, 1472, 1, 0, 0, 0, 1470, 1468, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1473, 1, 0, 0, 0, 1472, 1470, 1, 0, 0, 0, 1473, 1474, 5, 5, 0, 0, 1474, 1475, 3, 92, 46, 0, 1475, 107, 1, 0, 0, 0, 1476, 1477, 5, 76, 0, 0, 1477, 1478, 5, 97, 0, 0, 1478, 1479, 5, 4, 0, 0, 1479, 1484, 3, 114, 57, 0, 1480, 1481, 5, 6, 0, 0, 1481, 1483, 3, 114, 57, 0, 1482, 1480, 1, 0, 0, 0, 1483, 1486, 1, 0, 0, 0, 1484, 1482, 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 1487, 1, 0, 0, 0, 1486, 1484, 1, 0, 0, 0, 1487, 1488, 5, 5, 0, 0, 1488, 1489, 3, 96, 48, 0, 1489, 109, 1, 0, 0, 0, 1490, 1492, 5, 142, 0, 0, 1491, 1493, 5, 97, 0, 0, 1492, 1491, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1495, 1, 0, 0, 0, 1494, 1496, 3, 158, 79, 0, 1495, 1494, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 1498, 5, 4, 0, 0, 1498, 1503, 3, 102, 51, 0, 1499, 1500, 5, 6, 0, 0, 1500, 1502, 3, 102, 51, 0, 1501, 1499, 1, 0, 0, 0, 1502, 1505, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1506, 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1507, 5, 5, 0, 0, 1507, 1508, 3, 92, 46, 0, 1508, 111, 1, 0, 0, 0, 1509, 1511, 5, 97, 0, 0, 1510, 1512, 3, 158, 79, 0, 1511, 1510, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1514, 5, 4, 0, 0, 1514, 1519, 3, 102, 51, 0, 1515, 1516, 5, 6, 0, 0, 1516, 1518, 3, 102, 51, 0, 1517, 1515, 1, 0, 0, 0, 1518, 1521, 1, 0, 0, 0, 1519, 1517, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1522, 1, 0, 0, 0, 1521, 1519, 1, 0, 0, 0, 1522, 1523, 5, 5, 0, 0, 1523, 1524, 3, 92, 46, 0, 1524, 113, 1, 0, 0, 0, 1525, 1526, 3, 172, 86, 0, 1526, 115, 1, 0, 0, 0, 1527, 1529, 5, 151, 0, 0, 1528, 1530, 5, 120, 0, 0, 1529, 1528, 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1532, 3, 140, 70, 0, 1532, 1533, 5, 34, 0, 0, 1533, 1534, 5, 4, 0, 0, 1534, 1535, 3, 64, 32, 0, 1535, 1545, 5, 5, 0, 0, 1536, 1537, 5, 6, 0, 0, 1537, 1538, 3, 140, 70, 0, 1538, 1539, 5, 34, 0, 0, 1539, 1540, 5, 4, 0, 0, 1540, 1541, 3, 64, 32, 0, 1541, 1542, 5, 5, 0, 0, 1542, 1544, 1, 0, 0, 0, 1543, 1536, 1, 0, 0, 0, 1544, 1547, 1, 0, 0, 0, 1545, 1543, 1, 0, 0, 0, 1545, 1546, 1, 0, 0, 0, 1546, 117, 1, 0, 0, 0, 1547, 1545, 1, 0, 0, 0, 1548, 1549, 3, 162, 81, 0, 1549, 1550, 5, 3, 0, 0, 1550, 1552, 1, 0, 0, 0, 1551, 1548, 1, 0, 0, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1559, 3, 166, 83, 0, 1554, 1555, 5, 87, 0, 0, 1555, 1556, 5, 41, 0, 0, 1556, 1560, 3, 178, 89, 0, 1557, 1558, 5, 105, 0, 0, 1558, 1560, 5, 87, 0, 0, 1559, 1554, 1, 0, 0, 0, 1559, 1557, 1, 0, 0, 0, 1559, 1560, 1, 0, 0, 0, 1560, 119, 1, 0, 0, 0, 1561, 1564, 3, 94, 47, 0, 1562, 1563, 5, 46, 0, 0, 1563, 1565, 3, 174, 87, 0, 1564, 1562, 1, 0, 0, 0, 1564, 1565, 1, 0, 0, 0, 1565, 1567, 1, 0, 0, 0, 1566, 1568, 7, 5, 0, 0, 1567, 1566, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 121, 1, 0, 0, 0, 1569, 1573, 3, 142, 71, 0, 1570, 1573, 3, 158, 79, 0, 1571, 1573, 5, 156, 0, 0, 1572, 1569, 1, 0, 0, 0, 1572, 1570, 1, 0, 0, 0, 1572, 1571, 1, 0, 0, 0, 1573, 123, 1, 0, 0, 0, 1574, 1586, 3, 166, 83, 0, 1575, 1576, 5, 4, 0, 0, 1576, 1581, 3, 172, 86, 0, 1577, 1578, 5, 6, 0, 0, 1578, 1580, 3, 172, 86, 0, 1579, 1577, 1, 0, 0, 0, 1580, 1583, 1, 0, 0, 0, 1581, 1579, 1, 0, 0, 0, 1581, 1582, 1, 0, 0, 0, 1582, 1584, 1, 0, 0, 0, 1583, 1581, 1, 0, 0, 0, 1584, 1585, 5, 5, 0, 0, 1585, 1587, 1, 0, 0, 0, 1586, 1575, 1, 0, 0, 0, 1586, 1587, 1, 0, 0, 0, 1587, 1588, 1, 0, 0, 0, 1588, 1589, 5, 34, 0, 0, 1589, 1590, 5, 4, 0, 0, 1590, 1591, 3, 64, 32, 0, 1591, 1592, 5, 5, 0, 0, 1592, 125, 1, 0, 0, 0, 1593, 1606, 5, 8, 0, 0, 1594, 1595, 3, 166, 83, 0, 1595, 1596, 5, 3, 0, 0, 1596, 1597, 5, 8, 0, 0, 1597, 1606, 1, 0, 0, 0, 1598, 1603, 3, 94, 47, 0, 1599, 1601, 5, 34, 0, 0, 1600, 1599, 1, 0, 0, 0, 1600, 1601, 1, 0, 0, 0, 1601, 1602, 1, 0, 0, 0, 1602, 1604, 3, 152, 76, 0, 1603, 1600, 1, 0, 0, 0, 1603, 1604, 1, 0, 0, 0, 1604, 1606, 1, 0, 0, 0, 1605, 1593, 1, 0, 0, 0, 1605, 1594, 1, 0, 0, 0, 1605, 1598, 1, 0, 0, 0, 1606, 127, 1, 0, 0, 0, 1607, 1608, 3, 162, 81, 0, 1608, 1609, 5, 3, 0, 0, 1609, 1611, 1, 0, 0, 0, 1610, 1607, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1617, 3, 166, 83, 0, 1613, 1615, 5, 34, 0, 0, 1614, 1613, 1, 0, 0, 0, 1614, 1615, 1, 0, 0, 0, 1615, 1616, 1, 0, 0, 0, 1616, 1618, 3, 190, 95, 0, 1617, 1614, 1, 0, 0, 0, 1617, 1618, 1, 0, 0, 0, 1618, 1624, 1, 0, 0, 0, 1619, 1620, 5, 87, 0, 0, 1620, 1621, 5, 41, 0, 0, 1621, 1625, 3, 178, 89, 0, 1622, 1623, 5, 105, 0, 0, 1623, 1625, 5, 87, 0, 0, 1624, 1619, 1, 0, 0, 0, 1624, 1622, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, 1625, 1655, 1, 0, 0, 0, 1626, 1636, 5, 4, 0, 0, 1627, 1632, 3, 128, 64, 0, 1628, 1629, 5, 6, 0, 0, 1629, 1631, 3, 128, 64, 0, 1630, 1628, 1, 0, 0, 0, 1631, 1634, 1, 0, 0, 0, 1632, 1630, 1, 0, 0, 0, 1632, 1633, 1, 0, 0, 0, 1633, 1637, 1, 0, 0, 0, 1634, 1632, 1, 0, 0, 0, 1635, 1637, 3, 130, 65, 0, 1636, 1627, 1, 0, 0, 0, 1636, 1635, 1, 0, 0, 0, 1637, 1638, 1, 0, 0, 0, 1638, 1643, 5, 5, 0, 0, 1639, 1641, 5, 34, 0, 0, 1640, 1639, 1, 0, 0, 0, 1640, 1641, 1, 0, 0, 0, 1641, 1642, 1, 0, 0, 0, 1642, 1644, 3, 190, 95, 0, 1643, 1640, 1, 0, 0, 0, 1643, 1644, 1, 0, 0, 0, 1644, 1655, 1, 0, 0, 0, 1645, 1646, 5, 4, 0, 0, 1646, 1647, 3, 64, 32, 0, 1647, 1652, 5, 5, 0, 0, 1648, 1650, 5, 34, 0, 0, 1649, 1648, 1, 0, 0, 0, 1649, 1650, 1, 0, 0, 0, 1650, 1651, 1, 0, 0, 0, 1651, 1653, 3, 190, 95, 0, 1652, 1649, 1, 0, 0, 0, 1652, 1653, 1, 0, 0, 0, 1653, 1655, 1, 0, 0, 0, 1654, 1610, 1, 0, 0, 0, 1654, 1626, 1, 0, 0, 0, 1654, 1645, 1, 0, 0, 0, 1655, 129, 1, 0, 0, 0, 1656, 1663, 3, 128, 64, 0, 1657, 1658, 3, 132, 66, 0, 1658, 1659, 3, 128, 64, 0, 1659, 1660, 3, 134, 67, 0, 1660, 1662, 1, 0, 0, 0, 1661, 1657, 1, 0, 0, 0, 1662, 1665, 1, 0, 0, 0, 1663, 1661, 1, 0, 0, 0, 1663, 1664, 1, 0, 0, 0, 1664, 131, 1, 0, 0, 0, 1665, 1663, 1, 0, 0, 0, 1666, 1680, 5, 6, 0, 0, 1667, 1669, 5, 102, 0, 0, 1668, 1667, 1, 0, 0, 0, 1668, 1669, 1, 0, 0, 0, 1669, 1676, 1, 0, 0, 0, 1670, 1672, 5, 98, 0, 0, 1671, 1673, 5, 114, 0, 0, 1672, 1671, 1, 0, 0, 0, 1672, 1673, 1, 0, 0, 0, 1673, 1677, 1, 0, 0, 0, 1674, 1677, 5, 89, 0, 0, 1675, 1677, 5, 52, 0, 0, 1676, 1670, 1, 0, 0, 0, 1676, 1674, 1, 0, 0, 0, 1676, 1675, 1, 0, 0, 0, 1676, 1677, 1, 0, 0, 0, 1677, 1678, 1, 0, 0, 0, 1678, 1680, 5, 96, 0, 0, 1679, 1666, 1, 0, 0, 0, 1679, 1668, 1, 0, 0, 0, 1680, 133, 1, 0, 0, 0, 1681, 1682, 5, 110, 0, 0, 1682, 1696, 3, 94, 47, 0, 1683, 1684, 5, 144, 0, 0, 1684, 1685, 5, 4, 0, 0, 1685, 1690, 3, 172, 86, 0, 1686, 1687, 5, 6, 0, 0, 1687, 1689, 3, 172, 86, 0, 1688, 1686, 1, 0, 0, 0, 1689, 1692, 1, 0, 0, 0, 1690, 1688, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1693, 1, 0, 0, 0, 1692, 1690, 1, 0, 0, 0, 1693, 1694, 5, 5, 0, 0, 1694, 1696, 1, 0, 0, 0, 1695, 1681, 1, 0, 0, 0, 1695, 1683, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 135, 1, 0, 0, 0, 1697, 1699, 5, 132, 0, 0, 1698, 1700, 7, 4, 0, 0, 1699, 1698, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 1701, 1, 0, 0, 0, 1701, 1706, 3, 126, 63, 0, 1702, 1703, 5, 6, 0, 0, 1703, 1705, 3, 126, 63, 0, 1704, 1702, 1, 0, 0, 0, 1705, 1708, 1, 0, 0, 0, 1706, 1704, 1, 0, 0, 0, 1706, 1707, 1, 0, 0, 0, 1707, 1721, 1, 0, 0, 0, 1708, 1706, 1, 0, 0, 0, 1709, 1719, 5, 77, 0, 0, 1710, 1715, 3, 128, 64, 0, 1711, 1712, 5, 6, 0, 0, 1712, 1714, 3, 128, 64, 0, 1713, 1711, 1, 0, 0, 0, 1714, 1717, 1, 0, 0, 0, 1715, 1713, 1, 0, 0, 0, 1715, 1716, 1, 0, 0, 0, 1716, 1720, 1, 0, 0, 0, 1717, 1715, 1, 0, 0, 0, 1718, 1720, 3, 130, 65, 0, 1719, 1710, 1, 0, 0, 0, 1719, 1718, 1, 0, 0, 0, 1720, 1722, 1, 0, 0, 0, 1721, 1709, 1, 0, 0, 0, 1721, 1722, 1, 0, 0, 0, 1722, 1725, 1, 0, 0, 0, 1723, 1724, 5, 150, 0, 0, 1724, 1726, 3, 94, 47, 0, 1725, 1723, 1, 0, 0, 0, 1725, 1726, 1, 0, 0, 0, 1726, 1741, 1, 0, 0, 0, 1727, 1728, 5, 80, 0, 0, 1728, 1729, 5, 41, 0, 0, 1729, 1734, 3, 94, 47, 0, 1730, 1731, 5, 6, 0, 0, 1731, 1733, 3, 94, 47, 0, 1732, 1730, 1, 0, 0, 0, 1733, 1736, 1, 0, 0, 0, 1734, 1732, 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0, 1735, 1739, 1, 0, 0, 0, 1736, 1734, 1, 0, 0, 0, 1737, 1738, 5, 81, 0, 0, 1738, 1740, 3, 94, 47, 0, 1739, 1737, 1, 0, 0, 0, 1739, 1740, 1, 0, 0, 0, 1740, 1742, 1, 0, 0, 0, 1741, 1727, 1, 0, 0, 0, 1741, 1742, 1, 0, 0, 0, 1742, 1772, 1, 0, 0, 0, 1743, 1744, 5, 146, 0, 0, 1744, 1745, 5, 4, 0, 0, 1745, 1750, 3, 94, 47, 0, 1746, 1747, 5, 6, 0, 0, 1747, 1749, 3, 94, 47, 0, 1748, 1746, 1, 0, 0, 0, 1749, 1752, 1, 0, 0, 0, 1750, 1748, 1, 0, 0, 0, 1750, 1751, 1, 0, 0, 0, 1751, 1753, 1, 0, 0, 0, 1752, 1750, 1, 0, 0, 0, 1753, 1768, 5, 5, 0, 0, 1754, 1755, 5, 6, 0, 0, 1755, 1756, 5, 4, 0, 0, 1756, 1761, 3, 94, 47, 0, 1757, 1758, 5, 6, 0, 0, 1758, 1760, 3, 94, 47, 0, 1759, 1757, 1, 0, 0, 0, 1760, 1763, 1, 0, 0, 0, 1761, 1759, 1, 0, 0, 0, 1761, 1762, 1, 0, 0, 0, 1762, 1764, 1, 0, 0, 0, 1763, 1761, 1, 0, 0, 0, 1764, 1765, 5, 5, 0, 0, 1765, 1767, 1, 0, 0, 0, 1766, 1754, 1, 0, 0, 0, 1767, 1770, 1, 0, 0, 0, 1768, 1766, 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1772, 1, 0, 0, 0, 1770, 1768, 1, 0, 0, 0, 1771, 1697, 1, 0, 0, 0, 1771, 1743, 1, 0, 0, 0, 1772, 137, 1, 0, 0, 0, 1773, 1779, 5, 141, 0, 0, 1774, 1775, 5, 141, 0, 0, 1775, 1779, 5, 30, 0, 0, 1776, 1779, 5, 92, 0, 0, 1777, 1779, 5, 70, 0, 0, 1778, 1773, 1, 0, 0, 0, 1778, 1774, 1, 0, 0, 0, 1778, 1776, 1, 0, 0, 0, 1778, 1777, 1, 0, 0, 0, 1779, 139, 1, 0, 0, 0, 1780, 1792, 3, 166, 83, 0, 1781, 1782, 5, 4, 0, 0, 1782, 1787, 3, 172, 86, 0, 1783, 1784, 5, 6, 0, 0, 1784, 1786, 3, 172, 86, 0, 1785, 1783, 1, 0, 0, 0, 1786, 1789, 1, 0, 0, 0, 1787, 1785, 1, 0, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 1790, 1, 0, 0, 0, 1789, 1787, 1, 0, 0, 0, 1790, 1791, 5, 5, 0, 0, 1791, 1793, 1, 0, 0, 0, 1792, 1781, 1, 0, 0, 0, 1792, 1793, 1, 0, 0, 0, 1793, 141, 1, 0, 0, 0, 1794, 1796, 7, 8, 0, 0, 1795, 1794, 1, 0, 0, 0, 1795, 1796, 1, 0, 0, 0, 1796, 1797, 1, 0, 0, 0, 1797, 1800, 5, 154, 0, 0, 1798, 1800, 5, 8, 0, 0, 1799, 1795, 1, 0, 0, 0, 1799, 1798, 1, 0, 0, 0, 1800, 143, 1, 0, 0, 0, 1801, 1802, 7, 14, 0, 0, 1802, 145, 1, 0, 0, 0, 1803, 1804, 7, 15, 0, 0, 1804, 147, 1, 0, 0, 0, 1805, 1806, 5, 156, 0, 0, 1806, 149, 1, 0, 0, 0, 1807, 1810, 3, 94, 47, 0, 1808, 1810, 3, 74, 37, 0, 1809, 1807, 1, 0, 0, 0, 1809, 1808, 1, 0, 0, 0, 1810, 151, 1, 0, 0, 0, 1811, 1812, 7, 16, 0, 0, 1812, 153, 1, 0, 0, 0, 1813, 1814, 7, 17, 0, 0, 1814, 155, 1, 0, 0, 0, 1815, 1817, 9, 0, 0, 0, 1816, 1815, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1816, 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 157, 1, 0, 0, 0, 1820, 1821, 3, 194, 97, 0, 1821, 159, 1, 0, 0, 0, 1822, 1823, 3, 194, 97, 0, 1823, 161, 1, 0, 0, 0, 1824, 1825, 3, 194, 97, 0, 1825, 163, 1, 0, 0, 0, 1826, 1827, 3, 194, 97, 0, 1827, 165, 1, 0, 0, 0, 1828, 1829, 3, 194, 97, 0, 1829, 167, 1, 0, 0, 0, 1830, 1831, 3, 194, 97, 0, 1831, 169, 1, 0, 0, 0, 1832, 1833, 3, 194, 97, 0, 1833, 171, 1, 0, 0, 0, 1834, 1835, 3, 194, 97, 0, 1835, 173, 1, 0, 0, 0, 1836, 1837, 3, 194, 97, 0, 1837, 175, 1, 0, 0, 0, 1838, 1839, 3, 194, 97, 0, 1839, 177, 1, 0, 0, 0, 1840, 1841, 3, 194, 97, 0, 1841, 179, 1, 0, 0, 0, 1842, 1843, 3, 194, 97, 0, 1843, 181, 1, 0, 0, 0, 1844, 1845, 3, 194, 97, 0, 1845, 183, 1, 0, 0, 0, 1846, 1847, 3, 194, 97, 0, 1847, 185, 1, 0, 0, 0, 1848, 1849, 3, 194, 97, 0, 1849, 187, 1, 0, 0, 0, 1850, 1851, 3, 194, 97, 0, 1851, 189, 1, 0, 0, 0, 1852, 1853, 3, 194, 97, 0, 1853, 191, 1, 0, 0, 0, 1854, 1855, 3, 194, 97, 0, 1855, 193, 1, 0, 0, 0, 1856, 1864, 5, 153, 0, 0, 1857, 1864, 3, 154, 77, 0, 1858, 1864, 5, 156, 0, 0, 1859, 1860, 5, 4, 0, 0, 1860, 1861, 3, 194, 97, 0, 1861, 1862, 5, 5, 0, 0, 1862, 1864, 1, 0, 0, 0, 1863, 1856, 1, 0, 0, 0, 1863, 1857, 1, 0, 0, 0, 1863, 1858, 1, 0, 0, 0, 1863, 1859, 1, 0, 0, 0, 1864, 195, 1, 0, 0, 0, 260, 198, 200, 211, 218, 223, 229, 235, 237, 269, 274, 279, 289, 292, 295, 298, 315, 319, 327, 331, 333, 338, 340, 344, 351, 354, 359, 363, 368, 377, 380, 386, 388, 392, 398, 403, 414, 420, 424, 430, 435, 444, 446, 452, 456, 459, 463, 469, 474, 481, 492, 495, 497, 503, 509, 513, 520, 526, 532, 538, 543, 555, 560, 571, 576, 579, 586, 589, 596, 605, 608, 614, 616, 620, 628, 633, 641, 646, 654, 659, 667, 672, 678, 685, 688, 696, 706, 709, 715, 717, 720, 739, 745, 754, 759, 768, 779, 786, 792, 798, 807, 814, 818, 820, 824, 831, 833, 837, 840, 847, 854, 857, 867, 870, 876, 878, 882, 889, 892, 900, 910, 913, 919, 921, 925, 932, 941, 945, 947, 951, 960, 965, 967, 976, 987, 994, 997, 1000, 1013, 1027, 1032, 1035, 1048, 1062, 1067, 1076, 1079, 1085, 1087, 1094, 1096, 1103, 1110, 1115, 1119, 1123, 1139, 1144, 1148, 1171, 1177, 1179, 1183, 1188, 1196, 1201, 1210, 1217, 1221, 1237, 1240, 1248, 1257, 1261, 1266, 1296, 1308, 1313, 1325, 1331, 1338, 1342, 1352, 1355, 1361, 1364, 1366, 1368, 1375, 1384, 1389, 1401, 1405, 1409, 1413, 1420, 1423, 1425, 1435, 1442, 1445, 1449, 1460, 1470, 1484, 1492, 1495, 1503, 1511, 1519, 1529, 1545, 1551, 1559, 1564, 1567, 1572, 1581, 1586, 1600, 1603, 1605, 1610, 1614, 1617, 1624, 1632, 1636, 1640, 1643, 1649, 1652, 1654, 1663, 1668, 1672, 1676, 1679, 1690, 1695, 1699, 1706, 1715, 1719, 1721, 1725, 1734, 1739, 1741, 1750, 1761, 1768, 1771, 1778, 1787, 1792, 1795, 1799, 1809, 1818, 1863] \ No newline at end of file diff --git a/processor/stream_processor/test/parser/Sql.tokens b/processor/stream_processor/test/parser/Sql.tokens deleted file mode 100644 index 70454cda7204..000000000000 --- a/processor/stream_processor/test/parser/Sql.tokens +++ /dev/null @@ -1,186 +0,0 @@ -T__0=1 -SCOL=2 -DOT=3 -OPEN_PAR=4 -CLOSE_PAR=5 -COMMA=6 -ASSIGN=7 -STAR=8 -PLUS=9 -MINUS=10 -TILDE=11 -PIPE2=12 -DIV=13 -MOD=14 -LT2=15 -GT2=16 -AMP=17 -PIPE=18 -LT=19 -LT_EQ=20 -GT=21 -GT_EQ=22 -EQ=23 -NOT_EQ1=24 -NOT_EQ2=25 -K_ABORT=26 -K_ACTION=27 -K_ADD=28 -K_AFTER=29 -K_ALL=30 -K_ALTER=31 -K_ANALYZE=32 -K_AND=33 -K_AS=34 -K_ASC=35 -K_ATTACH=36 -K_AUTOINCREMENT=37 -K_BEFORE=38 -K_BEGIN=39 -K_BETWEEN=40 -K_BY=41 -K_CASCADE=42 -K_CASE=43 -K_CAST=44 -K_CHECK=45 -K_COLLATE=46 -K_COLUMN=47 -K_COMMIT=48 -K_CONFLICT=49 -K_CONSTRAINT=50 -K_CREATE=51 -K_CROSS=52 -K_CURRENT_DATE=53 -K_CURRENT_TIME=54 -K_CURRENT_TIMESTAMP=55 -K_DATABASE=56 -K_DEFAULT=57 -K_DEFERRABLE=58 -K_DEFERRED=59 -K_DELETE=60 -K_DESC=61 -K_DETACH=62 -K_DISTINCT=63 -K_DROP=64 -K_EACH=65 -K_ELSE=66 -K_END=67 -K_ENABLE=68 -K_ESCAPE=69 -K_EXCEPT=70 -K_EXCLUSIVE=71 -K_EXISTS=72 -K_EXPLAIN=73 -K_FAIL=74 -K_FOR=75 -K_FOREIGN=76 -K_FROM=77 -K_FULL=78 -K_GLOB=79 -K_GROUP=80 -K_HAVING=81 -K_IF=82 -K_IGNORE=83 -K_IMMEDIATE=84 -K_IN=85 -K_INDEX=86 -K_INDEXED=87 -K_INITIALLY=88 -K_INNER=89 -K_INSERT=90 -K_INSTEAD=91 -K_INTERSECT=92 -K_INTO=93 -K_IS=94 -K_ISNULL=95 -K_JOIN=96 -K_KEY=97 -K_LEFT=98 -K_LIKE=99 -K_LIMIT=100 -K_MATCH=101 -K_NATURAL=102 -K_NEXTVAL=103 -K_NO=104 -K_NOT=105 -K_NOTNULL=106 -K_NULL=107 -K_OF=108 -K_OFFSET=109 -K_ON=110 -K_ONLY=111 -K_OR=112 -K_ORDER=113 -K_OUTER=114 -K_PLAN=115 -K_PRAGMA=116 -K_PRIMARY=117 -K_QUERY=118 -K_RAISE=119 -K_RECURSIVE=120 -K_REFERENCES=121 -K_REGEXP=122 -K_REINDEX=123 -K_RELEASE=124 -K_RENAME=125 -K_REPLACE=126 -K_RESTRICT=127 -K_RIGHT=128 -K_ROLLBACK=129 -K_ROW=130 -K_SAVEPOINT=131 -K_SELECT=132 -K_SET=133 -K_TABLE=134 -K_TEMP=135 -K_TEMPORARY=136 -K_THEN=137 -K_TO=138 -K_TRANSACTION=139 -K_TRIGGER=140 -K_UNION=141 -K_UNIQUE=142 -K_UPDATE=143 -K_USING=144 -K_VACUUM=145 -K_VALUES=146 -K_VIEW=147 -K_VIRTUAL=148 -K_WHEN=149 -K_WHERE=150 -K_WITH=151 -K_WITHOUT=152 -IDENTIFIER=153 -NUMERIC_LITERAL=154 -BIND_PARAMETER=155 -STRING_LITERAL=156 -BLOB_LITERAL=157 -SINGLE_LINE_COMMENT=158 -MULTILINE_COMMENT=159 -SPACES=160 -UNEXPECTED_CHAR=161 -'::'=1 -';'=2 -'.'=3 -'('=4 -')'=5 -','=6 -'='=7 -'*'=8 -'+'=9 -'-'=10 -'~'=11 -'||'=12 -'/'=13 -'%'=14 -'<<'=15 -'>>'=16 -'&'=17 -'|'=18 -'<'=19 -'<='=20 -'>'=21 -'>='=22 -'=='=23 -'!='=24 -'<>'=25 diff --git a/processor/stream_processor/test/parser/SqlLexer.interp b/processor/stream_processor/test/parser/SqlLexer.interp deleted file mode 100644 index d43689e2eb1e..000000000000 --- a/processor/stream_processor/test/parser/SqlLexer.interp +++ /dev/null @@ -1,527 +0,0 @@ -token literal names: -null -'::' -';' -'.' -'(' -')' -',' -'=' -'*' -'+' -'-' -'~' -'||' -'/' -'%' -'<<' -'>>' -'&' -'|' -'<' -'<=' -'>' -'>=' -'==' -'!=' -'<>' -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null - -token symbolic names: -null -null -SCOL -DOT -OPEN_PAR -CLOSE_PAR -COMMA -ASSIGN -STAR -PLUS -MINUS -TILDE -PIPE2 -DIV -MOD -LT2 -GT2 -AMP -PIPE -LT -LT_EQ -GT -GT_EQ -EQ -NOT_EQ1 -NOT_EQ2 -K_ABORT -K_ACTION -K_ADD -K_AFTER -K_ALL -K_ALTER -K_ANALYZE -K_AND -K_AS -K_ASC -K_ATTACH -K_AUTOINCREMENT -K_BEFORE -K_BEGIN -K_BETWEEN -K_BY -K_CASCADE -K_CASE -K_CAST -K_CHECK -K_COLLATE -K_COLUMN -K_COMMIT -K_CONFLICT -K_CONSTRAINT -K_CREATE -K_CROSS -K_CURRENT_DATE -K_CURRENT_TIME -K_CURRENT_TIMESTAMP -K_DATABASE -K_DEFAULT -K_DEFERRABLE -K_DEFERRED -K_DELETE -K_DESC -K_DETACH -K_DISTINCT -K_DROP -K_EACH -K_ELSE -K_END -K_ENABLE -K_ESCAPE -K_EXCEPT -K_EXCLUSIVE -K_EXISTS -K_EXPLAIN -K_FAIL -K_FOR -K_FOREIGN -K_FROM -K_FULL -K_GLOB -K_GROUP -K_HAVING -K_IF -K_IGNORE -K_IMMEDIATE -K_IN -K_INDEX -K_INDEXED -K_INITIALLY -K_INNER -K_INSERT -K_INSTEAD -K_INTERSECT -K_INTO -K_IS -K_ISNULL -K_JOIN -K_KEY -K_LEFT -K_LIKE -K_LIMIT -K_MATCH -K_NATURAL -K_NEXTVAL -K_NO -K_NOT -K_NOTNULL -K_NULL -K_OF -K_OFFSET -K_ON -K_ONLY -K_OR -K_ORDER -K_OUTER -K_PLAN -K_PRAGMA -K_PRIMARY -K_QUERY -K_RAISE -K_RECURSIVE -K_REFERENCES -K_REGEXP -K_REINDEX -K_RELEASE -K_RENAME -K_REPLACE -K_RESTRICT -K_RIGHT -K_ROLLBACK -K_ROW -K_SAVEPOINT -K_SELECT -K_SET -K_TABLE -K_TEMP -K_TEMPORARY -K_THEN -K_TO -K_TRANSACTION -K_TRIGGER -K_UNION -K_UNIQUE -K_UPDATE -K_USING -K_VACUUM -K_VALUES -K_VIEW -K_VIRTUAL -K_WHEN -K_WHERE -K_WITH -K_WITHOUT -IDENTIFIER -NUMERIC_LITERAL -BIND_PARAMETER -STRING_LITERAL -BLOB_LITERAL -SINGLE_LINE_COMMENT -MULTILINE_COMMENT -SPACES -UNEXPECTED_CHAR - -rule names: -T__0 -SCOL -DOT -OPEN_PAR -CLOSE_PAR -COMMA -ASSIGN -STAR -PLUS -MINUS -TILDE -PIPE2 -DIV -MOD -LT2 -GT2 -AMP -PIPE -LT -LT_EQ -GT -GT_EQ -EQ -NOT_EQ1 -NOT_EQ2 -K_ABORT -K_ACTION -K_ADD -K_AFTER -K_ALL -K_ALTER -K_ANALYZE -K_AND -K_AS -K_ASC -K_ATTACH -K_AUTOINCREMENT -K_BEFORE -K_BEGIN -K_BETWEEN -K_BY -K_CASCADE -K_CASE -K_CAST -K_CHECK -K_COLLATE -K_COLUMN -K_COMMIT -K_CONFLICT -K_CONSTRAINT -K_CREATE -K_CROSS -K_CURRENT_DATE -K_CURRENT_TIME -K_CURRENT_TIMESTAMP -K_DATABASE -K_DEFAULT -K_DEFERRABLE -K_DEFERRED -K_DELETE -K_DESC -K_DETACH -K_DISTINCT -K_DROP -K_EACH -K_ELSE -K_END -K_ENABLE -K_ESCAPE -K_EXCEPT -K_EXCLUSIVE -K_EXISTS -K_EXPLAIN -K_FAIL -K_FOR -K_FOREIGN -K_FROM -K_FULL -K_GLOB -K_GROUP -K_HAVING -K_IF -K_IGNORE -K_IMMEDIATE -K_IN -K_INDEX -K_INDEXED -K_INITIALLY -K_INNER -K_INSERT -K_INSTEAD -K_INTERSECT -K_INTO -K_IS -K_ISNULL -K_JOIN -K_KEY -K_LEFT -K_LIKE -K_LIMIT -K_MATCH -K_NATURAL -K_NEXTVAL -K_NO -K_NOT -K_NOTNULL -K_NULL -K_OF -K_OFFSET -K_ON -K_ONLY -K_OR -K_ORDER -K_OUTER -K_PLAN -K_PRAGMA -K_PRIMARY -K_QUERY -K_RAISE -K_RECURSIVE -K_REFERENCES -K_REGEXP -K_REINDEX -K_RELEASE -K_RENAME -K_REPLACE -K_RESTRICT -K_RIGHT -K_ROLLBACK -K_ROW -K_SAVEPOINT -K_SELECT -K_SET -K_TABLE -K_TEMP -K_TEMPORARY -K_THEN -K_TO -K_TRANSACTION -K_TRIGGER -K_UNION -K_UNIQUE -K_UPDATE -K_USING -K_VACUUM -K_VALUES -K_VIEW -K_VIRTUAL -K_WHEN -K_WHERE -K_WITH -K_WITHOUT -IDENTIFIER -NUMERIC_LITERAL -BIND_PARAMETER -STRING_LITERAL -BLOB_LITERAL -SINGLE_LINE_COMMENT -MULTILINE_COMMENT -SPACES -UNEXPECTED_CHAR -DIGIT -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P -Q -R -S -T -U -V -W -X -Y -Z - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE - -atn: -[4, 0, 161, 1483, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1295, 8, 152, 10, 152, 12, 152, 1298, 9, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1305, 8, 152, 10, 152, 12, 152, 1308, 9, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1313, 8, 152, 10, 152, 12, 152, 1316, 9, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1321, 8, 152, 10, 152, 12, 152, 1324, 9, 152, 3, 152, 1326, 8, 152, 1, 153, 4, 153, 1329, 8, 153, 11, 153, 12, 153, 1330, 1, 153, 1, 153, 5, 153, 1335, 8, 153, 10, 153, 12, 153, 1338, 9, 153, 3, 153, 1340, 8, 153, 1, 153, 1, 153, 3, 153, 1344, 8, 153, 1, 153, 4, 153, 1347, 8, 153, 11, 153, 12, 153, 1348, 3, 153, 1351, 8, 153, 1, 153, 1, 153, 4, 153, 1355, 8, 153, 11, 153, 12, 153, 1356, 1, 153, 1, 153, 3, 153, 1361, 8, 153, 1, 153, 4, 153, 1364, 8, 153, 11, 153, 12, 153, 1365, 3, 153, 1368, 8, 153, 3, 153, 1370, 8, 153, 1, 154, 1, 154, 5, 154, 1374, 8, 154, 10, 154, 12, 154, 1377, 9, 154, 1, 154, 1, 154, 3, 154, 1381, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 5, 155, 1387, 8, 155, 10, 155, 12, 155, 1390, 9, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 5, 157, 1401, 8, 157, 10, 157, 12, 157, 1404, 9, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 5, 158, 1412, 8, 158, 10, 158, 12, 158, 1415, 9, 158, 1, 158, 1, 158, 1, 158, 3, 158, 1420, 8, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 161, 1, 161, 1, 162, 1, 162, 1, 163, 1, 163, 1, 164, 1, 164, 1, 165, 1, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 168, 1, 168, 1, 169, 1, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 172, 1, 172, 1, 173, 1, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 176, 1, 176, 1, 177, 1, 177, 1, 178, 1, 178, 1, 179, 1, 179, 1, 180, 1, 180, 1, 181, 1, 181, 1, 182, 1, 182, 1, 183, 1, 183, 1, 184, 1, 184, 1, 185, 1, 185, 1, 186, 1, 186, 1, 187, 1, 187, 1, 1413, 0, 188, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 0, 325, 0, 327, 0, 329, 0, 331, 0, 333, 0, 335, 0, 337, 0, 339, 0, 341, 0, 343, 0, 345, 0, 347, 0, 349, 0, 351, 0, 353, 0, 355, 0, 357, 0, 359, 0, 361, 0, 363, 0, 365, 0, 367, 0, 369, 0, 371, 0, 373, 0, 375, 0, 1, 0, 37, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 3, 0, 36, 36, 58, 58, 64, 64, 1, 0, 39, 39, 2, 0, 10, 10, 13, 13, 3, 0, 9, 11, 13, 13, 32, 32, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 1482, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 1, 377, 1, 0, 0, 0, 3, 380, 1, 0, 0, 0, 5, 382, 1, 0, 0, 0, 7, 384, 1, 0, 0, 0, 9, 386, 1, 0, 0, 0, 11, 388, 1, 0, 0, 0, 13, 390, 1, 0, 0, 0, 15, 392, 1, 0, 0, 0, 17, 394, 1, 0, 0, 0, 19, 396, 1, 0, 0, 0, 21, 398, 1, 0, 0, 0, 23, 400, 1, 0, 0, 0, 25, 403, 1, 0, 0, 0, 27, 405, 1, 0, 0, 0, 29, 407, 1, 0, 0, 0, 31, 410, 1, 0, 0, 0, 33, 413, 1, 0, 0, 0, 35, 415, 1, 0, 0, 0, 37, 417, 1, 0, 0, 0, 39, 419, 1, 0, 0, 0, 41, 422, 1, 0, 0, 0, 43, 424, 1, 0, 0, 0, 45, 427, 1, 0, 0, 0, 47, 430, 1, 0, 0, 0, 49, 433, 1, 0, 0, 0, 51, 436, 1, 0, 0, 0, 53, 442, 1, 0, 0, 0, 55, 449, 1, 0, 0, 0, 57, 453, 1, 0, 0, 0, 59, 459, 1, 0, 0, 0, 61, 463, 1, 0, 0, 0, 63, 469, 1, 0, 0, 0, 65, 477, 1, 0, 0, 0, 67, 481, 1, 0, 0, 0, 69, 484, 1, 0, 0, 0, 71, 488, 1, 0, 0, 0, 73, 495, 1, 0, 0, 0, 75, 509, 1, 0, 0, 0, 77, 516, 1, 0, 0, 0, 79, 522, 1, 0, 0, 0, 81, 530, 1, 0, 0, 0, 83, 533, 1, 0, 0, 0, 85, 541, 1, 0, 0, 0, 87, 546, 1, 0, 0, 0, 89, 551, 1, 0, 0, 0, 91, 557, 1, 0, 0, 0, 93, 565, 1, 0, 0, 0, 95, 572, 1, 0, 0, 0, 97, 579, 1, 0, 0, 0, 99, 588, 1, 0, 0, 0, 101, 599, 1, 0, 0, 0, 103, 606, 1, 0, 0, 0, 105, 612, 1, 0, 0, 0, 107, 625, 1, 0, 0, 0, 109, 638, 1, 0, 0, 0, 111, 656, 1, 0, 0, 0, 113, 665, 1, 0, 0, 0, 115, 673, 1, 0, 0, 0, 117, 684, 1, 0, 0, 0, 119, 693, 1, 0, 0, 0, 121, 700, 1, 0, 0, 0, 123, 705, 1, 0, 0, 0, 125, 712, 1, 0, 0, 0, 127, 721, 1, 0, 0, 0, 129, 726, 1, 0, 0, 0, 131, 731, 1, 0, 0, 0, 133, 736, 1, 0, 0, 0, 135, 740, 1, 0, 0, 0, 137, 747, 1, 0, 0, 0, 139, 754, 1, 0, 0, 0, 141, 761, 1, 0, 0, 0, 143, 771, 1, 0, 0, 0, 145, 778, 1, 0, 0, 0, 147, 786, 1, 0, 0, 0, 149, 791, 1, 0, 0, 0, 151, 795, 1, 0, 0, 0, 153, 803, 1, 0, 0, 0, 155, 808, 1, 0, 0, 0, 157, 813, 1, 0, 0, 0, 159, 818, 1, 0, 0, 0, 161, 824, 1, 0, 0, 0, 163, 831, 1, 0, 0, 0, 165, 834, 1, 0, 0, 0, 167, 841, 1, 0, 0, 0, 169, 851, 1, 0, 0, 0, 171, 854, 1, 0, 0, 0, 173, 860, 1, 0, 0, 0, 175, 868, 1, 0, 0, 0, 177, 878, 1, 0, 0, 0, 179, 884, 1, 0, 0, 0, 181, 891, 1, 0, 0, 0, 183, 899, 1, 0, 0, 0, 185, 909, 1, 0, 0, 0, 187, 914, 1, 0, 0, 0, 189, 917, 1, 0, 0, 0, 191, 924, 1, 0, 0, 0, 193, 929, 1, 0, 0, 0, 195, 933, 1, 0, 0, 0, 197, 938, 1, 0, 0, 0, 199, 943, 1, 0, 0, 0, 201, 949, 1, 0, 0, 0, 203, 955, 1, 0, 0, 0, 205, 963, 1, 0, 0, 0, 207, 971, 1, 0, 0, 0, 209, 974, 1, 0, 0, 0, 211, 978, 1, 0, 0, 0, 213, 986, 1, 0, 0, 0, 215, 991, 1, 0, 0, 0, 217, 994, 1, 0, 0, 0, 219, 1001, 1, 0, 0, 0, 221, 1004, 1, 0, 0, 0, 223, 1009, 1, 0, 0, 0, 225, 1012, 1, 0, 0, 0, 227, 1018, 1, 0, 0, 0, 229, 1024, 1, 0, 0, 0, 231, 1029, 1, 0, 0, 0, 233, 1036, 1, 0, 0, 0, 235, 1044, 1, 0, 0, 0, 237, 1050, 1, 0, 0, 0, 239, 1056, 1, 0, 0, 0, 241, 1066, 1, 0, 0, 0, 243, 1077, 1, 0, 0, 0, 245, 1084, 1, 0, 0, 0, 247, 1092, 1, 0, 0, 0, 249, 1100, 1, 0, 0, 0, 251, 1107, 1, 0, 0, 0, 253, 1115, 1, 0, 0, 0, 255, 1124, 1, 0, 0, 0, 257, 1130, 1, 0, 0, 0, 259, 1139, 1, 0, 0, 0, 261, 1143, 1, 0, 0, 0, 263, 1153, 1, 0, 0, 0, 265, 1160, 1, 0, 0, 0, 267, 1164, 1, 0, 0, 0, 269, 1170, 1, 0, 0, 0, 271, 1175, 1, 0, 0, 0, 273, 1185, 1, 0, 0, 0, 275, 1190, 1, 0, 0, 0, 277, 1193, 1, 0, 0, 0, 279, 1205, 1, 0, 0, 0, 281, 1213, 1, 0, 0, 0, 283, 1219, 1, 0, 0, 0, 285, 1226, 1, 0, 0, 0, 287, 1233, 1, 0, 0, 0, 289, 1239, 1, 0, 0, 0, 291, 1246, 1, 0, 0, 0, 293, 1253, 1, 0, 0, 0, 295, 1258, 1, 0, 0, 0, 297, 1266, 1, 0, 0, 0, 299, 1271, 1, 0, 0, 0, 301, 1277, 1, 0, 0, 0, 303, 1282, 1, 0, 0, 0, 305, 1325, 1, 0, 0, 0, 307, 1369, 1, 0, 0, 0, 309, 1380, 1, 0, 0, 0, 311, 1382, 1, 0, 0, 0, 313, 1393, 1, 0, 0, 0, 315, 1396, 1, 0, 0, 0, 317, 1407, 1, 0, 0, 0, 319, 1423, 1, 0, 0, 0, 321, 1427, 1, 0, 0, 0, 323, 1429, 1, 0, 0, 0, 325, 1431, 1, 0, 0, 0, 327, 1433, 1, 0, 0, 0, 329, 1435, 1, 0, 0, 0, 331, 1437, 1, 0, 0, 0, 333, 1439, 1, 0, 0, 0, 335, 1441, 1, 0, 0, 0, 337, 1443, 1, 0, 0, 0, 339, 1445, 1, 0, 0, 0, 341, 1447, 1, 0, 0, 0, 343, 1449, 1, 0, 0, 0, 345, 1451, 1, 0, 0, 0, 347, 1453, 1, 0, 0, 0, 349, 1455, 1, 0, 0, 0, 351, 1457, 1, 0, 0, 0, 353, 1459, 1, 0, 0, 0, 355, 1461, 1, 0, 0, 0, 357, 1463, 1, 0, 0, 0, 359, 1465, 1, 0, 0, 0, 361, 1467, 1, 0, 0, 0, 363, 1469, 1, 0, 0, 0, 365, 1471, 1, 0, 0, 0, 367, 1473, 1, 0, 0, 0, 369, 1475, 1, 0, 0, 0, 371, 1477, 1, 0, 0, 0, 373, 1479, 1, 0, 0, 0, 375, 1481, 1, 0, 0, 0, 377, 378, 5, 58, 0, 0, 378, 379, 5, 58, 0, 0, 379, 2, 1, 0, 0, 0, 380, 381, 5, 59, 0, 0, 381, 4, 1, 0, 0, 0, 382, 383, 5, 46, 0, 0, 383, 6, 1, 0, 0, 0, 384, 385, 5, 40, 0, 0, 385, 8, 1, 0, 0, 0, 386, 387, 5, 41, 0, 0, 387, 10, 1, 0, 0, 0, 388, 389, 5, 44, 0, 0, 389, 12, 1, 0, 0, 0, 390, 391, 5, 61, 0, 0, 391, 14, 1, 0, 0, 0, 392, 393, 5, 42, 0, 0, 393, 16, 1, 0, 0, 0, 394, 395, 5, 43, 0, 0, 395, 18, 1, 0, 0, 0, 396, 397, 5, 45, 0, 0, 397, 20, 1, 0, 0, 0, 398, 399, 5, 126, 0, 0, 399, 22, 1, 0, 0, 0, 400, 401, 5, 124, 0, 0, 401, 402, 5, 124, 0, 0, 402, 24, 1, 0, 0, 0, 403, 404, 5, 47, 0, 0, 404, 26, 1, 0, 0, 0, 405, 406, 5, 37, 0, 0, 406, 28, 1, 0, 0, 0, 407, 408, 5, 60, 0, 0, 408, 409, 5, 60, 0, 0, 409, 30, 1, 0, 0, 0, 410, 411, 5, 62, 0, 0, 411, 412, 5, 62, 0, 0, 412, 32, 1, 0, 0, 0, 413, 414, 5, 38, 0, 0, 414, 34, 1, 0, 0, 0, 415, 416, 5, 124, 0, 0, 416, 36, 1, 0, 0, 0, 417, 418, 5, 60, 0, 0, 418, 38, 1, 0, 0, 0, 419, 420, 5, 60, 0, 0, 420, 421, 5, 61, 0, 0, 421, 40, 1, 0, 0, 0, 422, 423, 5, 62, 0, 0, 423, 42, 1, 0, 0, 0, 424, 425, 5, 62, 0, 0, 425, 426, 5, 61, 0, 0, 426, 44, 1, 0, 0, 0, 427, 428, 5, 61, 0, 0, 428, 429, 5, 61, 0, 0, 429, 46, 1, 0, 0, 0, 430, 431, 5, 33, 0, 0, 431, 432, 5, 61, 0, 0, 432, 48, 1, 0, 0, 0, 433, 434, 5, 60, 0, 0, 434, 435, 5, 62, 0, 0, 435, 50, 1, 0, 0, 0, 436, 437, 3, 325, 162, 0, 437, 438, 3, 327, 163, 0, 438, 439, 3, 353, 176, 0, 439, 440, 3, 359, 179, 0, 440, 441, 3, 363, 181, 0, 441, 52, 1, 0, 0, 0, 442, 443, 3, 325, 162, 0, 443, 444, 3, 329, 164, 0, 444, 445, 3, 363, 181, 0, 445, 446, 3, 341, 170, 0, 446, 447, 3, 353, 176, 0, 447, 448, 3, 351, 175, 0, 448, 54, 1, 0, 0, 0, 449, 450, 3, 325, 162, 0, 450, 451, 3, 331, 165, 0, 451, 452, 3, 331, 165, 0, 452, 56, 1, 0, 0, 0, 453, 454, 3, 325, 162, 0, 454, 455, 3, 335, 167, 0, 455, 456, 3, 363, 181, 0, 456, 457, 3, 333, 166, 0, 457, 458, 3, 359, 179, 0, 458, 58, 1, 0, 0, 0, 459, 460, 3, 325, 162, 0, 460, 461, 3, 347, 173, 0, 461, 462, 3, 347, 173, 0, 462, 60, 1, 0, 0, 0, 463, 464, 3, 325, 162, 0, 464, 465, 3, 347, 173, 0, 465, 466, 3, 363, 181, 0, 466, 467, 3, 333, 166, 0, 467, 468, 3, 359, 179, 0, 468, 62, 1, 0, 0, 0, 469, 470, 3, 325, 162, 0, 470, 471, 3, 351, 175, 0, 471, 472, 3, 325, 162, 0, 472, 473, 3, 347, 173, 0, 473, 474, 3, 373, 186, 0, 474, 475, 3, 375, 187, 0, 475, 476, 3, 333, 166, 0, 476, 64, 1, 0, 0, 0, 477, 478, 3, 325, 162, 0, 478, 479, 3, 351, 175, 0, 479, 480, 3, 331, 165, 0, 480, 66, 1, 0, 0, 0, 481, 482, 3, 325, 162, 0, 482, 483, 3, 361, 180, 0, 483, 68, 1, 0, 0, 0, 484, 485, 3, 325, 162, 0, 485, 486, 3, 361, 180, 0, 486, 487, 3, 329, 164, 0, 487, 70, 1, 0, 0, 0, 488, 489, 3, 325, 162, 0, 489, 490, 3, 363, 181, 0, 490, 491, 3, 363, 181, 0, 491, 492, 3, 325, 162, 0, 492, 493, 3, 329, 164, 0, 493, 494, 3, 339, 169, 0, 494, 72, 1, 0, 0, 0, 495, 496, 3, 325, 162, 0, 496, 497, 3, 365, 182, 0, 497, 498, 3, 363, 181, 0, 498, 499, 3, 353, 176, 0, 499, 500, 3, 341, 170, 0, 500, 501, 3, 351, 175, 0, 501, 502, 3, 329, 164, 0, 502, 503, 3, 359, 179, 0, 503, 504, 3, 333, 166, 0, 504, 505, 3, 349, 174, 0, 505, 506, 3, 333, 166, 0, 506, 507, 3, 351, 175, 0, 507, 508, 3, 363, 181, 0, 508, 74, 1, 0, 0, 0, 509, 510, 3, 327, 163, 0, 510, 511, 3, 333, 166, 0, 511, 512, 3, 335, 167, 0, 512, 513, 3, 353, 176, 0, 513, 514, 3, 359, 179, 0, 514, 515, 3, 333, 166, 0, 515, 76, 1, 0, 0, 0, 516, 517, 3, 327, 163, 0, 517, 518, 3, 333, 166, 0, 518, 519, 3, 337, 168, 0, 519, 520, 3, 341, 170, 0, 520, 521, 3, 351, 175, 0, 521, 78, 1, 0, 0, 0, 522, 523, 3, 327, 163, 0, 523, 524, 3, 333, 166, 0, 524, 525, 3, 363, 181, 0, 525, 526, 3, 369, 184, 0, 526, 527, 3, 333, 166, 0, 527, 528, 3, 333, 166, 0, 528, 529, 3, 351, 175, 0, 529, 80, 1, 0, 0, 0, 530, 531, 3, 327, 163, 0, 531, 532, 3, 373, 186, 0, 532, 82, 1, 0, 0, 0, 533, 534, 3, 329, 164, 0, 534, 535, 3, 325, 162, 0, 535, 536, 3, 361, 180, 0, 536, 537, 3, 329, 164, 0, 537, 538, 3, 325, 162, 0, 538, 539, 3, 331, 165, 0, 539, 540, 3, 333, 166, 0, 540, 84, 1, 0, 0, 0, 541, 542, 3, 329, 164, 0, 542, 543, 3, 325, 162, 0, 543, 544, 3, 361, 180, 0, 544, 545, 3, 333, 166, 0, 545, 86, 1, 0, 0, 0, 546, 547, 3, 329, 164, 0, 547, 548, 3, 325, 162, 0, 548, 549, 3, 361, 180, 0, 549, 550, 3, 363, 181, 0, 550, 88, 1, 0, 0, 0, 551, 552, 3, 329, 164, 0, 552, 553, 3, 339, 169, 0, 553, 554, 3, 333, 166, 0, 554, 555, 3, 329, 164, 0, 555, 556, 3, 345, 172, 0, 556, 90, 1, 0, 0, 0, 557, 558, 3, 329, 164, 0, 558, 559, 3, 353, 176, 0, 559, 560, 3, 347, 173, 0, 560, 561, 3, 347, 173, 0, 561, 562, 3, 325, 162, 0, 562, 563, 3, 363, 181, 0, 563, 564, 3, 333, 166, 0, 564, 92, 1, 0, 0, 0, 565, 566, 3, 329, 164, 0, 566, 567, 3, 353, 176, 0, 567, 568, 3, 347, 173, 0, 568, 569, 3, 365, 182, 0, 569, 570, 3, 349, 174, 0, 570, 571, 3, 351, 175, 0, 571, 94, 1, 0, 0, 0, 572, 573, 3, 329, 164, 0, 573, 574, 3, 353, 176, 0, 574, 575, 3, 349, 174, 0, 575, 576, 3, 349, 174, 0, 576, 577, 3, 341, 170, 0, 577, 578, 3, 363, 181, 0, 578, 96, 1, 0, 0, 0, 579, 580, 3, 329, 164, 0, 580, 581, 3, 353, 176, 0, 581, 582, 3, 351, 175, 0, 582, 583, 3, 335, 167, 0, 583, 584, 3, 347, 173, 0, 584, 585, 3, 341, 170, 0, 585, 586, 3, 329, 164, 0, 586, 587, 3, 363, 181, 0, 587, 98, 1, 0, 0, 0, 588, 589, 3, 329, 164, 0, 589, 590, 3, 353, 176, 0, 590, 591, 3, 351, 175, 0, 591, 592, 3, 361, 180, 0, 592, 593, 3, 363, 181, 0, 593, 594, 3, 359, 179, 0, 594, 595, 3, 325, 162, 0, 595, 596, 3, 341, 170, 0, 596, 597, 3, 351, 175, 0, 597, 598, 3, 363, 181, 0, 598, 100, 1, 0, 0, 0, 599, 600, 3, 329, 164, 0, 600, 601, 3, 359, 179, 0, 601, 602, 3, 333, 166, 0, 602, 603, 3, 325, 162, 0, 603, 604, 3, 363, 181, 0, 604, 605, 3, 333, 166, 0, 605, 102, 1, 0, 0, 0, 606, 607, 3, 329, 164, 0, 607, 608, 3, 359, 179, 0, 608, 609, 3, 353, 176, 0, 609, 610, 3, 361, 180, 0, 610, 611, 3, 361, 180, 0, 611, 104, 1, 0, 0, 0, 612, 613, 3, 329, 164, 0, 613, 614, 3, 365, 182, 0, 614, 615, 3, 359, 179, 0, 615, 616, 3, 359, 179, 0, 616, 617, 3, 333, 166, 0, 617, 618, 3, 351, 175, 0, 618, 619, 3, 363, 181, 0, 619, 620, 5, 95, 0, 0, 620, 621, 3, 331, 165, 0, 621, 622, 3, 325, 162, 0, 622, 623, 3, 363, 181, 0, 623, 624, 3, 333, 166, 0, 624, 106, 1, 0, 0, 0, 625, 626, 3, 329, 164, 0, 626, 627, 3, 365, 182, 0, 627, 628, 3, 359, 179, 0, 628, 629, 3, 359, 179, 0, 629, 630, 3, 333, 166, 0, 630, 631, 3, 351, 175, 0, 631, 632, 3, 363, 181, 0, 632, 633, 5, 95, 0, 0, 633, 634, 3, 363, 181, 0, 634, 635, 3, 341, 170, 0, 635, 636, 3, 349, 174, 0, 636, 637, 3, 333, 166, 0, 637, 108, 1, 0, 0, 0, 638, 639, 3, 329, 164, 0, 639, 640, 3, 365, 182, 0, 640, 641, 3, 359, 179, 0, 641, 642, 3, 359, 179, 0, 642, 643, 3, 333, 166, 0, 643, 644, 3, 351, 175, 0, 644, 645, 3, 363, 181, 0, 645, 646, 5, 95, 0, 0, 646, 647, 3, 363, 181, 0, 647, 648, 3, 341, 170, 0, 648, 649, 3, 349, 174, 0, 649, 650, 3, 333, 166, 0, 650, 651, 3, 361, 180, 0, 651, 652, 3, 363, 181, 0, 652, 653, 3, 325, 162, 0, 653, 654, 3, 349, 174, 0, 654, 655, 3, 355, 177, 0, 655, 110, 1, 0, 0, 0, 656, 657, 3, 331, 165, 0, 657, 658, 3, 325, 162, 0, 658, 659, 3, 363, 181, 0, 659, 660, 3, 325, 162, 0, 660, 661, 3, 327, 163, 0, 661, 662, 3, 325, 162, 0, 662, 663, 3, 361, 180, 0, 663, 664, 3, 333, 166, 0, 664, 112, 1, 0, 0, 0, 665, 666, 3, 331, 165, 0, 666, 667, 3, 333, 166, 0, 667, 668, 3, 335, 167, 0, 668, 669, 3, 325, 162, 0, 669, 670, 3, 365, 182, 0, 670, 671, 3, 347, 173, 0, 671, 672, 3, 363, 181, 0, 672, 114, 1, 0, 0, 0, 673, 674, 3, 331, 165, 0, 674, 675, 3, 333, 166, 0, 675, 676, 3, 335, 167, 0, 676, 677, 3, 333, 166, 0, 677, 678, 3, 359, 179, 0, 678, 679, 3, 359, 179, 0, 679, 680, 3, 325, 162, 0, 680, 681, 3, 327, 163, 0, 681, 682, 3, 347, 173, 0, 682, 683, 3, 333, 166, 0, 683, 116, 1, 0, 0, 0, 684, 685, 3, 331, 165, 0, 685, 686, 3, 333, 166, 0, 686, 687, 3, 335, 167, 0, 687, 688, 3, 333, 166, 0, 688, 689, 3, 359, 179, 0, 689, 690, 3, 359, 179, 0, 690, 691, 3, 333, 166, 0, 691, 692, 3, 331, 165, 0, 692, 118, 1, 0, 0, 0, 693, 694, 3, 331, 165, 0, 694, 695, 3, 333, 166, 0, 695, 696, 3, 347, 173, 0, 696, 697, 3, 333, 166, 0, 697, 698, 3, 363, 181, 0, 698, 699, 3, 333, 166, 0, 699, 120, 1, 0, 0, 0, 700, 701, 3, 331, 165, 0, 701, 702, 3, 333, 166, 0, 702, 703, 3, 361, 180, 0, 703, 704, 3, 329, 164, 0, 704, 122, 1, 0, 0, 0, 705, 706, 3, 331, 165, 0, 706, 707, 3, 333, 166, 0, 707, 708, 3, 363, 181, 0, 708, 709, 3, 325, 162, 0, 709, 710, 3, 329, 164, 0, 710, 711, 3, 339, 169, 0, 711, 124, 1, 0, 0, 0, 712, 713, 3, 331, 165, 0, 713, 714, 3, 341, 170, 0, 714, 715, 3, 361, 180, 0, 715, 716, 3, 363, 181, 0, 716, 717, 3, 341, 170, 0, 717, 718, 3, 351, 175, 0, 718, 719, 3, 329, 164, 0, 719, 720, 3, 363, 181, 0, 720, 126, 1, 0, 0, 0, 721, 722, 3, 331, 165, 0, 722, 723, 3, 359, 179, 0, 723, 724, 3, 353, 176, 0, 724, 725, 3, 355, 177, 0, 725, 128, 1, 0, 0, 0, 726, 727, 3, 333, 166, 0, 727, 728, 3, 325, 162, 0, 728, 729, 3, 329, 164, 0, 729, 730, 3, 339, 169, 0, 730, 130, 1, 0, 0, 0, 731, 732, 3, 333, 166, 0, 732, 733, 3, 347, 173, 0, 733, 734, 3, 361, 180, 0, 734, 735, 3, 333, 166, 0, 735, 132, 1, 0, 0, 0, 736, 737, 3, 333, 166, 0, 737, 738, 3, 351, 175, 0, 738, 739, 3, 331, 165, 0, 739, 134, 1, 0, 0, 0, 740, 741, 3, 333, 166, 0, 741, 742, 3, 351, 175, 0, 742, 743, 3, 325, 162, 0, 743, 744, 3, 327, 163, 0, 744, 745, 3, 347, 173, 0, 745, 746, 3, 333, 166, 0, 746, 136, 1, 0, 0, 0, 747, 748, 3, 333, 166, 0, 748, 749, 3, 361, 180, 0, 749, 750, 3, 329, 164, 0, 750, 751, 3, 325, 162, 0, 751, 752, 3, 355, 177, 0, 752, 753, 3, 333, 166, 0, 753, 138, 1, 0, 0, 0, 754, 755, 3, 333, 166, 0, 755, 756, 3, 371, 185, 0, 756, 757, 3, 329, 164, 0, 757, 758, 3, 333, 166, 0, 758, 759, 3, 355, 177, 0, 759, 760, 3, 363, 181, 0, 760, 140, 1, 0, 0, 0, 761, 762, 3, 333, 166, 0, 762, 763, 3, 371, 185, 0, 763, 764, 3, 329, 164, 0, 764, 765, 3, 347, 173, 0, 765, 766, 3, 365, 182, 0, 766, 767, 3, 361, 180, 0, 767, 768, 3, 341, 170, 0, 768, 769, 3, 367, 183, 0, 769, 770, 3, 333, 166, 0, 770, 142, 1, 0, 0, 0, 771, 772, 3, 333, 166, 0, 772, 773, 3, 371, 185, 0, 773, 774, 3, 341, 170, 0, 774, 775, 3, 361, 180, 0, 775, 776, 3, 363, 181, 0, 776, 777, 3, 361, 180, 0, 777, 144, 1, 0, 0, 0, 778, 779, 3, 333, 166, 0, 779, 780, 3, 371, 185, 0, 780, 781, 3, 355, 177, 0, 781, 782, 3, 347, 173, 0, 782, 783, 3, 325, 162, 0, 783, 784, 3, 341, 170, 0, 784, 785, 3, 351, 175, 0, 785, 146, 1, 0, 0, 0, 786, 787, 3, 335, 167, 0, 787, 788, 3, 325, 162, 0, 788, 789, 3, 341, 170, 0, 789, 790, 3, 347, 173, 0, 790, 148, 1, 0, 0, 0, 791, 792, 3, 335, 167, 0, 792, 793, 3, 353, 176, 0, 793, 794, 3, 359, 179, 0, 794, 150, 1, 0, 0, 0, 795, 796, 3, 335, 167, 0, 796, 797, 3, 353, 176, 0, 797, 798, 3, 359, 179, 0, 798, 799, 3, 333, 166, 0, 799, 800, 3, 341, 170, 0, 800, 801, 3, 337, 168, 0, 801, 802, 3, 351, 175, 0, 802, 152, 1, 0, 0, 0, 803, 804, 3, 335, 167, 0, 804, 805, 3, 359, 179, 0, 805, 806, 3, 353, 176, 0, 806, 807, 3, 349, 174, 0, 807, 154, 1, 0, 0, 0, 808, 809, 3, 335, 167, 0, 809, 810, 3, 365, 182, 0, 810, 811, 3, 347, 173, 0, 811, 812, 3, 347, 173, 0, 812, 156, 1, 0, 0, 0, 813, 814, 3, 337, 168, 0, 814, 815, 3, 347, 173, 0, 815, 816, 3, 353, 176, 0, 816, 817, 3, 327, 163, 0, 817, 158, 1, 0, 0, 0, 818, 819, 3, 337, 168, 0, 819, 820, 3, 359, 179, 0, 820, 821, 3, 353, 176, 0, 821, 822, 3, 365, 182, 0, 822, 823, 3, 355, 177, 0, 823, 160, 1, 0, 0, 0, 824, 825, 3, 339, 169, 0, 825, 826, 3, 325, 162, 0, 826, 827, 3, 367, 183, 0, 827, 828, 3, 341, 170, 0, 828, 829, 3, 351, 175, 0, 829, 830, 3, 337, 168, 0, 830, 162, 1, 0, 0, 0, 831, 832, 3, 341, 170, 0, 832, 833, 3, 335, 167, 0, 833, 164, 1, 0, 0, 0, 834, 835, 3, 341, 170, 0, 835, 836, 3, 337, 168, 0, 836, 837, 3, 351, 175, 0, 837, 838, 3, 353, 176, 0, 838, 839, 3, 359, 179, 0, 839, 840, 3, 333, 166, 0, 840, 166, 1, 0, 0, 0, 841, 842, 3, 341, 170, 0, 842, 843, 3, 349, 174, 0, 843, 844, 3, 349, 174, 0, 844, 845, 3, 333, 166, 0, 845, 846, 3, 331, 165, 0, 846, 847, 3, 341, 170, 0, 847, 848, 3, 325, 162, 0, 848, 849, 3, 363, 181, 0, 849, 850, 3, 333, 166, 0, 850, 168, 1, 0, 0, 0, 851, 852, 3, 341, 170, 0, 852, 853, 3, 351, 175, 0, 853, 170, 1, 0, 0, 0, 854, 855, 3, 341, 170, 0, 855, 856, 3, 351, 175, 0, 856, 857, 3, 331, 165, 0, 857, 858, 3, 333, 166, 0, 858, 859, 3, 371, 185, 0, 859, 172, 1, 0, 0, 0, 860, 861, 3, 341, 170, 0, 861, 862, 3, 351, 175, 0, 862, 863, 3, 331, 165, 0, 863, 864, 3, 333, 166, 0, 864, 865, 3, 371, 185, 0, 865, 866, 3, 333, 166, 0, 866, 867, 3, 331, 165, 0, 867, 174, 1, 0, 0, 0, 868, 869, 3, 341, 170, 0, 869, 870, 3, 351, 175, 0, 870, 871, 3, 341, 170, 0, 871, 872, 3, 363, 181, 0, 872, 873, 3, 341, 170, 0, 873, 874, 3, 325, 162, 0, 874, 875, 3, 347, 173, 0, 875, 876, 3, 347, 173, 0, 876, 877, 3, 373, 186, 0, 877, 176, 1, 0, 0, 0, 878, 879, 3, 341, 170, 0, 879, 880, 3, 351, 175, 0, 880, 881, 3, 351, 175, 0, 881, 882, 3, 333, 166, 0, 882, 883, 3, 359, 179, 0, 883, 178, 1, 0, 0, 0, 884, 885, 3, 341, 170, 0, 885, 886, 3, 351, 175, 0, 886, 887, 3, 361, 180, 0, 887, 888, 3, 333, 166, 0, 888, 889, 3, 359, 179, 0, 889, 890, 3, 363, 181, 0, 890, 180, 1, 0, 0, 0, 891, 892, 3, 341, 170, 0, 892, 893, 3, 351, 175, 0, 893, 894, 3, 361, 180, 0, 894, 895, 3, 363, 181, 0, 895, 896, 3, 333, 166, 0, 896, 897, 3, 325, 162, 0, 897, 898, 3, 331, 165, 0, 898, 182, 1, 0, 0, 0, 899, 900, 3, 341, 170, 0, 900, 901, 3, 351, 175, 0, 901, 902, 3, 363, 181, 0, 902, 903, 3, 333, 166, 0, 903, 904, 3, 359, 179, 0, 904, 905, 3, 361, 180, 0, 905, 906, 3, 333, 166, 0, 906, 907, 3, 329, 164, 0, 907, 908, 3, 363, 181, 0, 908, 184, 1, 0, 0, 0, 909, 910, 3, 341, 170, 0, 910, 911, 3, 351, 175, 0, 911, 912, 3, 363, 181, 0, 912, 913, 3, 353, 176, 0, 913, 186, 1, 0, 0, 0, 914, 915, 3, 341, 170, 0, 915, 916, 3, 361, 180, 0, 916, 188, 1, 0, 0, 0, 917, 918, 3, 341, 170, 0, 918, 919, 3, 361, 180, 0, 919, 920, 3, 351, 175, 0, 920, 921, 3, 365, 182, 0, 921, 922, 3, 347, 173, 0, 922, 923, 3, 347, 173, 0, 923, 190, 1, 0, 0, 0, 924, 925, 3, 343, 171, 0, 925, 926, 3, 353, 176, 0, 926, 927, 3, 341, 170, 0, 927, 928, 3, 351, 175, 0, 928, 192, 1, 0, 0, 0, 929, 930, 3, 345, 172, 0, 930, 931, 3, 333, 166, 0, 931, 932, 3, 373, 186, 0, 932, 194, 1, 0, 0, 0, 933, 934, 3, 347, 173, 0, 934, 935, 3, 333, 166, 0, 935, 936, 3, 335, 167, 0, 936, 937, 3, 363, 181, 0, 937, 196, 1, 0, 0, 0, 938, 939, 3, 347, 173, 0, 939, 940, 3, 341, 170, 0, 940, 941, 3, 345, 172, 0, 941, 942, 3, 333, 166, 0, 942, 198, 1, 0, 0, 0, 943, 944, 3, 347, 173, 0, 944, 945, 3, 341, 170, 0, 945, 946, 3, 349, 174, 0, 946, 947, 3, 341, 170, 0, 947, 948, 3, 363, 181, 0, 948, 200, 1, 0, 0, 0, 949, 950, 3, 349, 174, 0, 950, 951, 3, 325, 162, 0, 951, 952, 3, 363, 181, 0, 952, 953, 3, 329, 164, 0, 953, 954, 3, 339, 169, 0, 954, 202, 1, 0, 0, 0, 955, 956, 3, 351, 175, 0, 956, 957, 3, 325, 162, 0, 957, 958, 3, 363, 181, 0, 958, 959, 3, 365, 182, 0, 959, 960, 3, 359, 179, 0, 960, 961, 3, 325, 162, 0, 961, 962, 3, 347, 173, 0, 962, 204, 1, 0, 0, 0, 963, 964, 3, 351, 175, 0, 964, 965, 3, 333, 166, 0, 965, 966, 3, 371, 185, 0, 966, 967, 3, 363, 181, 0, 967, 968, 3, 367, 183, 0, 968, 969, 3, 325, 162, 0, 969, 970, 3, 347, 173, 0, 970, 206, 1, 0, 0, 0, 971, 972, 3, 351, 175, 0, 972, 973, 3, 353, 176, 0, 973, 208, 1, 0, 0, 0, 974, 975, 3, 351, 175, 0, 975, 976, 3, 353, 176, 0, 976, 977, 3, 363, 181, 0, 977, 210, 1, 0, 0, 0, 978, 979, 3, 351, 175, 0, 979, 980, 3, 353, 176, 0, 980, 981, 3, 363, 181, 0, 981, 982, 3, 351, 175, 0, 982, 983, 3, 365, 182, 0, 983, 984, 3, 347, 173, 0, 984, 985, 3, 347, 173, 0, 985, 212, 1, 0, 0, 0, 986, 987, 3, 351, 175, 0, 987, 988, 3, 365, 182, 0, 988, 989, 3, 347, 173, 0, 989, 990, 3, 347, 173, 0, 990, 214, 1, 0, 0, 0, 991, 992, 3, 353, 176, 0, 992, 993, 3, 335, 167, 0, 993, 216, 1, 0, 0, 0, 994, 995, 3, 353, 176, 0, 995, 996, 3, 335, 167, 0, 996, 997, 3, 335, 167, 0, 997, 998, 3, 361, 180, 0, 998, 999, 3, 333, 166, 0, 999, 1000, 3, 363, 181, 0, 1000, 218, 1, 0, 0, 0, 1001, 1002, 3, 353, 176, 0, 1002, 1003, 3, 351, 175, 0, 1003, 220, 1, 0, 0, 0, 1004, 1005, 3, 353, 176, 0, 1005, 1006, 3, 351, 175, 0, 1006, 1007, 3, 347, 173, 0, 1007, 1008, 3, 373, 186, 0, 1008, 222, 1, 0, 0, 0, 1009, 1010, 3, 353, 176, 0, 1010, 1011, 3, 359, 179, 0, 1011, 224, 1, 0, 0, 0, 1012, 1013, 3, 353, 176, 0, 1013, 1014, 3, 359, 179, 0, 1014, 1015, 3, 331, 165, 0, 1015, 1016, 3, 333, 166, 0, 1016, 1017, 3, 359, 179, 0, 1017, 226, 1, 0, 0, 0, 1018, 1019, 3, 353, 176, 0, 1019, 1020, 3, 365, 182, 0, 1020, 1021, 3, 363, 181, 0, 1021, 1022, 3, 333, 166, 0, 1022, 1023, 3, 359, 179, 0, 1023, 228, 1, 0, 0, 0, 1024, 1025, 3, 355, 177, 0, 1025, 1026, 3, 347, 173, 0, 1026, 1027, 3, 325, 162, 0, 1027, 1028, 3, 351, 175, 0, 1028, 230, 1, 0, 0, 0, 1029, 1030, 3, 355, 177, 0, 1030, 1031, 3, 359, 179, 0, 1031, 1032, 3, 325, 162, 0, 1032, 1033, 3, 337, 168, 0, 1033, 1034, 3, 349, 174, 0, 1034, 1035, 3, 325, 162, 0, 1035, 232, 1, 0, 0, 0, 1036, 1037, 3, 355, 177, 0, 1037, 1038, 3, 359, 179, 0, 1038, 1039, 3, 341, 170, 0, 1039, 1040, 3, 349, 174, 0, 1040, 1041, 3, 325, 162, 0, 1041, 1042, 3, 359, 179, 0, 1042, 1043, 3, 373, 186, 0, 1043, 234, 1, 0, 0, 0, 1044, 1045, 3, 357, 178, 0, 1045, 1046, 3, 365, 182, 0, 1046, 1047, 3, 333, 166, 0, 1047, 1048, 3, 359, 179, 0, 1048, 1049, 3, 373, 186, 0, 1049, 236, 1, 0, 0, 0, 1050, 1051, 3, 359, 179, 0, 1051, 1052, 3, 325, 162, 0, 1052, 1053, 3, 341, 170, 0, 1053, 1054, 3, 361, 180, 0, 1054, 1055, 3, 333, 166, 0, 1055, 238, 1, 0, 0, 0, 1056, 1057, 3, 359, 179, 0, 1057, 1058, 3, 333, 166, 0, 1058, 1059, 3, 329, 164, 0, 1059, 1060, 3, 365, 182, 0, 1060, 1061, 3, 359, 179, 0, 1061, 1062, 3, 361, 180, 0, 1062, 1063, 3, 341, 170, 0, 1063, 1064, 3, 367, 183, 0, 1064, 1065, 3, 333, 166, 0, 1065, 240, 1, 0, 0, 0, 1066, 1067, 3, 359, 179, 0, 1067, 1068, 3, 333, 166, 0, 1068, 1069, 3, 335, 167, 0, 1069, 1070, 3, 333, 166, 0, 1070, 1071, 3, 359, 179, 0, 1071, 1072, 3, 333, 166, 0, 1072, 1073, 3, 351, 175, 0, 1073, 1074, 3, 329, 164, 0, 1074, 1075, 3, 333, 166, 0, 1075, 1076, 3, 361, 180, 0, 1076, 242, 1, 0, 0, 0, 1077, 1078, 3, 359, 179, 0, 1078, 1079, 3, 333, 166, 0, 1079, 1080, 3, 337, 168, 0, 1080, 1081, 3, 333, 166, 0, 1081, 1082, 3, 371, 185, 0, 1082, 1083, 3, 355, 177, 0, 1083, 244, 1, 0, 0, 0, 1084, 1085, 3, 359, 179, 0, 1085, 1086, 3, 333, 166, 0, 1086, 1087, 3, 341, 170, 0, 1087, 1088, 3, 351, 175, 0, 1088, 1089, 3, 331, 165, 0, 1089, 1090, 3, 333, 166, 0, 1090, 1091, 3, 371, 185, 0, 1091, 246, 1, 0, 0, 0, 1092, 1093, 3, 359, 179, 0, 1093, 1094, 3, 333, 166, 0, 1094, 1095, 3, 347, 173, 0, 1095, 1096, 3, 333, 166, 0, 1096, 1097, 3, 325, 162, 0, 1097, 1098, 3, 361, 180, 0, 1098, 1099, 3, 333, 166, 0, 1099, 248, 1, 0, 0, 0, 1100, 1101, 3, 359, 179, 0, 1101, 1102, 3, 333, 166, 0, 1102, 1103, 3, 351, 175, 0, 1103, 1104, 3, 325, 162, 0, 1104, 1105, 3, 349, 174, 0, 1105, 1106, 3, 333, 166, 0, 1106, 250, 1, 0, 0, 0, 1107, 1108, 3, 359, 179, 0, 1108, 1109, 3, 333, 166, 0, 1109, 1110, 3, 355, 177, 0, 1110, 1111, 3, 347, 173, 0, 1111, 1112, 3, 325, 162, 0, 1112, 1113, 3, 329, 164, 0, 1113, 1114, 3, 333, 166, 0, 1114, 252, 1, 0, 0, 0, 1115, 1116, 3, 359, 179, 0, 1116, 1117, 3, 333, 166, 0, 1117, 1118, 3, 361, 180, 0, 1118, 1119, 3, 363, 181, 0, 1119, 1120, 3, 359, 179, 0, 1120, 1121, 3, 341, 170, 0, 1121, 1122, 3, 329, 164, 0, 1122, 1123, 3, 363, 181, 0, 1123, 254, 1, 0, 0, 0, 1124, 1125, 3, 359, 179, 0, 1125, 1126, 3, 341, 170, 0, 1126, 1127, 3, 337, 168, 0, 1127, 1128, 3, 339, 169, 0, 1128, 1129, 3, 363, 181, 0, 1129, 256, 1, 0, 0, 0, 1130, 1131, 3, 359, 179, 0, 1131, 1132, 3, 353, 176, 0, 1132, 1133, 3, 347, 173, 0, 1133, 1134, 3, 347, 173, 0, 1134, 1135, 3, 327, 163, 0, 1135, 1136, 3, 325, 162, 0, 1136, 1137, 3, 329, 164, 0, 1137, 1138, 3, 345, 172, 0, 1138, 258, 1, 0, 0, 0, 1139, 1140, 3, 359, 179, 0, 1140, 1141, 3, 353, 176, 0, 1141, 1142, 3, 369, 184, 0, 1142, 260, 1, 0, 0, 0, 1143, 1144, 3, 361, 180, 0, 1144, 1145, 3, 325, 162, 0, 1145, 1146, 3, 367, 183, 0, 1146, 1147, 3, 333, 166, 0, 1147, 1148, 3, 355, 177, 0, 1148, 1149, 3, 353, 176, 0, 1149, 1150, 3, 341, 170, 0, 1150, 1151, 3, 351, 175, 0, 1151, 1152, 3, 363, 181, 0, 1152, 262, 1, 0, 0, 0, 1153, 1154, 3, 361, 180, 0, 1154, 1155, 3, 333, 166, 0, 1155, 1156, 3, 347, 173, 0, 1156, 1157, 3, 333, 166, 0, 1157, 1158, 3, 329, 164, 0, 1158, 1159, 3, 363, 181, 0, 1159, 264, 1, 0, 0, 0, 1160, 1161, 3, 361, 180, 0, 1161, 1162, 3, 333, 166, 0, 1162, 1163, 3, 363, 181, 0, 1163, 266, 1, 0, 0, 0, 1164, 1165, 3, 363, 181, 0, 1165, 1166, 3, 325, 162, 0, 1166, 1167, 3, 327, 163, 0, 1167, 1168, 3, 347, 173, 0, 1168, 1169, 3, 333, 166, 0, 1169, 268, 1, 0, 0, 0, 1170, 1171, 3, 363, 181, 0, 1171, 1172, 3, 333, 166, 0, 1172, 1173, 3, 349, 174, 0, 1173, 1174, 3, 355, 177, 0, 1174, 270, 1, 0, 0, 0, 1175, 1176, 3, 363, 181, 0, 1176, 1177, 3, 333, 166, 0, 1177, 1178, 3, 349, 174, 0, 1178, 1179, 3, 355, 177, 0, 1179, 1180, 3, 353, 176, 0, 1180, 1181, 3, 359, 179, 0, 1181, 1182, 3, 325, 162, 0, 1182, 1183, 3, 359, 179, 0, 1183, 1184, 3, 373, 186, 0, 1184, 272, 1, 0, 0, 0, 1185, 1186, 3, 363, 181, 0, 1186, 1187, 3, 339, 169, 0, 1187, 1188, 3, 333, 166, 0, 1188, 1189, 3, 351, 175, 0, 1189, 274, 1, 0, 0, 0, 1190, 1191, 3, 363, 181, 0, 1191, 1192, 3, 353, 176, 0, 1192, 276, 1, 0, 0, 0, 1193, 1194, 3, 363, 181, 0, 1194, 1195, 3, 359, 179, 0, 1195, 1196, 3, 325, 162, 0, 1196, 1197, 3, 351, 175, 0, 1197, 1198, 3, 361, 180, 0, 1198, 1199, 3, 325, 162, 0, 1199, 1200, 3, 329, 164, 0, 1200, 1201, 3, 363, 181, 0, 1201, 1202, 3, 341, 170, 0, 1202, 1203, 3, 353, 176, 0, 1203, 1204, 3, 351, 175, 0, 1204, 278, 1, 0, 0, 0, 1205, 1206, 3, 363, 181, 0, 1206, 1207, 3, 359, 179, 0, 1207, 1208, 3, 341, 170, 0, 1208, 1209, 3, 337, 168, 0, 1209, 1210, 3, 337, 168, 0, 1210, 1211, 3, 333, 166, 0, 1211, 1212, 3, 359, 179, 0, 1212, 280, 1, 0, 0, 0, 1213, 1214, 3, 365, 182, 0, 1214, 1215, 3, 351, 175, 0, 1215, 1216, 3, 341, 170, 0, 1216, 1217, 3, 353, 176, 0, 1217, 1218, 3, 351, 175, 0, 1218, 282, 1, 0, 0, 0, 1219, 1220, 3, 365, 182, 0, 1220, 1221, 3, 351, 175, 0, 1221, 1222, 3, 341, 170, 0, 1222, 1223, 3, 357, 178, 0, 1223, 1224, 3, 365, 182, 0, 1224, 1225, 3, 333, 166, 0, 1225, 284, 1, 0, 0, 0, 1226, 1227, 3, 365, 182, 0, 1227, 1228, 3, 355, 177, 0, 1228, 1229, 3, 331, 165, 0, 1229, 1230, 3, 325, 162, 0, 1230, 1231, 3, 363, 181, 0, 1231, 1232, 3, 333, 166, 0, 1232, 286, 1, 0, 0, 0, 1233, 1234, 3, 365, 182, 0, 1234, 1235, 3, 361, 180, 0, 1235, 1236, 3, 341, 170, 0, 1236, 1237, 3, 351, 175, 0, 1237, 1238, 3, 337, 168, 0, 1238, 288, 1, 0, 0, 0, 1239, 1240, 3, 367, 183, 0, 1240, 1241, 3, 325, 162, 0, 1241, 1242, 3, 329, 164, 0, 1242, 1243, 3, 365, 182, 0, 1243, 1244, 3, 365, 182, 0, 1244, 1245, 3, 349, 174, 0, 1245, 290, 1, 0, 0, 0, 1246, 1247, 3, 367, 183, 0, 1247, 1248, 3, 325, 162, 0, 1248, 1249, 3, 347, 173, 0, 1249, 1250, 3, 365, 182, 0, 1250, 1251, 3, 333, 166, 0, 1251, 1252, 3, 361, 180, 0, 1252, 292, 1, 0, 0, 0, 1253, 1254, 3, 367, 183, 0, 1254, 1255, 3, 341, 170, 0, 1255, 1256, 3, 333, 166, 0, 1256, 1257, 3, 369, 184, 0, 1257, 294, 1, 0, 0, 0, 1258, 1259, 3, 367, 183, 0, 1259, 1260, 3, 341, 170, 0, 1260, 1261, 3, 359, 179, 0, 1261, 1262, 3, 363, 181, 0, 1262, 1263, 3, 365, 182, 0, 1263, 1264, 3, 325, 162, 0, 1264, 1265, 3, 347, 173, 0, 1265, 296, 1, 0, 0, 0, 1266, 1267, 3, 369, 184, 0, 1267, 1268, 3, 339, 169, 0, 1268, 1269, 3, 333, 166, 0, 1269, 1270, 3, 351, 175, 0, 1270, 298, 1, 0, 0, 0, 1271, 1272, 3, 369, 184, 0, 1272, 1273, 3, 339, 169, 0, 1273, 1274, 3, 333, 166, 0, 1274, 1275, 3, 359, 179, 0, 1275, 1276, 3, 333, 166, 0, 1276, 300, 1, 0, 0, 0, 1277, 1278, 3, 369, 184, 0, 1278, 1279, 3, 341, 170, 0, 1279, 1280, 3, 363, 181, 0, 1280, 1281, 3, 339, 169, 0, 1281, 302, 1, 0, 0, 0, 1282, 1283, 3, 369, 184, 0, 1283, 1284, 3, 341, 170, 0, 1284, 1285, 3, 363, 181, 0, 1285, 1286, 3, 339, 169, 0, 1286, 1287, 3, 353, 176, 0, 1287, 1288, 3, 365, 182, 0, 1288, 1289, 3, 363, 181, 0, 1289, 304, 1, 0, 0, 0, 1290, 1296, 5, 34, 0, 0, 1291, 1295, 8, 0, 0, 0, 1292, 1293, 5, 34, 0, 0, 1293, 1295, 5, 34, 0, 0, 1294, 1291, 1, 0, 0, 0, 1294, 1292, 1, 0, 0, 0, 1295, 1298, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, 1299, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1299, 1326, 5, 34, 0, 0, 1300, 1306, 5, 96, 0, 0, 1301, 1305, 8, 1, 0, 0, 1302, 1303, 5, 96, 0, 0, 1303, 1305, 5, 96, 0, 0, 1304, 1301, 1, 0, 0, 0, 1304, 1302, 1, 0, 0, 0, 1305, 1308, 1, 0, 0, 0, 1306, 1304, 1, 0, 0, 0, 1306, 1307, 1, 0, 0, 0, 1307, 1309, 1, 0, 0, 0, 1308, 1306, 1, 0, 0, 0, 1309, 1326, 5, 96, 0, 0, 1310, 1314, 5, 91, 0, 0, 1311, 1313, 8, 2, 0, 0, 1312, 1311, 1, 0, 0, 0, 1313, 1316, 1, 0, 0, 0, 1314, 1312, 1, 0, 0, 0, 1314, 1315, 1, 0, 0, 0, 1315, 1317, 1, 0, 0, 0, 1316, 1314, 1, 0, 0, 0, 1317, 1326, 5, 93, 0, 0, 1318, 1322, 7, 3, 0, 0, 1319, 1321, 7, 4, 0, 0, 1320, 1319, 1, 0, 0, 0, 1321, 1324, 1, 0, 0, 0, 1322, 1320, 1, 0, 0, 0, 1322, 1323, 1, 0, 0, 0, 1323, 1326, 1, 0, 0, 0, 1324, 1322, 1, 0, 0, 0, 1325, 1290, 1, 0, 0, 0, 1325, 1300, 1, 0, 0, 0, 1325, 1310, 1, 0, 0, 0, 1325, 1318, 1, 0, 0, 0, 1326, 306, 1, 0, 0, 0, 1327, 1329, 3, 323, 161, 0, 1328, 1327, 1, 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 1328, 1, 0, 0, 0, 1330, 1331, 1, 0, 0, 0, 1331, 1339, 1, 0, 0, 0, 1332, 1336, 5, 46, 0, 0, 1333, 1335, 3, 323, 161, 0, 1334, 1333, 1, 0, 0, 0, 1335, 1338, 1, 0, 0, 0, 1336, 1334, 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1340, 1, 0, 0, 0, 1338, 1336, 1, 0, 0, 0, 1339, 1332, 1, 0, 0, 0, 1339, 1340, 1, 0, 0, 0, 1340, 1350, 1, 0, 0, 0, 1341, 1343, 3, 333, 166, 0, 1342, 1344, 7, 5, 0, 0, 1343, 1342, 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1346, 1, 0, 0, 0, 1345, 1347, 3, 323, 161, 0, 1346, 1345, 1, 0, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, 1346, 1, 0, 0, 0, 1348, 1349, 1, 0, 0, 0, 1349, 1351, 1, 0, 0, 0, 1350, 1341, 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1370, 1, 0, 0, 0, 1352, 1354, 5, 46, 0, 0, 1353, 1355, 3, 323, 161, 0, 1354, 1353, 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1354, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1367, 1, 0, 0, 0, 1358, 1360, 3, 333, 166, 0, 1359, 1361, 7, 5, 0, 0, 1360, 1359, 1, 0, 0, 0, 1360, 1361, 1, 0, 0, 0, 1361, 1363, 1, 0, 0, 0, 1362, 1364, 3, 323, 161, 0, 1363, 1362, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 1363, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1368, 1, 0, 0, 0, 1367, 1358, 1, 0, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1370, 1, 0, 0, 0, 1369, 1328, 1, 0, 0, 0, 1369, 1352, 1, 0, 0, 0, 1370, 308, 1, 0, 0, 0, 1371, 1375, 5, 63, 0, 0, 1372, 1374, 3, 323, 161, 0, 1373, 1372, 1, 0, 0, 0, 1374, 1377, 1, 0, 0, 0, 1375, 1373, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, 1376, 1381, 1, 0, 0, 0, 1377, 1375, 1, 0, 0, 0, 1378, 1379, 7, 6, 0, 0, 1379, 1381, 3, 305, 152, 0, 1380, 1371, 1, 0, 0, 0, 1380, 1378, 1, 0, 0, 0, 1381, 310, 1, 0, 0, 0, 1382, 1388, 5, 39, 0, 0, 1383, 1387, 8, 7, 0, 0, 1384, 1385, 5, 39, 0, 0, 1385, 1387, 5, 39, 0, 0, 1386, 1383, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1390, 1, 0, 0, 0, 1388, 1386, 1, 0, 0, 0, 1388, 1389, 1, 0, 0, 0, 1389, 1391, 1, 0, 0, 0, 1390, 1388, 1, 0, 0, 0, 1391, 1392, 5, 39, 0, 0, 1392, 312, 1, 0, 0, 0, 1393, 1394, 3, 371, 185, 0, 1394, 1395, 3, 311, 155, 0, 1395, 314, 1, 0, 0, 0, 1396, 1397, 5, 45, 0, 0, 1397, 1398, 5, 45, 0, 0, 1398, 1402, 1, 0, 0, 0, 1399, 1401, 8, 8, 0, 0, 1400, 1399, 1, 0, 0, 0, 1401, 1404, 1, 0, 0, 0, 1402, 1400, 1, 0, 0, 0, 1402, 1403, 1, 0, 0, 0, 1403, 1405, 1, 0, 0, 0, 1404, 1402, 1, 0, 0, 0, 1405, 1406, 6, 157, 0, 0, 1406, 316, 1, 0, 0, 0, 1407, 1408, 5, 47, 0, 0, 1408, 1409, 5, 42, 0, 0, 1409, 1413, 1, 0, 0, 0, 1410, 1412, 9, 0, 0, 0, 1411, 1410, 1, 0, 0, 0, 1412, 1415, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1413, 1411, 1, 0, 0, 0, 1414, 1419, 1, 0, 0, 0, 1415, 1413, 1, 0, 0, 0, 1416, 1417, 5, 42, 0, 0, 1417, 1420, 5, 47, 0, 0, 1418, 1420, 5, 0, 0, 1, 1419, 1416, 1, 0, 0, 0, 1419, 1418, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1422, 6, 158, 0, 0, 1422, 318, 1, 0, 0, 0, 1423, 1424, 7, 9, 0, 0, 1424, 1425, 1, 0, 0, 0, 1425, 1426, 6, 159, 0, 0, 1426, 320, 1, 0, 0, 0, 1427, 1428, 9, 0, 0, 0, 1428, 322, 1, 0, 0, 0, 1429, 1430, 7, 10, 0, 0, 1430, 324, 1, 0, 0, 0, 1431, 1432, 7, 11, 0, 0, 1432, 326, 1, 0, 0, 0, 1433, 1434, 7, 12, 0, 0, 1434, 328, 1, 0, 0, 0, 1435, 1436, 7, 13, 0, 0, 1436, 330, 1, 0, 0, 0, 1437, 1438, 7, 14, 0, 0, 1438, 332, 1, 0, 0, 0, 1439, 1440, 7, 15, 0, 0, 1440, 334, 1, 0, 0, 0, 1441, 1442, 7, 16, 0, 0, 1442, 336, 1, 0, 0, 0, 1443, 1444, 7, 17, 0, 0, 1444, 338, 1, 0, 0, 0, 1445, 1446, 7, 18, 0, 0, 1446, 340, 1, 0, 0, 0, 1447, 1448, 7, 19, 0, 0, 1448, 342, 1, 0, 0, 0, 1449, 1450, 7, 20, 0, 0, 1450, 344, 1, 0, 0, 0, 1451, 1452, 7, 21, 0, 0, 1452, 346, 1, 0, 0, 0, 1453, 1454, 7, 22, 0, 0, 1454, 348, 1, 0, 0, 0, 1455, 1456, 7, 23, 0, 0, 1456, 350, 1, 0, 0, 0, 1457, 1458, 7, 24, 0, 0, 1458, 352, 1, 0, 0, 0, 1459, 1460, 7, 25, 0, 0, 1460, 354, 1, 0, 0, 0, 1461, 1462, 7, 26, 0, 0, 1462, 356, 1, 0, 0, 0, 1463, 1464, 7, 27, 0, 0, 1464, 358, 1, 0, 0, 0, 1465, 1466, 7, 28, 0, 0, 1466, 360, 1, 0, 0, 0, 1467, 1468, 7, 29, 0, 0, 1468, 362, 1, 0, 0, 0, 1469, 1470, 7, 30, 0, 0, 1470, 364, 1, 0, 0, 0, 1471, 1472, 7, 31, 0, 0, 1472, 366, 1, 0, 0, 0, 1473, 1474, 7, 32, 0, 0, 1474, 368, 1, 0, 0, 0, 1475, 1476, 7, 33, 0, 0, 1476, 370, 1, 0, 0, 0, 1477, 1478, 7, 34, 0, 0, 1478, 372, 1, 0, 0, 0, 1479, 1480, 7, 35, 0, 0, 1480, 374, 1, 0, 0, 0, 1481, 1482, 7, 36, 0, 0, 1482, 376, 1, 0, 0, 0, 26, 0, 1294, 1296, 1304, 1306, 1314, 1322, 1325, 1330, 1336, 1339, 1343, 1348, 1350, 1356, 1360, 1365, 1367, 1369, 1375, 1380, 1386, 1388, 1402, 1413, 1419, 1, 0, 1, 0] \ No newline at end of file diff --git a/processor/stream_processor/test/parser/SqlLexer.tokens b/processor/stream_processor/test/parser/SqlLexer.tokens deleted file mode 100644 index 70454cda7204..000000000000 --- a/processor/stream_processor/test/parser/SqlLexer.tokens +++ /dev/null @@ -1,186 +0,0 @@ -T__0=1 -SCOL=2 -DOT=3 -OPEN_PAR=4 -CLOSE_PAR=5 -COMMA=6 -ASSIGN=7 -STAR=8 -PLUS=9 -MINUS=10 -TILDE=11 -PIPE2=12 -DIV=13 -MOD=14 -LT2=15 -GT2=16 -AMP=17 -PIPE=18 -LT=19 -LT_EQ=20 -GT=21 -GT_EQ=22 -EQ=23 -NOT_EQ1=24 -NOT_EQ2=25 -K_ABORT=26 -K_ACTION=27 -K_ADD=28 -K_AFTER=29 -K_ALL=30 -K_ALTER=31 -K_ANALYZE=32 -K_AND=33 -K_AS=34 -K_ASC=35 -K_ATTACH=36 -K_AUTOINCREMENT=37 -K_BEFORE=38 -K_BEGIN=39 -K_BETWEEN=40 -K_BY=41 -K_CASCADE=42 -K_CASE=43 -K_CAST=44 -K_CHECK=45 -K_COLLATE=46 -K_COLUMN=47 -K_COMMIT=48 -K_CONFLICT=49 -K_CONSTRAINT=50 -K_CREATE=51 -K_CROSS=52 -K_CURRENT_DATE=53 -K_CURRENT_TIME=54 -K_CURRENT_TIMESTAMP=55 -K_DATABASE=56 -K_DEFAULT=57 -K_DEFERRABLE=58 -K_DEFERRED=59 -K_DELETE=60 -K_DESC=61 -K_DETACH=62 -K_DISTINCT=63 -K_DROP=64 -K_EACH=65 -K_ELSE=66 -K_END=67 -K_ENABLE=68 -K_ESCAPE=69 -K_EXCEPT=70 -K_EXCLUSIVE=71 -K_EXISTS=72 -K_EXPLAIN=73 -K_FAIL=74 -K_FOR=75 -K_FOREIGN=76 -K_FROM=77 -K_FULL=78 -K_GLOB=79 -K_GROUP=80 -K_HAVING=81 -K_IF=82 -K_IGNORE=83 -K_IMMEDIATE=84 -K_IN=85 -K_INDEX=86 -K_INDEXED=87 -K_INITIALLY=88 -K_INNER=89 -K_INSERT=90 -K_INSTEAD=91 -K_INTERSECT=92 -K_INTO=93 -K_IS=94 -K_ISNULL=95 -K_JOIN=96 -K_KEY=97 -K_LEFT=98 -K_LIKE=99 -K_LIMIT=100 -K_MATCH=101 -K_NATURAL=102 -K_NEXTVAL=103 -K_NO=104 -K_NOT=105 -K_NOTNULL=106 -K_NULL=107 -K_OF=108 -K_OFFSET=109 -K_ON=110 -K_ONLY=111 -K_OR=112 -K_ORDER=113 -K_OUTER=114 -K_PLAN=115 -K_PRAGMA=116 -K_PRIMARY=117 -K_QUERY=118 -K_RAISE=119 -K_RECURSIVE=120 -K_REFERENCES=121 -K_REGEXP=122 -K_REINDEX=123 -K_RELEASE=124 -K_RENAME=125 -K_REPLACE=126 -K_RESTRICT=127 -K_RIGHT=128 -K_ROLLBACK=129 -K_ROW=130 -K_SAVEPOINT=131 -K_SELECT=132 -K_SET=133 -K_TABLE=134 -K_TEMP=135 -K_TEMPORARY=136 -K_THEN=137 -K_TO=138 -K_TRANSACTION=139 -K_TRIGGER=140 -K_UNION=141 -K_UNIQUE=142 -K_UPDATE=143 -K_USING=144 -K_VACUUM=145 -K_VALUES=146 -K_VIEW=147 -K_VIRTUAL=148 -K_WHEN=149 -K_WHERE=150 -K_WITH=151 -K_WITHOUT=152 -IDENTIFIER=153 -NUMERIC_LITERAL=154 -BIND_PARAMETER=155 -STRING_LITERAL=156 -BLOB_LITERAL=157 -SINGLE_LINE_COMMENT=158 -MULTILINE_COMMENT=159 -SPACES=160 -UNEXPECTED_CHAR=161 -'::'=1 -';'=2 -'.'=3 -'('=4 -')'=5 -','=6 -'='=7 -'*'=8 -'+'=9 -'-'=10 -'~'=11 -'||'=12 -'/'=13 -'%'=14 -'<<'=15 -'>>'=16 -'&'=17 -'|'=18 -'<'=19 -'<='=20 -'>'=21 -'>='=22 -'=='=23 -'!='=24 -'<>'=25 diff --git a/processor/stream_processor/test/parser/sql_base_listener.go b/processor/stream_processor/test/parser/sql_base_listener.go deleted file mode 100644 index e84aee685618..000000000000 --- a/processor/stream_processor/test/parser/sql_base_listener.go +++ /dev/null @@ -1,618 +0,0 @@ -// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. - -package parser // Sql - -import "github.com/antlr/antlr4/runtime/Go/antlr" - -// BaseSqlListener is a complete listener for a parse tree produced by SqlParser. -type BaseSqlListener struct{} - -var _ SqlListener = &BaseSqlListener{} - -// VisitTerminal is called when a terminal node is visited. -func (s *BaseSqlListener) VisitTerminal(node antlr.TerminalNode) {} - -// VisitErrorNode is called when an error node is visited. -func (s *BaseSqlListener) VisitErrorNode(node antlr.ErrorNode) {} - -// EnterEveryRule is called when any rule is entered. -func (s *BaseSqlListener) EnterEveryRule(ctx antlr.ParserRuleContext) {} - -// ExitEveryRule is called when any rule is exited. -func (s *BaseSqlListener) ExitEveryRule(ctx antlr.ParserRuleContext) {} - -// EnterParse is called when production parse is entered. -func (s *BaseSqlListener) EnterParse(ctx *ParseContext) {} - -// ExitParse is called when production parse is exited. -func (s *BaseSqlListener) ExitParse(ctx *ParseContext) {} - -// EnterError is called when production error is entered. -func (s *BaseSqlListener) EnterError(ctx *ErrorContext) {} - -// ExitError is called when production error is exited. -func (s *BaseSqlListener) ExitError(ctx *ErrorContext) {} - -// EnterSql_stmt_list is called when production sql_stmt_list is entered. -func (s *BaseSqlListener) EnterSql_stmt_list(ctx *Sql_stmt_listContext) {} - -// ExitSql_stmt_list is called when production sql_stmt_list is exited. -func (s *BaseSqlListener) ExitSql_stmt_list(ctx *Sql_stmt_listContext) {} - -// EnterSql_stmt is called when production sql_stmt is entered. -func (s *BaseSqlListener) EnterSql_stmt(ctx *Sql_stmtContext) {} - -// ExitSql_stmt is called when production sql_stmt is exited. -func (s *BaseSqlListener) ExitSql_stmt(ctx *Sql_stmtContext) {} - -// EnterAlter_table_stmt is called when production alter_table_stmt is entered. -func (s *BaseSqlListener) EnterAlter_table_stmt(ctx *Alter_table_stmtContext) {} - -// ExitAlter_table_stmt is called when production alter_table_stmt is exited. -func (s *BaseSqlListener) ExitAlter_table_stmt(ctx *Alter_table_stmtContext) {} - -// EnterAlter_table_add_constraint is called when production alter_table_add_constraint is entered. -func (s *BaseSqlListener) EnterAlter_table_add_constraint(ctx *Alter_table_add_constraintContext) {} - -// ExitAlter_table_add_constraint is called when production alter_table_add_constraint is exited. -func (s *BaseSqlListener) ExitAlter_table_add_constraint(ctx *Alter_table_add_constraintContext) {} - -// EnterAlter_table_add is called when production alter_table_add is entered. -func (s *BaseSqlListener) EnterAlter_table_add(ctx *Alter_table_addContext) {} - -// ExitAlter_table_add is called when production alter_table_add is exited. -func (s *BaseSqlListener) ExitAlter_table_add(ctx *Alter_table_addContext) {} - -// EnterAnalyze_stmt is called when production analyze_stmt is entered. -func (s *BaseSqlListener) EnterAnalyze_stmt(ctx *Analyze_stmtContext) {} - -// ExitAnalyze_stmt is called when production analyze_stmt is exited. -func (s *BaseSqlListener) ExitAnalyze_stmt(ctx *Analyze_stmtContext) {} - -// EnterAttach_stmt is called when production attach_stmt is entered. -func (s *BaseSqlListener) EnterAttach_stmt(ctx *Attach_stmtContext) {} - -// ExitAttach_stmt is called when production attach_stmt is exited. -func (s *BaseSqlListener) ExitAttach_stmt(ctx *Attach_stmtContext) {} - -// EnterBegin_stmt is called when production begin_stmt is entered. -func (s *BaseSqlListener) EnterBegin_stmt(ctx *Begin_stmtContext) {} - -// ExitBegin_stmt is called when production begin_stmt is exited. -func (s *BaseSqlListener) ExitBegin_stmt(ctx *Begin_stmtContext) {} - -// EnterCommit_stmt is called when production commit_stmt is entered. -func (s *BaseSqlListener) EnterCommit_stmt(ctx *Commit_stmtContext) {} - -// ExitCommit_stmt is called when production commit_stmt is exited. -func (s *BaseSqlListener) ExitCommit_stmt(ctx *Commit_stmtContext) {} - -// EnterCompound_select_stmt is called when production compound_select_stmt is entered. -func (s *BaseSqlListener) EnterCompound_select_stmt(ctx *Compound_select_stmtContext) {} - -// ExitCompound_select_stmt is called when production compound_select_stmt is exited. -func (s *BaseSqlListener) ExitCompound_select_stmt(ctx *Compound_select_stmtContext) {} - -// EnterCreate_index_stmt is called when production create_index_stmt is entered. -func (s *BaseSqlListener) EnterCreate_index_stmt(ctx *Create_index_stmtContext) {} - -// ExitCreate_index_stmt is called when production create_index_stmt is exited. -func (s *BaseSqlListener) ExitCreate_index_stmt(ctx *Create_index_stmtContext) {} - -// EnterCreate_table_stmt is called when production create_table_stmt is entered. -func (s *BaseSqlListener) EnterCreate_table_stmt(ctx *Create_table_stmtContext) {} - -// ExitCreate_table_stmt is called when production create_table_stmt is exited. -func (s *BaseSqlListener) ExitCreate_table_stmt(ctx *Create_table_stmtContext) {} - -// EnterCreate_trigger_stmt is called when production create_trigger_stmt is entered. -func (s *BaseSqlListener) EnterCreate_trigger_stmt(ctx *Create_trigger_stmtContext) {} - -// ExitCreate_trigger_stmt is called when production create_trigger_stmt is exited. -func (s *BaseSqlListener) ExitCreate_trigger_stmt(ctx *Create_trigger_stmtContext) {} - -// EnterCreate_view_stmt is called when production create_view_stmt is entered. -func (s *BaseSqlListener) EnterCreate_view_stmt(ctx *Create_view_stmtContext) {} - -// ExitCreate_view_stmt is called when production create_view_stmt is exited. -func (s *BaseSqlListener) ExitCreate_view_stmt(ctx *Create_view_stmtContext) {} - -// EnterCreate_virtual_table_stmt is called when production create_virtual_table_stmt is entered. -func (s *BaseSqlListener) EnterCreate_virtual_table_stmt(ctx *Create_virtual_table_stmtContext) {} - -// ExitCreate_virtual_table_stmt is called when production create_virtual_table_stmt is exited. -func (s *BaseSqlListener) ExitCreate_virtual_table_stmt(ctx *Create_virtual_table_stmtContext) {} - -// EnterDelete_stmt is called when production delete_stmt is entered. -func (s *BaseSqlListener) EnterDelete_stmt(ctx *Delete_stmtContext) {} - -// ExitDelete_stmt is called when production delete_stmt is exited. -func (s *BaseSqlListener) ExitDelete_stmt(ctx *Delete_stmtContext) {} - -// EnterDelete_stmt_limited is called when production delete_stmt_limited is entered. -func (s *BaseSqlListener) EnterDelete_stmt_limited(ctx *Delete_stmt_limitedContext) {} - -// ExitDelete_stmt_limited is called when production delete_stmt_limited is exited. -func (s *BaseSqlListener) ExitDelete_stmt_limited(ctx *Delete_stmt_limitedContext) {} - -// EnterDetach_stmt is called when production detach_stmt is entered. -func (s *BaseSqlListener) EnterDetach_stmt(ctx *Detach_stmtContext) {} - -// ExitDetach_stmt is called when production detach_stmt is exited. -func (s *BaseSqlListener) ExitDetach_stmt(ctx *Detach_stmtContext) {} - -// EnterDrop_index_stmt is called when production drop_index_stmt is entered. -func (s *BaseSqlListener) EnterDrop_index_stmt(ctx *Drop_index_stmtContext) {} - -// ExitDrop_index_stmt is called when production drop_index_stmt is exited. -func (s *BaseSqlListener) ExitDrop_index_stmt(ctx *Drop_index_stmtContext) {} - -// EnterDrop_table_stmt is called when production drop_table_stmt is entered. -func (s *BaseSqlListener) EnterDrop_table_stmt(ctx *Drop_table_stmtContext) {} - -// ExitDrop_table_stmt is called when production drop_table_stmt is exited. -func (s *BaseSqlListener) ExitDrop_table_stmt(ctx *Drop_table_stmtContext) {} - -// EnterDrop_trigger_stmt is called when production drop_trigger_stmt is entered. -func (s *BaseSqlListener) EnterDrop_trigger_stmt(ctx *Drop_trigger_stmtContext) {} - -// ExitDrop_trigger_stmt is called when production drop_trigger_stmt is exited. -func (s *BaseSqlListener) ExitDrop_trigger_stmt(ctx *Drop_trigger_stmtContext) {} - -// EnterDrop_view_stmt is called when production drop_view_stmt is entered. -func (s *BaseSqlListener) EnterDrop_view_stmt(ctx *Drop_view_stmtContext) {} - -// ExitDrop_view_stmt is called when production drop_view_stmt is exited. -func (s *BaseSqlListener) ExitDrop_view_stmt(ctx *Drop_view_stmtContext) {} - -// EnterFactored_select_stmt is called when production factored_select_stmt is entered. -func (s *BaseSqlListener) EnterFactored_select_stmt(ctx *Factored_select_stmtContext) {} - -// ExitFactored_select_stmt is called when production factored_select_stmt is exited. -func (s *BaseSqlListener) ExitFactored_select_stmt(ctx *Factored_select_stmtContext) {} - -// EnterInsert_stmt is called when production insert_stmt is entered. -func (s *BaseSqlListener) EnterInsert_stmt(ctx *Insert_stmtContext) {} - -// ExitInsert_stmt is called when production insert_stmt is exited. -func (s *BaseSqlListener) ExitInsert_stmt(ctx *Insert_stmtContext) {} - -// EnterPragma_stmt is called when production pragma_stmt is entered. -func (s *BaseSqlListener) EnterPragma_stmt(ctx *Pragma_stmtContext) {} - -// ExitPragma_stmt is called when production pragma_stmt is exited. -func (s *BaseSqlListener) ExitPragma_stmt(ctx *Pragma_stmtContext) {} - -// EnterReindex_stmt is called when production reindex_stmt is entered. -func (s *BaseSqlListener) EnterReindex_stmt(ctx *Reindex_stmtContext) {} - -// ExitReindex_stmt is called when production reindex_stmt is exited. -func (s *BaseSqlListener) ExitReindex_stmt(ctx *Reindex_stmtContext) {} - -// EnterRelease_stmt is called when production release_stmt is entered. -func (s *BaseSqlListener) EnterRelease_stmt(ctx *Release_stmtContext) {} - -// ExitRelease_stmt is called when production release_stmt is exited. -func (s *BaseSqlListener) ExitRelease_stmt(ctx *Release_stmtContext) {} - -// EnterRollback_stmt is called when production rollback_stmt is entered. -func (s *BaseSqlListener) EnterRollback_stmt(ctx *Rollback_stmtContext) {} - -// ExitRollback_stmt is called when production rollback_stmt is exited. -func (s *BaseSqlListener) ExitRollback_stmt(ctx *Rollback_stmtContext) {} - -// EnterSavepoint_stmt is called when production savepoint_stmt is entered. -func (s *BaseSqlListener) EnterSavepoint_stmt(ctx *Savepoint_stmtContext) {} - -// ExitSavepoint_stmt is called when production savepoint_stmt is exited. -func (s *BaseSqlListener) ExitSavepoint_stmt(ctx *Savepoint_stmtContext) {} - -// EnterSimple_select_stmt is called when production simple_select_stmt is entered. -func (s *BaseSqlListener) EnterSimple_select_stmt(ctx *Simple_select_stmtContext) {} - -// ExitSimple_select_stmt is called when production simple_select_stmt is exited. -func (s *BaseSqlListener) ExitSimple_select_stmt(ctx *Simple_select_stmtContext) {} - -// EnterSelect_stmt is called when production select_stmt is entered. -func (s *BaseSqlListener) EnterSelect_stmt(ctx *Select_stmtContext) {} - -// ExitSelect_stmt is called when production select_stmt is exited. -func (s *BaseSqlListener) ExitSelect_stmt(ctx *Select_stmtContext) {} - -// EnterSelect_or_values is called when production select_or_values is entered. -func (s *BaseSqlListener) EnterSelect_or_values(ctx *Select_or_valuesContext) {} - -// ExitSelect_or_values is called when production select_or_values is exited. -func (s *BaseSqlListener) ExitSelect_or_values(ctx *Select_or_valuesContext) {} - -// EnterUpdate_stmt is called when production update_stmt is entered. -func (s *BaseSqlListener) EnterUpdate_stmt(ctx *Update_stmtContext) {} - -// ExitUpdate_stmt is called when production update_stmt is exited. -func (s *BaseSqlListener) ExitUpdate_stmt(ctx *Update_stmtContext) {} - -// EnterUpdate_stmt_limited is called when production update_stmt_limited is entered. -func (s *BaseSqlListener) EnterUpdate_stmt_limited(ctx *Update_stmt_limitedContext) {} - -// ExitUpdate_stmt_limited is called when production update_stmt_limited is exited. -func (s *BaseSqlListener) ExitUpdate_stmt_limited(ctx *Update_stmt_limitedContext) {} - -// EnterVacuum_stmt is called when production vacuum_stmt is entered. -func (s *BaseSqlListener) EnterVacuum_stmt(ctx *Vacuum_stmtContext) {} - -// ExitVacuum_stmt is called when production vacuum_stmt is exited. -func (s *BaseSqlListener) ExitVacuum_stmt(ctx *Vacuum_stmtContext) {} - -// EnterColumn_def is called when production column_def is entered. -func (s *BaseSqlListener) EnterColumn_def(ctx *Column_defContext) {} - -// ExitColumn_def is called when production column_def is exited. -func (s *BaseSqlListener) ExitColumn_def(ctx *Column_defContext) {} - -// EnterType_name is called when production type_name is entered. -func (s *BaseSqlListener) EnterType_name(ctx *Type_nameContext) {} - -// ExitType_name is called when production type_name is exited. -func (s *BaseSqlListener) ExitType_name(ctx *Type_nameContext) {} - -// EnterColumn_constraint is called when production column_constraint is entered. -func (s *BaseSqlListener) EnterColumn_constraint(ctx *Column_constraintContext) {} - -// ExitColumn_constraint is called when production column_constraint is exited. -func (s *BaseSqlListener) ExitColumn_constraint(ctx *Column_constraintContext) {} - -// EnterColumn_constraint_primary_key is called when production column_constraint_primary_key is entered. -func (s *BaseSqlListener) EnterColumn_constraint_primary_key(ctx *Column_constraint_primary_keyContext) { -} - -// ExitColumn_constraint_primary_key is called when production column_constraint_primary_key is exited. -func (s *BaseSqlListener) ExitColumn_constraint_primary_key(ctx *Column_constraint_primary_keyContext) { -} - -// EnterColumn_constraint_foreign_key is called when production column_constraint_foreign_key is entered. -func (s *BaseSqlListener) EnterColumn_constraint_foreign_key(ctx *Column_constraint_foreign_keyContext) { -} - -// ExitColumn_constraint_foreign_key is called when production column_constraint_foreign_key is exited. -func (s *BaseSqlListener) ExitColumn_constraint_foreign_key(ctx *Column_constraint_foreign_keyContext) { -} - -// EnterColumn_constraint_not_null is called when production column_constraint_not_null is entered. -func (s *BaseSqlListener) EnterColumn_constraint_not_null(ctx *Column_constraint_not_nullContext) {} - -// ExitColumn_constraint_not_null is called when production column_constraint_not_null is exited. -func (s *BaseSqlListener) ExitColumn_constraint_not_null(ctx *Column_constraint_not_nullContext) {} - -// EnterColumn_constraint_null is called when production column_constraint_null is entered. -func (s *BaseSqlListener) EnterColumn_constraint_null(ctx *Column_constraint_nullContext) {} - -// ExitColumn_constraint_null is called when production column_constraint_null is exited. -func (s *BaseSqlListener) ExitColumn_constraint_null(ctx *Column_constraint_nullContext) {} - -// EnterColumn_default is called when production column_default is entered. -func (s *BaseSqlListener) EnterColumn_default(ctx *Column_defaultContext) {} - -// ExitColumn_default is called when production column_default is exited. -func (s *BaseSqlListener) ExitColumn_default(ctx *Column_defaultContext) {} - -// EnterColumn_default_value is called when production column_default_value is entered. -func (s *BaseSqlListener) EnterColumn_default_value(ctx *Column_default_valueContext) {} - -// ExitColumn_default_value is called when production column_default_value is exited. -func (s *BaseSqlListener) ExitColumn_default_value(ctx *Column_default_valueContext) {} - -// EnterConflict_clause is called when production conflict_clause is entered. -func (s *BaseSqlListener) EnterConflict_clause(ctx *Conflict_clauseContext) {} - -// ExitConflict_clause is called when production conflict_clause is exited. -func (s *BaseSqlListener) ExitConflict_clause(ctx *Conflict_clauseContext) {} - -// EnterExpr is called when production expr is entered. -func (s *BaseSqlListener) EnterExpr(ctx *ExprContext) {} - -// ExitExpr is called when production expr is exited. -func (s *BaseSqlListener) ExitExpr(ctx *ExprContext) {} - -// EnterForeign_key_clause is called when production foreign_key_clause is entered. -func (s *BaseSqlListener) EnterForeign_key_clause(ctx *Foreign_key_clauseContext) {} - -// ExitForeign_key_clause is called when production foreign_key_clause is exited. -func (s *BaseSqlListener) ExitForeign_key_clause(ctx *Foreign_key_clauseContext) {} - -// EnterFk_target_column_name is called when production fk_target_column_name is entered. -func (s *BaseSqlListener) EnterFk_target_column_name(ctx *Fk_target_column_nameContext) {} - -// ExitFk_target_column_name is called when production fk_target_column_name is exited. -func (s *BaseSqlListener) ExitFk_target_column_name(ctx *Fk_target_column_nameContext) {} - -// EnterRaise_function is called when production raise_function is entered. -func (s *BaseSqlListener) EnterRaise_function(ctx *Raise_functionContext) {} - -// ExitRaise_function is called when production raise_function is exited. -func (s *BaseSqlListener) ExitRaise_function(ctx *Raise_functionContext) {} - -// EnterIndexed_column is called when production indexed_column is entered. -func (s *BaseSqlListener) EnterIndexed_column(ctx *Indexed_columnContext) {} - -// ExitIndexed_column is called when production indexed_column is exited. -func (s *BaseSqlListener) ExitIndexed_column(ctx *Indexed_columnContext) {} - -// EnterTable_constraint is called when production table_constraint is entered. -func (s *BaseSqlListener) EnterTable_constraint(ctx *Table_constraintContext) {} - -// ExitTable_constraint is called when production table_constraint is exited. -func (s *BaseSqlListener) ExitTable_constraint(ctx *Table_constraintContext) {} - -// EnterTable_constraint_primary_key is called when production table_constraint_primary_key is entered. -func (s *BaseSqlListener) EnterTable_constraint_primary_key(ctx *Table_constraint_primary_keyContext) { -} - -// ExitTable_constraint_primary_key is called when production table_constraint_primary_key is exited. -func (s *BaseSqlListener) ExitTable_constraint_primary_key(ctx *Table_constraint_primary_keyContext) { -} - -// EnterTable_constraint_foreign_key is called when production table_constraint_foreign_key is entered. -func (s *BaseSqlListener) EnterTable_constraint_foreign_key(ctx *Table_constraint_foreign_keyContext) { -} - -// ExitTable_constraint_foreign_key is called when production table_constraint_foreign_key is exited. -func (s *BaseSqlListener) ExitTable_constraint_foreign_key(ctx *Table_constraint_foreign_keyContext) { -} - -// EnterTable_constraint_unique is called when production table_constraint_unique is entered. -func (s *BaseSqlListener) EnterTable_constraint_unique(ctx *Table_constraint_uniqueContext) {} - -// ExitTable_constraint_unique is called when production table_constraint_unique is exited. -func (s *BaseSqlListener) ExitTable_constraint_unique(ctx *Table_constraint_uniqueContext) {} - -// EnterTable_constraint_key is called when production table_constraint_key is entered. -func (s *BaseSqlListener) EnterTable_constraint_key(ctx *Table_constraint_keyContext) {} - -// ExitTable_constraint_key is called when production table_constraint_key is exited. -func (s *BaseSqlListener) ExitTable_constraint_key(ctx *Table_constraint_keyContext) {} - -// EnterFk_origin_column_name is called when production fk_origin_column_name is entered. -func (s *BaseSqlListener) EnterFk_origin_column_name(ctx *Fk_origin_column_nameContext) {} - -// ExitFk_origin_column_name is called when production fk_origin_column_name is exited. -func (s *BaseSqlListener) ExitFk_origin_column_name(ctx *Fk_origin_column_nameContext) {} - -// EnterWith_clause is called when production with_clause is entered. -func (s *BaseSqlListener) EnterWith_clause(ctx *With_clauseContext) {} - -// ExitWith_clause is called when production with_clause is exited. -func (s *BaseSqlListener) ExitWith_clause(ctx *With_clauseContext) {} - -// EnterQualified_table_name is called when production qualified_table_name is entered. -func (s *BaseSqlListener) EnterQualified_table_name(ctx *Qualified_table_nameContext) {} - -// ExitQualified_table_name is called when production qualified_table_name is exited. -func (s *BaseSqlListener) ExitQualified_table_name(ctx *Qualified_table_nameContext) {} - -// EnterOrdering_term is called when production ordering_term is entered. -func (s *BaseSqlListener) EnterOrdering_term(ctx *Ordering_termContext) {} - -// ExitOrdering_term is called when production ordering_term is exited. -func (s *BaseSqlListener) ExitOrdering_term(ctx *Ordering_termContext) {} - -// EnterPragma_value is called when production pragma_value is entered. -func (s *BaseSqlListener) EnterPragma_value(ctx *Pragma_valueContext) {} - -// ExitPragma_value is called when production pragma_value is exited. -func (s *BaseSqlListener) ExitPragma_value(ctx *Pragma_valueContext) {} - -// EnterCommon_table_expression is called when production common_table_expression is entered. -func (s *BaseSqlListener) EnterCommon_table_expression(ctx *Common_table_expressionContext) {} - -// ExitCommon_table_expression is called when production common_table_expression is exited. -func (s *BaseSqlListener) ExitCommon_table_expression(ctx *Common_table_expressionContext) {} - -// EnterResult_column is called when production result_column is entered. -func (s *BaseSqlListener) EnterResult_column(ctx *Result_columnContext) {} - -// ExitResult_column is called when production result_column is exited. -func (s *BaseSqlListener) ExitResult_column(ctx *Result_columnContext) {} - -// EnterTable_or_subquery is called when production table_or_subquery is entered. -func (s *BaseSqlListener) EnterTable_or_subquery(ctx *Table_or_subqueryContext) {} - -// ExitTable_or_subquery is called when production table_or_subquery is exited. -func (s *BaseSqlListener) ExitTable_or_subquery(ctx *Table_or_subqueryContext) {} - -// EnterJoin_clause is called when production join_clause is entered. -func (s *BaseSqlListener) EnterJoin_clause(ctx *Join_clauseContext) {} - -// ExitJoin_clause is called when production join_clause is exited. -func (s *BaseSqlListener) ExitJoin_clause(ctx *Join_clauseContext) {} - -// EnterJoin_operator is called when production join_operator is entered. -func (s *BaseSqlListener) EnterJoin_operator(ctx *Join_operatorContext) {} - -// ExitJoin_operator is called when production join_operator is exited. -func (s *BaseSqlListener) ExitJoin_operator(ctx *Join_operatorContext) {} - -// EnterJoin_constraint is called when production join_constraint is entered. -func (s *BaseSqlListener) EnterJoin_constraint(ctx *Join_constraintContext) {} - -// ExitJoin_constraint is called when production join_constraint is exited. -func (s *BaseSqlListener) ExitJoin_constraint(ctx *Join_constraintContext) {} - -// EnterSelect_core is called when production select_core is entered. -func (s *BaseSqlListener) EnterSelect_core(ctx *Select_coreContext) {} - -// ExitSelect_core is called when production select_core is exited. -func (s *BaseSqlListener) ExitSelect_core(ctx *Select_coreContext) {} - -// EnterCompound_operator is called when production compound_operator is entered. -func (s *BaseSqlListener) EnterCompound_operator(ctx *Compound_operatorContext) {} - -// ExitCompound_operator is called when production compound_operator is exited. -func (s *BaseSqlListener) ExitCompound_operator(ctx *Compound_operatorContext) {} - -// EnterCte_table_name is called when production cte_table_name is entered. -func (s *BaseSqlListener) EnterCte_table_name(ctx *Cte_table_nameContext) {} - -// ExitCte_table_name is called when production cte_table_name is exited. -func (s *BaseSqlListener) ExitCte_table_name(ctx *Cte_table_nameContext) {} - -// EnterSigned_number is called when production signed_number is entered. -func (s *BaseSqlListener) EnterSigned_number(ctx *Signed_numberContext) {} - -// ExitSigned_number is called when production signed_number is exited. -func (s *BaseSqlListener) ExitSigned_number(ctx *Signed_numberContext) {} - -// EnterLiteral_value is called when production literal_value is entered. -func (s *BaseSqlListener) EnterLiteral_value(ctx *Literal_valueContext) {} - -// ExitLiteral_value is called when production literal_value is exited. -func (s *BaseSqlListener) ExitLiteral_value(ctx *Literal_valueContext) {} - -// EnterUnary_operator is called when production unary_operator is entered. -func (s *BaseSqlListener) EnterUnary_operator(ctx *Unary_operatorContext) {} - -// ExitUnary_operator is called when production unary_operator is exited. -func (s *BaseSqlListener) ExitUnary_operator(ctx *Unary_operatorContext) {} - -// EnterError_message is called when production error_message is entered. -func (s *BaseSqlListener) EnterError_message(ctx *Error_messageContext) {} - -// ExitError_message is called when production error_message is exited. -func (s *BaseSqlListener) ExitError_message(ctx *Error_messageContext) {} - -// EnterModule_argument is called when production module_argument is entered. -func (s *BaseSqlListener) EnterModule_argument(ctx *Module_argumentContext) {} - -// ExitModule_argument is called when production module_argument is exited. -func (s *BaseSqlListener) ExitModule_argument(ctx *Module_argumentContext) {} - -// EnterColumn_alias is called when production column_alias is entered. -func (s *BaseSqlListener) EnterColumn_alias(ctx *Column_aliasContext) {} - -// ExitColumn_alias is called when production column_alias is exited. -func (s *BaseSqlListener) ExitColumn_alias(ctx *Column_aliasContext) {} - -// EnterKeyword is called when production keyword is entered. -func (s *BaseSqlListener) EnterKeyword(ctx *KeywordContext) {} - -// ExitKeyword is called when production keyword is exited. -func (s *BaseSqlListener) ExitKeyword(ctx *KeywordContext) {} - -// EnterUnknown is called when production unknown is entered. -func (s *BaseSqlListener) EnterUnknown(ctx *UnknownContext) {} - -// ExitUnknown is called when production unknown is exited. -func (s *BaseSqlListener) ExitUnknown(ctx *UnknownContext) {} - -// EnterName is called when production name is entered. -func (s *BaseSqlListener) EnterName(ctx *NameContext) {} - -// ExitName is called when production name is exited. -func (s *BaseSqlListener) ExitName(ctx *NameContext) {} - -// EnterFunction_name is called when production function_name is entered. -func (s *BaseSqlListener) EnterFunction_name(ctx *Function_nameContext) {} - -// ExitFunction_name is called when production function_name is exited. -func (s *BaseSqlListener) ExitFunction_name(ctx *Function_nameContext) {} - -// EnterDatabase_name is called when production database_name is entered. -func (s *BaseSqlListener) EnterDatabase_name(ctx *Database_nameContext) {} - -// ExitDatabase_name is called when production database_name is exited. -func (s *BaseSqlListener) ExitDatabase_name(ctx *Database_nameContext) {} - -// EnterSource_table_name is called when production source_table_name is entered. -func (s *BaseSqlListener) EnterSource_table_name(ctx *Source_table_nameContext) {} - -// ExitSource_table_name is called when production source_table_name is exited. -func (s *BaseSqlListener) ExitSource_table_name(ctx *Source_table_nameContext) {} - -// EnterTable_name is called when production table_name is entered. -func (s *BaseSqlListener) EnterTable_name(ctx *Table_nameContext) {} - -// ExitTable_name is called when production table_name is exited. -func (s *BaseSqlListener) ExitTable_name(ctx *Table_nameContext) {} - -// EnterTable_or_index_name is called when production table_or_index_name is entered. -func (s *BaseSqlListener) EnterTable_or_index_name(ctx *Table_or_index_nameContext) {} - -// ExitTable_or_index_name is called when production table_or_index_name is exited. -func (s *BaseSqlListener) ExitTable_or_index_name(ctx *Table_or_index_nameContext) {} - -// EnterNew_table_name is called when production new_table_name is entered. -func (s *BaseSqlListener) EnterNew_table_name(ctx *New_table_nameContext) {} - -// ExitNew_table_name is called when production new_table_name is exited. -func (s *BaseSqlListener) ExitNew_table_name(ctx *New_table_nameContext) {} - -// EnterColumn_name is called when production column_name is entered. -func (s *BaseSqlListener) EnterColumn_name(ctx *Column_nameContext) {} - -// ExitColumn_name is called when production column_name is exited. -func (s *BaseSqlListener) ExitColumn_name(ctx *Column_nameContext) {} - -// EnterCollation_name is called when production collation_name is entered. -func (s *BaseSqlListener) EnterCollation_name(ctx *Collation_nameContext) {} - -// ExitCollation_name is called when production collation_name is exited. -func (s *BaseSqlListener) ExitCollation_name(ctx *Collation_nameContext) {} - -// EnterForeign_table is called when production foreign_table is entered. -func (s *BaseSqlListener) EnterForeign_table(ctx *Foreign_tableContext) {} - -// ExitForeign_table is called when production foreign_table is exited. -func (s *BaseSqlListener) ExitForeign_table(ctx *Foreign_tableContext) {} - -// EnterIndex_name is called when production index_name is entered. -func (s *BaseSqlListener) EnterIndex_name(ctx *Index_nameContext) {} - -// ExitIndex_name is called when production index_name is exited. -func (s *BaseSqlListener) ExitIndex_name(ctx *Index_nameContext) {} - -// EnterTrigger_name is called when production trigger_name is entered. -func (s *BaseSqlListener) EnterTrigger_name(ctx *Trigger_nameContext) {} - -// ExitTrigger_name is called when production trigger_name is exited. -func (s *BaseSqlListener) ExitTrigger_name(ctx *Trigger_nameContext) {} - -// EnterView_name is called when production view_name is entered. -func (s *BaseSqlListener) EnterView_name(ctx *View_nameContext) {} - -// ExitView_name is called when production view_name is exited. -func (s *BaseSqlListener) ExitView_name(ctx *View_nameContext) {} - -// EnterModule_name is called when production module_name is entered. -func (s *BaseSqlListener) EnterModule_name(ctx *Module_nameContext) {} - -// ExitModule_name is called when production module_name is exited. -func (s *BaseSqlListener) ExitModule_name(ctx *Module_nameContext) {} - -// EnterPragma_name is called when production pragma_name is entered. -func (s *BaseSqlListener) EnterPragma_name(ctx *Pragma_nameContext) {} - -// ExitPragma_name is called when production pragma_name is exited. -func (s *BaseSqlListener) ExitPragma_name(ctx *Pragma_nameContext) {} - -// EnterSavepoint_name is called when production savepoint_name is entered. -func (s *BaseSqlListener) EnterSavepoint_name(ctx *Savepoint_nameContext) {} - -// ExitSavepoint_name is called when production savepoint_name is exited. -func (s *BaseSqlListener) ExitSavepoint_name(ctx *Savepoint_nameContext) {} - -// EnterTable_alias is called when production table_alias is entered. -func (s *BaseSqlListener) EnterTable_alias(ctx *Table_aliasContext) {} - -// ExitTable_alias is called when production table_alias is exited. -func (s *BaseSqlListener) ExitTable_alias(ctx *Table_aliasContext) {} - -// EnterTransaction_name is called when production transaction_name is entered. -func (s *BaseSqlListener) EnterTransaction_name(ctx *Transaction_nameContext) {} - -// ExitTransaction_name is called when production transaction_name is exited. -func (s *BaseSqlListener) ExitTransaction_name(ctx *Transaction_nameContext) {} - -// EnterAny_name is called when production any_name is entered. -func (s *BaseSqlListener) EnterAny_name(ctx *Any_nameContext) {} - -// ExitAny_name is called when production any_name is exited. -func (s *BaseSqlListener) ExitAny_name(ctx *Any_nameContext) {} diff --git a/processor/stream_processor/test/parser/sql_lexer.go b/processor/stream_processor/test/parser/sql_lexer.go deleted file mode 100644 index f48831c84578..000000000000 --- a/processor/stream_processor/test/parser/sql_lexer.go +++ /dev/null @@ -1,1002 +0,0 @@ -// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. - -package parser - -import ( - "fmt" - "sync" - "unicode" - - "github.com/antlr/antlr4/runtime/Go/antlr" -) - -// Suppress unused import error -var _ = fmt.Printf -var _ = sync.Once{} -var _ = unicode.IsLetter - -type SqlLexer struct { - *antlr.BaseLexer - channelNames []string - modeNames []string - // TODO: EOF string -} - -var sqllexerLexerStaticData struct { - once sync.Once - serializedATN []int32 - channelNames []string - modeNames []string - literalNames []string - symbolicNames []string - ruleNames []string - predictionContextCache *antlr.PredictionContextCache - atn *antlr.ATN - decisionToDFA []*antlr.DFA -} - -func sqllexerLexerInit() { - staticData := &sqllexerLexerStaticData - staticData.channelNames = []string{ - "DEFAULT_TOKEN_CHANNEL", "HIDDEN", - } - staticData.modeNames = []string{ - "DEFAULT_MODE", - } - staticData.literalNames = []string{ - "", "'::'", "';'", "'.'", "'('", "')'", "','", "'='", "'*'", "'+'", - "'-'", "'~'", "'||'", "'/'", "'%'", "'<<'", "'>>'", "'&'", "'|'", "'<'", - "'<='", "'>'", "'>='", "'=='", "'!='", "'<>'", - } - staticData.symbolicNames = []string{ - "", "", "SCOL", "DOT", "OPEN_PAR", "CLOSE_PAR", "COMMA", "ASSIGN", "STAR", - "PLUS", "MINUS", "TILDE", "PIPE2", "DIV", "MOD", "LT2", "GT2", "AMP", - "PIPE", "LT", "LT_EQ", "GT", "GT_EQ", "EQ", "NOT_EQ1", "NOT_EQ2", "K_ABORT", - "K_ACTION", "K_ADD", "K_AFTER", "K_ALL", "K_ALTER", "K_ANALYZE", "K_AND", - "K_AS", "K_ASC", "K_ATTACH", "K_AUTOINCREMENT", "K_BEFORE", "K_BEGIN", - "K_BETWEEN", "K_BY", "K_CASCADE", "K_CASE", "K_CAST", "K_CHECK", "K_COLLATE", - "K_COLUMN", "K_COMMIT", "K_CONFLICT", "K_CONSTRAINT", "K_CREATE", "K_CROSS", - "K_CURRENT_DATE", "K_CURRENT_TIME", "K_CURRENT_TIMESTAMP", "K_DATABASE", - "K_DEFAULT", "K_DEFERRABLE", "K_DEFERRED", "K_DELETE", "K_DESC", "K_DETACH", - "K_DISTINCT", "K_DROP", "K_EACH", "K_ELSE", "K_END", "K_ENABLE", "K_ESCAPE", - "K_EXCEPT", "K_EXCLUSIVE", "K_EXISTS", "K_EXPLAIN", "K_FAIL", "K_FOR", - "K_FOREIGN", "K_FROM", "K_FULL", "K_GLOB", "K_GROUP", "K_HAVING", "K_IF", - "K_IGNORE", "K_IMMEDIATE", "K_IN", "K_INDEX", "K_INDEXED", "K_INITIALLY", - "K_INNER", "K_INSERT", "K_INSTEAD", "K_INTERSECT", "K_INTO", "K_IS", - "K_ISNULL", "K_JOIN", "K_KEY", "K_LEFT", "K_LIKE", "K_LIMIT", "K_MATCH", - "K_NATURAL", "K_NEXTVAL", "K_NO", "K_NOT", "K_NOTNULL", "K_NULL", "K_OF", - "K_OFFSET", "K_ON", "K_ONLY", "K_OR", "K_ORDER", "K_OUTER", "K_PLAN", - "K_PRAGMA", "K_PRIMARY", "K_QUERY", "K_RAISE", "K_RECURSIVE", "K_REFERENCES", - "K_REGEXP", "K_REINDEX", "K_RELEASE", "K_RENAME", "K_REPLACE", "K_RESTRICT", - "K_RIGHT", "K_ROLLBACK", "K_ROW", "K_SAVEPOINT", "K_SELECT", "K_SET", - "K_TABLE", "K_TEMP", "K_TEMPORARY", "K_THEN", "K_TO", "K_TRANSACTION", - "K_TRIGGER", "K_UNION", "K_UNIQUE", "K_UPDATE", "K_USING", "K_VACUUM", - "K_VALUES", "K_VIEW", "K_VIRTUAL", "K_WHEN", "K_WHERE", "K_WITH", "K_WITHOUT", - "IDENTIFIER", "NUMERIC_LITERAL", "BIND_PARAMETER", "STRING_LITERAL", - "BLOB_LITERAL", "SINGLE_LINE_COMMENT", "MULTILINE_COMMENT", "SPACES", - "UNEXPECTED_CHAR", - } - staticData.ruleNames = []string{ - "T__0", "SCOL", "DOT", "OPEN_PAR", "CLOSE_PAR", "COMMA", "ASSIGN", "STAR", - "PLUS", "MINUS", "TILDE", "PIPE2", "DIV", "MOD", "LT2", "GT2", "AMP", - "PIPE", "LT", "LT_EQ", "GT", "GT_EQ", "EQ", "NOT_EQ1", "NOT_EQ2", "K_ABORT", - "K_ACTION", "K_ADD", "K_AFTER", "K_ALL", "K_ALTER", "K_ANALYZE", "K_AND", - "K_AS", "K_ASC", "K_ATTACH", "K_AUTOINCREMENT", "K_BEFORE", "K_BEGIN", - "K_BETWEEN", "K_BY", "K_CASCADE", "K_CASE", "K_CAST", "K_CHECK", "K_COLLATE", - "K_COLUMN", "K_COMMIT", "K_CONFLICT", "K_CONSTRAINT", "K_CREATE", "K_CROSS", - "K_CURRENT_DATE", "K_CURRENT_TIME", "K_CURRENT_TIMESTAMP", "K_DATABASE", - "K_DEFAULT", "K_DEFERRABLE", "K_DEFERRED", "K_DELETE", "K_DESC", "K_DETACH", - "K_DISTINCT", "K_DROP", "K_EACH", "K_ELSE", "K_END", "K_ENABLE", "K_ESCAPE", - "K_EXCEPT", "K_EXCLUSIVE", "K_EXISTS", "K_EXPLAIN", "K_FAIL", "K_FOR", - "K_FOREIGN", "K_FROM", "K_FULL", "K_GLOB", "K_GROUP", "K_HAVING", "K_IF", - "K_IGNORE", "K_IMMEDIATE", "K_IN", "K_INDEX", "K_INDEXED", "K_INITIALLY", - "K_INNER", "K_INSERT", "K_INSTEAD", "K_INTERSECT", "K_INTO", "K_IS", - "K_ISNULL", "K_JOIN", "K_KEY", "K_LEFT", "K_LIKE", "K_LIMIT", "K_MATCH", - "K_NATURAL", "K_NEXTVAL", "K_NO", "K_NOT", "K_NOTNULL", "K_NULL", "K_OF", - "K_OFFSET", "K_ON", "K_ONLY", "K_OR", "K_ORDER", "K_OUTER", "K_PLAN", - "K_PRAGMA", "K_PRIMARY", "K_QUERY", "K_RAISE", "K_RECURSIVE", "K_REFERENCES", - "K_REGEXP", "K_REINDEX", "K_RELEASE", "K_RENAME", "K_REPLACE", "K_RESTRICT", - "K_RIGHT", "K_ROLLBACK", "K_ROW", "K_SAVEPOINT", "K_SELECT", "K_SET", - "K_TABLE", "K_TEMP", "K_TEMPORARY", "K_THEN", "K_TO", "K_TRANSACTION", - "K_TRIGGER", "K_UNION", "K_UNIQUE", "K_UPDATE", "K_USING", "K_VACUUM", - "K_VALUES", "K_VIEW", "K_VIRTUAL", "K_WHEN", "K_WHERE", "K_WITH", "K_WITHOUT", - "IDENTIFIER", "NUMERIC_LITERAL", "BIND_PARAMETER", "STRING_LITERAL", - "BLOB_LITERAL", "SINGLE_LINE_COMMENT", "MULTILINE_COMMENT", "SPACES", - "UNEXPECTED_CHAR", "DIGIT", "A", "B", "C", "D", "E", "F", "G", "H", - "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", - "W", "X", "Y", "Z", - } - staticData.predictionContextCache = antlr.NewPredictionContextCache() - staticData.serializedATN = []int32{ - 4, 0, 161, 1483, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, - 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, - 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, - 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, - 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, - 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, - 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, - 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, - 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, - 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, - 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, - 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, - 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, - 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, - 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, - 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, - 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, - 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, - 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, - 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, - 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, - 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, - 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, - 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, - 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, - 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, - 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, - 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, - 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, - 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, - 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, - 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, - 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, - 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, - 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, - 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, - 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, - 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, - 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 1, 0, 1, 0, 1, 0, 1, 1, - 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, - 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, - 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, - 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, - 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, - 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, - 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, - 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, - 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, - 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, - 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, - 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, - 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, - 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, - 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, - 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, - 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, - 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, - 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, - 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, - 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, - 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, - 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, - 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, - 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, - 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, - 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, - 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, - 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, - 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, - 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, - 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, - 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, - 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, - 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, - 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, - 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, - 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, - 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, - 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, - 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, - 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, - 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, - 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, - 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 85, 1, - 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, - 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, - 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, - 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, - 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, - 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, - 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, - 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, - 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, - 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, - 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, - 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, - 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, - 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 108, - 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, - 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, - 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, - 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, - 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, - 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, - 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, - 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, - 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, - 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, - 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, - 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, - 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, - 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, - 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, - 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, - 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, - 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, - 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, - 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, - 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, - 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, - 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, - 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, - 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, - 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, - 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, - 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, - 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, - 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, - 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, - 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, - 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, - 1, 152, 1, 152, 5, 152, 1295, 8, 152, 10, 152, 12, 152, 1298, 9, 152, 1, - 152, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1305, 8, 152, 10, 152, 12, - 152, 1308, 9, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1313, 8, 152, 10, 152, - 12, 152, 1316, 9, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1321, 8, 152, 10, - 152, 12, 152, 1324, 9, 152, 3, 152, 1326, 8, 152, 1, 153, 4, 153, 1329, - 8, 153, 11, 153, 12, 153, 1330, 1, 153, 1, 153, 5, 153, 1335, 8, 153, 10, - 153, 12, 153, 1338, 9, 153, 3, 153, 1340, 8, 153, 1, 153, 1, 153, 3, 153, - 1344, 8, 153, 1, 153, 4, 153, 1347, 8, 153, 11, 153, 12, 153, 1348, 3, - 153, 1351, 8, 153, 1, 153, 1, 153, 4, 153, 1355, 8, 153, 11, 153, 12, 153, - 1356, 1, 153, 1, 153, 3, 153, 1361, 8, 153, 1, 153, 4, 153, 1364, 8, 153, - 11, 153, 12, 153, 1365, 3, 153, 1368, 8, 153, 3, 153, 1370, 8, 153, 1, - 154, 1, 154, 5, 154, 1374, 8, 154, 10, 154, 12, 154, 1377, 9, 154, 1, 154, - 1, 154, 3, 154, 1381, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 5, 155, 1387, - 8, 155, 10, 155, 12, 155, 1390, 9, 155, 1, 155, 1, 155, 1, 156, 1, 156, - 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 5, 157, 1401, 8, 157, 10, 157, - 12, 157, 1404, 9, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, - 5, 158, 1412, 8, 158, 10, 158, 12, 158, 1415, 9, 158, 1, 158, 1, 158, 1, - 158, 3, 158, 1420, 8, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, - 1, 160, 1, 160, 1, 161, 1, 161, 1, 162, 1, 162, 1, 163, 1, 163, 1, 164, - 1, 164, 1, 165, 1, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 168, 1, 168, - 1, 169, 1, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 172, 1, 172, 1, 173, - 1, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 176, 1, 176, 1, 177, 1, 177, - 1, 178, 1, 178, 1, 179, 1, 179, 1, 180, 1, 180, 1, 181, 1, 181, 1, 182, - 1, 182, 1, 183, 1, 183, 1, 184, 1, 184, 1, 185, 1, 185, 1, 186, 1, 186, - 1, 187, 1, 187, 1, 1413, 0, 188, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, - 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, - 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, - 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, - 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, - 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, - 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, - 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, - 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, - 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, - 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, - 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, - 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, - 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, - 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, - 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, - 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, - 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, - 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, - 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, - 321, 161, 323, 0, 325, 0, 327, 0, 329, 0, 331, 0, 333, 0, 335, 0, 337, - 0, 339, 0, 341, 0, 343, 0, 345, 0, 347, 0, 349, 0, 351, 0, 353, 0, 355, - 0, 357, 0, 359, 0, 361, 0, 363, 0, 365, 0, 367, 0, 369, 0, 371, 0, 373, - 0, 375, 0, 1, 0, 37, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, - 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, - 45, 45, 3, 0, 36, 36, 58, 58, 64, 64, 1, 0, 39, 39, 2, 0, 10, 10, 13, 13, - 3, 0, 9, 11, 13, 13, 32, 32, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, - 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, - 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, - 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, - 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, - 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, - 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, - 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, - 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, - 90, 122, 122, 1482, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, - 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, - 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, - 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, - 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, - 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, - 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, - 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, - 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, - 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, - 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, - 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, - 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, - 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, - 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, - 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, - 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, - 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, - 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, - 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, - 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, - 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, - 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, - 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, - 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, - 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, - 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, - 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, - 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, - 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, - 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, - 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, - 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, - 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, - 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, - 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, - 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, - 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, - 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, - 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, - 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, - 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, - 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, - 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, - 0, 0, 0, 1, 377, 1, 0, 0, 0, 3, 380, 1, 0, 0, 0, 5, 382, 1, 0, 0, 0, 7, - 384, 1, 0, 0, 0, 9, 386, 1, 0, 0, 0, 11, 388, 1, 0, 0, 0, 13, 390, 1, 0, - 0, 0, 15, 392, 1, 0, 0, 0, 17, 394, 1, 0, 0, 0, 19, 396, 1, 0, 0, 0, 21, - 398, 1, 0, 0, 0, 23, 400, 1, 0, 0, 0, 25, 403, 1, 0, 0, 0, 27, 405, 1, - 0, 0, 0, 29, 407, 1, 0, 0, 0, 31, 410, 1, 0, 0, 0, 33, 413, 1, 0, 0, 0, - 35, 415, 1, 0, 0, 0, 37, 417, 1, 0, 0, 0, 39, 419, 1, 0, 0, 0, 41, 422, - 1, 0, 0, 0, 43, 424, 1, 0, 0, 0, 45, 427, 1, 0, 0, 0, 47, 430, 1, 0, 0, - 0, 49, 433, 1, 0, 0, 0, 51, 436, 1, 0, 0, 0, 53, 442, 1, 0, 0, 0, 55, 449, - 1, 0, 0, 0, 57, 453, 1, 0, 0, 0, 59, 459, 1, 0, 0, 0, 61, 463, 1, 0, 0, - 0, 63, 469, 1, 0, 0, 0, 65, 477, 1, 0, 0, 0, 67, 481, 1, 0, 0, 0, 69, 484, - 1, 0, 0, 0, 71, 488, 1, 0, 0, 0, 73, 495, 1, 0, 0, 0, 75, 509, 1, 0, 0, - 0, 77, 516, 1, 0, 0, 0, 79, 522, 1, 0, 0, 0, 81, 530, 1, 0, 0, 0, 83, 533, - 1, 0, 0, 0, 85, 541, 1, 0, 0, 0, 87, 546, 1, 0, 0, 0, 89, 551, 1, 0, 0, - 0, 91, 557, 1, 0, 0, 0, 93, 565, 1, 0, 0, 0, 95, 572, 1, 0, 0, 0, 97, 579, - 1, 0, 0, 0, 99, 588, 1, 0, 0, 0, 101, 599, 1, 0, 0, 0, 103, 606, 1, 0, - 0, 0, 105, 612, 1, 0, 0, 0, 107, 625, 1, 0, 0, 0, 109, 638, 1, 0, 0, 0, - 111, 656, 1, 0, 0, 0, 113, 665, 1, 0, 0, 0, 115, 673, 1, 0, 0, 0, 117, - 684, 1, 0, 0, 0, 119, 693, 1, 0, 0, 0, 121, 700, 1, 0, 0, 0, 123, 705, - 1, 0, 0, 0, 125, 712, 1, 0, 0, 0, 127, 721, 1, 0, 0, 0, 129, 726, 1, 0, - 0, 0, 131, 731, 1, 0, 0, 0, 133, 736, 1, 0, 0, 0, 135, 740, 1, 0, 0, 0, - 137, 747, 1, 0, 0, 0, 139, 754, 1, 0, 0, 0, 141, 761, 1, 0, 0, 0, 143, - 771, 1, 0, 0, 0, 145, 778, 1, 0, 0, 0, 147, 786, 1, 0, 0, 0, 149, 791, - 1, 0, 0, 0, 151, 795, 1, 0, 0, 0, 153, 803, 1, 0, 0, 0, 155, 808, 1, 0, - 0, 0, 157, 813, 1, 0, 0, 0, 159, 818, 1, 0, 0, 0, 161, 824, 1, 0, 0, 0, - 163, 831, 1, 0, 0, 0, 165, 834, 1, 0, 0, 0, 167, 841, 1, 0, 0, 0, 169, - 851, 1, 0, 0, 0, 171, 854, 1, 0, 0, 0, 173, 860, 1, 0, 0, 0, 175, 868, - 1, 0, 0, 0, 177, 878, 1, 0, 0, 0, 179, 884, 1, 0, 0, 0, 181, 891, 1, 0, - 0, 0, 183, 899, 1, 0, 0, 0, 185, 909, 1, 0, 0, 0, 187, 914, 1, 0, 0, 0, - 189, 917, 1, 0, 0, 0, 191, 924, 1, 0, 0, 0, 193, 929, 1, 0, 0, 0, 195, - 933, 1, 0, 0, 0, 197, 938, 1, 0, 0, 0, 199, 943, 1, 0, 0, 0, 201, 949, - 1, 0, 0, 0, 203, 955, 1, 0, 0, 0, 205, 963, 1, 0, 0, 0, 207, 971, 1, 0, - 0, 0, 209, 974, 1, 0, 0, 0, 211, 978, 1, 0, 0, 0, 213, 986, 1, 0, 0, 0, - 215, 991, 1, 0, 0, 0, 217, 994, 1, 0, 0, 0, 219, 1001, 1, 0, 0, 0, 221, - 1004, 1, 0, 0, 0, 223, 1009, 1, 0, 0, 0, 225, 1012, 1, 0, 0, 0, 227, 1018, - 1, 0, 0, 0, 229, 1024, 1, 0, 0, 0, 231, 1029, 1, 0, 0, 0, 233, 1036, 1, - 0, 0, 0, 235, 1044, 1, 0, 0, 0, 237, 1050, 1, 0, 0, 0, 239, 1056, 1, 0, - 0, 0, 241, 1066, 1, 0, 0, 0, 243, 1077, 1, 0, 0, 0, 245, 1084, 1, 0, 0, - 0, 247, 1092, 1, 0, 0, 0, 249, 1100, 1, 0, 0, 0, 251, 1107, 1, 0, 0, 0, - 253, 1115, 1, 0, 0, 0, 255, 1124, 1, 0, 0, 0, 257, 1130, 1, 0, 0, 0, 259, - 1139, 1, 0, 0, 0, 261, 1143, 1, 0, 0, 0, 263, 1153, 1, 0, 0, 0, 265, 1160, - 1, 0, 0, 0, 267, 1164, 1, 0, 0, 0, 269, 1170, 1, 0, 0, 0, 271, 1175, 1, - 0, 0, 0, 273, 1185, 1, 0, 0, 0, 275, 1190, 1, 0, 0, 0, 277, 1193, 1, 0, - 0, 0, 279, 1205, 1, 0, 0, 0, 281, 1213, 1, 0, 0, 0, 283, 1219, 1, 0, 0, - 0, 285, 1226, 1, 0, 0, 0, 287, 1233, 1, 0, 0, 0, 289, 1239, 1, 0, 0, 0, - 291, 1246, 1, 0, 0, 0, 293, 1253, 1, 0, 0, 0, 295, 1258, 1, 0, 0, 0, 297, - 1266, 1, 0, 0, 0, 299, 1271, 1, 0, 0, 0, 301, 1277, 1, 0, 0, 0, 303, 1282, - 1, 0, 0, 0, 305, 1325, 1, 0, 0, 0, 307, 1369, 1, 0, 0, 0, 309, 1380, 1, - 0, 0, 0, 311, 1382, 1, 0, 0, 0, 313, 1393, 1, 0, 0, 0, 315, 1396, 1, 0, - 0, 0, 317, 1407, 1, 0, 0, 0, 319, 1423, 1, 0, 0, 0, 321, 1427, 1, 0, 0, - 0, 323, 1429, 1, 0, 0, 0, 325, 1431, 1, 0, 0, 0, 327, 1433, 1, 0, 0, 0, - 329, 1435, 1, 0, 0, 0, 331, 1437, 1, 0, 0, 0, 333, 1439, 1, 0, 0, 0, 335, - 1441, 1, 0, 0, 0, 337, 1443, 1, 0, 0, 0, 339, 1445, 1, 0, 0, 0, 341, 1447, - 1, 0, 0, 0, 343, 1449, 1, 0, 0, 0, 345, 1451, 1, 0, 0, 0, 347, 1453, 1, - 0, 0, 0, 349, 1455, 1, 0, 0, 0, 351, 1457, 1, 0, 0, 0, 353, 1459, 1, 0, - 0, 0, 355, 1461, 1, 0, 0, 0, 357, 1463, 1, 0, 0, 0, 359, 1465, 1, 0, 0, - 0, 361, 1467, 1, 0, 0, 0, 363, 1469, 1, 0, 0, 0, 365, 1471, 1, 0, 0, 0, - 367, 1473, 1, 0, 0, 0, 369, 1475, 1, 0, 0, 0, 371, 1477, 1, 0, 0, 0, 373, - 1479, 1, 0, 0, 0, 375, 1481, 1, 0, 0, 0, 377, 378, 5, 58, 0, 0, 378, 379, - 5, 58, 0, 0, 379, 2, 1, 0, 0, 0, 380, 381, 5, 59, 0, 0, 381, 4, 1, 0, 0, - 0, 382, 383, 5, 46, 0, 0, 383, 6, 1, 0, 0, 0, 384, 385, 5, 40, 0, 0, 385, - 8, 1, 0, 0, 0, 386, 387, 5, 41, 0, 0, 387, 10, 1, 0, 0, 0, 388, 389, 5, - 44, 0, 0, 389, 12, 1, 0, 0, 0, 390, 391, 5, 61, 0, 0, 391, 14, 1, 0, 0, - 0, 392, 393, 5, 42, 0, 0, 393, 16, 1, 0, 0, 0, 394, 395, 5, 43, 0, 0, 395, - 18, 1, 0, 0, 0, 396, 397, 5, 45, 0, 0, 397, 20, 1, 0, 0, 0, 398, 399, 5, - 126, 0, 0, 399, 22, 1, 0, 0, 0, 400, 401, 5, 124, 0, 0, 401, 402, 5, 124, - 0, 0, 402, 24, 1, 0, 0, 0, 403, 404, 5, 47, 0, 0, 404, 26, 1, 0, 0, 0, - 405, 406, 5, 37, 0, 0, 406, 28, 1, 0, 0, 0, 407, 408, 5, 60, 0, 0, 408, - 409, 5, 60, 0, 0, 409, 30, 1, 0, 0, 0, 410, 411, 5, 62, 0, 0, 411, 412, - 5, 62, 0, 0, 412, 32, 1, 0, 0, 0, 413, 414, 5, 38, 0, 0, 414, 34, 1, 0, - 0, 0, 415, 416, 5, 124, 0, 0, 416, 36, 1, 0, 0, 0, 417, 418, 5, 60, 0, - 0, 418, 38, 1, 0, 0, 0, 419, 420, 5, 60, 0, 0, 420, 421, 5, 61, 0, 0, 421, - 40, 1, 0, 0, 0, 422, 423, 5, 62, 0, 0, 423, 42, 1, 0, 0, 0, 424, 425, 5, - 62, 0, 0, 425, 426, 5, 61, 0, 0, 426, 44, 1, 0, 0, 0, 427, 428, 5, 61, - 0, 0, 428, 429, 5, 61, 0, 0, 429, 46, 1, 0, 0, 0, 430, 431, 5, 33, 0, 0, - 431, 432, 5, 61, 0, 0, 432, 48, 1, 0, 0, 0, 433, 434, 5, 60, 0, 0, 434, - 435, 5, 62, 0, 0, 435, 50, 1, 0, 0, 0, 436, 437, 3, 325, 162, 0, 437, 438, - 3, 327, 163, 0, 438, 439, 3, 353, 176, 0, 439, 440, 3, 359, 179, 0, 440, - 441, 3, 363, 181, 0, 441, 52, 1, 0, 0, 0, 442, 443, 3, 325, 162, 0, 443, - 444, 3, 329, 164, 0, 444, 445, 3, 363, 181, 0, 445, 446, 3, 341, 170, 0, - 446, 447, 3, 353, 176, 0, 447, 448, 3, 351, 175, 0, 448, 54, 1, 0, 0, 0, - 449, 450, 3, 325, 162, 0, 450, 451, 3, 331, 165, 0, 451, 452, 3, 331, 165, - 0, 452, 56, 1, 0, 0, 0, 453, 454, 3, 325, 162, 0, 454, 455, 3, 335, 167, - 0, 455, 456, 3, 363, 181, 0, 456, 457, 3, 333, 166, 0, 457, 458, 3, 359, - 179, 0, 458, 58, 1, 0, 0, 0, 459, 460, 3, 325, 162, 0, 460, 461, 3, 347, - 173, 0, 461, 462, 3, 347, 173, 0, 462, 60, 1, 0, 0, 0, 463, 464, 3, 325, - 162, 0, 464, 465, 3, 347, 173, 0, 465, 466, 3, 363, 181, 0, 466, 467, 3, - 333, 166, 0, 467, 468, 3, 359, 179, 0, 468, 62, 1, 0, 0, 0, 469, 470, 3, - 325, 162, 0, 470, 471, 3, 351, 175, 0, 471, 472, 3, 325, 162, 0, 472, 473, - 3, 347, 173, 0, 473, 474, 3, 373, 186, 0, 474, 475, 3, 375, 187, 0, 475, - 476, 3, 333, 166, 0, 476, 64, 1, 0, 0, 0, 477, 478, 3, 325, 162, 0, 478, - 479, 3, 351, 175, 0, 479, 480, 3, 331, 165, 0, 480, 66, 1, 0, 0, 0, 481, - 482, 3, 325, 162, 0, 482, 483, 3, 361, 180, 0, 483, 68, 1, 0, 0, 0, 484, - 485, 3, 325, 162, 0, 485, 486, 3, 361, 180, 0, 486, 487, 3, 329, 164, 0, - 487, 70, 1, 0, 0, 0, 488, 489, 3, 325, 162, 0, 489, 490, 3, 363, 181, 0, - 490, 491, 3, 363, 181, 0, 491, 492, 3, 325, 162, 0, 492, 493, 3, 329, 164, - 0, 493, 494, 3, 339, 169, 0, 494, 72, 1, 0, 0, 0, 495, 496, 3, 325, 162, - 0, 496, 497, 3, 365, 182, 0, 497, 498, 3, 363, 181, 0, 498, 499, 3, 353, - 176, 0, 499, 500, 3, 341, 170, 0, 500, 501, 3, 351, 175, 0, 501, 502, 3, - 329, 164, 0, 502, 503, 3, 359, 179, 0, 503, 504, 3, 333, 166, 0, 504, 505, - 3, 349, 174, 0, 505, 506, 3, 333, 166, 0, 506, 507, 3, 351, 175, 0, 507, - 508, 3, 363, 181, 0, 508, 74, 1, 0, 0, 0, 509, 510, 3, 327, 163, 0, 510, - 511, 3, 333, 166, 0, 511, 512, 3, 335, 167, 0, 512, 513, 3, 353, 176, 0, - 513, 514, 3, 359, 179, 0, 514, 515, 3, 333, 166, 0, 515, 76, 1, 0, 0, 0, - 516, 517, 3, 327, 163, 0, 517, 518, 3, 333, 166, 0, 518, 519, 3, 337, 168, - 0, 519, 520, 3, 341, 170, 0, 520, 521, 3, 351, 175, 0, 521, 78, 1, 0, 0, - 0, 522, 523, 3, 327, 163, 0, 523, 524, 3, 333, 166, 0, 524, 525, 3, 363, - 181, 0, 525, 526, 3, 369, 184, 0, 526, 527, 3, 333, 166, 0, 527, 528, 3, - 333, 166, 0, 528, 529, 3, 351, 175, 0, 529, 80, 1, 0, 0, 0, 530, 531, 3, - 327, 163, 0, 531, 532, 3, 373, 186, 0, 532, 82, 1, 0, 0, 0, 533, 534, 3, - 329, 164, 0, 534, 535, 3, 325, 162, 0, 535, 536, 3, 361, 180, 0, 536, 537, - 3, 329, 164, 0, 537, 538, 3, 325, 162, 0, 538, 539, 3, 331, 165, 0, 539, - 540, 3, 333, 166, 0, 540, 84, 1, 0, 0, 0, 541, 542, 3, 329, 164, 0, 542, - 543, 3, 325, 162, 0, 543, 544, 3, 361, 180, 0, 544, 545, 3, 333, 166, 0, - 545, 86, 1, 0, 0, 0, 546, 547, 3, 329, 164, 0, 547, 548, 3, 325, 162, 0, - 548, 549, 3, 361, 180, 0, 549, 550, 3, 363, 181, 0, 550, 88, 1, 0, 0, 0, - 551, 552, 3, 329, 164, 0, 552, 553, 3, 339, 169, 0, 553, 554, 3, 333, 166, - 0, 554, 555, 3, 329, 164, 0, 555, 556, 3, 345, 172, 0, 556, 90, 1, 0, 0, - 0, 557, 558, 3, 329, 164, 0, 558, 559, 3, 353, 176, 0, 559, 560, 3, 347, - 173, 0, 560, 561, 3, 347, 173, 0, 561, 562, 3, 325, 162, 0, 562, 563, 3, - 363, 181, 0, 563, 564, 3, 333, 166, 0, 564, 92, 1, 0, 0, 0, 565, 566, 3, - 329, 164, 0, 566, 567, 3, 353, 176, 0, 567, 568, 3, 347, 173, 0, 568, 569, - 3, 365, 182, 0, 569, 570, 3, 349, 174, 0, 570, 571, 3, 351, 175, 0, 571, - 94, 1, 0, 0, 0, 572, 573, 3, 329, 164, 0, 573, 574, 3, 353, 176, 0, 574, - 575, 3, 349, 174, 0, 575, 576, 3, 349, 174, 0, 576, 577, 3, 341, 170, 0, - 577, 578, 3, 363, 181, 0, 578, 96, 1, 0, 0, 0, 579, 580, 3, 329, 164, 0, - 580, 581, 3, 353, 176, 0, 581, 582, 3, 351, 175, 0, 582, 583, 3, 335, 167, - 0, 583, 584, 3, 347, 173, 0, 584, 585, 3, 341, 170, 0, 585, 586, 3, 329, - 164, 0, 586, 587, 3, 363, 181, 0, 587, 98, 1, 0, 0, 0, 588, 589, 3, 329, - 164, 0, 589, 590, 3, 353, 176, 0, 590, 591, 3, 351, 175, 0, 591, 592, 3, - 361, 180, 0, 592, 593, 3, 363, 181, 0, 593, 594, 3, 359, 179, 0, 594, 595, - 3, 325, 162, 0, 595, 596, 3, 341, 170, 0, 596, 597, 3, 351, 175, 0, 597, - 598, 3, 363, 181, 0, 598, 100, 1, 0, 0, 0, 599, 600, 3, 329, 164, 0, 600, - 601, 3, 359, 179, 0, 601, 602, 3, 333, 166, 0, 602, 603, 3, 325, 162, 0, - 603, 604, 3, 363, 181, 0, 604, 605, 3, 333, 166, 0, 605, 102, 1, 0, 0, - 0, 606, 607, 3, 329, 164, 0, 607, 608, 3, 359, 179, 0, 608, 609, 3, 353, - 176, 0, 609, 610, 3, 361, 180, 0, 610, 611, 3, 361, 180, 0, 611, 104, 1, - 0, 0, 0, 612, 613, 3, 329, 164, 0, 613, 614, 3, 365, 182, 0, 614, 615, - 3, 359, 179, 0, 615, 616, 3, 359, 179, 0, 616, 617, 3, 333, 166, 0, 617, - 618, 3, 351, 175, 0, 618, 619, 3, 363, 181, 0, 619, 620, 5, 95, 0, 0, 620, - 621, 3, 331, 165, 0, 621, 622, 3, 325, 162, 0, 622, 623, 3, 363, 181, 0, - 623, 624, 3, 333, 166, 0, 624, 106, 1, 0, 0, 0, 625, 626, 3, 329, 164, - 0, 626, 627, 3, 365, 182, 0, 627, 628, 3, 359, 179, 0, 628, 629, 3, 359, - 179, 0, 629, 630, 3, 333, 166, 0, 630, 631, 3, 351, 175, 0, 631, 632, 3, - 363, 181, 0, 632, 633, 5, 95, 0, 0, 633, 634, 3, 363, 181, 0, 634, 635, - 3, 341, 170, 0, 635, 636, 3, 349, 174, 0, 636, 637, 3, 333, 166, 0, 637, - 108, 1, 0, 0, 0, 638, 639, 3, 329, 164, 0, 639, 640, 3, 365, 182, 0, 640, - 641, 3, 359, 179, 0, 641, 642, 3, 359, 179, 0, 642, 643, 3, 333, 166, 0, - 643, 644, 3, 351, 175, 0, 644, 645, 3, 363, 181, 0, 645, 646, 5, 95, 0, - 0, 646, 647, 3, 363, 181, 0, 647, 648, 3, 341, 170, 0, 648, 649, 3, 349, - 174, 0, 649, 650, 3, 333, 166, 0, 650, 651, 3, 361, 180, 0, 651, 652, 3, - 363, 181, 0, 652, 653, 3, 325, 162, 0, 653, 654, 3, 349, 174, 0, 654, 655, - 3, 355, 177, 0, 655, 110, 1, 0, 0, 0, 656, 657, 3, 331, 165, 0, 657, 658, - 3, 325, 162, 0, 658, 659, 3, 363, 181, 0, 659, 660, 3, 325, 162, 0, 660, - 661, 3, 327, 163, 0, 661, 662, 3, 325, 162, 0, 662, 663, 3, 361, 180, 0, - 663, 664, 3, 333, 166, 0, 664, 112, 1, 0, 0, 0, 665, 666, 3, 331, 165, - 0, 666, 667, 3, 333, 166, 0, 667, 668, 3, 335, 167, 0, 668, 669, 3, 325, - 162, 0, 669, 670, 3, 365, 182, 0, 670, 671, 3, 347, 173, 0, 671, 672, 3, - 363, 181, 0, 672, 114, 1, 0, 0, 0, 673, 674, 3, 331, 165, 0, 674, 675, - 3, 333, 166, 0, 675, 676, 3, 335, 167, 0, 676, 677, 3, 333, 166, 0, 677, - 678, 3, 359, 179, 0, 678, 679, 3, 359, 179, 0, 679, 680, 3, 325, 162, 0, - 680, 681, 3, 327, 163, 0, 681, 682, 3, 347, 173, 0, 682, 683, 3, 333, 166, - 0, 683, 116, 1, 0, 0, 0, 684, 685, 3, 331, 165, 0, 685, 686, 3, 333, 166, - 0, 686, 687, 3, 335, 167, 0, 687, 688, 3, 333, 166, 0, 688, 689, 3, 359, - 179, 0, 689, 690, 3, 359, 179, 0, 690, 691, 3, 333, 166, 0, 691, 692, 3, - 331, 165, 0, 692, 118, 1, 0, 0, 0, 693, 694, 3, 331, 165, 0, 694, 695, - 3, 333, 166, 0, 695, 696, 3, 347, 173, 0, 696, 697, 3, 333, 166, 0, 697, - 698, 3, 363, 181, 0, 698, 699, 3, 333, 166, 0, 699, 120, 1, 0, 0, 0, 700, - 701, 3, 331, 165, 0, 701, 702, 3, 333, 166, 0, 702, 703, 3, 361, 180, 0, - 703, 704, 3, 329, 164, 0, 704, 122, 1, 0, 0, 0, 705, 706, 3, 331, 165, - 0, 706, 707, 3, 333, 166, 0, 707, 708, 3, 363, 181, 0, 708, 709, 3, 325, - 162, 0, 709, 710, 3, 329, 164, 0, 710, 711, 3, 339, 169, 0, 711, 124, 1, - 0, 0, 0, 712, 713, 3, 331, 165, 0, 713, 714, 3, 341, 170, 0, 714, 715, - 3, 361, 180, 0, 715, 716, 3, 363, 181, 0, 716, 717, 3, 341, 170, 0, 717, - 718, 3, 351, 175, 0, 718, 719, 3, 329, 164, 0, 719, 720, 3, 363, 181, 0, - 720, 126, 1, 0, 0, 0, 721, 722, 3, 331, 165, 0, 722, 723, 3, 359, 179, - 0, 723, 724, 3, 353, 176, 0, 724, 725, 3, 355, 177, 0, 725, 128, 1, 0, - 0, 0, 726, 727, 3, 333, 166, 0, 727, 728, 3, 325, 162, 0, 728, 729, 3, - 329, 164, 0, 729, 730, 3, 339, 169, 0, 730, 130, 1, 0, 0, 0, 731, 732, - 3, 333, 166, 0, 732, 733, 3, 347, 173, 0, 733, 734, 3, 361, 180, 0, 734, - 735, 3, 333, 166, 0, 735, 132, 1, 0, 0, 0, 736, 737, 3, 333, 166, 0, 737, - 738, 3, 351, 175, 0, 738, 739, 3, 331, 165, 0, 739, 134, 1, 0, 0, 0, 740, - 741, 3, 333, 166, 0, 741, 742, 3, 351, 175, 0, 742, 743, 3, 325, 162, 0, - 743, 744, 3, 327, 163, 0, 744, 745, 3, 347, 173, 0, 745, 746, 3, 333, 166, - 0, 746, 136, 1, 0, 0, 0, 747, 748, 3, 333, 166, 0, 748, 749, 3, 361, 180, - 0, 749, 750, 3, 329, 164, 0, 750, 751, 3, 325, 162, 0, 751, 752, 3, 355, - 177, 0, 752, 753, 3, 333, 166, 0, 753, 138, 1, 0, 0, 0, 754, 755, 3, 333, - 166, 0, 755, 756, 3, 371, 185, 0, 756, 757, 3, 329, 164, 0, 757, 758, 3, - 333, 166, 0, 758, 759, 3, 355, 177, 0, 759, 760, 3, 363, 181, 0, 760, 140, - 1, 0, 0, 0, 761, 762, 3, 333, 166, 0, 762, 763, 3, 371, 185, 0, 763, 764, - 3, 329, 164, 0, 764, 765, 3, 347, 173, 0, 765, 766, 3, 365, 182, 0, 766, - 767, 3, 361, 180, 0, 767, 768, 3, 341, 170, 0, 768, 769, 3, 367, 183, 0, - 769, 770, 3, 333, 166, 0, 770, 142, 1, 0, 0, 0, 771, 772, 3, 333, 166, - 0, 772, 773, 3, 371, 185, 0, 773, 774, 3, 341, 170, 0, 774, 775, 3, 361, - 180, 0, 775, 776, 3, 363, 181, 0, 776, 777, 3, 361, 180, 0, 777, 144, 1, - 0, 0, 0, 778, 779, 3, 333, 166, 0, 779, 780, 3, 371, 185, 0, 780, 781, - 3, 355, 177, 0, 781, 782, 3, 347, 173, 0, 782, 783, 3, 325, 162, 0, 783, - 784, 3, 341, 170, 0, 784, 785, 3, 351, 175, 0, 785, 146, 1, 0, 0, 0, 786, - 787, 3, 335, 167, 0, 787, 788, 3, 325, 162, 0, 788, 789, 3, 341, 170, 0, - 789, 790, 3, 347, 173, 0, 790, 148, 1, 0, 0, 0, 791, 792, 3, 335, 167, - 0, 792, 793, 3, 353, 176, 0, 793, 794, 3, 359, 179, 0, 794, 150, 1, 0, - 0, 0, 795, 796, 3, 335, 167, 0, 796, 797, 3, 353, 176, 0, 797, 798, 3, - 359, 179, 0, 798, 799, 3, 333, 166, 0, 799, 800, 3, 341, 170, 0, 800, 801, - 3, 337, 168, 0, 801, 802, 3, 351, 175, 0, 802, 152, 1, 0, 0, 0, 803, 804, - 3, 335, 167, 0, 804, 805, 3, 359, 179, 0, 805, 806, 3, 353, 176, 0, 806, - 807, 3, 349, 174, 0, 807, 154, 1, 0, 0, 0, 808, 809, 3, 335, 167, 0, 809, - 810, 3, 365, 182, 0, 810, 811, 3, 347, 173, 0, 811, 812, 3, 347, 173, 0, - 812, 156, 1, 0, 0, 0, 813, 814, 3, 337, 168, 0, 814, 815, 3, 347, 173, - 0, 815, 816, 3, 353, 176, 0, 816, 817, 3, 327, 163, 0, 817, 158, 1, 0, - 0, 0, 818, 819, 3, 337, 168, 0, 819, 820, 3, 359, 179, 0, 820, 821, 3, - 353, 176, 0, 821, 822, 3, 365, 182, 0, 822, 823, 3, 355, 177, 0, 823, 160, - 1, 0, 0, 0, 824, 825, 3, 339, 169, 0, 825, 826, 3, 325, 162, 0, 826, 827, - 3, 367, 183, 0, 827, 828, 3, 341, 170, 0, 828, 829, 3, 351, 175, 0, 829, - 830, 3, 337, 168, 0, 830, 162, 1, 0, 0, 0, 831, 832, 3, 341, 170, 0, 832, - 833, 3, 335, 167, 0, 833, 164, 1, 0, 0, 0, 834, 835, 3, 341, 170, 0, 835, - 836, 3, 337, 168, 0, 836, 837, 3, 351, 175, 0, 837, 838, 3, 353, 176, 0, - 838, 839, 3, 359, 179, 0, 839, 840, 3, 333, 166, 0, 840, 166, 1, 0, 0, - 0, 841, 842, 3, 341, 170, 0, 842, 843, 3, 349, 174, 0, 843, 844, 3, 349, - 174, 0, 844, 845, 3, 333, 166, 0, 845, 846, 3, 331, 165, 0, 846, 847, 3, - 341, 170, 0, 847, 848, 3, 325, 162, 0, 848, 849, 3, 363, 181, 0, 849, 850, - 3, 333, 166, 0, 850, 168, 1, 0, 0, 0, 851, 852, 3, 341, 170, 0, 852, 853, - 3, 351, 175, 0, 853, 170, 1, 0, 0, 0, 854, 855, 3, 341, 170, 0, 855, 856, - 3, 351, 175, 0, 856, 857, 3, 331, 165, 0, 857, 858, 3, 333, 166, 0, 858, - 859, 3, 371, 185, 0, 859, 172, 1, 0, 0, 0, 860, 861, 3, 341, 170, 0, 861, - 862, 3, 351, 175, 0, 862, 863, 3, 331, 165, 0, 863, 864, 3, 333, 166, 0, - 864, 865, 3, 371, 185, 0, 865, 866, 3, 333, 166, 0, 866, 867, 3, 331, 165, - 0, 867, 174, 1, 0, 0, 0, 868, 869, 3, 341, 170, 0, 869, 870, 3, 351, 175, - 0, 870, 871, 3, 341, 170, 0, 871, 872, 3, 363, 181, 0, 872, 873, 3, 341, - 170, 0, 873, 874, 3, 325, 162, 0, 874, 875, 3, 347, 173, 0, 875, 876, 3, - 347, 173, 0, 876, 877, 3, 373, 186, 0, 877, 176, 1, 0, 0, 0, 878, 879, - 3, 341, 170, 0, 879, 880, 3, 351, 175, 0, 880, 881, 3, 351, 175, 0, 881, - 882, 3, 333, 166, 0, 882, 883, 3, 359, 179, 0, 883, 178, 1, 0, 0, 0, 884, - 885, 3, 341, 170, 0, 885, 886, 3, 351, 175, 0, 886, 887, 3, 361, 180, 0, - 887, 888, 3, 333, 166, 0, 888, 889, 3, 359, 179, 0, 889, 890, 3, 363, 181, - 0, 890, 180, 1, 0, 0, 0, 891, 892, 3, 341, 170, 0, 892, 893, 3, 351, 175, - 0, 893, 894, 3, 361, 180, 0, 894, 895, 3, 363, 181, 0, 895, 896, 3, 333, - 166, 0, 896, 897, 3, 325, 162, 0, 897, 898, 3, 331, 165, 0, 898, 182, 1, - 0, 0, 0, 899, 900, 3, 341, 170, 0, 900, 901, 3, 351, 175, 0, 901, 902, - 3, 363, 181, 0, 902, 903, 3, 333, 166, 0, 903, 904, 3, 359, 179, 0, 904, - 905, 3, 361, 180, 0, 905, 906, 3, 333, 166, 0, 906, 907, 3, 329, 164, 0, - 907, 908, 3, 363, 181, 0, 908, 184, 1, 0, 0, 0, 909, 910, 3, 341, 170, - 0, 910, 911, 3, 351, 175, 0, 911, 912, 3, 363, 181, 0, 912, 913, 3, 353, - 176, 0, 913, 186, 1, 0, 0, 0, 914, 915, 3, 341, 170, 0, 915, 916, 3, 361, - 180, 0, 916, 188, 1, 0, 0, 0, 917, 918, 3, 341, 170, 0, 918, 919, 3, 361, - 180, 0, 919, 920, 3, 351, 175, 0, 920, 921, 3, 365, 182, 0, 921, 922, 3, - 347, 173, 0, 922, 923, 3, 347, 173, 0, 923, 190, 1, 0, 0, 0, 924, 925, - 3, 343, 171, 0, 925, 926, 3, 353, 176, 0, 926, 927, 3, 341, 170, 0, 927, - 928, 3, 351, 175, 0, 928, 192, 1, 0, 0, 0, 929, 930, 3, 345, 172, 0, 930, - 931, 3, 333, 166, 0, 931, 932, 3, 373, 186, 0, 932, 194, 1, 0, 0, 0, 933, - 934, 3, 347, 173, 0, 934, 935, 3, 333, 166, 0, 935, 936, 3, 335, 167, 0, - 936, 937, 3, 363, 181, 0, 937, 196, 1, 0, 0, 0, 938, 939, 3, 347, 173, - 0, 939, 940, 3, 341, 170, 0, 940, 941, 3, 345, 172, 0, 941, 942, 3, 333, - 166, 0, 942, 198, 1, 0, 0, 0, 943, 944, 3, 347, 173, 0, 944, 945, 3, 341, - 170, 0, 945, 946, 3, 349, 174, 0, 946, 947, 3, 341, 170, 0, 947, 948, 3, - 363, 181, 0, 948, 200, 1, 0, 0, 0, 949, 950, 3, 349, 174, 0, 950, 951, - 3, 325, 162, 0, 951, 952, 3, 363, 181, 0, 952, 953, 3, 329, 164, 0, 953, - 954, 3, 339, 169, 0, 954, 202, 1, 0, 0, 0, 955, 956, 3, 351, 175, 0, 956, - 957, 3, 325, 162, 0, 957, 958, 3, 363, 181, 0, 958, 959, 3, 365, 182, 0, - 959, 960, 3, 359, 179, 0, 960, 961, 3, 325, 162, 0, 961, 962, 3, 347, 173, - 0, 962, 204, 1, 0, 0, 0, 963, 964, 3, 351, 175, 0, 964, 965, 3, 333, 166, - 0, 965, 966, 3, 371, 185, 0, 966, 967, 3, 363, 181, 0, 967, 968, 3, 367, - 183, 0, 968, 969, 3, 325, 162, 0, 969, 970, 3, 347, 173, 0, 970, 206, 1, - 0, 0, 0, 971, 972, 3, 351, 175, 0, 972, 973, 3, 353, 176, 0, 973, 208, - 1, 0, 0, 0, 974, 975, 3, 351, 175, 0, 975, 976, 3, 353, 176, 0, 976, 977, - 3, 363, 181, 0, 977, 210, 1, 0, 0, 0, 978, 979, 3, 351, 175, 0, 979, 980, - 3, 353, 176, 0, 980, 981, 3, 363, 181, 0, 981, 982, 3, 351, 175, 0, 982, - 983, 3, 365, 182, 0, 983, 984, 3, 347, 173, 0, 984, 985, 3, 347, 173, 0, - 985, 212, 1, 0, 0, 0, 986, 987, 3, 351, 175, 0, 987, 988, 3, 365, 182, - 0, 988, 989, 3, 347, 173, 0, 989, 990, 3, 347, 173, 0, 990, 214, 1, 0, - 0, 0, 991, 992, 3, 353, 176, 0, 992, 993, 3, 335, 167, 0, 993, 216, 1, - 0, 0, 0, 994, 995, 3, 353, 176, 0, 995, 996, 3, 335, 167, 0, 996, 997, - 3, 335, 167, 0, 997, 998, 3, 361, 180, 0, 998, 999, 3, 333, 166, 0, 999, - 1000, 3, 363, 181, 0, 1000, 218, 1, 0, 0, 0, 1001, 1002, 3, 353, 176, 0, - 1002, 1003, 3, 351, 175, 0, 1003, 220, 1, 0, 0, 0, 1004, 1005, 3, 353, - 176, 0, 1005, 1006, 3, 351, 175, 0, 1006, 1007, 3, 347, 173, 0, 1007, 1008, - 3, 373, 186, 0, 1008, 222, 1, 0, 0, 0, 1009, 1010, 3, 353, 176, 0, 1010, - 1011, 3, 359, 179, 0, 1011, 224, 1, 0, 0, 0, 1012, 1013, 3, 353, 176, 0, - 1013, 1014, 3, 359, 179, 0, 1014, 1015, 3, 331, 165, 0, 1015, 1016, 3, - 333, 166, 0, 1016, 1017, 3, 359, 179, 0, 1017, 226, 1, 0, 0, 0, 1018, 1019, - 3, 353, 176, 0, 1019, 1020, 3, 365, 182, 0, 1020, 1021, 3, 363, 181, 0, - 1021, 1022, 3, 333, 166, 0, 1022, 1023, 3, 359, 179, 0, 1023, 228, 1, 0, - 0, 0, 1024, 1025, 3, 355, 177, 0, 1025, 1026, 3, 347, 173, 0, 1026, 1027, - 3, 325, 162, 0, 1027, 1028, 3, 351, 175, 0, 1028, 230, 1, 0, 0, 0, 1029, - 1030, 3, 355, 177, 0, 1030, 1031, 3, 359, 179, 0, 1031, 1032, 3, 325, 162, - 0, 1032, 1033, 3, 337, 168, 0, 1033, 1034, 3, 349, 174, 0, 1034, 1035, - 3, 325, 162, 0, 1035, 232, 1, 0, 0, 0, 1036, 1037, 3, 355, 177, 0, 1037, - 1038, 3, 359, 179, 0, 1038, 1039, 3, 341, 170, 0, 1039, 1040, 3, 349, 174, - 0, 1040, 1041, 3, 325, 162, 0, 1041, 1042, 3, 359, 179, 0, 1042, 1043, - 3, 373, 186, 0, 1043, 234, 1, 0, 0, 0, 1044, 1045, 3, 357, 178, 0, 1045, - 1046, 3, 365, 182, 0, 1046, 1047, 3, 333, 166, 0, 1047, 1048, 3, 359, 179, - 0, 1048, 1049, 3, 373, 186, 0, 1049, 236, 1, 0, 0, 0, 1050, 1051, 3, 359, - 179, 0, 1051, 1052, 3, 325, 162, 0, 1052, 1053, 3, 341, 170, 0, 1053, 1054, - 3, 361, 180, 0, 1054, 1055, 3, 333, 166, 0, 1055, 238, 1, 0, 0, 0, 1056, - 1057, 3, 359, 179, 0, 1057, 1058, 3, 333, 166, 0, 1058, 1059, 3, 329, 164, - 0, 1059, 1060, 3, 365, 182, 0, 1060, 1061, 3, 359, 179, 0, 1061, 1062, - 3, 361, 180, 0, 1062, 1063, 3, 341, 170, 0, 1063, 1064, 3, 367, 183, 0, - 1064, 1065, 3, 333, 166, 0, 1065, 240, 1, 0, 0, 0, 1066, 1067, 3, 359, - 179, 0, 1067, 1068, 3, 333, 166, 0, 1068, 1069, 3, 335, 167, 0, 1069, 1070, - 3, 333, 166, 0, 1070, 1071, 3, 359, 179, 0, 1071, 1072, 3, 333, 166, 0, - 1072, 1073, 3, 351, 175, 0, 1073, 1074, 3, 329, 164, 0, 1074, 1075, 3, - 333, 166, 0, 1075, 1076, 3, 361, 180, 0, 1076, 242, 1, 0, 0, 0, 1077, 1078, - 3, 359, 179, 0, 1078, 1079, 3, 333, 166, 0, 1079, 1080, 3, 337, 168, 0, - 1080, 1081, 3, 333, 166, 0, 1081, 1082, 3, 371, 185, 0, 1082, 1083, 3, - 355, 177, 0, 1083, 244, 1, 0, 0, 0, 1084, 1085, 3, 359, 179, 0, 1085, 1086, - 3, 333, 166, 0, 1086, 1087, 3, 341, 170, 0, 1087, 1088, 3, 351, 175, 0, - 1088, 1089, 3, 331, 165, 0, 1089, 1090, 3, 333, 166, 0, 1090, 1091, 3, - 371, 185, 0, 1091, 246, 1, 0, 0, 0, 1092, 1093, 3, 359, 179, 0, 1093, 1094, - 3, 333, 166, 0, 1094, 1095, 3, 347, 173, 0, 1095, 1096, 3, 333, 166, 0, - 1096, 1097, 3, 325, 162, 0, 1097, 1098, 3, 361, 180, 0, 1098, 1099, 3, - 333, 166, 0, 1099, 248, 1, 0, 0, 0, 1100, 1101, 3, 359, 179, 0, 1101, 1102, - 3, 333, 166, 0, 1102, 1103, 3, 351, 175, 0, 1103, 1104, 3, 325, 162, 0, - 1104, 1105, 3, 349, 174, 0, 1105, 1106, 3, 333, 166, 0, 1106, 250, 1, 0, - 0, 0, 1107, 1108, 3, 359, 179, 0, 1108, 1109, 3, 333, 166, 0, 1109, 1110, - 3, 355, 177, 0, 1110, 1111, 3, 347, 173, 0, 1111, 1112, 3, 325, 162, 0, - 1112, 1113, 3, 329, 164, 0, 1113, 1114, 3, 333, 166, 0, 1114, 252, 1, 0, - 0, 0, 1115, 1116, 3, 359, 179, 0, 1116, 1117, 3, 333, 166, 0, 1117, 1118, - 3, 361, 180, 0, 1118, 1119, 3, 363, 181, 0, 1119, 1120, 3, 359, 179, 0, - 1120, 1121, 3, 341, 170, 0, 1121, 1122, 3, 329, 164, 0, 1122, 1123, 3, - 363, 181, 0, 1123, 254, 1, 0, 0, 0, 1124, 1125, 3, 359, 179, 0, 1125, 1126, - 3, 341, 170, 0, 1126, 1127, 3, 337, 168, 0, 1127, 1128, 3, 339, 169, 0, - 1128, 1129, 3, 363, 181, 0, 1129, 256, 1, 0, 0, 0, 1130, 1131, 3, 359, - 179, 0, 1131, 1132, 3, 353, 176, 0, 1132, 1133, 3, 347, 173, 0, 1133, 1134, - 3, 347, 173, 0, 1134, 1135, 3, 327, 163, 0, 1135, 1136, 3, 325, 162, 0, - 1136, 1137, 3, 329, 164, 0, 1137, 1138, 3, 345, 172, 0, 1138, 258, 1, 0, - 0, 0, 1139, 1140, 3, 359, 179, 0, 1140, 1141, 3, 353, 176, 0, 1141, 1142, - 3, 369, 184, 0, 1142, 260, 1, 0, 0, 0, 1143, 1144, 3, 361, 180, 0, 1144, - 1145, 3, 325, 162, 0, 1145, 1146, 3, 367, 183, 0, 1146, 1147, 3, 333, 166, - 0, 1147, 1148, 3, 355, 177, 0, 1148, 1149, 3, 353, 176, 0, 1149, 1150, - 3, 341, 170, 0, 1150, 1151, 3, 351, 175, 0, 1151, 1152, 3, 363, 181, 0, - 1152, 262, 1, 0, 0, 0, 1153, 1154, 3, 361, 180, 0, 1154, 1155, 3, 333, - 166, 0, 1155, 1156, 3, 347, 173, 0, 1156, 1157, 3, 333, 166, 0, 1157, 1158, - 3, 329, 164, 0, 1158, 1159, 3, 363, 181, 0, 1159, 264, 1, 0, 0, 0, 1160, - 1161, 3, 361, 180, 0, 1161, 1162, 3, 333, 166, 0, 1162, 1163, 3, 363, 181, - 0, 1163, 266, 1, 0, 0, 0, 1164, 1165, 3, 363, 181, 0, 1165, 1166, 3, 325, - 162, 0, 1166, 1167, 3, 327, 163, 0, 1167, 1168, 3, 347, 173, 0, 1168, 1169, - 3, 333, 166, 0, 1169, 268, 1, 0, 0, 0, 1170, 1171, 3, 363, 181, 0, 1171, - 1172, 3, 333, 166, 0, 1172, 1173, 3, 349, 174, 0, 1173, 1174, 3, 355, 177, - 0, 1174, 270, 1, 0, 0, 0, 1175, 1176, 3, 363, 181, 0, 1176, 1177, 3, 333, - 166, 0, 1177, 1178, 3, 349, 174, 0, 1178, 1179, 3, 355, 177, 0, 1179, 1180, - 3, 353, 176, 0, 1180, 1181, 3, 359, 179, 0, 1181, 1182, 3, 325, 162, 0, - 1182, 1183, 3, 359, 179, 0, 1183, 1184, 3, 373, 186, 0, 1184, 272, 1, 0, - 0, 0, 1185, 1186, 3, 363, 181, 0, 1186, 1187, 3, 339, 169, 0, 1187, 1188, - 3, 333, 166, 0, 1188, 1189, 3, 351, 175, 0, 1189, 274, 1, 0, 0, 0, 1190, - 1191, 3, 363, 181, 0, 1191, 1192, 3, 353, 176, 0, 1192, 276, 1, 0, 0, 0, - 1193, 1194, 3, 363, 181, 0, 1194, 1195, 3, 359, 179, 0, 1195, 1196, 3, - 325, 162, 0, 1196, 1197, 3, 351, 175, 0, 1197, 1198, 3, 361, 180, 0, 1198, - 1199, 3, 325, 162, 0, 1199, 1200, 3, 329, 164, 0, 1200, 1201, 3, 363, 181, - 0, 1201, 1202, 3, 341, 170, 0, 1202, 1203, 3, 353, 176, 0, 1203, 1204, - 3, 351, 175, 0, 1204, 278, 1, 0, 0, 0, 1205, 1206, 3, 363, 181, 0, 1206, - 1207, 3, 359, 179, 0, 1207, 1208, 3, 341, 170, 0, 1208, 1209, 3, 337, 168, - 0, 1209, 1210, 3, 337, 168, 0, 1210, 1211, 3, 333, 166, 0, 1211, 1212, - 3, 359, 179, 0, 1212, 280, 1, 0, 0, 0, 1213, 1214, 3, 365, 182, 0, 1214, - 1215, 3, 351, 175, 0, 1215, 1216, 3, 341, 170, 0, 1216, 1217, 3, 353, 176, - 0, 1217, 1218, 3, 351, 175, 0, 1218, 282, 1, 0, 0, 0, 1219, 1220, 3, 365, - 182, 0, 1220, 1221, 3, 351, 175, 0, 1221, 1222, 3, 341, 170, 0, 1222, 1223, - 3, 357, 178, 0, 1223, 1224, 3, 365, 182, 0, 1224, 1225, 3, 333, 166, 0, - 1225, 284, 1, 0, 0, 0, 1226, 1227, 3, 365, 182, 0, 1227, 1228, 3, 355, - 177, 0, 1228, 1229, 3, 331, 165, 0, 1229, 1230, 3, 325, 162, 0, 1230, 1231, - 3, 363, 181, 0, 1231, 1232, 3, 333, 166, 0, 1232, 286, 1, 0, 0, 0, 1233, - 1234, 3, 365, 182, 0, 1234, 1235, 3, 361, 180, 0, 1235, 1236, 3, 341, 170, - 0, 1236, 1237, 3, 351, 175, 0, 1237, 1238, 3, 337, 168, 0, 1238, 288, 1, - 0, 0, 0, 1239, 1240, 3, 367, 183, 0, 1240, 1241, 3, 325, 162, 0, 1241, - 1242, 3, 329, 164, 0, 1242, 1243, 3, 365, 182, 0, 1243, 1244, 3, 365, 182, - 0, 1244, 1245, 3, 349, 174, 0, 1245, 290, 1, 0, 0, 0, 1246, 1247, 3, 367, - 183, 0, 1247, 1248, 3, 325, 162, 0, 1248, 1249, 3, 347, 173, 0, 1249, 1250, - 3, 365, 182, 0, 1250, 1251, 3, 333, 166, 0, 1251, 1252, 3, 361, 180, 0, - 1252, 292, 1, 0, 0, 0, 1253, 1254, 3, 367, 183, 0, 1254, 1255, 3, 341, - 170, 0, 1255, 1256, 3, 333, 166, 0, 1256, 1257, 3, 369, 184, 0, 1257, 294, - 1, 0, 0, 0, 1258, 1259, 3, 367, 183, 0, 1259, 1260, 3, 341, 170, 0, 1260, - 1261, 3, 359, 179, 0, 1261, 1262, 3, 363, 181, 0, 1262, 1263, 3, 365, 182, - 0, 1263, 1264, 3, 325, 162, 0, 1264, 1265, 3, 347, 173, 0, 1265, 296, 1, - 0, 0, 0, 1266, 1267, 3, 369, 184, 0, 1267, 1268, 3, 339, 169, 0, 1268, - 1269, 3, 333, 166, 0, 1269, 1270, 3, 351, 175, 0, 1270, 298, 1, 0, 0, 0, - 1271, 1272, 3, 369, 184, 0, 1272, 1273, 3, 339, 169, 0, 1273, 1274, 3, - 333, 166, 0, 1274, 1275, 3, 359, 179, 0, 1275, 1276, 3, 333, 166, 0, 1276, - 300, 1, 0, 0, 0, 1277, 1278, 3, 369, 184, 0, 1278, 1279, 3, 341, 170, 0, - 1279, 1280, 3, 363, 181, 0, 1280, 1281, 3, 339, 169, 0, 1281, 302, 1, 0, - 0, 0, 1282, 1283, 3, 369, 184, 0, 1283, 1284, 3, 341, 170, 0, 1284, 1285, - 3, 363, 181, 0, 1285, 1286, 3, 339, 169, 0, 1286, 1287, 3, 353, 176, 0, - 1287, 1288, 3, 365, 182, 0, 1288, 1289, 3, 363, 181, 0, 1289, 304, 1, 0, - 0, 0, 1290, 1296, 5, 34, 0, 0, 1291, 1295, 8, 0, 0, 0, 1292, 1293, 5, 34, - 0, 0, 1293, 1295, 5, 34, 0, 0, 1294, 1291, 1, 0, 0, 0, 1294, 1292, 1, 0, - 0, 0, 1295, 1298, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1297, 1, 0, - 0, 0, 1297, 1299, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1299, 1326, 5, 34, - 0, 0, 1300, 1306, 5, 96, 0, 0, 1301, 1305, 8, 1, 0, 0, 1302, 1303, 5, 96, - 0, 0, 1303, 1305, 5, 96, 0, 0, 1304, 1301, 1, 0, 0, 0, 1304, 1302, 1, 0, - 0, 0, 1305, 1308, 1, 0, 0, 0, 1306, 1304, 1, 0, 0, 0, 1306, 1307, 1, 0, - 0, 0, 1307, 1309, 1, 0, 0, 0, 1308, 1306, 1, 0, 0, 0, 1309, 1326, 5, 96, - 0, 0, 1310, 1314, 5, 91, 0, 0, 1311, 1313, 8, 2, 0, 0, 1312, 1311, 1, 0, - 0, 0, 1313, 1316, 1, 0, 0, 0, 1314, 1312, 1, 0, 0, 0, 1314, 1315, 1, 0, - 0, 0, 1315, 1317, 1, 0, 0, 0, 1316, 1314, 1, 0, 0, 0, 1317, 1326, 5, 93, - 0, 0, 1318, 1322, 7, 3, 0, 0, 1319, 1321, 7, 4, 0, 0, 1320, 1319, 1, 0, - 0, 0, 1321, 1324, 1, 0, 0, 0, 1322, 1320, 1, 0, 0, 0, 1322, 1323, 1, 0, - 0, 0, 1323, 1326, 1, 0, 0, 0, 1324, 1322, 1, 0, 0, 0, 1325, 1290, 1, 0, - 0, 0, 1325, 1300, 1, 0, 0, 0, 1325, 1310, 1, 0, 0, 0, 1325, 1318, 1, 0, - 0, 0, 1326, 306, 1, 0, 0, 0, 1327, 1329, 3, 323, 161, 0, 1328, 1327, 1, - 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 1328, 1, 0, 0, 0, 1330, 1331, 1, - 0, 0, 0, 1331, 1339, 1, 0, 0, 0, 1332, 1336, 5, 46, 0, 0, 1333, 1335, 3, - 323, 161, 0, 1334, 1333, 1, 0, 0, 0, 1335, 1338, 1, 0, 0, 0, 1336, 1334, - 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1340, 1, 0, 0, 0, 1338, 1336, - 1, 0, 0, 0, 1339, 1332, 1, 0, 0, 0, 1339, 1340, 1, 0, 0, 0, 1340, 1350, - 1, 0, 0, 0, 1341, 1343, 3, 333, 166, 0, 1342, 1344, 7, 5, 0, 0, 1343, 1342, - 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1346, 1, 0, 0, 0, 1345, 1347, - 3, 323, 161, 0, 1346, 1345, 1, 0, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, 1346, - 1, 0, 0, 0, 1348, 1349, 1, 0, 0, 0, 1349, 1351, 1, 0, 0, 0, 1350, 1341, - 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1370, 1, 0, 0, 0, 1352, 1354, - 5, 46, 0, 0, 1353, 1355, 3, 323, 161, 0, 1354, 1353, 1, 0, 0, 0, 1355, - 1356, 1, 0, 0, 0, 1356, 1354, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, - 1367, 1, 0, 0, 0, 1358, 1360, 3, 333, 166, 0, 1359, 1361, 7, 5, 0, 0, 1360, - 1359, 1, 0, 0, 0, 1360, 1361, 1, 0, 0, 0, 1361, 1363, 1, 0, 0, 0, 1362, - 1364, 3, 323, 161, 0, 1363, 1362, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, - 1363, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1368, 1, 0, 0, 0, 1367, - 1358, 1, 0, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1370, 1, 0, 0, 0, 1369, - 1328, 1, 0, 0, 0, 1369, 1352, 1, 0, 0, 0, 1370, 308, 1, 0, 0, 0, 1371, - 1375, 5, 63, 0, 0, 1372, 1374, 3, 323, 161, 0, 1373, 1372, 1, 0, 0, 0, - 1374, 1377, 1, 0, 0, 0, 1375, 1373, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, - 1376, 1381, 1, 0, 0, 0, 1377, 1375, 1, 0, 0, 0, 1378, 1379, 7, 6, 0, 0, - 1379, 1381, 3, 305, 152, 0, 1380, 1371, 1, 0, 0, 0, 1380, 1378, 1, 0, 0, - 0, 1381, 310, 1, 0, 0, 0, 1382, 1388, 5, 39, 0, 0, 1383, 1387, 8, 7, 0, - 0, 1384, 1385, 5, 39, 0, 0, 1385, 1387, 5, 39, 0, 0, 1386, 1383, 1, 0, - 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1390, 1, 0, 0, 0, 1388, 1386, 1, 0, - 0, 0, 1388, 1389, 1, 0, 0, 0, 1389, 1391, 1, 0, 0, 0, 1390, 1388, 1, 0, - 0, 0, 1391, 1392, 5, 39, 0, 0, 1392, 312, 1, 0, 0, 0, 1393, 1394, 3, 371, - 185, 0, 1394, 1395, 3, 311, 155, 0, 1395, 314, 1, 0, 0, 0, 1396, 1397, - 5, 45, 0, 0, 1397, 1398, 5, 45, 0, 0, 1398, 1402, 1, 0, 0, 0, 1399, 1401, - 8, 8, 0, 0, 1400, 1399, 1, 0, 0, 0, 1401, 1404, 1, 0, 0, 0, 1402, 1400, - 1, 0, 0, 0, 1402, 1403, 1, 0, 0, 0, 1403, 1405, 1, 0, 0, 0, 1404, 1402, - 1, 0, 0, 0, 1405, 1406, 6, 157, 0, 0, 1406, 316, 1, 0, 0, 0, 1407, 1408, - 5, 47, 0, 0, 1408, 1409, 5, 42, 0, 0, 1409, 1413, 1, 0, 0, 0, 1410, 1412, - 9, 0, 0, 0, 1411, 1410, 1, 0, 0, 0, 1412, 1415, 1, 0, 0, 0, 1413, 1414, - 1, 0, 0, 0, 1413, 1411, 1, 0, 0, 0, 1414, 1419, 1, 0, 0, 0, 1415, 1413, - 1, 0, 0, 0, 1416, 1417, 5, 42, 0, 0, 1417, 1420, 5, 47, 0, 0, 1418, 1420, - 5, 0, 0, 1, 1419, 1416, 1, 0, 0, 0, 1419, 1418, 1, 0, 0, 0, 1420, 1421, - 1, 0, 0, 0, 1421, 1422, 6, 158, 0, 0, 1422, 318, 1, 0, 0, 0, 1423, 1424, - 7, 9, 0, 0, 1424, 1425, 1, 0, 0, 0, 1425, 1426, 6, 159, 0, 0, 1426, 320, - 1, 0, 0, 0, 1427, 1428, 9, 0, 0, 0, 1428, 322, 1, 0, 0, 0, 1429, 1430, - 7, 10, 0, 0, 1430, 324, 1, 0, 0, 0, 1431, 1432, 7, 11, 0, 0, 1432, 326, - 1, 0, 0, 0, 1433, 1434, 7, 12, 0, 0, 1434, 328, 1, 0, 0, 0, 1435, 1436, - 7, 13, 0, 0, 1436, 330, 1, 0, 0, 0, 1437, 1438, 7, 14, 0, 0, 1438, 332, - 1, 0, 0, 0, 1439, 1440, 7, 15, 0, 0, 1440, 334, 1, 0, 0, 0, 1441, 1442, - 7, 16, 0, 0, 1442, 336, 1, 0, 0, 0, 1443, 1444, 7, 17, 0, 0, 1444, 338, - 1, 0, 0, 0, 1445, 1446, 7, 18, 0, 0, 1446, 340, 1, 0, 0, 0, 1447, 1448, - 7, 19, 0, 0, 1448, 342, 1, 0, 0, 0, 1449, 1450, 7, 20, 0, 0, 1450, 344, - 1, 0, 0, 0, 1451, 1452, 7, 21, 0, 0, 1452, 346, 1, 0, 0, 0, 1453, 1454, - 7, 22, 0, 0, 1454, 348, 1, 0, 0, 0, 1455, 1456, 7, 23, 0, 0, 1456, 350, - 1, 0, 0, 0, 1457, 1458, 7, 24, 0, 0, 1458, 352, 1, 0, 0, 0, 1459, 1460, - 7, 25, 0, 0, 1460, 354, 1, 0, 0, 0, 1461, 1462, 7, 26, 0, 0, 1462, 356, - 1, 0, 0, 0, 1463, 1464, 7, 27, 0, 0, 1464, 358, 1, 0, 0, 0, 1465, 1466, - 7, 28, 0, 0, 1466, 360, 1, 0, 0, 0, 1467, 1468, 7, 29, 0, 0, 1468, 362, - 1, 0, 0, 0, 1469, 1470, 7, 30, 0, 0, 1470, 364, 1, 0, 0, 0, 1471, 1472, - 7, 31, 0, 0, 1472, 366, 1, 0, 0, 0, 1473, 1474, 7, 32, 0, 0, 1474, 368, - 1, 0, 0, 0, 1475, 1476, 7, 33, 0, 0, 1476, 370, 1, 0, 0, 0, 1477, 1478, - 7, 34, 0, 0, 1478, 372, 1, 0, 0, 0, 1479, 1480, 7, 35, 0, 0, 1480, 374, - 1, 0, 0, 0, 1481, 1482, 7, 36, 0, 0, 1482, 376, 1, 0, 0, 0, 26, 0, 1294, - 1296, 1304, 1306, 1314, 1322, 1325, 1330, 1336, 1339, 1343, 1348, 1350, - 1356, 1360, 1365, 1367, 1369, 1375, 1380, 1386, 1388, 1402, 1413, 1419, - 1, 0, 1, 0, - } - deserializer := antlr.NewATNDeserializer(nil) - staticData.atn = deserializer.Deserialize(staticData.serializedATN) - atn := staticData.atn - staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) - decisionToDFA := staticData.decisionToDFA - for index, state := range atn.DecisionToState { - decisionToDFA[index] = antlr.NewDFA(state, index) - } -} - -// SqlLexerInit initializes any static state used to implement SqlLexer. By default the -// static state used to implement the lexer is lazily initialized during the first call to -// NewSqlLexer(). You can call this function if you wish to initialize the static state ahead -// of time. -func SqlLexerInit() { - staticData := &sqllexerLexerStaticData - staticData.once.Do(sqllexerLexerInit) -} - -// NewSqlLexer produces a new lexer instance for the optional input antlr.CharStream. -func NewSqlLexer(input antlr.CharStream) *SqlLexer { - SqlLexerInit() - l := new(SqlLexer) - l.BaseLexer = antlr.NewBaseLexer(input) - staticData := &sqllexerLexerStaticData - l.Interpreter = antlr.NewLexerATNSimulator(l, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) - l.channelNames = staticData.channelNames - l.modeNames = staticData.modeNames - l.RuleNames = staticData.ruleNames - l.LiteralNames = staticData.literalNames - l.SymbolicNames = staticData.symbolicNames - l.GrammarFileName = "Sql.g4" - // TODO: l.EOF = antlr.TokenEOF - - return l -} - -// SqlLexer tokens. -const ( - SqlLexerT__0 = 1 - SqlLexerSCOL = 2 - SqlLexerDOT = 3 - SqlLexerOPEN_PAR = 4 - SqlLexerCLOSE_PAR = 5 - SqlLexerCOMMA = 6 - SqlLexerASSIGN = 7 - SqlLexerSTAR = 8 - SqlLexerPLUS = 9 - SqlLexerMINUS = 10 - SqlLexerTILDE = 11 - SqlLexerPIPE2 = 12 - SqlLexerDIV = 13 - SqlLexerMOD = 14 - SqlLexerLT2 = 15 - SqlLexerGT2 = 16 - SqlLexerAMP = 17 - SqlLexerPIPE = 18 - SqlLexerLT = 19 - SqlLexerLT_EQ = 20 - SqlLexerGT = 21 - SqlLexerGT_EQ = 22 - SqlLexerEQ = 23 - SqlLexerNOT_EQ1 = 24 - SqlLexerNOT_EQ2 = 25 - SqlLexerK_ABORT = 26 - SqlLexerK_ACTION = 27 - SqlLexerK_ADD = 28 - SqlLexerK_AFTER = 29 - SqlLexerK_ALL = 30 - SqlLexerK_ALTER = 31 - SqlLexerK_ANALYZE = 32 - SqlLexerK_AND = 33 - SqlLexerK_AS = 34 - SqlLexerK_ASC = 35 - SqlLexerK_ATTACH = 36 - SqlLexerK_AUTOINCREMENT = 37 - SqlLexerK_BEFORE = 38 - SqlLexerK_BEGIN = 39 - SqlLexerK_BETWEEN = 40 - SqlLexerK_BY = 41 - SqlLexerK_CASCADE = 42 - SqlLexerK_CASE = 43 - SqlLexerK_CAST = 44 - SqlLexerK_CHECK = 45 - SqlLexerK_COLLATE = 46 - SqlLexerK_COLUMN = 47 - SqlLexerK_COMMIT = 48 - SqlLexerK_CONFLICT = 49 - SqlLexerK_CONSTRAINT = 50 - SqlLexerK_CREATE = 51 - SqlLexerK_CROSS = 52 - SqlLexerK_CURRENT_DATE = 53 - SqlLexerK_CURRENT_TIME = 54 - SqlLexerK_CURRENT_TIMESTAMP = 55 - SqlLexerK_DATABASE = 56 - SqlLexerK_DEFAULT = 57 - SqlLexerK_DEFERRABLE = 58 - SqlLexerK_DEFERRED = 59 - SqlLexerK_DELETE = 60 - SqlLexerK_DESC = 61 - SqlLexerK_DETACH = 62 - SqlLexerK_DISTINCT = 63 - SqlLexerK_DROP = 64 - SqlLexerK_EACH = 65 - SqlLexerK_ELSE = 66 - SqlLexerK_END = 67 - SqlLexerK_ENABLE = 68 - SqlLexerK_ESCAPE = 69 - SqlLexerK_EXCEPT = 70 - SqlLexerK_EXCLUSIVE = 71 - SqlLexerK_EXISTS = 72 - SqlLexerK_EXPLAIN = 73 - SqlLexerK_FAIL = 74 - SqlLexerK_FOR = 75 - SqlLexerK_FOREIGN = 76 - SqlLexerK_FROM = 77 - SqlLexerK_FULL = 78 - SqlLexerK_GLOB = 79 - SqlLexerK_GROUP = 80 - SqlLexerK_HAVING = 81 - SqlLexerK_IF = 82 - SqlLexerK_IGNORE = 83 - SqlLexerK_IMMEDIATE = 84 - SqlLexerK_IN = 85 - SqlLexerK_INDEX = 86 - SqlLexerK_INDEXED = 87 - SqlLexerK_INITIALLY = 88 - SqlLexerK_INNER = 89 - SqlLexerK_INSERT = 90 - SqlLexerK_INSTEAD = 91 - SqlLexerK_INTERSECT = 92 - SqlLexerK_INTO = 93 - SqlLexerK_IS = 94 - SqlLexerK_ISNULL = 95 - SqlLexerK_JOIN = 96 - SqlLexerK_KEY = 97 - SqlLexerK_LEFT = 98 - SqlLexerK_LIKE = 99 - SqlLexerK_LIMIT = 100 - SqlLexerK_MATCH = 101 - SqlLexerK_NATURAL = 102 - SqlLexerK_NEXTVAL = 103 - SqlLexerK_NO = 104 - SqlLexerK_NOT = 105 - SqlLexerK_NOTNULL = 106 - SqlLexerK_NULL = 107 - SqlLexerK_OF = 108 - SqlLexerK_OFFSET = 109 - SqlLexerK_ON = 110 - SqlLexerK_ONLY = 111 - SqlLexerK_OR = 112 - SqlLexerK_ORDER = 113 - SqlLexerK_OUTER = 114 - SqlLexerK_PLAN = 115 - SqlLexerK_PRAGMA = 116 - SqlLexerK_PRIMARY = 117 - SqlLexerK_QUERY = 118 - SqlLexerK_RAISE = 119 - SqlLexerK_RECURSIVE = 120 - SqlLexerK_REFERENCES = 121 - SqlLexerK_REGEXP = 122 - SqlLexerK_REINDEX = 123 - SqlLexerK_RELEASE = 124 - SqlLexerK_RENAME = 125 - SqlLexerK_REPLACE = 126 - SqlLexerK_RESTRICT = 127 - SqlLexerK_RIGHT = 128 - SqlLexerK_ROLLBACK = 129 - SqlLexerK_ROW = 130 - SqlLexerK_SAVEPOINT = 131 - SqlLexerK_SELECT = 132 - SqlLexerK_SET = 133 - SqlLexerK_TABLE = 134 - SqlLexerK_TEMP = 135 - SqlLexerK_TEMPORARY = 136 - SqlLexerK_THEN = 137 - SqlLexerK_TO = 138 - SqlLexerK_TRANSACTION = 139 - SqlLexerK_TRIGGER = 140 - SqlLexerK_UNION = 141 - SqlLexerK_UNIQUE = 142 - SqlLexerK_UPDATE = 143 - SqlLexerK_USING = 144 - SqlLexerK_VACUUM = 145 - SqlLexerK_VALUES = 146 - SqlLexerK_VIEW = 147 - SqlLexerK_VIRTUAL = 148 - SqlLexerK_WHEN = 149 - SqlLexerK_WHERE = 150 - SqlLexerK_WITH = 151 - SqlLexerK_WITHOUT = 152 - SqlLexerIDENTIFIER = 153 - SqlLexerNUMERIC_LITERAL = 154 - SqlLexerBIND_PARAMETER = 155 - SqlLexerSTRING_LITERAL = 156 - SqlLexerBLOB_LITERAL = 157 - SqlLexerSINGLE_LINE_COMMENT = 158 - SqlLexerMULTILINE_COMMENT = 159 - SqlLexerSPACES = 160 - SqlLexerUNEXPECTED_CHAR = 161 -) diff --git a/processor/stream_processor/test/parser/sql_lexer_test.go b/processor/stream_processor/test/parser/sql_lexer_test.go deleted file mode 100644 index 4603c91a3798..000000000000 --- a/processor/stream_processor/test/parser/sql_lexer_test.go +++ /dev/null @@ -1,22 +0,0 @@ -package parser - -import ( - "fmt" - "github.com/antlr/antlr4/runtime/Go/antlr" - "testing" -) - -func TestSelectExpr(t *testing.T) { - is := antlr.NewInputStream(`SELEct field1, field2 WHERE field3 > 3 and field4 IS 'test';`) - lexer := NewSqlLexer(is) - - for { - t := lexer.NextToken() - if t.GetTokenType() == antlr.TokenEOF { - break - } - fmt.Printf("%s (%q)\n", - lexer.SymbolicNames[t.GetTokenType()], t.GetText()) - } - -} diff --git a/processor/stream_processor/test/parser/sql_listener.go b/processor/stream_processor/test/parser/sql_listener.go deleted file mode 100644 index ba0842380a66..000000000000 --- a/processor/stream_processor/test/parser/sql_listener.go +++ /dev/null @@ -1,598 +0,0 @@ -// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. - -package parser // Sql - -import "github.com/antlr/antlr4/runtime/Go/antlr" - -// SqlListener is a complete listener for a parse tree produced by SqlParser. -type SqlListener interface { - antlr.ParseTreeListener - - // EnterParse is called when entering the parse production. - EnterParse(c *ParseContext) - - // EnterError is called when entering the error production. - EnterError(c *ErrorContext) - - // EnterSql_stmt_list is called when entering the sql_stmt_list production. - EnterSql_stmt_list(c *Sql_stmt_listContext) - - // EnterSql_stmt is called when entering the sql_stmt production. - EnterSql_stmt(c *Sql_stmtContext) - - // EnterAlter_table_stmt is called when entering the alter_table_stmt production. - EnterAlter_table_stmt(c *Alter_table_stmtContext) - - // EnterAlter_table_add_constraint is called when entering the alter_table_add_constraint production. - EnterAlter_table_add_constraint(c *Alter_table_add_constraintContext) - - // EnterAlter_table_add is called when entering the alter_table_add production. - EnterAlter_table_add(c *Alter_table_addContext) - - // EnterAnalyze_stmt is called when entering the analyze_stmt production. - EnterAnalyze_stmt(c *Analyze_stmtContext) - - // EnterAttach_stmt is called when entering the attach_stmt production. - EnterAttach_stmt(c *Attach_stmtContext) - - // EnterBegin_stmt is called when entering the begin_stmt production. - EnterBegin_stmt(c *Begin_stmtContext) - - // EnterCommit_stmt is called when entering the commit_stmt production. - EnterCommit_stmt(c *Commit_stmtContext) - - // EnterCompound_select_stmt is called when entering the compound_select_stmt production. - EnterCompound_select_stmt(c *Compound_select_stmtContext) - - // EnterCreate_index_stmt is called when entering the create_index_stmt production. - EnterCreate_index_stmt(c *Create_index_stmtContext) - - // EnterCreate_table_stmt is called when entering the create_table_stmt production. - EnterCreate_table_stmt(c *Create_table_stmtContext) - - // EnterCreate_trigger_stmt is called when entering the create_trigger_stmt production. - EnterCreate_trigger_stmt(c *Create_trigger_stmtContext) - - // EnterCreate_view_stmt is called when entering the create_view_stmt production. - EnterCreate_view_stmt(c *Create_view_stmtContext) - - // EnterCreate_virtual_table_stmt is called when entering the create_virtual_table_stmt production. - EnterCreate_virtual_table_stmt(c *Create_virtual_table_stmtContext) - - // EnterDelete_stmt is called when entering the delete_stmt production. - EnterDelete_stmt(c *Delete_stmtContext) - - // EnterDelete_stmt_limited is called when entering the delete_stmt_limited production. - EnterDelete_stmt_limited(c *Delete_stmt_limitedContext) - - // EnterDetach_stmt is called when entering the detach_stmt production. - EnterDetach_stmt(c *Detach_stmtContext) - - // EnterDrop_index_stmt is called when entering the drop_index_stmt production. - EnterDrop_index_stmt(c *Drop_index_stmtContext) - - // EnterDrop_table_stmt is called when entering the drop_table_stmt production. - EnterDrop_table_stmt(c *Drop_table_stmtContext) - - // EnterDrop_trigger_stmt is called when entering the drop_trigger_stmt production. - EnterDrop_trigger_stmt(c *Drop_trigger_stmtContext) - - // EnterDrop_view_stmt is called when entering the drop_view_stmt production. - EnterDrop_view_stmt(c *Drop_view_stmtContext) - - // EnterFactored_select_stmt is called when entering the factored_select_stmt production. - EnterFactored_select_stmt(c *Factored_select_stmtContext) - - // EnterInsert_stmt is called when entering the insert_stmt production. - EnterInsert_stmt(c *Insert_stmtContext) - - // EnterPragma_stmt is called when entering the pragma_stmt production. - EnterPragma_stmt(c *Pragma_stmtContext) - - // EnterReindex_stmt is called when entering the reindex_stmt production. - EnterReindex_stmt(c *Reindex_stmtContext) - - // EnterRelease_stmt is called when entering the release_stmt production. - EnterRelease_stmt(c *Release_stmtContext) - - // EnterRollback_stmt is called when entering the rollback_stmt production. - EnterRollback_stmt(c *Rollback_stmtContext) - - // EnterSavepoint_stmt is called when entering the savepoint_stmt production. - EnterSavepoint_stmt(c *Savepoint_stmtContext) - - // EnterSimple_select_stmt is called when entering the simple_select_stmt production. - EnterSimple_select_stmt(c *Simple_select_stmtContext) - - // EnterSelect_stmt is called when entering the select_stmt production. - EnterSelect_stmt(c *Select_stmtContext) - - // EnterSelect_or_values is called when entering the select_or_values production. - EnterSelect_or_values(c *Select_or_valuesContext) - - // EnterUpdate_stmt is called when entering the update_stmt production. - EnterUpdate_stmt(c *Update_stmtContext) - - // EnterUpdate_stmt_limited is called when entering the update_stmt_limited production. - EnterUpdate_stmt_limited(c *Update_stmt_limitedContext) - - // EnterVacuum_stmt is called when entering the vacuum_stmt production. - EnterVacuum_stmt(c *Vacuum_stmtContext) - - // EnterColumn_def is called when entering the column_def production. - EnterColumn_def(c *Column_defContext) - - // EnterType_name is called when entering the type_name production. - EnterType_name(c *Type_nameContext) - - // EnterColumn_constraint is called when entering the column_constraint production. - EnterColumn_constraint(c *Column_constraintContext) - - // EnterColumn_constraint_primary_key is called when entering the column_constraint_primary_key production. - EnterColumn_constraint_primary_key(c *Column_constraint_primary_keyContext) - - // EnterColumn_constraint_foreign_key is called when entering the column_constraint_foreign_key production. - EnterColumn_constraint_foreign_key(c *Column_constraint_foreign_keyContext) - - // EnterColumn_constraint_not_null is called when entering the column_constraint_not_null production. - EnterColumn_constraint_not_null(c *Column_constraint_not_nullContext) - - // EnterColumn_constraint_null is called when entering the column_constraint_null production. - EnterColumn_constraint_null(c *Column_constraint_nullContext) - - // EnterColumn_default is called when entering the column_default production. - EnterColumn_default(c *Column_defaultContext) - - // EnterColumn_default_value is called when entering the column_default_value production. - EnterColumn_default_value(c *Column_default_valueContext) - - // EnterConflict_clause is called when entering the conflict_clause production. - EnterConflict_clause(c *Conflict_clauseContext) - - // EnterExpr is called when entering the expr production. - EnterExpr(c *ExprContext) - - // EnterForeign_key_clause is called when entering the foreign_key_clause production. - EnterForeign_key_clause(c *Foreign_key_clauseContext) - - // EnterFk_target_column_name is called when entering the fk_target_column_name production. - EnterFk_target_column_name(c *Fk_target_column_nameContext) - - // EnterRaise_function is called when entering the raise_function production. - EnterRaise_function(c *Raise_functionContext) - - // EnterIndexed_column is called when entering the indexed_column production. - EnterIndexed_column(c *Indexed_columnContext) - - // EnterTable_constraint is called when entering the table_constraint production. - EnterTable_constraint(c *Table_constraintContext) - - // EnterTable_constraint_primary_key is called when entering the table_constraint_primary_key production. - EnterTable_constraint_primary_key(c *Table_constraint_primary_keyContext) - - // EnterTable_constraint_foreign_key is called when entering the table_constraint_foreign_key production. - EnterTable_constraint_foreign_key(c *Table_constraint_foreign_keyContext) - - // EnterTable_constraint_unique is called when entering the table_constraint_unique production. - EnterTable_constraint_unique(c *Table_constraint_uniqueContext) - - // EnterTable_constraint_key is called when entering the table_constraint_key production. - EnterTable_constraint_key(c *Table_constraint_keyContext) - - // EnterFk_origin_column_name is called when entering the fk_origin_column_name production. - EnterFk_origin_column_name(c *Fk_origin_column_nameContext) - - // EnterWith_clause is called when entering the with_clause production. - EnterWith_clause(c *With_clauseContext) - - // EnterQualified_table_name is called when entering the qualified_table_name production. - EnterQualified_table_name(c *Qualified_table_nameContext) - - // EnterOrdering_term is called when entering the ordering_term production. - EnterOrdering_term(c *Ordering_termContext) - - // EnterPragma_value is called when entering the pragma_value production. - EnterPragma_value(c *Pragma_valueContext) - - // EnterCommon_table_expression is called when entering the common_table_expression production. - EnterCommon_table_expression(c *Common_table_expressionContext) - - // EnterResult_column is called when entering the result_column production. - EnterResult_column(c *Result_columnContext) - - // EnterTable_or_subquery is called when entering the table_or_subquery production. - EnterTable_or_subquery(c *Table_or_subqueryContext) - - // EnterJoin_clause is called when entering the join_clause production. - EnterJoin_clause(c *Join_clauseContext) - - // EnterJoin_operator is called when entering the join_operator production. - EnterJoin_operator(c *Join_operatorContext) - - // EnterJoin_constraint is called when entering the join_constraint production. - EnterJoin_constraint(c *Join_constraintContext) - - // EnterSelect_core is called when entering the select_core production. - EnterSelect_core(c *Select_coreContext) - - // EnterCompound_operator is called when entering the compound_operator production. - EnterCompound_operator(c *Compound_operatorContext) - - // EnterCte_table_name is called when entering the cte_table_name production. - EnterCte_table_name(c *Cte_table_nameContext) - - // EnterSigned_number is called when entering the signed_number production. - EnterSigned_number(c *Signed_numberContext) - - // EnterLiteral_value is called when entering the literal_value production. - EnterLiteral_value(c *Literal_valueContext) - - // EnterUnary_operator is called when entering the unary_operator production. - EnterUnary_operator(c *Unary_operatorContext) - - // EnterError_message is called when entering the error_message production. - EnterError_message(c *Error_messageContext) - - // EnterModule_argument is called when entering the module_argument production. - EnterModule_argument(c *Module_argumentContext) - - // EnterColumn_alias is called when entering the column_alias production. - EnterColumn_alias(c *Column_aliasContext) - - // EnterKeyword is called when entering the keyword production. - EnterKeyword(c *KeywordContext) - - // EnterUnknown is called when entering the unknown production. - EnterUnknown(c *UnknownContext) - - // EnterName is called when entering the name production. - EnterName(c *NameContext) - - // EnterFunction_name is called when entering the function_name production. - EnterFunction_name(c *Function_nameContext) - - // EnterDatabase_name is called when entering the database_name production. - EnterDatabase_name(c *Database_nameContext) - - // EnterSource_table_name is called when entering the source_table_name production. - EnterSource_table_name(c *Source_table_nameContext) - - // EnterTable_name is called when entering the table_name production. - EnterTable_name(c *Table_nameContext) - - // EnterTable_or_index_name is called when entering the table_or_index_name production. - EnterTable_or_index_name(c *Table_or_index_nameContext) - - // EnterNew_table_name is called when entering the new_table_name production. - EnterNew_table_name(c *New_table_nameContext) - - // EnterColumn_name is called when entering the column_name production. - EnterColumn_name(c *Column_nameContext) - - // EnterCollation_name is called when entering the collation_name production. - EnterCollation_name(c *Collation_nameContext) - - // EnterForeign_table is called when entering the foreign_table production. - EnterForeign_table(c *Foreign_tableContext) - - // EnterIndex_name is called when entering the index_name production. - EnterIndex_name(c *Index_nameContext) - - // EnterTrigger_name is called when entering the trigger_name production. - EnterTrigger_name(c *Trigger_nameContext) - - // EnterView_name is called when entering the view_name production. - EnterView_name(c *View_nameContext) - - // EnterModule_name is called when entering the module_name production. - EnterModule_name(c *Module_nameContext) - - // EnterPragma_name is called when entering the pragma_name production. - EnterPragma_name(c *Pragma_nameContext) - - // EnterSavepoint_name is called when entering the savepoint_name production. - EnterSavepoint_name(c *Savepoint_nameContext) - - // EnterTable_alias is called when entering the table_alias production. - EnterTable_alias(c *Table_aliasContext) - - // EnterTransaction_name is called when entering the transaction_name production. - EnterTransaction_name(c *Transaction_nameContext) - - // EnterAny_name is called when entering the any_name production. - EnterAny_name(c *Any_nameContext) - - // ExitParse is called when exiting the parse production. - ExitParse(c *ParseContext) - - // ExitError is called when exiting the error production. - ExitError(c *ErrorContext) - - // ExitSql_stmt_list is called when exiting the sql_stmt_list production. - ExitSql_stmt_list(c *Sql_stmt_listContext) - - // ExitSql_stmt is called when exiting the sql_stmt production. - ExitSql_stmt(c *Sql_stmtContext) - - // ExitAlter_table_stmt is called when exiting the alter_table_stmt production. - ExitAlter_table_stmt(c *Alter_table_stmtContext) - - // ExitAlter_table_add_constraint is called when exiting the alter_table_add_constraint production. - ExitAlter_table_add_constraint(c *Alter_table_add_constraintContext) - - // ExitAlter_table_add is called when exiting the alter_table_add production. - ExitAlter_table_add(c *Alter_table_addContext) - - // ExitAnalyze_stmt is called when exiting the analyze_stmt production. - ExitAnalyze_stmt(c *Analyze_stmtContext) - - // ExitAttach_stmt is called when exiting the attach_stmt production. - ExitAttach_stmt(c *Attach_stmtContext) - - // ExitBegin_stmt is called when exiting the begin_stmt production. - ExitBegin_stmt(c *Begin_stmtContext) - - // ExitCommit_stmt is called when exiting the commit_stmt production. - ExitCommit_stmt(c *Commit_stmtContext) - - // ExitCompound_select_stmt is called when exiting the compound_select_stmt production. - ExitCompound_select_stmt(c *Compound_select_stmtContext) - - // ExitCreate_index_stmt is called when exiting the create_index_stmt production. - ExitCreate_index_stmt(c *Create_index_stmtContext) - - // ExitCreate_table_stmt is called when exiting the create_table_stmt production. - ExitCreate_table_stmt(c *Create_table_stmtContext) - - // ExitCreate_trigger_stmt is called when exiting the create_trigger_stmt production. - ExitCreate_trigger_stmt(c *Create_trigger_stmtContext) - - // ExitCreate_view_stmt is called when exiting the create_view_stmt production. - ExitCreate_view_stmt(c *Create_view_stmtContext) - - // ExitCreate_virtual_table_stmt is called when exiting the create_virtual_table_stmt production. - ExitCreate_virtual_table_stmt(c *Create_virtual_table_stmtContext) - - // ExitDelete_stmt is called when exiting the delete_stmt production. - ExitDelete_stmt(c *Delete_stmtContext) - - // ExitDelete_stmt_limited is called when exiting the delete_stmt_limited production. - ExitDelete_stmt_limited(c *Delete_stmt_limitedContext) - - // ExitDetach_stmt is called when exiting the detach_stmt production. - ExitDetach_stmt(c *Detach_stmtContext) - - // ExitDrop_index_stmt is called when exiting the drop_index_stmt production. - ExitDrop_index_stmt(c *Drop_index_stmtContext) - - // ExitDrop_table_stmt is called when exiting the drop_table_stmt production. - ExitDrop_table_stmt(c *Drop_table_stmtContext) - - // ExitDrop_trigger_stmt is called when exiting the drop_trigger_stmt production. - ExitDrop_trigger_stmt(c *Drop_trigger_stmtContext) - - // ExitDrop_view_stmt is called when exiting the drop_view_stmt production. - ExitDrop_view_stmt(c *Drop_view_stmtContext) - - // ExitFactored_select_stmt is called when exiting the factored_select_stmt production. - ExitFactored_select_stmt(c *Factored_select_stmtContext) - - // ExitInsert_stmt is called when exiting the insert_stmt production. - ExitInsert_stmt(c *Insert_stmtContext) - - // ExitPragma_stmt is called when exiting the pragma_stmt production. - ExitPragma_stmt(c *Pragma_stmtContext) - - // ExitReindex_stmt is called when exiting the reindex_stmt production. - ExitReindex_stmt(c *Reindex_stmtContext) - - // ExitRelease_stmt is called when exiting the release_stmt production. - ExitRelease_stmt(c *Release_stmtContext) - - // ExitRollback_stmt is called when exiting the rollback_stmt production. - ExitRollback_stmt(c *Rollback_stmtContext) - - // ExitSavepoint_stmt is called when exiting the savepoint_stmt production. - ExitSavepoint_stmt(c *Savepoint_stmtContext) - - // ExitSimple_select_stmt is called when exiting the simple_select_stmt production. - ExitSimple_select_stmt(c *Simple_select_stmtContext) - - // ExitSelect_stmt is called when exiting the select_stmt production. - ExitSelect_stmt(c *Select_stmtContext) - - // ExitSelect_or_values is called when exiting the select_or_values production. - ExitSelect_or_values(c *Select_or_valuesContext) - - // ExitUpdate_stmt is called when exiting the update_stmt production. - ExitUpdate_stmt(c *Update_stmtContext) - - // ExitUpdate_stmt_limited is called when exiting the update_stmt_limited production. - ExitUpdate_stmt_limited(c *Update_stmt_limitedContext) - - // ExitVacuum_stmt is called when exiting the vacuum_stmt production. - ExitVacuum_stmt(c *Vacuum_stmtContext) - - // ExitColumn_def is called when exiting the column_def production. - ExitColumn_def(c *Column_defContext) - - // ExitType_name is called when exiting the type_name production. - ExitType_name(c *Type_nameContext) - - // ExitColumn_constraint is called when exiting the column_constraint production. - ExitColumn_constraint(c *Column_constraintContext) - - // ExitColumn_constraint_primary_key is called when exiting the column_constraint_primary_key production. - ExitColumn_constraint_primary_key(c *Column_constraint_primary_keyContext) - - // ExitColumn_constraint_foreign_key is called when exiting the column_constraint_foreign_key production. - ExitColumn_constraint_foreign_key(c *Column_constraint_foreign_keyContext) - - // ExitColumn_constraint_not_null is called when exiting the column_constraint_not_null production. - ExitColumn_constraint_not_null(c *Column_constraint_not_nullContext) - - // ExitColumn_constraint_null is called when exiting the column_constraint_null production. - ExitColumn_constraint_null(c *Column_constraint_nullContext) - - // ExitColumn_default is called when exiting the column_default production. - ExitColumn_default(c *Column_defaultContext) - - // ExitColumn_default_value is called when exiting the column_default_value production. - ExitColumn_default_value(c *Column_default_valueContext) - - // ExitConflict_clause is called when exiting the conflict_clause production. - ExitConflict_clause(c *Conflict_clauseContext) - - // ExitExpr is called when exiting the expr production. - ExitExpr(c *ExprContext) - - // ExitForeign_key_clause is called when exiting the foreign_key_clause production. - ExitForeign_key_clause(c *Foreign_key_clauseContext) - - // ExitFk_target_column_name is called when exiting the fk_target_column_name production. - ExitFk_target_column_name(c *Fk_target_column_nameContext) - - // ExitRaise_function is called when exiting the raise_function production. - ExitRaise_function(c *Raise_functionContext) - - // ExitIndexed_column is called when exiting the indexed_column production. - ExitIndexed_column(c *Indexed_columnContext) - - // ExitTable_constraint is called when exiting the table_constraint production. - ExitTable_constraint(c *Table_constraintContext) - - // ExitTable_constraint_primary_key is called when exiting the table_constraint_primary_key production. - ExitTable_constraint_primary_key(c *Table_constraint_primary_keyContext) - - // ExitTable_constraint_foreign_key is called when exiting the table_constraint_foreign_key production. - ExitTable_constraint_foreign_key(c *Table_constraint_foreign_keyContext) - - // ExitTable_constraint_unique is called when exiting the table_constraint_unique production. - ExitTable_constraint_unique(c *Table_constraint_uniqueContext) - - // ExitTable_constraint_key is called when exiting the table_constraint_key production. - ExitTable_constraint_key(c *Table_constraint_keyContext) - - // ExitFk_origin_column_name is called when exiting the fk_origin_column_name production. - ExitFk_origin_column_name(c *Fk_origin_column_nameContext) - - // ExitWith_clause is called when exiting the with_clause production. - ExitWith_clause(c *With_clauseContext) - - // ExitQualified_table_name is called when exiting the qualified_table_name production. - ExitQualified_table_name(c *Qualified_table_nameContext) - - // ExitOrdering_term is called when exiting the ordering_term production. - ExitOrdering_term(c *Ordering_termContext) - - // ExitPragma_value is called when exiting the pragma_value production. - ExitPragma_value(c *Pragma_valueContext) - - // ExitCommon_table_expression is called when exiting the common_table_expression production. - ExitCommon_table_expression(c *Common_table_expressionContext) - - // ExitResult_column is called when exiting the result_column production. - ExitResult_column(c *Result_columnContext) - - // ExitTable_or_subquery is called when exiting the table_or_subquery production. - ExitTable_or_subquery(c *Table_or_subqueryContext) - - // ExitJoin_clause is called when exiting the join_clause production. - ExitJoin_clause(c *Join_clauseContext) - - // ExitJoin_operator is called when exiting the join_operator production. - ExitJoin_operator(c *Join_operatorContext) - - // ExitJoin_constraint is called when exiting the join_constraint production. - ExitJoin_constraint(c *Join_constraintContext) - - // ExitSelect_core is called when exiting the select_core production. - ExitSelect_core(c *Select_coreContext) - - // ExitCompound_operator is called when exiting the compound_operator production. - ExitCompound_operator(c *Compound_operatorContext) - - // ExitCte_table_name is called when exiting the cte_table_name production. - ExitCte_table_name(c *Cte_table_nameContext) - - // ExitSigned_number is called when exiting the signed_number production. - ExitSigned_number(c *Signed_numberContext) - - // ExitLiteral_value is called when exiting the literal_value production. - ExitLiteral_value(c *Literal_valueContext) - - // ExitUnary_operator is called when exiting the unary_operator production. - ExitUnary_operator(c *Unary_operatorContext) - - // ExitError_message is called when exiting the error_message production. - ExitError_message(c *Error_messageContext) - - // ExitModule_argument is called when exiting the module_argument production. - ExitModule_argument(c *Module_argumentContext) - - // ExitColumn_alias is called when exiting the column_alias production. - ExitColumn_alias(c *Column_aliasContext) - - // ExitKeyword is called when exiting the keyword production. - ExitKeyword(c *KeywordContext) - - // ExitUnknown is called when exiting the unknown production. - ExitUnknown(c *UnknownContext) - - // ExitName is called when exiting the name production. - ExitName(c *NameContext) - - // ExitFunction_name is called when exiting the function_name production. - ExitFunction_name(c *Function_nameContext) - - // ExitDatabase_name is called when exiting the database_name production. - ExitDatabase_name(c *Database_nameContext) - - // ExitSource_table_name is called when exiting the source_table_name production. - ExitSource_table_name(c *Source_table_nameContext) - - // ExitTable_name is called when exiting the table_name production. - ExitTable_name(c *Table_nameContext) - - // ExitTable_or_index_name is called when exiting the table_or_index_name production. - ExitTable_or_index_name(c *Table_or_index_nameContext) - - // ExitNew_table_name is called when exiting the new_table_name production. - ExitNew_table_name(c *New_table_nameContext) - - // ExitColumn_name is called when exiting the column_name production. - ExitColumn_name(c *Column_nameContext) - - // ExitCollation_name is called when exiting the collation_name production. - ExitCollation_name(c *Collation_nameContext) - - // ExitForeign_table is called when exiting the foreign_table production. - ExitForeign_table(c *Foreign_tableContext) - - // ExitIndex_name is called when exiting the index_name production. - ExitIndex_name(c *Index_nameContext) - - // ExitTrigger_name is called when exiting the trigger_name production. - ExitTrigger_name(c *Trigger_nameContext) - - // ExitView_name is called when exiting the view_name production. - ExitView_name(c *View_nameContext) - - // ExitModule_name is called when exiting the module_name production. - ExitModule_name(c *Module_nameContext) - - // ExitPragma_name is called when exiting the pragma_name production. - ExitPragma_name(c *Pragma_nameContext) - - // ExitSavepoint_name is called when exiting the savepoint_name production. - ExitSavepoint_name(c *Savepoint_nameContext) - - // ExitTable_alias is called when exiting the table_alias production. - ExitTable_alias(c *Table_aliasContext) - - // ExitTransaction_name is called when exiting the transaction_name production. - ExitTransaction_name(c *Transaction_nameContext) - - // ExitAny_name is called when exiting the any_name production. - ExitAny_name(c *Any_nameContext) -} diff --git a/processor/stream_processor/test/parser/sql_parser.go b/processor/stream_processor/test/parser/sql_parser.go deleted file mode 100644 index 0670d6c28003..000000000000 --- a/processor/stream_processor/test/parser/sql_parser.go +++ /dev/null @@ -1,25479 +0,0 @@ -// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. - -package parser // Sql - -import ( - "fmt" - "strconv" - "sync" - - "github.com/antlr/antlr4/runtime/Go/antlr" -) - -// Suppress unused import errors -var _ = fmt.Printf -var _ = strconv.Itoa -var _ = sync.Once{} - - -type SqlParser struct { - *antlr.BaseParser -} - -var sqlParserStaticData struct { - once sync.Once - serializedATN []int32 - literalNames []string - symbolicNames []string - ruleNames []string - predictionContextCache *antlr.PredictionContextCache - atn *antlr.ATN - decisionToDFA []*antlr.DFA -} - -func sqlParserInit() { - staticData := &sqlParserStaticData - staticData.literalNames = []string{ - "", "'::'", "';'", "'.'", "'('", "')'", "','", "'='", "'*'", "'+'", - "'-'", "'~'", "'||'", "'/'", "'%'", "'<<'", "'>>'", "'&'", "'|'", "'<'", - "'<='", "'>'", "'>='", "'=='", "'!='", "'<>'", - } - staticData.symbolicNames = []string{ - "", "", "SCOL", "DOT", "OPEN_PAR", "CLOSE_PAR", "COMMA", "ASSIGN", "STAR", - "PLUS", "MINUS", "TILDE", "PIPE2", "DIV", "MOD", "LT2", "GT2", "AMP", - "PIPE", "LT", "LT_EQ", "GT", "GT_EQ", "EQ", "NOT_EQ1", "NOT_EQ2", "K_ABORT", - "K_ACTION", "K_ADD", "K_AFTER", "K_ALL", "K_ALTER", "K_ANALYZE", "K_AND", - "K_AS", "K_ASC", "K_ATTACH", "K_AUTOINCREMENT", "K_BEFORE", "K_BEGIN", - "K_BETWEEN", "K_BY", "K_CASCADE", "K_CASE", "K_CAST", "K_CHECK", "K_COLLATE", - "K_COLUMN", "K_COMMIT", "K_CONFLICT", "K_CONSTRAINT", "K_CREATE", "K_CROSS", - "K_CURRENT_DATE", "K_CURRENT_TIME", "K_CURRENT_TIMESTAMP", "K_DATABASE", - "K_DEFAULT", "K_DEFERRABLE", "K_DEFERRED", "K_DELETE", "K_DESC", "K_DETACH", - "K_DISTINCT", "K_DROP", "K_EACH", "K_ELSE", "K_END", "K_ENABLE", "K_ESCAPE", - "K_EXCEPT", "K_EXCLUSIVE", "K_EXISTS", "K_EXPLAIN", "K_FAIL", "K_FOR", - "K_FOREIGN", "K_FROM", "K_FULL", "K_GLOB", "K_GROUP", "K_HAVING", "K_IF", - "K_IGNORE", "K_IMMEDIATE", "K_IN", "K_INDEX", "K_INDEXED", "K_INITIALLY", - "K_INNER", "K_INSERT", "K_INSTEAD", "K_INTERSECT", "K_INTO", "K_IS", - "K_ISNULL", "K_JOIN", "K_KEY", "K_LEFT", "K_LIKE", "K_LIMIT", "K_MATCH", - "K_NATURAL", "K_NEXTVAL", "K_NO", "K_NOT", "K_NOTNULL", "K_NULL", "K_OF", - "K_OFFSET", "K_ON", "K_ONLY", "K_OR", "K_ORDER", "K_OUTER", "K_PLAN", - "K_PRAGMA", "K_PRIMARY", "K_QUERY", "K_RAISE", "K_RECURSIVE", "K_REFERENCES", - "K_REGEXP", "K_REINDEX", "K_RELEASE", "K_RENAME", "K_REPLACE", "K_RESTRICT", - "K_RIGHT", "K_ROLLBACK", "K_ROW", "K_SAVEPOINT", "K_SELECT", "K_SET", - "K_TABLE", "K_TEMP", "K_TEMPORARY", "K_THEN", "K_TO", "K_TRANSACTION", - "K_TRIGGER", "K_UNION", "K_UNIQUE", "K_UPDATE", "K_USING", "K_VACUUM", - "K_VALUES", "K_VIEW", "K_VIRTUAL", "K_WHEN", "K_WHERE", "K_WITH", "K_WITHOUT", - "IDENTIFIER", "NUMERIC_LITERAL", "BIND_PARAMETER", "STRING_LITERAL", - "BLOB_LITERAL", "SINGLE_LINE_COMMENT", "MULTILINE_COMMENT", "SPACES", - "UNEXPECTED_CHAR", - } - staticData.ruleNames = []string{ - "parse", "error", "sql_stmt_list", "sql_stmt", "alter_table_stmt", "alter_table_add_constraint", - "alter_table_add", "analyze_stmt", "attach_stmt", "begin_stmt", "commit_stmt", - "compound_select_stmt", "create_index_stmt", "create_table_stmt", "create_trigger_stmt", - "create_view_stmt", "create_virtual_table_stmt", "delete_stmt", "delete_stmt_limited", - "detach_stmt", "drop_index_stmt", "drop_table_stmt", "drop_trigger_stmt", - "drop_view_stmt", "factored_select_stmt", "insert_stmt", "pragma_stmt", - "reindex_stmt", "release_stmt", "rollback_stmt", "savepoint_stmt", "simple_select_stmt", - "select_stmt", "select_or_values", "update_stmt", "update_stmt_limited", - "vacuum_stmt", "column_def", "type_name", "column_constraint", "column_constraint_primary_key", - "column_constraint_foreign_key", "column_constraint_not_null", "column_constraint_null", - "column_default", "column_default_value", "conflict_clause", "expr", - "foreign_key_clause", "fk_target_column_name", "raise_function", "indexed_column", - "table_constraint", "table_constraint_primary_key", "table_constraint_foreign_key", - "table_constraint_unique", "table_constraint_key", "fk_origin_column_name", - "with_clause", "qualified_table_name", "ordering_term", "pragma_value", - "common_table_expression", "result_column", "table_or_subquery", "join_clause", - "join_operator", "join_constraint", "select_core", "compound_operator", - "cte_table_name", "signed_number", "literal_value", "unary_operator", - "error_message", "module_argument", "column_alias", "keyword", "unknown", - "name", "function_name", "database_name", "source_table_name", "table_name", - "table_or_index_name", "new_table_name", "column_name", "collation_name", - "foreign_table", "index_name", "trigger_name", "view_name", "module_name", - "pragma_name", "savepoint_name", "table_alias", "transaction_name", - "any_name", - } - staticData.predictionContextCache = antlr.NewPredictionContextCache() - staticData.serializedATN = []int32{ - 4, 1, 161, 1866, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, - 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, - 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, - 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, - 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, - 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, - 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, - 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, - 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, - 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, - 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, - 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, - 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, - 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, - 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, - 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, - 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, - 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, - 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 1, 0, 1, 0, 5, 0, 199, - 8, 0, 10, 0, 12, 0, 202, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 5, 2, - 210, 8, 2, 10, 2, 12, 2, 213, 9, 2, 1, 2, 1, 2, 4, 2, 217, 8, 2, 11, 2, - 12, 2, 218, 1, 2, 5, 2, 222, 8, 2, 10, 2, 12, 2, 225, 9, 2, 1, 2, 5, 2, - 228, 8, 2, 10, 2, 12, 2, 231, 9, 2, 1, 3, 1, 3, 1, 3, 3, 3, 236, 8, 3, - 3, 3, 238, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 270, 8, 3, - 1, 4, 1, 4, 1, 4, 3, 4, 275, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 280, 8, 4, 1, - 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 290, 8, 4, 1, 4, 3, - 4, 293, 8, 4, 1, 4, 3, 4, 296, 8, 4, 1, 4, 3, 4, 299, 8, 4, 1, 5, 1, 5, - 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, - 1, 7, 3, 7, 316, 8, 7, 1, 8, 1, 8, 3, 8, 320, 8, 8, 1, 8, 1, 8, 1, 8, 1, - 8, 1, 9, 1, 9, 3, 9, 328, 8, 9, 1, 9, 1, 9, 3, 9, 332, 8, 9, 3, 9, 334, - 8, 9, 1, 10, 1, 10, 1, 10, 3, 10, 339, 8, 10, 3, 10, 341, 8, 10, 1, 11, - 1, 11, 3, 11, 345, 8, 11, 1, 11, 1, 11, 1, 11, 5, 11, 350, 8, 11, 10, 11, - 12, 11, 353, 9, 11, 3, 11, 355, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 360, - 8, 11, 1, 11, 1, 11, 3, 11, 364, 8, 11, 1, 11, 4, 11, 367, 8, 11, 11, 11, - 12, 11, 368, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 376, 8, 11, 10, - 11, 12, 11, 379, 9, 11, 3, 11, 381, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, - 3, 11, 387, 8, 11, 3, 11, 389, 8, 11, 1, 12, 1, 12, 3, 12, 393, 8, 12, - 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 399, 8, 12, 1, 12, 1, 12, 1, 12, 3, - 12, 404, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, - 413, 8, 12, 10, 12, 12, 12, 416, 9, 12, 1, 12, 1, 12, 1, 12, 3, 12, 421, - 8, 12, 1, 13, 1, 13, 3, 13, 425, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, - 13, 431, 8, 13, 1, 13, 1, 13, 1, 13, 3, 13, 436, 8, 13, 1, 13, 1, 13, 1, - 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 445, 8, 13, 10, 13, 12, 13, 448, - 9, 13, 1, 13, 1, 13, 1, 13, 3, 13, 453, 8, 13, 1, 13, 1, 13, 3, 13, 457, - 8, 13, 1, 13, 3, 13, 460, 8, 13, 1, 14, 1, 14, 3, 14, 464, 8, 14, 1, 14, - 1, 14, 1, 14, 1, 14, 3, 14, 470, 8, 14, 1, 14, 1, 14, 1, 14, 3, 14, 475, - 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 482, 8, 14, 1, 14, 1, - 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 491, 8, 14, 10, 14, 12, 14, - 494, 9, 14, 3, 14, 496, 8, 14, 3, 14, 498, 8, 14, 1, 14, 1, 14, 1, 14, - 1, 14, 3, 14, 504, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 510, 8, 14, - 1, 14, 1, 14, 3, 14, 514, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, - 14, 521, 8, 14, 1, 14, 1, 14, 4, 14, 525, 8, 14, 11, 14, 12, 14, 526, 1, - 14, 1, 14, 1, 15, 1, 15, 3, 15, 533, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, - 3, 15, 539, 8, 15, 1, 15, 1, 15, 1, 15, 3, 15, 544, 8, 15, 1, 15, 1, 15, - 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 556, 8, - 16, 1, 16, 1, 16, 1, 16, 3, 16, 561, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, - 1, 16, 1, 16, 1, 16, 5, 16, 570, 8, 16, 10, 16, 12, 16, 573, 9, 16, 1, - 16, 1, 16, 3, 16, 577, 8, 16, 1, 17, 3, 17, 580, 8, 17, 1, 17, 1, 17, 1, - 17, 1, 17, 1, 17, 3, 17, 587, 8, 17, 1, 18, 3, 18, 590, 8, 18, 1, 18, 1, - 18, 1, 18, 1, 18, 1, 18, 3, 18, 597, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, - 1, 18, 5, 18, 604, 8, 18, 10, 18, 12, 18, 607, 9, 18, 3, 18, 609, 8, 18, - 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 615, 8, 18, 3, 18, 617, 8, 18, 1, 19, - 1, 19, 3, 19, 621, 8, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, - 20, 629, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 634, 8, 20, 1, 20, 1, 20, 1, - 21, 1, 21, 1, 21, 1, 21, 3, 21, 642, 8, 21, 1, 21, 1, 21, 1, 21, 3, 21, - 647, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 655, 8, 22, - 1, 22, 1, 22, 1, 22, 3, 22, 660, 8, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, - 23, 1, 23, 3, 23, 668, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 673, 8, 23, 1, - 23, 1, 23, 1, 24, 1, 24, 3, 24, 679, 8, 24, 1, 24, 1, 24, 1, 24, 5, 24, - 684, 8, 24, 10, 24, 12, 24, 687, 9, 24, 3, 24, 689, 8, 24, 1, 24, 1, 24, - 1, 24, 1, 24, 5, 24, 695, 8, 24, 10, 24, 12, 24, 698, 9, 24, 1, 24, 1, - 24, 1, 24, 1, 24, 1, 24, 5, 24, 705, 8, 24, 10, 24, 12, 24, 708, 9, 24, - 3, 24, 710, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 716, 8, 24, 3, 24, - 718, 8, 24, 1, 25, 3, 25, 721, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, - 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, - 25, 1, 25, 3, 25, 740, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 746, 8, - 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 753, 8, 25, 10, 25, 12, 25, - 756, 9, 25, 1, 25, 1, 25, 3, 25, 760, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, - 1, 25, 5, 25, 767, 8, 25, 10, 25, 12, 25, 770, 9, 25, 1, 25, 1, 25, 1, - 25, 1, 25, 1, 25, 1, 25, 5, 25, 778, 8, 25, 10, 25, 12, 25, 781, 9, 25, - 1, 25, 1, 25, 5, 25, 785, 8, 25, 10, 25, 12, 25, 788, 9, 25, 1, 25, 1, - 25, 1, 25, 3, 25, 793, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 799, 8, - 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 808, 8, 26, - 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 815, 8, 27, 1, 27, 1, 27, 3, - 27, 819, 8, 27, 3, 27, 821, 8, 27, 1, 28, 1, 28, 3, 28, 825, 8, 28, 1, - 28, 1, 28, 1, 29, 1, 29, 1, 29, 3, 29, 832, 8, 29, 3, 29, 834, 8, 29, 1, - 29, 1, 29, 3, 29, 838, 8, 29, 1, 29, 3, 29, 841, 8, 29, 1, 30, 1, 30, 1, - 30, 1, 31, 1, 31, 3, 31, 848, 8, 31, 1, 31, 1, 31, 1, 31, 5, 31, 853, 8, - 31, 10, 31, 12, 31, 856, 9, 31, 3, 31, 858, 8, 31, 1, 31, 1, 31, 1, 31, - 1, 31, 1, 31, 1, 31, 5, 31, 866, 8, 31, 10, 31, 12, 31, 869, 9, 31, 3, - 31, 871, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 877, 8, 31, 3, 31, 879, - 8, 31, 1, 32, 1, 32, 3, 32, 883, 8, 32, 1, 32, 1, 32, 1, 32, 5, 32, 888, - 8, 32, 10, 32, 12, 32, 891, 9, 32, 3, 32, 893, 8, 32, 1, 32, 1, 32, 1, - 32, 1, 32, 5, 32, 899, 8, 32, 10, 32, 12, 32, 902, 9, 32, 1, 32, 1, 32, - 1, 32, 1, 32, 1, 32, 5, 32, 909, 8, 32, 10, 32, 12, 32, 912, 9, 32, 3, - 32, 914, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 920, 8, 32, 3, 32, 922, - 8, 32, 1, 33, 1, 33, 3, 33, 926, 8, 33, 1, 33, 1, 33, 1, 33, 5, 33, 931, - 8, 33, 10, 33, 12, 33, 934, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 940, - 8, 33, 10, 33, 12, 33, 943, 9, 33, 1, 33, 3, 33, 946, 8, 33, 3, 33, 948, - 8, 33, 1, 33, 1, 33, 3, 33, 952, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, - 33, 5, 33, 959, 8, 33, 10, 33, 12, 33, 962, 9, 33, 1, 33, 1, 33, 3, 33, - 966, 8, 33, 3, 33, 968, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, - 975, 8, 33, 10, 33, 12, 33, 978, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, - 33, 1, 33, 5, 33, 986, 8, 33, 10, 33, 12, 33, 989, 9, 33, 1, 33, 1, 33, - 5, 33, 993, 8, 33, 10, 33, 12, 33, 996, 9, 33, 3, 33, 998, 8, 33, 1, 34, - 3, 34, 1001, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, - 34, 1, 34, 1, 34, 1, 34, 3, 34, 1014, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, - 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 1026, 8, 34, 10, 34, 12, - 34, 1029, 9, 34, 1, 34, 1, 34, 3, 34, 1033, 8, 34, 1, 35, 3, 35, 1036, - 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, - 35, 1, 35, 3, 35, 1049, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, - 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 1061, 8, 35, 10, 35, 12, 35, 1064, 9, - 35, 1, 35, 1, 35, 3, 35, 1068, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, - 5, 35, 1075, 8, 35, 10, 35, 12, 35, 1078, 9, 35, 3, 35, 1080, 8, 35, 1, - 35, 1, 35, 1, 35, 1, 35, 3, 35, 1086, 8, 35, 3, 35, 1088, 8, 35, 1, 36, - 1, 36, 1, 37, 1, 37, 1, 37, 5, 37, 1095, 8, 37, 10, 37, 12, 37, 1098, 9, - 37, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1104, 8, 38, 1, 38, 1, 38, 1, 38, - 1, 38, 1, 38, 3, 38, 1111, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1116, 8, - 38, 1, 38, 1, 38, 3, 38, 1120, 8, 38, 1, 39, 1, 39, 3, 39, 1124, 8, 39, - 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, - 39, 1, 39, 1, 39, 1, 39, 3, 39, 1140, 8, 39, 1, 40, 1, 40, 1, 40, 3, 40, - 1145, 8, 40, 1, 40, 1, 40, 3, 40, 1149, 8, 40, 1, 41, 1, 41, 1, 42, 1, - 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, - 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1172, 8, 44, 1, - 44, 1, 44, 4, 44, 1176, 8, 44, 11, 44, 12, 44, 1177, 3, 44, 1180, 8, 44, - 1, 45, 1, 45, 3, 45, 1184, 8, 45, 1, 46, 1, 46, 1, 46, 3, 46, 1189, 8, - 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1197, 8, 47, 1, 47, - 1, 47, 1, 47, 3, 47, 1202, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, - 47, 1, 47, 3, 47, 1211, 8, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1216, 8, 47, - 10, 47, 12, 47, 1219, 9, 47, 1, 47, 3, 47, 1222, 8, 47, 1, 47, 1, 47, 1, - 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, - 1, 47, 3, 47, 1238, 8, 47, 1, 47, 3, 47, 1241, 8, 47, 1, 47, 1, 47, 1, - 47, 1, 47, 1, 47, 1, 47, 3, 47, 1249, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, - 1, 47, 4, 47, 1256, 8, 47, 11, 47, 12, 47, 1257, 1, 47, 1, 47, 3, 47, 1262, - 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1267, 8, 47, 1, 47, 1, 47, 1, 47, 1, - 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, - 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, - 47, 1, 47, 1, 47, 1, 47, 3, 47, 1297, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, - 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1309, 8, 47, 1, 47, 1, - 47, 1, 47, 3, 47, 1314, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, - 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1326, 8, 47, 1, 47, 1, 47, 1, 47, 1, - 47, 3, 47, 1332, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1339, - 8, 47, 1, 47, 1, 47, 3, 47, 1343, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, - 47, 1, 47, 5, 47, 1351, 8, 47, 10, 47, 12, 47, 1354, 9, 47, 3, 47, 1356, - 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1362, 8, 47, 1, 47, 3, 47, 1365, - 8, 47, 5, 47, 1367, 8, 47, 10, 47, 12, 47, 1370, 9, 47, 1, 48, 1, 48, 1, - 48, 1, 48, 3, 48, 1376, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 5, 48, - 1383, 8, 48, 10, 48, 12, 48, 1386, 9, 48, 1, 48, 1, 48, 3, 48, 1390, 8, - 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, - 3, 48, 1402, 8, 48, 1, 48, 1, 48, 3, 48, 1406, 8, 48, 5, 48, 1408, 8, 48, - 10, 48, 12, 48, 1411, 9, 48, 1, 48, 3, 48, 1414, 8, 48, 1, 48, 1, 48, 1, - 48, 1, 48, 1, 48, 3, 48, 1421, 8, 48, 1, 48, 3, 48, 1424, 8, 48, 3, 48, - 1426, 8, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, - 50, 1436, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 3, 51, 1443, 8, 51, - 1, 51, 3, 51, 1446, 8, 51, 1, 52, 1, 52, 3, 52, 1450, 8, 52, 1, 52, 1, - 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1461, 8, 52, - 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1469, 8, 53, 10, 53, 12, - 53, 1472, 9, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, - 1, 54, 5, 54, 1483, 8, 54, 10, 54, 12, 54, 1486, 9, 54, 1, 54, 1, 54, 1, - 54, 1, 55, 1, 55, 3, 55, 1493, 8, 55, 1, 55, 3, 55, 1496, 8, 55, 1, 55, - 1, 55, 1, 55, 1, 55, 5, 55, 1502, 8, 55, 10, 55, 12, 55, 1505, 9, 55, 1, - 55, 1, 55, 1, 55, 1, 56, 1, 56, 3, 56, 1512, 8, 56, 1, 56, 1, 56, 1, 56, - 1, 56, 5, 56, 1518, 8, 56, 10, 56, 12, 56, 1521, 9, 56, 1, 56, 1, 56, 1, - 56, 1, 57, 1, 57, 1, 58, 1, 58, 3, 58, 1530, 8, 58, 1, 58, 1, 58, 1, 58, - 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 1544, - 8, 58, 10, 58, 12, 58, 1547, 9, 58, 1, 59, 1, 59, 1, 59, 3, 59, 1552, 8, - 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1560, 8, 59, 1, 60, - 1, 60, 1, 60, 3, 60, 1565, 8, 60, 1, 60, 3, 60, 1568, 8, 60, 1, 61, 1, - 61, 1, 61, 3, 61, 1573, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, - 1580, 8, 62, 10, 62, 12, 62, 1583, 9, 62, 1, 62, 1, 62, 3, 62, 1587, 8, - 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, - 1, 63, 1, 63, 3, 63, 1601, 8, 63, 1, 63, 3, 63, 1604, 8, 63, 3, 63, 1606, - 8, 63, 1, 64, 1, 64, 1, 64, 3, 64, 1611, 8, 64, 1, 64, 1, 64, 3, 64, 1615, - 8, 64, 1, 64, 3, 64, 1618, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, - 64, 1625, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 1631, 8, 64, 10, 64, - 12, 64, 1634, 9, 64, 1, 64, 3, 64, 1637, 8, 64, 1, 64, 1, 64, 3, 64, 1641, - 8, 64, 1, 64, 3, 64, 1644, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1650, - 8, 64, 1, 64, 3, 64, 1653, 8, 64, 3, 64, 1655, 8, 64, 1, 65, 1, 65, 1, - 65, 1, 65, 1, 65, 5, 65, 1662, 8, 65, 10, 65, 12, 65, 1665, 9, 65, 1, 66, - 1, 66, 3, 66, 1669, 8, 66, 1, 66, 1, 66, 3, 66, 1673, 8, 66, 1, 66, 1, - 66, 3, 66, 1677, 8, 66, 1, 66, 3, 66, 1680, 8, 66, 1, 67, 1, 67, 1, 67, - 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 1689, 8, 67, 10, 67, 12, 67, 1692, 9, - 67, 1, 67, 1, 67, 3, 67, 1696, 8, 67, 1, 68, 1, 68, 3, 68, 1700, 8, 68, - 1, 68, 1, 68, 1, 68, 5, 68, 1705, 8, 68, 10, 68, 12, 68, 1708, 9, 68, 1, - 68, 1, 68, 1, 68, 1, 68, 5, 68, 1714, 8, 68, 10, 68, 12, 68, 1717, 9, 68, - 1, 68, 3, 68, 1720, 8, 68, 3, 68, 1722, 8, 68, 1, 68, 1, 68, 3, 68, 1726, - 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1733, 8, 68, 10, 68, 12, - 68, 1736, 9, 68, 1, 68, 1, 68, 3, 68, 1740, 8, 68, 3, 68, 1742, 8, 68, - 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1749, 8, 68, 10, 68, 12, 68, - 1752, 9, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1760, 8, - 68, 10, 68, 12, 68, 1763, 9, 68, 1, 68, 1, 68, 5, 68, 1767, 8, 68, 10, - 68, 12, 68, 1770, 9, 68, 3, 68, 1772, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, - 1, 69, 3, 69, 1779, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 1786, - 8, 70, 10, 70, 12, 70, 1789, 9, 70, 1, 70, 1, 70, 3, 70, 1793, 8, 70, 1, - 71, 3, 71, 1796, 8, 71, 1, 71, 1, 71, 3, 71, 1800, 8, 71, 1, 72, 1, 72, - 1, 73, 1, 73, 1, 74, 1, 74, 1, 75, 1, 75, 3, 75, 1810, 8, 75, 1, 76, 1, - 76, 1, 77, 1, 77, 1, 78, 4, 78, 1817, 8, 78, 11, 78, 12, 78, 1818, 1, 79, - 1, 79, 1, 80, 1, 80, 1, 81, 1, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, - 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, - 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, - 95, 1, 95, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, - 3, 97, 1864, 8, 97, 1, 97, 0, 1, 94, 98, 0, 2, 4, 6, 8, 10, 12, 14, 16, - 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, - 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, - 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, - 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, - 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, - 182, 184, 186, 188, 190, 192, 194, 0, 18, 3, 0, 59, 59, 71, 71, 84, 84, - 2, 0, 48, 48, 67, 67, 2, 0, 6, 6, 109, 109, 1, 0, 135, 136, 2, 0, 30, 30, - 63, 63, 2, 0, 35, 35, 61, 61, 5, 0, 26, 26, 74, 74, 83, 83, 126, 126, 129, - 129, 2, 0, 8, 8, 13, 14, 1, 0, 9, 10, 1, 0, 15, 18, 1, 0, 19, 22, 4, 0, - 79, 79, 99, 99, 101, 101, 122, 122, 2, 0, 60, 60, 143, 143, 3, 0, 26, 26, - 74, 74, 129, 129, 4, 0, 53, 55, 107, 107, 154, 154, 156, 157, 2, 0, 9, - 11, 105, 105, 2, 0, 153, 153, 156, 156, 2, 0, 26, 110, 112, 152, 2141, - 0, 200, 1, 0, 0, 0, 2, 205, 1, 0, 0, 0, 4, 211, 1, 0, 0, 0, 6, 237, 1, - 0, 0, 0, 8, 271, 1, 0, 0, 0, 10, 300, 1, 0, 0, 0, 12, 305, 1, 0, 0, 0, - 14, 308, 1, 0, 0, 0, 16, 317, 1, 0, 0, 0, 18, 325, 1, 0, 0, 0, 20, 335, - 1, 0, 0, 0, 22, 354, 1, 0, 0, 0, 24, 390, 1, 0, 0, 0, 26, 422, 1, 0, 0, - 0, 28, 461, 1, 0, 0, 0, 30, 530, 1, 0, 0, 0, 32, 549, 1, 0, 0, 0, 34, 579, - 1, 0, 0, 0, 36, 589, 1, 0, 0, 0, 38, 618, 1, 0, 0, 0, 40, 624, 1, 0, 0, - 0, 42, 637, 1, 0, 0, 0, 44, 650, 1, 0, 0, 0, 46, 663, 1, 0, 0, 0, 48, 688, - 1, 0, 0, 0, 50, 720, 1, 0, 0, 0, 52, 794, 1, 0, 0, 0, 54, 809, 1, 0, 0, - 0, 56, 822, 1, 0, 0, 0, 58, 828, 1, 0, 0, 0, 60, 842, 1, 0, 0, 0, 62, 857, - 1, 0, 0, 0, 64, 892, 1, 0, 0, 0, 66, 997, 1, 0, 0, 0, 68, 1000, 1, 0, 0, - 0, 70, 1035, 1, 0, 0, 0, 72, 1089, 1, 0, 0, 0, 74, 1091, 1, 0, 0, 0, 76, - 1099, 1, 0, 0, 0, 78, 1123, 1, 0, 0, 0, 80, 1141, 1, 0, 0, 0, 82, 1150, - 1, 0, 0, 0, 84, 1152, 1, 0, 0, 0, 86, 1156, 1, 0, 0, 0, 88, 1159, 1, 0, - 0, 0, 90, 1183, 1, 0, 0, 0, 92, 1188, 1, 0, 0, 0, 94, 1266, 1, 0, 0, 0, - 96, 1371, 1, 0, 0, 0, 98, 1427, 1, 0, 0, 0, 100, 1429, 1, 0, 0, 0, 102, - 1439, 1, 0, 0, 0, 104, 1449, 1, 0, 0, 0, 106, 1462, 1, 0, 0, 0, 108, 1476, - 1, 0, 0, 0, 110, 1490, 1, 0, 0, 0, 112, 1509, 1, 0, 0, 0, 114, 1525, 1, - 0, 0, 0, 116, 1527, 1, 0, 0, 0, 118, 1551, 1, 0, 0, 0, 120, 1561, 1, 0, - 0, 0, 122, 1572, 1, 0, 0, 0, 124, 1574, 1, 0, 0, 0, 126, 1605, 1, 0, 0, - 0, 128, 1654, 1, 0, 0, 0, 130, 1656, 1, 0, 0, 0, 132, 1679, 1, 0, 0, 0, - 134, 1695, 1, 0, 0, 0, 136, 1771, 1, 0, 0, 0, 138, 1778, 1, 0, 0, 0, 140, - 1780, 1, 0, 0, 0, 142, 1799, 1, 0, 0, 0, 144, 1801, 1, 0, 0, 0, 146, 1803, - 1, 0, 0, 0, 148, 1805, 1, 0, 0, 0, 150, 1809, 1, 0, 0, 0, 152, 1811, 1, - 0, 0, 0, 154, 1813, 1, 0, 0, 0, 156, 1816, 1, 0, 0, 0, 158, 1820, 1, 0, - 0, 0, 160, 1822, 1, 0, 0, 0, 162, 1824, 1, 0, 0, 0, 164, 1826, 1, 0, 0, - 0, 166, 1828, 1, 0, 0, 0, 168, 1830, 1, 0, 0, 0, 170, 1832, 1, 0, 0, 0, - 172, 1834, 1, 0, 0, 0, 174, 1836, 1, 0, 0, 0, 176, 1838, 1, 0, 0, 0, 178, - 1840, 1, 0, 0, 0, 180, 1842, 1, 0, 0, 0, 182, 1844, 1, 0, 0, 0, 184, 1846, - 1, 0, 0, 0, 186, 1848, 1, 0, 0, 0, 188, 1850, 1, 0, 0, 0, 190, 1852, 1, - 0, 0, 0, 192, 1854, 1, 0, 0, 0, 194, 1863, 1, 0, 0, 0, 196, 199, 3, 4, - 2, 0, 197, 199, 3, 2, 1, 0, 198, 196, 1, 0, 0, 0, 198, 197, 1, 0, 0, 0, - 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, - 203, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 204, 5, 0, 0, 1, 204, 1, 1, - 0, 0, 0, 205, 206, 5, 161, 0, 0, 206, 207, 6, 1, -1, 0, 207, 3, 1, 0, 0, - 0, 208, 210, 5, 2, 0, 0, 209, 208, 1, 0, 0, 0, 210, 213, 1, 0, 0, 0, 211, - 209, 1, 0, 0, 0, 211, 212, 1, 0, 0, 0, 212, 214, 1, 0, 0, 0, 213, 211, - 1, 0, 0, 0, 214, 223, 3, 6, 3, 0, 215, 217, 5, 2, 0, 0, 216, 215, 1, 0, - 0, 0, 217, 218, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, - 219, 220, 1, 0, 0, 0, 220, 222, 3, 6, 3, 0, 221, 216, 1, 0, 0, 0, 222, - 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 229, - 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 228, 5, 2, 0, 0, 227, 226, 1, 0, - 0, 0, 228, 231, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, - 230, 5, 1, 0, 0, 0, 231, 229, 1, 0, 0, 0, 232, 235, 5, 73, 0, 0, 233, 234, - 5, 118, 0, 0, 234, 236, 5, 115, 0, 0, 235, 233, 1, 0, 0, 0, 235, 236, 1, - 0, 0, 0, 236, 238, 1, 0, 0, 0, 237, 232, 1, 0, 0, 0, 237, 238, 1, 0, 0, - 0, 238, 269, 1, 0, 0, 0, 239, 270, 3, 8, 4, 0, 240, 270, 3, 14, 7, 0, 241, - 270, 3, 16, 8, 0, 242, 270, 3, 18, 9, 0, 243, 270, 3, 20, 10, 0, 244, 270, - 3, 22, 11, 0, 245, 270, 3, 24, 12, 0, 246, 270, 3, 26, 13, 0, 247, 270, - 3, 28, 14, 0, 248, 270, 3, 30, 15, 0, 249, 270, 3, 32, 16, 0, 250, 270, - 3, 34, 17, 0, 251, 270, 3, 36, 18, 0, 252, 270, 3, 38, 19, 0, 253, 270, - 3, 40, 20, 0, 254, 270, 3, 42, 21, 0, 255, 270, 3, 44, 22, 0, 256, 270, - 3, 46, 23, 0, 257, 270, 3, 48, 24, 0, 258, 270, 3, 50, 25, 0, 259, 270, - 3, 52, 26, 0, 260, 270, 3, 54, 27, 0, 261, 270, 3, 56, 28, 0, 262, 270, - 3, 58, 29, 0, 263, 270, 3, 60, 30, 0, 264, 270, 3, 62, 31, 0, 265, 270, - 3, 64, 32, 0, 266, 270, 3, 68, 34, 0, 267, 270, 3, 70, 35, 0, 268, 270, - 3, 72, 36, 0, 269, 239, 1, 0, 0, 0, 269, 240, 1, 0, 0, 0, 269, 241, 1, - 0, 0, 0, 269, 242, 1, 0, 0, 0, 269, 243, 1, 0, 0, 0, 269, 244, 1, 0, 0, - 0, 269, 245, 1, 0, 0, 0, 269, 246, 1, 0, 0, 0, 269, 247, 1, 0, 0, 0, 269, - 248, 1, 0, 0, 0, 269, 249, 1, 0, 0, 0, 269, 250, 1, 0, 0, 0, 269, 251, - 1, 0, 0, 0, 269, 252, 1, 0, 0, 0, 269, 253, 1, 0, 0, 0, 269, 254, 1, 0, - 0, 0, 269, 255, 1, 0, 0, 0, 269, 256, 1, 0, 0, 0, 269, 257, 1, 0, 0, 0, - 269, 258, 1, 0, 0, 0, 269, 259, 1, 0, 0, 0, 269, 260, 1, 0, 0, 0, 269, - 261, 1, 0, 0, 0, 269, 262, 1, 0, 0, 0, 269, 263, 1, 0, 0, 0, 269, 264, - 1, 0, 0, 0, 269, 265, 1, 0, 0, 0, 269, 266, 1, 0, 0, 0, 269, 267, 1, 0, - 0, 0, 269, 268, 1, 0, 0, 0, 270, 7, 1, 0, 0, 0, 271, 272, 5, 31, 0, 0, - 272, 274, 5, 134, 0, 0, 273, 275, 5, 111, 0, 0, 274, 273, 1, 0, 0, 0, 274, - 275, 1, 0, 0, 0, 275, 279, 1, 0, 0, 0, 276, 277, 3, 162, 81, 0, 277, 278, - 5, 3, 0, 0, 278, 280, 1, 0, 0, 0, 279, 276, 1, 0, 0, 0, 279, 280, 1, 0, - 0, 0, 280, 281, 1, 0, 0, 0, 281, 292, 3, 164, 82, 0, 282, 283, 5, 125, - 0, 0, 283, 284, 5, 138, 0, 0, 284, 293, 3, 170, 85, 0, 285, 293, 3, 12, - 6, 0, 286, 293, 3, 10, 5, 0, 287, 289, 5, 28, 0, 0, 288, 290, 5, 47, 0, - 0, 289, 288, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 291, 1, 0, 0, 0, 291, - 293, 3, 74, 37, 0, 292, 282, 1, 0, 0, 0, 292, 285, 1, 0, 0, 0, 292, 286, - 1, 0, 0, 0, 292, 287, 1, 0, 0, 0, 293, 295, 1, 0, 0, 0, 294, 296, 5, 68, - 0, 0, 295, 294, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 298, 1, 0, 0, 0, - 297, 299, 3, 156, 78, 0, 298, 297, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, 299, - 9, 1, 0, 0, 0, 300, 301, 5, 28, 0, 0, 301, 302, 5, 50, 0, 0, 302, 303, - 3, 194, 97, 0, 303, 304, 3, 104, 52, 0, 304, 11, 1, 0, 0, 0, 305, 306, - 5, 28, 0, 0, 306, 307, 3, 104, 52, 0, 307, 13, 1, 0, 0, 0, 308, 315, 5, - 32, 0, 0, 309, 316, 3, 162, 81, 0, 310, 316, 3, 168, 84, 0, 311, 312, 3, - 162, 81, 0, 312, 313, 5, 3, 0, 0, 313, 314, 3, 168, 84, 0, 314, 316, 1, - 0, 0, 0, 315, 309, 1, 0, 0, 0, 315, 310, 1, 0, 0, 0, 315, 311, 1, 0, 0, - 0, 315, 316, 1, 0, 0, 0, 316, 15, 1, 0, 0, 0, 317, 319, 5, 36, 0, 0, 318, - 320, 5, 56, 0, 0, 319, 318, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 321, - 1, 0, 0, 0, 321, 322, 3, 94, 47, 0, 322, 323, 5, 34, 0, 0, 323, 324, 3, - 162, 81, 0, 324, 17, 1, 0, 0, 0, 325, 327, 5, 39, 0, 0, 326, 328, 7, 0, - 0, 0, 327, 326, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 333, 1, 0, 0, 0, - 329, 331, 5, 139, 0, 0, 330, 332, 3, 192, 96, 0, 331, 330, 1, 0, 0, 0, - 331, 332, 1, 0, 0, 0, 332, 334, 1, 0, 0, 0, 333, 329, 1, 0, 0, 0, 333, - 334, 1, 0, 0, 0, 334, 19, 1, 0, 0, 0, 335, 340, 7, 1, 0, 0, 336, 338, 5, - 139, 0, 0, 337, 339, 3, 192, 96, 0, 338, 337, 1, 0, 0, 0, 338, 339, 1, - 0, 0, 0, 339, 341, 1, 0, 0, 0, 340, 336, 1, 0, 0, 0, 340, 341, 1, 0, 0, - 0, 341, 21, 1, 0, 0, 0, 342, 344, 5, 151, 0, 0, 343, 345, 5, 120, 0, 0, - 344, 343, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, - 351, 3, 124, 62, 0, 347, 348, 5, 6, 0, 0, 348, 350, 3, 124, 62, 0, 349, - 347, 1, 0, 0, 0, 350, 353, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 352, - 1, 0, 0, 0, 352, 355, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 354, 342, 1, 0, - 0, 0, 354, 355, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 366, 3, 136, 68, - 0, 357, 359, 5, 141, 0, 0, 358, 360, 5, 30, 0, 0, 359, 358, 1, 0, 0, 0, - 359, 360, 1, 0, 0, 0, 360, 364, 1, 0, 0, 0, 361, 364, 5, 92, 0, 0, 362, - 364, 5, 70, 0, 0, 363, 357, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 363, 362, - 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 367, 3, 136, 68, 0, 366, 363, 1, - 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, - 0, 369, 380, 1, 0, 0, 0, 370, 371, 5, 113, 0, 0, 371, 372, 5, 41, 0, 0, - 372, 377, 3, 120, 60, 0, 373, 374, 5, 6, 0, 0, 374, 376, 3, 120, 60, 0, - 375, 373, 1, 0, 0, 0, 376, 379, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, - 378, 1, 0, 0, 0, 378, 381, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 380, 370, - 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 388, 1, 0, 0, 0, 382, 383, 5, 100, - 0, 0, 383, 386, 3, 94, 47, 0, 384, 385, 7, 2, 0, 0, 385, 387, 3, 94, 47, - 0, 386, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 389, 1, 0, 0, 0, 388, - 382, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 23, 1, 0, 0, 0, 390, 392, 5, - 51, 0, 0, 391, 393, 5, 142, 0, 0, 392, 391, 1, 0, 0, 0, 392, 393, 1, 0, - 0, 0, 393, 394, 1, 0, 0, 0, 394, 398, 5, 86, 0, 0, 395, 396, 5, 82, 0, - 0, 396, 397, 5, 105, 0, 0, 397, 399, 5, 72, 0, 0, 398, 395, 1, 0, 0, 0, - 398, 399, 1, 0, 0, 0, 399, 403, 1, 0, 0, 0, 400, 401, 3, 162, 81, 0, 401, - 402, 5, 3, 0, 0, 402, 404, 1, 0, 0, 0, 403, 400, 1, 0, 0, 0, 403, 404, - 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, 406, 3, 178, 89, 0, 406, 407, 5, - 110, 0, 0, 407, 408, 3, 166, 83, 0, 408, 409, 5, 4, 0, 0, 409, 414, 3, - 102, 51, 0, 410, 411, 5, 6, 0, 0, 411, 413, 3, 102, 51, 0, 412, 410, 1, - 0, 0, 0, 413, 416, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 414, 415, 1, 0, 0, - 0, 415, 417, 1, 0, 0, 0, 416, 414, 1, 0, 0, 0, 417, 420, 5, 5, 0, 0, 418, - 419, 5, 150, 0, 0, 419, 421, 3, 94, 47, 0, 420, 418, 1, 0, 0, 0, 420, 421, - 1, 0, 0, 0, 421, 25, 1, 0, 0, 0, 422, 424, 5, 51, 0, 0, 423, 425, 7, 3, - 0, 0, 424, 423, 1, 0, 0, 0, 424, 425, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, - 426, 430, 5, 134, 0, 0, 427, 428, 5, 82, 0, 0, 428, 429, 5, 105, 0, 0, - 429, 431, 5, 72, 0, 0, 430, 427, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, - 435, 1, 0, 0, 0, 432, 433, 3, 162, 81, 0, 433, 434, 5, 3, 0, 0, 434, 436, - 1, 0, 0, 0, 435, 432, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 437, 1, 0, - 0, 0, 437, 456, 3, 166, 83, 0, 438, 439, 5, 4, 0, 0, 439, 446, 3, 74, 37, - 0, 440, 441, 5, 6, 0, 0, 441, 445, 3, 104, 52, 0, 442, 443, 5, 6, 0, 0, - 443, 445, 3, 74, 37, 0, 444, 440, 1, 0, 0, 0, 444, 442, 1, 0, 0, 0, 445, - 448, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 449, - 1, 0, 0, 0, 448, 446, 1, 0, 0, 0, 449, 452, 5, 5, 0, 0, 450, 451, 5, 152, - 0, 0, 451, 453, 5, 153, 0, 0, 452, 450, 1, 0, 0, 0, 452, 453, 1, 0, 0, - 0, 453, 457, 1, 0, 0, 0, 454, 455, 5, 34, 0, 0, 455, 457, 3, 64, 32, 0, - 456, 438, 1, 0, 0, 0, 456, 454, 1, 0, 0, 0, 457, 459, 1, 0, 0, 0, 458, - 460, 3, 156, 78, 0, 459, 458, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 27, - 1, 0, 0, 0, 461, 463, 5, 51, 0, 0, 462, 464, 7, 3, 0, 0, 463, 462, 1, 0, - 0, 0, 463, 464, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 469, 5, 140, 0, - 0, 466, 467, 5, 82, 0, 0, 467, 468, 5, 105, 0, 0, 468, 470, 5, 72, 0, 0, - 469, 466, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 474, 1, 0, 0, 0, 471, - 472, 3, 162, 81, 0, 472, 473, 5, 3, 0, 0, 473, 475, 1, 0, 0, 0, 474, 471, - 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 481, 3, 180, - 90, 0, 477, 482, 5, 38, 0, 0, 478, 482, 5, 29, 0, 0, 479, 480, 5, 91, 0, - 0, 480, 482, 5, 108, 0, 0, 481, 477, 1, 0, 0, 0, 481, 478, 1, 0, 0, 0, - 481, 479, 1, 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 497, 1, 0, 0, 0, 483, - 498, 5, 60, 0, 0, 484, 498, 5, 90, 0, 0, 485, 495, 5, 143, 0, 0, 486, 487, - 5, 108, 0, 0, 487, 492, 3, 172, 86, 0, 488, 489, 5, 6, 0, 0, 489, 491, - 3, 172, 86, 0, 490, 488, 1, 0, 0, 0, 491, 494, 1, 0, 0, 0, 492, 490, 1, - 0, 0, 0, 492, 493, 1, 0, 0, 0, 493, 496, 1, 0, 0, 0, 494, 492, 1, 0, 0, - 0, 495, 486, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 498, 1, 0, 0, 0, 497, - 483, 1, 0, 0, 0, 497, 484, 1, 0, 0, 0, 497, 485, 1, 0, 0, 0, 498, 499, - 1, 0, 0, 0, 499, 503, 5, 110, 0, 0, 500, 501, 3, 162, 81, 0, 501, 502, - 5, 3, 0, 0, 502, 504, 1, 0, 0, 0, 503, 500, 1, 0, 0, 0, 503, 504, 1, 0, - 0, 0, 504, 505, 1, 0, 0, 0, 505, 509, 3, 166, 83, 0, 506, 507, 5, 75, 0, - 0, 507, 508, 5, 65, 0, 0, 508, 510, 5, 130, 0, 0, 509, 506, 1, 0, 0, 0, - 509, 510, 1, 0, 0, 0, 510, 513, 1, 0, 0, 0, 511, 512, 5, 149, 0, 0, 512, - 514, 3, 94, 47, 0, 513, 511, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 515, - 1, 0, 0, 0, 515, 524, 5, 39, 0, 0, 516, 521, 3, 68, 34, 0, 517, 521, 3, - 50, 25, 0, 518, 521, 3, 34, 17, 0, 519, 521, 3, 64, 32, 0, 520, 516, 1, - 0, 0, 0, 520, 517, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 520, 519, 1, 0, 0, - 0, 521, 522, 1, 0, 0, 0, 522, 523, 5, 2, 0, 0, 523, 525, 1, 0, 0, 0, 524, - 520, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 524, 1, 0, 0, 0, 526, 527, - 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 529, 5, 67, 0, 0, 529, 29, 1, 0, - 0, 0, 530, 532, 5, 51, 0, 0, 531, 533, 7, 3, 0, 0, 532, 531, 1, 0, 0, 0, - 532, 533, 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534, 538, 5, 147, 0, 0, 535, - 536, 5, 82, 0, 0, 536, 537, 5, 105, 0, 0, 537, 539, 5, 72, 0, 0, 538, 535, - 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 543, 1, 0, 0, 0, 540, 541, 3, 162, - 81, 0, 541, 542, 5, 3, 0, 0, 542, 544, 1, 0, 0, 0, 543, 540, 1, 0, 0, 0, - 543, 544, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 3, 182, 91, 0, 546, - 547, 5, 34, 0, 0, 547, 548, 3, 64, 32, 0, 548, 31, 1, 0, 0, 0, 549, 550, - 5, 51, 0, 0, 550, 551, 5, 148, 0, 0, 551, 555, 5, 134, 0, 0, 552, 553, - 5, 82, 0, 0, 553, 554, 5, 105, 0, 0, 554, 556, 5, 72, 0, 0, 555, 552, 1, - 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 560, 1, 0, 0, 0, 557, 558, 3, 162, - 81, 0, 558, 559, 5, 3, 0, 0, 559, 561, 1, 0, 0, 0, 560, 557, 1, 0, 0, 0, - 560, 561, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 3, 166, 83, 0, 563, - 564, 5, 144, 0, 0, 564, 576, 3, 184, 92, 0, 565, 566, 5, 4, 0, 0, 566, - 571, 3, 150, 75, 0, 567, 568, 5, 6, 0, 0, 568, 570, 3, 150, 75, 0, 569, - 567, 1, 0, 0, 0, 570, 573, 1, 0, 0, 0, 571, 569, 1, 0, 0, 0, 571, 572, - 1, 0, 0, 0, 572, 574, 1, 0, 0, 0, 573, 571, 1, 0, 0, 0, 574, 575, 5, 5, - 0, 0, 575, 577, 1, 0, 0, 0, 576, 565, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, - 577, 33, 1, 0, 0, 0, 578, 580, 3, 116, 58, 0, 579, 578, 1, 0, 0, 0, 579, - 580, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 5, 60, 0, 0, 582, 583, - 5, 77, 0, 0, 583, 586, 3, 118, 59, 0, 584, 585, 5, 150, 0, 0, 585, 587, - 3, 94, 47, 0, 586, 584, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 35, 1, 0, - 0, 0, 588, 590, 3, 116, 58, 0, 589, 588, 1, 0, 0, 0, 589, 590, 1, 0, 0, - 0, 590, 591, 1, 0, 0, 0, 591, 592, 5, 60, 0, 0, 592, 593, 5, 77, 0, 0, - 593, 596, 3, 118, 59, 0, 594, 595, 5, 150, 0, 0, 595, 597, 3, 94, 47, 0, - 596, 594, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 616, 1, 0, 0, 0, 598, - 599, 5, 113, 0, 0, 599, 600, 5, 41, 0, 0, 600, 605, 3, 120, 60, 0, 601, - 602, 5, 6, 0, 0, 602, 604, 3, 120, 60, 0, 603, 601, 1, 0, 0, 0, 604, 607, - 1, 0, 0, 0, 605, 603, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 609, 1, 0, - 0, 0, 607, 605, 1, 0, 0, 0, 608, 598, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, - 609, 610, 1, 0, 0, 0, 610, 611, 5, 100, 0, 0, 611, 614, 3, 94, 47, 0, 612, - 613, 7, 2, 0, 0, 613, 615, 3, 94, 47, 0, 614, 612, 1, 0, 0, 0, 614, 615, - 1, 0, 0, 0, 615, 617, 1, 0, 0, 0, 616, 608, 1, 0, 0, 0, 616, 617, 1, 0, - 0, 0, 617, 37, 1, 0, 0, 0, 618, 620, 5, 62, 0, 0, 619, 621, 5, 56, 0, 0, - 620, 619, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 622, 1, 0, 0, 0, 622, - 623, 3, 162, 81, 0, 623, 39, 1, 0, 0, 0, 624, 625, 5, 64, 0, 0, 625, 628, - 5, 86, 0, 0, 626, 627, 5, 82, 0, 0, 627, 629, 5, 72, 0, 0, 628, 626, 1, - 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 633, 1, 0, 0, 0, 630, 631, 3, 162, - 81, 0, 631, 632, 5, 3, 0, 0, 632, 634, 1, 0, 0, 0, 633, 630, 1, 0, 0, 0, - 633, 634, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 636, 3, 178, 89, 0, 636, - 41, 1, 0, 0, 0, 637, 638, 5, 64, 0, 0, 638, 641, 5, 134, 0, 0, 639, 640, - 5, 82, 0, 0, 640, 642, 5, 72, 0, 0, 641, 639, 1, 0, 0, 0, 641, 642, 1, - 0, 0, 0, 642, 646, 1, 0, 0, 0, 643, 644, 3, 162, 81, 0, 644, 645, 5, 3, - 0, 0, 645, 647, 1, 0, 0, 0, 646, 643, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, - 647, 648, 1, 0, 0, 0, 648, 649, 3, 166, 83, 0, 649, 43, 1, 0, 0, 0, 650, - 651, 5, 64, 0, 0, 651, 654, 5, 140, 0, 0, 652, 653, 5, 82, 0, 0, 653, 655, - 5, 72, 0, 0, 654, 652, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 659, 1, 0, - 0, 0, 656, 657, 3, 162, 81, 0, 657, 658, 5, 3, 0, 0, 658, 660, 1, 0, 0, - 0, 659, 656, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 661, 1, 0, 0, 0, 661, - 662, 3, 180, 90, 0, 662, 45, 1, 0, 0, 0, 663, 664, 5, 64, 0, 0, 664, 667, - 5, 147, 0, 0, 665, 666, 5, 82, 0, 0, 666, 668, 5, 72, 0, 0, 667, 665, 1, - 0, 0, 0, 667, 668, 1, 0, 0, 0, 668, 672, 1, 0, 0, 0, 669, 670, 3, 162, - 81, 0, 670, 671, 5, 3, 0, 0, 671, 673, 1, 0, 0, 0, 672, 669, 1, 0, 0, 0, - 672, 673, 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 675, 3, 182, 91, 0, 675, - 47, 1, 0, 0, 0, 676, 678, 5, 151, 0, 0, 677, 679, 5, 120, 0, 0, 678, 677, - 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 685, 3, 124, - 62, 0, 681, 682, 5, 6, 0, 0, 682, 684, 3, 124, 62, 0, 683, 681, 1, 0, 0, - 0, 684, 687, 1, 0, 0, 0, 685, 683, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, - 689, 1, 0, 0, 0, 687, 685, 1, 0, 0, 0, 688, 676, 1, 0, 0, 0, 688, 689, - 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 696, 3, 136, 68, 0, 691, 692, 3, - 138, 69, 0, 692, 693, 3, 136, 68, 0, 693, 695, 1, 0, 0, 0, 694, 691, 1, - 0, 0, 0, 695, 698, 1, 0, 0, 0, 696, 694, 1, 0, 0, 0, 696, 697, 1, 0, 0, - 0, 697, 709, 1, 0, 0, 0, 698, 696, 1, 0, 0, 0, 699, 700, 5, 113, 0, 0, - 700, 701, 5, 41, 0, 0, 701, 706, 3, 120, 60, 0, 702, 703, 5, 6, 0, 0, 703, - 705, 3, 120, 60, 0, 704, 702, 1, 0, 0, 0, 705, 708, 1, 0, 0, 0, 706, 704, - 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 710, 1, 0, 0, 0, 708, 706, 1, 0, - 0, 0, 709, 699, 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 710, 717, 1, 0, 0, 0, - 711, 712, 5, 100, 0, 0, 712, 715, 3, 94, 47, 0, 713, 714, 7, 2, 0, 0, 714, - 716, 3, 94, 47, 0, 715, 713, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 718, - 1, 0, 0, 0, 717, 711, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 49, 1, 0, - 0, 0, 719, 721, 3, 116, 58, 0, 720, 719, 1, 0, 0, 0, 720, 721, 1, 0, 0, - 0, 721, 739, 1, 0, 0, 0, 722, 740, 5, 90, 0, 0, 723, 740, 5, 126, 0, 0, - 724, 725, 5, 90, 0, 0, 725, 726, 5, 112, 0, 0, 726, 740, 5, 126, 0, 0, - 727, 728, 5, 90, 0, 0, 728, 729, 5, 112, 0, 0, 729, 740, 5, 129, 0, 0, - 730, 731, 5, 90, 0, 0, 731, 732, 5, 112, 0, 0, 732, 740, 5, 26, 0, 0, 733, - 734, 5, 90, 0, 0, 734, 735, 5, 112, 0, 0, 735, 740, 5, 74, 0, 0, 736, 737, - 5, 90, 0, 0, 737, 738, 5, 112, 0, 0, 738, 740, 5, 83, 0, 0, 739, 722, 1, - 0, 0, 0, 739, 723, 1, 0, 0, 0, 739, 724, 1, 0, 0, 0, 739, 727, 1, 0, 0, - 0, 739, 730, 1, 0, 0, 0, 739, 733, 1, 0, 0, 0, 739, 736, 1, 0, 0, 0, 740, - 741, 1, 0, 0, 0, 741, 745, 5, 93, 0, 0, 742, 743, 3, 162, 81, 0, 743, 744, - 5, 3, 0, 0, 744, 746, 1, 0, 0, 0, 745, 742, 1, 0, 0, 0, 745, 746, 1, 0, - 0, 0, 746, 747, 1, 0, 0, 0, 747, 759, 3, 166, 83, 0, 748, 749, 5, 4, 0, - 0, 749, 754, 3, 172, 86, 0, 750, 751, 5, 6, 0, 0, 751, 753, 3, 172, 86, - 0, 752, 750, 1, 0, 0, 0, 753, 756, 1, 0, 0, 0, 754, 752, 1, 0, 0, 0, 754, - 755, 1, 0, 0, 0, 755, 757, 1, 0, 0, 0, 756, 754, 1, 0, 0, 0, 757, 758, - 5, 5, 0, 0, 758, 760, 1, 0, 0, 0, 759, 748, 1, 0, 0, 0, 759, 760, 1, 0, - 0, 0, 760, 792, 1, 0, 0, 0, 761, 762, 5, 146, 0, 0, 762, 763, 5, 4, 0, - 0, 763, 768, 3, 94, 47, 0, 764, 765, 5, 6, 0, 0, 765, 767, 3, 94, 47, 0, - 766, 764, 1, 0, 0, 0, 767, 770, 1, 0, 0, 0, 768, 766, 1, 0, 0, 0, 768, - 769, 1, 0, 0, 0, 769, 771, 1, 0, 0, 0, 770, 768, 1, 0, 0, 0, 771, 786, - 5, 5, 0, 0, 772, 773, 5, 6, 0, 0, 773, 774, 5, 4, 0, 0, 774, 779, 3, 94, - 47, 0, 775, 776, 5, 6, 0, 0, 776, 778, 3, 94, 47, 0, 777, 775, 1, 0, 0, - 0, 778, 781, 1, 0, 0, 0, 779, 777, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, - 782, 1, 0, 0, 0, 781, 779, 1, 0, 0, 0, 782, 783, 5, 5, 0, 0, 783, 785, - 1, 0, 0, 0, 784, 772, 1, 0, 0, 0, 785, 788, 1, 0, 0, 0, 786, 784, 1, 0, - 0, 0, 786, 787, 1, 0, 0, 0, 787, 793, 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, - 789, 793, 3, 64, 32, 0, 790, 791, 5, 57, 0, 0, 791, 793, 5, 146, 0, 0, - 792, 761, 1, 0, 0, 0, 792, 789, 1, 0, 0, 0, 792, 790, 1, 0, 0, 0, 793, - 51, 1, 0, 0, 0, 794, 798, 5, 116, 0, 0, 795, 796, 3, 162, 81, 0, 796, 797, - 5, 3, 0, 0, 797, 799, 1, 0, 0, 0, 798, 795, 1, 0, 0, 0, 798, 799, 1, 0, - 0, 0, 799, 800, 1, 0, 0, 0, 800, 807, 3, 186, 93, 0, 801, 802, 5, 7, 0, - 0, 802, 808, 3, 122, 61, 0, 803, 804, 5, 4, 0, 0, 804, 805, 3, 122, 61, - 0, 805, 806, 5, 5, 0, 0, 806, 808, 1, 0, 0, 0, 807, 801, 1, 0, 0, 0, 807, - 803, 1, 0, 0, 0, 807, 808, 1, 0, 0, 0, 808, 53, 1, 0, 0, 0, 809, 820, 5, - 123, 0, 0, 810, 821, 3, 174, 87, 0, 811, 812, 3, 162, 81, 0, 812, 813, - 5, 3, 0, 0, 813, 815, 1, 0, 0, 0, 814, 811, 1, 0, 0, 0, 814, 815, 1, 0, - 0, 0, 815, 818, 1, 0, 0, 0, 816, 819, 3, 166, 83, 0, 817, 819, 3, 178, - 89, 0, 818, 816, 1, 0, 0, 0, 818, 817, 1, 0, 0, 0, 819, 821, 1, 0, 0, 0, - 820, 810, 1, 0, 0, 0, 820, 814, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, - 55, 1, 0, 0, 0, 822, 824, 5, 124, 0, 0, 823, 825, 5, 131, 0, 0, 824, 823, - 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 826, 1, 0, 0, 0, 826, 827, 3, 188, - 94, 0, 827, 57, 1, 0, 0, 0, 828, 833, 5, 129, 0, 0, 829, 831, 5, 139, 0, - 0, 830, 832, 3, 192, 96, 0, 831, 830, 1, 0, 0, 0, 831, 832, 1, 0, 0, 0, - 832, 834, 1, 0, 0, 0, 833, 829, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, - 840, 1, 0, 0, 0, 835, 837, 5, 138, 0, 0, 836, 838, 5, 131, 0, 0, 837, 836, - 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 841, 3, 188, - 94, 0, 840, 835, 1, 0, 0, 0, 840, 841, 1, 0, 0, 0, 841, 59, 1, 0, 0, 0, - 842, 843, 5, 131, 0, 0, 843, 844, 3, 188, 94, 0, 844, 61, 1, 0, 0, 0, 845, - 847, 5, 151, 0, 0, 846, 848, 5, 120, 0, 0, 847, 846, 1, 0, 0, 0, 847, 848, - 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 854, 3, 124, 62, 0, 850, 851, 5, - 6, 0, 0, 851, 853, 3, 124, 62, 0, 852, 850, 1, 0, 0, 0, 853, 856, 1, 0, - 0, 0, 854, 852, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 858, 1, 0, 0, 0, - 856, 854, 1, 0, 0, 0, 857, 845, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, - 859, 1, 0, 0, 0, 859, 870, 3, 136, 68, 0, 860, 861, 5, 113, 0, 0, 861, - 862, 5, 41, 0, 0, 862, 867, 3, 120, 60, 0, 863, 864, 5, 6, 0, 0, 864, 866, - 3, 120, 60, 0, 865, 863, 1, 0, 0, 0, 866, 869, 1, 0, 0, 0, 867, 865, 1, - 0, 0, 0, 867, 868, 1, 0, 0, 0, 868, 871, 1, 0, 0, 0, 869, 867, 1, 0, 0, - 0, 870, 860, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871, 878, 1, 0, 0, 0, 872, - 873, 5, 100, 0, 0, 873, 876, 3, 94, 47, 0, 874, 875, 7, 2, 0, 0, 875, 877, - 3, 94, 47, 0, 876, 874, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 879, 1, - 0, 0, 0, 878, 872, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 63, 1, 0, 0, - 0, 880, 882, 5, 151, 0, 0, 881, 883, 5, 120, 0, 0, 882, 881, 1, 0, 0, 0, - 882, 883, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 889, 3, 124, 62, 0, 885, - 886, 5, 6, 0, 0, 886, 888, 3, 124, 62, 0, 887, 885, 1, 0, 0, 0, 888, 891, - 1, 0, 0, 0, 889, 887, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 893, 1, 0, - 0, 0, 891, 889, 1, 0, 0, 0, 892, 880, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, - 893, 894, 1, 0, 0, 0, 894, 900, 3, 66, 33, 0, 895, 896, 3, 138, 69, 0, - 896, 897, 3, 66, 33, 0, 897, 899, 1, 0, 0, 0, 898, 895, 1, 0, 0, 0, 899, - 902, 1, 0, 0, 0, 900, 898, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 913, - 1, 0, 0, 0, 902, 900, 1, 0, 0, 0, 903, 904, 5, 113, 0, 0, 904, 905, 5, - 41, 0, 0, 905, 910, 3, 120, 60, 0, 906, 907, 5, 6, 0, 0, 907, 909, 3, 120, - 60, 0, 908, 906, 1, 0, 0, 0, 909, 912, 1, 0, 0, 0, 910, 908, 1, 0, 0, 0, - 910, 911, 1, 0, 0, 0, 911, 914, 1, 0, 0, 0, 912, 910, 1, 0, 0, 0, 913, - 903, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 921, 1, 0, 0, 0, 915, 916, - 5, 100, 0, 0, 916, 919, 3, 94, 47, 0, 917, 918, 7, 2, 0, 0, 918, 920, 3, - 94, 47, 0, 919, 917, 1, 0, 0, 0, 919, 920, 1, 0, 0, 0, 920, 922, 1, 0, - 0, 0, 921, 915, 1, 0, 0, 0, 921, 922, 1, 0, 0, 0, 922, 65, 1, 0, 0, 0, - 923, 925, 5, 132, 0, 0, 924, 926, 7, 4, 0, 0, 925, 924, 1, 0, 0, 0, 925, - 926, 1, 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 932, 3, 126, 63, 0, 928, 929, - 5, 6, 0, 0, 929, 931, 3, 126, 63, 0, 930, 928, 1, 0, 0, 0, 931, 934, 1, - 0, 0, 0, 932, 930, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 947, 1, 0, 0, - 0, 934, 932, 1, 0, 0, 0, 935, 945, 5, 77, 0, 0, 936, 941, 3, 128, 64, 0, - 937, 938, 5, 6, 0, 0, 938, 940, 3, 128, 64, 0, 939, 937, 1, 0, 0, 0, 940, - 943, 1, 0, 0, 0, 941, 939, 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 946, - 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 944, 946, 3, 130, 65, 0, 945, 936, 1, - 0, 0, 0, 945, 944, 1, 0, 0, 0, 946, 948, 1, 0, 0, 0, 947, 935, 1, 0, 0, - 0, 947, 948, 1, 0, 0, 0, 948, 951, 1, 0, 0, 0, 949, 950, 5, 150, 0, 0, - 950, 952, 3, 94, 47, 0, 951, 949, 1, 0, 0, 0, 951, 952, 1, 0, 0, 0, 952, - 967, 1, 0, 0, 0, 953, 954, 5, 80, 0, 0, 954, 955, 5, 41, 0, 0, 955, 960, - 3, 94, 47, 0, 956, 957, 5, 6, 0, 0, 957, 959, 3, 94, 47, 0, 958, 956, 1, - 0, 0, 0, 959, 962, 1, 0, 0, 0, 960, 958, 1, 0, 0, 0, 960, 961, 1, 0, 0, - 0, 961, 965, 1, 0, 0, 0, 962, 960, 1, 0, 0, 0, 963, 964, 5, 81, 0, 0, 964, - 966, 3, 94, 47, 0, 965, 963, 1, 0, 0, 0, 965, 966, 1, 0, 0, 0, 966, 968, - 1, 0, 0, 0, 967, 953, 1, 0, 0, 0, 967, 968, 1, 0, 0, 0, 968, 998, 1, 0, - 0, 0, 969, 970, 5, 146, 0, 0, 970, 971, 5, 4, 0, 0, 971, 976, 3, 94, 47, - 0, 972, 973, 5, 6, 0, 0, 973, 975, 3, 94, 47, 0, 974, 972, 1, 0, 0, 0, - 975, 978, 1, 0, 0, 0, 976, 974, 1, 0, 0, 0, 976, 977, 1, 0, 0, 0, 977, - 979, 1, 0, 0, 0, 978, 976, 1, 0, 0, 0, 979, 994, 5, 5, 0, 0, 980, 981, - 5, 6, 0, 0, 981, 982, 5, 4, 0, 0, 982, 987, 3, 94, 47, 0, 983, 984, 5, - 6, 0, 0, 984, 986, 3, 94, 47, 0, 985, 983, 1, 0, 0, 0, 986, 989, 1, 0, - 0, 0, 987, 985, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 990, 1, 0, 0, 0, - 989, 987, 1, 0, 0, 0, 990, 991, 5, 5, 0, 0, 991, 993, 1, 0, 0, 0, 992, - 980, 1, 0, 0, 0, 993, 996, 1, 0, 0, 0, 994, 992, 1, 0, 0, 0, 994, 995, - 1, 0, 0, 0, 995, 998, 1, 0, 0, 0, 996, 994, 1, 0, 0, 0, 997, 923, 1, 0, - 0, 0, 997, 969, 1, 0, 0, 0, 998, 67, 1, 0, 0, 0, 999, 1001, 3, 116, 58, - 0, 1000, 999, 1, 0, 0, 0, 1000, 1001, 1, 0, 0, 0, 1001, 1002, 1, 0, 0, - 0, 1002, 1013, 5, 143, 0, 0, 1003, 1004, 5, 112, 0, 0, 1004, 1014, 5, 129, - 0, 0, 1005, 1006, 5, 112, 0, 0, 1006, 1014, 5, 26, 0, 0, 1007, 1008, 5, - 112, 0, 0, 1008, 1014, 5, 126, 0, 0, 1009, 1010, 5, 112, 0, 0, 1010, 1014, - 5, 74, 0, 0, 1011, 1012, 5, 112, 0, 0, 1012, 1014, 5, 83, 0, 0, 1013, 1003, - 1, 0, 0, 0, 1013, 1005, 1, 0, 0, 0, 1013, 1007, 1, 0, 0, 0, 1013, 1009, - 1, 0, 0, 0, 1013, 1011, 1, 0, 0, 0, 1013, 1014, 1, 0, 0, 0, 1014, 1015, - 1, 0, 0, 0, 1015, 1016, 3, 118, 59, 0, 1016, 1017, 5, 133, 0, 0, 1017, - 1018, 3, 172, 86, 0, 1018, 1019, 5, 7, 0, 0, 1019, 1027, 3, 94, 47, 0, - 1020, 1021, 5, 6, 0, 0, 1021, 1022, 3, 172, 86, 0, 1022, 1023, 5, 7, 0, - 0, 1023, 1024, 3, 94, 47, 0, 1024, 1026, 1, 0, 0, 0, 1025, 1020, 1, 0, - 0, 0, 1026, 1029, 1, 0, 0, 0, 1027, 1025, 1, 0, 0, 0, 1027, 1028, 1, 0, - 0, 0, 1028, 1032, 1, 0, 0, 0, 1029, 1027, 1, 0, 0, 0, 1030, 1031, 5, 150, - 0, 0, 1031, 1033, 3, 94, 47, 0, 1032, 1030, 1, 0, 0, 0, 1032, 1033, 1, - 0, 0, 0, 1033, 69, 1, 0, 0, 0, 1034, 1036, 3, 116, 58, 0, 1035, 1034, 1, - 0, 0, 0, 1035, 1036, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1048, 5, - 143, 0, 0, 1038, 1039, 5, 112, 0, 0, 1039, 1049, 5, 129, 0, 0, 1040, 1041, - 5, 112, 0, 0, 1041, 1049, 5, 26, 0, 0, 1042, 1043, 5, 112, 0, 0, 1043, - 1049, 5, 126, 0, 0, 1044, 1045, 5, 112, 0, 0, 1045, 1049, 5, 74, 0, 0, - 1046, 1047, 5, 112, 0, 0, 1047, 1049, 5, 83, 0, 0, 1048, 1038, 1, 0, 0, - 0, 1048, 1040, 1, 0, 0, 0, 1048, 1042, 1, 0, 0, 0, 1048, 1044, 1, 0, 0, - 0, 1048, 1046, 1, 0, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 1050, 1, 0, 0, - 0, 1050, 1051, 3, 118, 59, 0, 1051, 1052, 5, 133, 0, 0, 1052, 1053, 3, - 172, 86, 0, 1053, 1054, 5, 7, 0, 0, 1054, 1062, 3, 94, 47, 0, 1055, 1056, - 5, 6, 0, 0, 1056, 1057, 3, 172, 86, 0, 1057, 1058, 5, 7, 0, 0, 1058, 1059, - 3, 94, 47, 0, 1059, 1061, 1, 0, 0, 0, 1060, 1055, 1, 0, 0, 0, 1061, 1064, - 1, 0, 0, 0, 1062, 1060, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1067, - 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1065, 1066, 5, 150, 0, 0, 1066, 1068, - 3, 94, 47, 0, 1067, 1065, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1087, - 1, 0, 0, 0, 1069, 1070, 5, 113, 0, 0, 1070, 1071, 5, 41, 0, 0, 1071, 1076, - 3, 120, 60, 0, 1072, 1073, 5, 6, 0, 0, 1073, 1075, 3, 120, 60, 0, 1074, - 1072, 1, 0, 0, 0, 1075, 1078, 1, 0, 0, 0, 1076, 1074, 1, 0, 0, 0, 1076, - 1077, 1, 0, 0, 0, 1077, 1080, 1, 0, 0, 0, 1078, 1076, 1, 0, 0, 0, 1079, - 1069, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, - 1082, 5, 100, 0, 0, 1082, 1085, 3, 94, 47, 0, 1083, 1084, 7, 2, 0, 0, 1084, - 1086, 3, 94, 47, 0, 1085, 1083, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, - 1088, 1, 0, 0, 0, 1087, 1079, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, - 71, 1, 0, 0, 0, 1089, 1090, 5, 145, 0, 0, 1090, 73, 1, 0, 0, 0, 1091, 1096, - 3, 172, 86, 0, 1092, 1095, 3, 78, 39, 0, 1093, 1095, 3, 76, 38, 0, 1094, - 1092, 1, 0, 0, 0, 1094, 1093, 1, 0, 0, 0, 1095, 1098, 1, 0, 0, 0, 1096, - 1094, 1, 0, 0, 0, 1096, 1097, 1, 0, 0, 0, 1097, 75, 1, 0, 0, 0, 1098, 1096, - 1, 0, 0, 0, 1099, 1119, 3, 158, 79, 0, 1100, 1101, 5, 4, 0, 0, 1101, 1103, - 3, 142, 71, 0, 1102, 1104, 3, 194, 97, 0, 1103, 1102, 1, 0, 0, 0, 1103, - 1104, 1, 0, 0, 0, 1104, 1105, 1, 0, 0, 0, 1105, 1106, 5, 5, 0, 0, 1106, - 1120, 1, 0, 0, 0, 1107, 1108, 5, 4, 0, 0, 1108, 1110, 3, 142, 71, 0, 1109, - 1111, 3, 194, 97, 0, 1110, 1109, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, - 1112, 1, 0, 0, 0, 1112, 1113, 5, 6, 0, 0, 1113, 1115, 3, 142, 71, 0, 1114, - 1116, 3, 194, 97, 0, 1115, 1114, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, - 1117, 1, 0, 0, 0, 1117, 1118, 5, 5, 0, 0, 1118, 1120, 1, 0, 0, 0, 1119, - 1100, 1, 0, 0, 0, 1119, 1107, 1, 0, 0, 0, 1119, 1120, 1, 0, 0, 0, 1120, - 77, 1, 0, 0, 0, 1121, 1122, 5, 50, 0, 0, 1122, 1124, 3, 158, 79, 0, 1123, - 1121, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1139, 1, 0, 0, 0, 1125, - 1140, 3, 80, 40, 0, 1126, 1140, 3, 82, 41, 0, 1127, 1140, 3, 84, 42, 0, - 1128, 1140, 3, 86, 43, 0, 1129, 1130, 5, 142, 0, 0, 1130, 1140, 3, 92, - 46, 0, 1131, 1132, 5, 45, 0, 0, 1132, 1133, 5, 4, 0, 0, 1133, 1134, 3, - 94, 47, 0, 1134, 1135, 5, 5, 0, 0, 1135, 1140, 1, 0, 0, 0, 1136, 1140, - 3, 88, 44, 0, 1137, 1138, 5, 46, 0, 0, 1138, 1140, 3, 174, 87, 0, 1139, - 1125, 1, 0, 0, 0, 1139, 1126, 1, 0, 0, 0, 1139, 1127, 1, 0, 0, 0, 1139, - 1128, 1, 0, 0, 0, 1139, 1129, 1, 0, 0, 0, 1139, 1131, 1, 0, 0, 0, 1139, - 1136, 1, 0, 0, 0, 1139, 1137, 1, 0, 0, 0, 1140, 79, 1, 0, 0, 0, 1141, 1142, - 5, 117, 0, 0, 1142, 1144, 5, 97, 0, 0, 1143, 1145, 7, 5, 0, 0, 1144, 1143, - 1, 0, 0, 0, 1144, 1145, 1, 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1148, - 3, 92, 46, 0, 1147, 1149, 5, 37, 0, 0, 1148, 1147, 1, 0, 0, 0, 1148, 1149, - 1, 0, 0, 0, 1149, 81, 1, 0, 0, 0, 1150, 1151, 3, 96, 48, 0, 1151, 83, 1, - 0, 0, 0, 1152, 1153, 5, 105, 0, 0, 1153, 1154, 5, 107, 0, 0, 1154, 1155, - 3, 92, 46, 0, 1155, 85, 1, 0, 0, 0, 1156, 1157, 5, 107, 0, 0, 1157, 1158, - 3, 92, 46, 0, 1158, 87, 1, 0, 0, 0, 1159, 1171, 5, 57, 0, 0, 1160, 1172, - 3, 90, 45, 0, 1161, 1162, 5, 4, 0, 0, 1162, 1163, 3, 94, 47, 0, 1163, 1164, - 5, 5, 0, 0, 1164, 1172, 1, 0, 0, 0, 1165, 1166, 5, 103, 0, 0, 1166, 1167, - 5, 4, 0, 0, 1167, 1168, 3, 94, 47, 0, 1168, 1169, 5, 5, 0, 0, 1169, 1172, - 1, 0, 0, 0, 1170, 1172, 3, 194, 97, 0, 1171, 1160, 1, 0, 0, 0, 1171, 1161, - 1, 0, 0, 0, 1171, 1165, 1, 0, 0, 0, 1171, 1170, 1, 0, 0, 0, 1172, 1179, - 1, 0, 0, 0, 1173, 1175, 5, 1, 0, 0, 1174, 1176, 3, 194, 97, 0, 1175, 1174, - 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 1175, 1, 0, 0, 0, 1177, 1178, - 1, 0, 0, 0, 1178, 1180, 1, 0, 0, 0, 1179, 1173, 1, 0, 0, 0, 1179, 1180, - 1, 0, 0, 0, 1180, 89, 1, 0, 0, 0, 1181, 1184, 3, 142, 71, 0, 1182, 1184, - 3, 144, 72, 0, 1183, 1181, 1, 0, 0, 0, 1183, 1182, 1, 0, 0, 0, 1184, 91, - 1, 0, 0, 0, 1185, 1186, 5, 110, 0, 0, 1186, 1187, 5, 49, 0, 0, 1187, 1189, - 7, 6, 0, 0, 1188, 1185, 1, 0, 0, 0, 1188, 1189, 1, 0, 0, 0, 1189, 93, 1, - 0, 0, 0, 1190, 1191, 6, 47, -1, 0, 1191, 1267, 3, 144, 72, 0, 1192, 1267, - 5, 155, 0, 0, 1193, 1194, 3, 162, 81, 0, 1194, 1195, 5, 3, 0, 0, 1195, - 1197, 1, 0, 0, 0, 1196, 1193, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, - 1198, 1, 0, 0, 0, 1198, 1199, 3, 166, 83, 0, 1199, 1200, 5, 3, 0, 0, 1200, - 1202, 1, 0, 0, 0, 1201, 1196, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1202, - 1203, 1, 0, 0, 0, 1203, 1267, 3, 172, 86, 0, 1204, 1205, 3, 146, 73, 0, - 1205, 1206, 3, 94, 47, 21, 1206, 1267, 1, 0, 0, 0, 1207, 1208, 3, 160, - 80, 0, 1208, 1221, 5, 4, 0, 0, 1209, 1211, 5, 63, 0, 0, 1210, 1209, 1, - 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1217, 3, - 94, 47, 0, 1213, 1214, 5, 6, 0, 0, 1214, 1216, 3, 94, 47, 0, 1215, 1213, - 1, 0, 0, 0, 1216, 1219, 1, 0, 0, 0, 1217, 1215, 1, 0, 0, 0, 1217, 1218, - 1, 0, 0, 0, 1218, 1222, 1, 0, 0, 0, 1219, 1217, 1, 0, 0, 0, 1220, 1222, - 5, 8, 0, 0, 1221, 1210, 1, 0, 0, 0, 1221, 1220, 1, 0, 0, 0, 1221, 1222, - 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1224, 5, 5, 0, 0, 1224, 1267, - 1, 0, 0, 0, 1225, 1226, 5, 4, 0, 0, 1226, 1227, 3, 94, 47, 0, 1227, 1228, - 5, 5, 0, 0, 1228, 1267, 1, 0, 0, 0, 1229, 1230, 5, 44, 0, 0, 1230, 1231, - 5, 4, 0, 0, 1231, 1232, 3, 94, 47, 0, 1232, 1233, 5, 34, 0, 0, 1233, 1234, - 3, 76, 38, 0, 1234, 1235, 5, 5, 0, 0, 1235, 1267, 1, 0, 0, 0, 1236, 1238, - 5, 105, 0, 0, 1237, 1236, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, - 1, 0, 0, 0, 1239, 1241, 5, 72, 0, 0, 1240, 1237, 1, 0, 0, 0, 1240, 1241, - 1, 0, 0, 0, 1241, 1242, 1, 0, 0, 0, 1242, 1243, 5, 4, 0, 0, 1243, 1244, - 3, 64, 32, 0, 1244, 1245, 5, 5, 0, 0, 1245, 1267, 1, 0, 0, 0, 1246, 1248, - 5, 43, 0, 0, 1247, 1249, 3, 94, 47, 0, 1248, 1247, 1, 0, 0, 0, 1248, 1249, - 1, 0, 0, 0, 1249, 1255, 1, 0, 0, 0, 1250, 1251, 5, 149, 0, 0, 1251, 1252, - 3, 94, 47, 0, 1252, 1253, 5, 137, 0, 0, 1253, 1254, 3, 94, 47, 0, 1254, - 1256, 1, 0, 0, 0, 1255, 1250, 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, - 1255, 1, 0, 0, 0, 1257, 1258, 1, 0, 0, 0, 1258, 1261, 1, 0, 0, 0, 1259, - 1260, 5, 66, 0, 0, 1260, 1262, 3, 94, 47, 0, 1261, 1259, 1, 0, 0, 0, 1261, - 1262, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1264, 5, 67, 0, 0, 1264, - 1267, 1, 0, 0, 0, 1265, 1267, 3, 100, 50, 0, 1266, 1190, 1, 0, 0, 0, 1266, - 1192, 1, 0, 0, 0, 1266, 1201, 1, 0, 0, 0, 1266, 1204, 1, 0, 0, 0, 1266, - 1207, 1, 0, 0, 0, 1266, 1225, 1, 0, 0, 0, 1266, 1229, 1, 0, 0, 0, 1266, - 1240, 1, 0, 0, 0, 1266, 1246, 1, 0, 0, 0, 1266, 1265, 1, 0, 0, 0, 1267, - 1368, 1, 0, 0, 0, 1268, 1269, 10, 20, 0, 0, 1269, 1270, 5, 12, 0, 0, 1270, - 1367, 3, 94, 47, 21, 1271, 1272, 10, 19, 0, 0, 1272, 1273, 7, 7, 0, 0, - 1273, 1367, 3, 94, 47, 20, 1274, 1275, 10, 18, 0, 0, 1275, 1276, 7, 8, - 0, 0, 1276, 1367, 3, 94, 47, 19, 1277, 1278, 10, 17, 0, 0, 1278, 1279, - 7, 9, 0, 0, 1279, 1367, 3, 94, 47, 18, 1280, 1281, 10, 16, 0, 0, 1281, - 1282, 7, 10, 0, 0, 1282, 1367, 3, 94, 47, 17, 1283, 1296, 10, 15, 0, 0, - 1284, 1297, 5, 7, 0, 0, 1285, 1297, 5, 23, 0, 0, 1286, 1297, 5, 24, 0, - 0, 1287, 1297, 5, 25, 0, 0, 1288, 1297, 5, 94, 0, 0, 1289, 1290, 5, 94, - 0, 0, 1290, 1297, 5, 105, 0, 0, 1291, 1297, 5, 85, 0, 0, 1292, 1297, 5, - 99, 0, 0, 1293, 1297, 5, 79, 0, 0, 1294, 1297, 5, 101, 0, 0, 1295, 1297, - 5, 122, 0, 0, 1296, 1284, 1, 0, 0, 0, 1296, 1285, 1, 0, 0, 0, 1296, 1286, - 1, 0, 0, 0, 1296, 1287, 1, 0, 0, 0, 1296, 1288, 1, 0, 0, 0, 1296, 1289, - 1, 0, 0, 0, 1296, 1291, 1, 0, 0, 0, 1296, 1292, 1, 0, 0, 0, 1296, 1293, - 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1295, 1, 0, 0, 0, 1297, 1298, - 1, 0, 0, 0, 1298, 1367, 3, 94, 47, 16, 1299, 1300, 10, 14, 0, 0, 1300, - 1301, 5, 33, 0, 0, 1301, 1367, 3, 94, 47, 15, 1302, 1303, 10, 13, 0, 0, - 1303, 1304, 5, 112, 0, 0, 1304, 1367, 3, 94, 47, 14, 1305, 1306, 10, 6, - 0, 0, 1306, 1308, 5, 94, 0, 0, 1307, 1309, 5, 105, 0, 0, 1308, 1307, 1, - 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1367, 3, - 94, 47, 7, 1311, 1313, 10, 5, 0, 0, 1312, 1314, 5, 105, 0, 0, 1313, 1312, - 1, 0, 0, 0, 1313, 1314, 1, 0, 0, 0, 1314, 1315, 1, 0, 0, 0, 1315, 1316, - 5, 40, 0, 0, 1316, 1317, 3, 94, 47, 0, 1317, 1318, 5, 33, 0, 0, 1318, 1319, - 3, 94, 47, 6, 1319, 1367, 1, 0, 0, 0, 1320, 1321, 10, 9, 0, 0, 1321, 1322, - 5, 46, 0, 0, 1322, 1367, 3, 174, 87, 0, 1323, 1325, 10, 8, 0, 0, 1324, - 1326, 5, 105, 0, 0, 1325, 1324, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, - 1327, 1, 0, 0, 0, 1327, 1328, 7, 11, 0, 0, 1328, 1331, 3, 94, 47, 0, 1329, - 1330, 5, 69, 0, 0, 1330, 1332, 3, 94, 47, 0, 1331, 1329, 1, 0, 0, 0, 1331, - 1332, 1, 0, 0, 0, 1332, 1367, 1, 0, 0, 0, 1333, 1338, 10, 7, 0, 0, 1334, - 1339, 5, 95, 0, 0, 1335, 1339, 5, 106, 0, 0, 1336, 1337, 5, 105, 0, 0, - 1337, 1339, 5, 107, 0, 0, 1338, 1334, 1, 0, 0, 0, 1338, 1335, 1, 0, 0, - 0, 1338, 1336, 1, 0, 0, 0, 1339, 1367, 1, 0, 0, 0, 1340, 1342, 10, 4, 0, - 0, 1341, 1343, 5, 105, 0, 0, 1342, 1341, 1, 0, 0, 0, 1342, 1343, 1, 0, - 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1364, 5, 85, 0, 0, 1345, 1355, 5, 4, - 0, 0, 1346, 1356, 3, 64, 32, 0, 1347, 1352, 3, 94, 47, 0, 1348, 1349, 5, - 6, 0, 0, 1349, 1351, 3, 94, 47, 0, 1350, 1348, 1, 0, 0, 0, 1351, 1354, - 1, 0, 0, 0, 1352, 1350, 1, 0, 0, 0, 1352, 1353, 1, 0, 0, 0, 1353, 1356, - 1, 0, 0, 0, 1354, 1352, 1, 0, 0, 0, 1355, 1346, 1, 0, 0, 0, 1355, 1347, - 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1365, - 5, 5, 0, 0, 1358, 1359, 3, 162, 81, 0, 1359, 1360, 5, 3, 0, 0, 1360, 1362, - 1, 0, 0, 0, 1361, 1358, 1, 0, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, 1363, - 1, 0, 0, 0, 1363, 1365, 3, 166, 83, 0, 1364, 1345, 1, 0, 0, 0, 1364, 1361, - 1, 0, 0, 0, 1365, 1367, 1, 0, 0, 0, 1366, 1268, 1, 0, 0, 0, 1366, 1271, - 1, 0, 0, 0, 1366, 1274, 1, 0, 0, 0, 1366, 1277, 1, 0, 0, 0, 1366, 1280, - 1, 0, 0, 0, 1366, 1283, 1, 0, 0, 0, 1366, 1299, 1, 0, 0, 0, 1366, 1302, - 1, 0, 0, 0, 1366, 1305, 1, 0, 0, 0, 1366, 1311, 1, 0, 0, 0, 1366, 1320, - 1, 0, 0, 0, 1366, 1323, 1, 0, 0, 0, 1366, 1333, 1, 0, 0, 0, 1366, 1340, - 1, 0, 0, 0, 1367, 1370, 1, 0, 0, 0, 1368, 1366, 1, 0, 0, 0, 1368, 1369, - 1, 0, 0, 0, 1369, 95, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1371, 1375, 5, - 121, 0, 0, 1372, 1373, 3, 162, 81, 0, 1373, 1374, 5, 3, 0, 0, 1374, 1376, - 1, 0, 0, 0, 1375, 1372, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, 1376, 1377, - 1, 0, 0, 0, 1377, 1389, 3, 176, 88, 0, 1378, 1379, 5, 4, 0, 0, 1379, 1384, - 3, 98, 49, 0, 1380, 1381, 5, 6, 0, 0, 1381, 1383, 3, 98, 49, 0, 1382, 1380, - 1, 0, 0, 0, 1383, 1386, 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1384, 1385, - 1, 0, 0, 0, 1385, 1387, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1388, - 5, 5, 0, 0, 1388, 1390, 1, 0, 0, 0, 1389, 1378, 1, 0, 0, 0, 1389, 1390, - 1, 0, 0, 0, 1390, 1409, 1, 0, 0, 0, 1391, 1392, 5, 110, 0, 0, 1392, 1401, - 7, 12, 0, 0, 1393, 1394, 5, 133, 0, 0, 1394, 1402, 5, 107, 0, 0, 1395, - 1396, 5, 133, 0, 0, 1396, 1402, 5, 57, 0, 0, 1397, 1402, 5, 42, 0, 0, 1398, - 1402, 5, 127, 0, 0, 1399, 1400, 5, 104, 0, 0, 1400, 1402, 5, 27, 0, 0, - 1401, 1393, 1, 0, 0, 0, 1401, 1395, 1, 0, 0, 0, 1401, 1397, 1, 0, 0, 0, - 1401, 1398, 1, 0, 0, 0, 1401, 1399, 1, 0, 0, 0, 1402, 1406, 1, 0, 0, 0, - 1403, 1404, 5, 101, 0, 0, 1404, 1406, 3, 158, 79, 0, 1405, 1391, 1, 0, - 0, 0, 1405, 1403, 1, 0, 0, 0, 1406, 1408, 1, 0, 0, 0, 1407, 1405, 1, 0, - 0, 0, 1408, 1411, 1, 0, 0, 0, 1409, 1407, 1, 0, 0, 0, 1409, 1410, 1, 0, - 0, 0, 1410, 1425, 1, 0, 0, 0, 1411, 1409, 1, 0, 0, 0, 1412, 1414, 5, 105, - 0, 0, 1413, 1412, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1415, 1, 0, - 0, 0, 1415, 1420, 5, 58, 0, 0, 1416, 1417, 5, 88, 0, 0, 1417, 1421, 5, - 59, 0, 0, 1418, 1419, 5, 88, 0, 0, 1419, 1421, 5, 84, 0, 0, 1420, 1416, - 1, 0, 0, 0, 1420, 1418, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1423, - 1, 0, 0, 0, 1422, 1424, 5, 68, 0, 0, 1423, 1422, 1, 0, 0, 0, 1423, 1424, - 1, 0, 0, 0, 1424, 1426, 1, 0, 0, 0, 1425, 1413, 1, 0, 0, 0, 1425, 1426, - 1, 0, 0, 0, 1426, 97, 1, 0, 0, 0, 1427, 1428, 3, 158, 79, 0, 1428, 99, - 1, 0, 0, 0, 1429, 1430, 5, 119, 0, 0, 1430, 1435, 5, 4, 0, 0, 1431, 1436, - 5, 83, 0, 0, 1432, 1433, 7, 13, 0, 0, 1433, 1434, 5, 6, 0, 0, 1434, 1436, - 3, 148, 74, 0, 1435, 1431, 1, 0, 0, 0, 1435, 1432, 1, 0, 0, 0, 1436, 1437, - 1, 0, 0, 0, 1437, 1438, 5, 5, 0, 0, 1438, 101, 1, 0, 0, 0, 1439, 1442, - 3, 172, 86, 0, 1440, 1441, 5, 46, 0, 0, 1441, 1443, 3, 174, 87, 0, 1442, - 1440, 1, 0, 0, 0, 1442, 1443, 1, 0, 0, 0, 1443, 1445, 1, 0, 0, 0, 1444, - 1446, 7, 5, 0, 0, 1445, 1444, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, - 103, 1, 0, 0, 0, 1447, 1448, 5, 50, 0, 0, 1448, 1450, 3, 158, 79, 0, 1449, - 1447, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1460, 1, 0, 0, 0, 1451, - 1461, 3, 106, 53, 0, 1452, 1461, 3, 112, 56, 0, 1453, 1461, 3, 110, 55, - 0, 1454, 1455, 5, 45, 0, 0, 1455, 1456, 5, 4, 0, 0, 1456, 1457, 3, 94, - 47, 0, 1457, 1458, 5, 5, 0, 0, 1458, 1461, 1, 0, 0, 0, 1459, 1461, 3, 108, - 54, 0, 1460, 1451, 1, 0, 0, 0, 1460, 1452, 1, 0, 0, 0, 1460, 1453, 1, 0, - 0, 0, 1460, 1454, 1, 0, 0, 0, 1460, 1459, 1, 0, 0, 0, 1461, 105, 1, 0, - 0, 0, 1462, 1463, 5, 117, 0, 0, 1463, 1464, 5, 97, 0, 0, 1464, 1465, 5, - 4, 0, 0, 1465, 1470, 3, 102, 51, 0, 1466, 1467, 5, 6, 0, 0, 1467, 1469, - 3, 102, 51, 0, 1468, 1466, 1, 0, 0, 0, 1469, 1472, 1, 0, 0, 0, 1470, 1468, - 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1473, 1, 0, 0, 0, 1472, 1470, - 1, 0, 0, 0, 1473, 1474, 5, 5, 0, 0, 1474, 1475, 3, 92, 46, 0, 1475, 107, - 1, 0, 0, 0, 1476, 1477, 5, 76, 0, 0, 1477, 1478, 5, 97, 0, 0, 1478, 1479, - 5, 4, 0, 0, 1479, 1484, 3, 114, 57, 0, 1480, 1481, 5, 6, 0, 0, 1481, 1483, - 3, 114, 57, 0, 1482, 1480, 1, 0, 0, 0, 1483, 1486, 1, 0, 0, 0, 1484, 1482, - 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 1487, 1, 0, 0, 0, 1486, 1484, - 1, 0, 0, 0, 1487, 1488, 5, 5, 0, 0, 1488, 1489, 3, 96, 48, 0, 1489, 109, - 1, 0, 0, 0, 1490, 1492, 5, 142, 0, 0, 1491, 1493, 5, 97, 0, 0, 1492, 1491, - 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1495, 1, 0, 0, 0, 1494, 1496, - 3, 158, 79, 0, 1495, 1494, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1497, - 1, 0, 0, 0, 1497, 1498, 5, 4, 0, 0, 1498, 1503, 3, 102, 51, 0, 1499, 1500, - 5, 6, 0, 0, 1500, 1502, 3, 102, 51, 0, 1501, 1499, 1, 0, 0, 0, 1502, 1505, - 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1506, - 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1507, 5, 5, 0, 0, 1507, 1508, - 3, 92, 46, 0, 1508, 111, 1, 0, 0, 0, 1509, 1511, 5, 97, 0, 0, 1510, 1512, - 3, 158, 79, 0, 1511, 1510, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1513, - 1, 0, 0, 0, 1513, 1514, 5, 4, 0, 0, 1514, 1519, 3, 102, 51, 0, 1515, 1516, - 5, 6, 0, 0, 1516, 1518, 3, 102, 51, 0, 1517, 1515, 1, 0, 0, 0, 1518, 1521, - 1, 0, 0, 0, 1519, 1517, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1522, - 1, 0, 0, 0, 1521, 1519, 1, 0, 0, 0, 1522, 1523, 5, 5, 0, 0, 1523, 1524, - 3, 92, 46, 0, 1524, 113, 1, 0, 0, 0, 1525, 1526, 3, 172, 86, 0, 1526, 115, - 1, 0, 0, 0, 1527, 1529, 5, 151, 0, 0, 1528, 1530, 5, 120, 0, 0, 1529, 1528, - 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1532, - 3, 140, 70, 0, 1532, 1533, 5, 34, 0, 0, 1533, 1534, 5, 4, 0, 0, 1534, 1535, - 3, 64, 32, 0, 1535, 1545, 5, 5, 0, 0, 1536, 1537, 5, 6, 0, 0, 1537, 1538, - 3, 140, 70, 0, 1538, 1539, 5, 34, 0, 0, 1539, 1540, 5, 4, 0, 0, 1540, 1541, - 3, 64, 32, 0, 1541, 1542, 5, 5, 0, 0, 1542, 1544, 1, 0, 0, 0, 1543, 1536, - 1, 0, 0, 0, 1544, 1547, 1, 0, 0, 0, 1545, 1543, 1, 0, 0, 0, 1545, 1546, - 1, 0, 0, 0, 1546, 117, 1, 0, 0, 0, 1547, 1545, 1, 0, 0, 0, 1548, 1549, - 3, 162, 81, 0, 1549, 1550, 5, 3, 0, 0, 1550, 1552, 1, 0, 0, 0, 1551, 1548, - 1, 0, 0, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1559, - 3, 166, 83, 0, 1554, 1555, 5, 87, 0, 0, 1555, 1556, 5, 41, 0, 0, 1556, - 1560, 3, 178, 89, 0, 1557, 1558, 5, 105, 0, 0, 1558, 1560, 5, 87, 0, 0, - 1559, 1554, 1, 0, 0, 0, 1559, 1557, 1, 0, 0, 0, 1559, 1560, 1, 0, 0, 0, - 1560, 119, 1, 0, 0, 0, 1561, 1564, 3, 94, 47, 0, 1562, 1563, 5, 46, 0, - 0, 1563, 1565, 3, 174, 87, 0, 1564, 1562, 1, 0, 0, 0, 1564, 1565, 1, 0, - 0, 0, 1565, 1567, 1, 0, 0, 0, 1566, 1568, 7, 5, 0, 0, 1567, 1566, 1, 0, - 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 121, 1, 0, 0, 0, 1569, 1573, 3, 142, - 71, 0, 1570, 1573, 3, 158, 79, 0, 1571, 1573, 5, 156, 0, 0, 1572, 1569, - 1, 0, 0, 0, 1572, 1570, 1, 0, 0, 0, 1572, 1571, 1, 0, 0, 0, 1573, 123, - 1, 0, 0, 0, 1574, 1586, 3, 166, 83, 0, 1575, 1576, 5, 4, 0, 0, 1576, 1581, - 3, 172, 86, 0, 1577, 1578, 5, 6, 0, 0, 1578, 1580, 3, 172, 86, 0, 1579, - 1577, 1, 0, 0, 0, 1580, 1583, 1, 0, 0, 0, 1581, 1579, 1, 0, 0, 0, 1581, - 1582, 1, 0, 0, 0, 1582, 1584, 1, 0, 0, 0, 1583, 1581, 1, 0, 0, 0, 1584, - 1585, 5, 5, 0, 0, 1585, 1587, 1, 0, 0, 0, 1586, 1575, 1, 0, 0, 0, 1586, - 1587, 1, 0, 0, 0, 1587, 1588, 1, 0, 0, 0, 1588, 1589, 5, 34, 0, 0, 1589, - 1590, 5, 4, 0, 0, 1590, 1591, 3, 64, 32, 0, 1591, 1592, 5, 5, 0, 0, 1592, - 125, 1, 0, 0, 0, 1593, 1606, 5, 8, 0, 0, 1594, 1595, 3, 166, 83, 0, 1595, - 1596, 5, 3, 0, 0, 1596, 1597, 5, 8, 0, 0, 1597, 1606, 1, 0, 0, 0, 1598, - 1603, 3, 94, 47, 0, 1599, 1601, 5, 34, 0, 0, 1600, 1599, 1, 0, 0, 0, 1600, - 1601, 1, 0, 0, 0, 1601, 1602, 1, 0, 0, 0, 1602, 1604, 3, 152, 76, 0, 1603, - 1600, 1, 0, 0, 0, 1603, 1604, 1, 0, 0, 0, 1604, 1606, 1, 0, 0, 0, 1605, - 1593, 1, 0, 0, 0, 1605, 1594, 1, 0, 0, 0, 1605, 1598, 1, 0, 0, 0, 1606, - 127, 1, 0, 0, 0, 1607, 1608, 3, 162, 81, 0, 1608, 1609, 5, 3, 0, 0, 1609, - 1611, 1, 0, 0, 0, 1610, 1607, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, - 1612, 1, 0, 0, 0, 1612, 1617, 3, 166, 83, 0, 1613, 1615, 5, 34, 0, 0, 1614, - 1613, 1, 0, 0, 0, 1614, 1615, 1, 0, 0, 0, 1615, 1616, 1, 0, 0, 0, 1616, - 1618, 3, 190, 95, 0, 1617, 1614, 1, 0, 0, 0, 1617, 1618, 1, 0, 0, 0, 1618, - 1624, 1, 0, 0, 0, 1619, 1620, 5, 87, 0, 0, 1620, 1621, 5, 41, 0, 0, 1621, - 1625, 3, 178, 89, 0, 1622, 1623, 5, 105, 0, 0, 1623, 1625, 5, 87, 0, 0, - 1624, 1619, 1, 0, 0, 0, 1624, 1622, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, - 1625, 1655, 1, 0, 0, 0, 1626, 1636, 5, 4, 0, 0, 1627, 1632, 3, 128, 64, - 0, 1628, 1629, 5, 6, 0, 0, 1629, 1631, 3, 128, 64, 0, 1630, 1628, 1, 0, - 0, 0, 1631, 1634, 1, 0, 0, 0, 1632, 1630, 1, 0, 0, 0, 1632, 1633, 1, 0, - 0, 0, 1633, 1637, 1, 0, 0, 0, 1634, 1632, 1, 0, 0, 0, 1635, 1637, 3, 130, - 65, 0, 1636, 1627, 1, 0, 0, 0, 1636, 1635, 1, 0, 0, 0, 1637, 1638, 1, 0, - 0, 0, 1638, 1643, 5, 5, 0, 0, 1639, 1641, 5, 34, 0, 0, 1640, 1639, 1, 0, - 0, 0, 1640, 1641, 1, 0, 0, 0, 1641, 1642, 1, 0, 0, 0, 1642, 1644, 3, 190, - 95, 0, 1643, 1640, 1, 0, 0, 0, 1643, 1644, 1, 0, 0, 0, 1644, 1655, 1, 0, - 0, 0, 1645, 1646, 5, 4, 0, 0, 1646, 1647, 3, 64, 32, 0, 1647, 1652, 5, - 5, 0, 0, 1648, 1650, 5, 34, 0, 0, 1649, 1648, 1, 0, 0, 0, 1649, 1650, 1, - 0, 0, 0, 1650, 1651, 1, 0, 0, 0, 1651, 1653, 3, 190, 95, 0, 1652, 1649, - 1, 0, 0, 0, 1652, 1653, 1, 0, 0, 0, 1653, 1655, 1, 0, 0, 0, 1654, 1610, - 1, 0, 0, 0, 1654, 1626, 1, 0, 0, 0, 1654, 1645, 1, 0, 0, 0, 1655, 129, - 1, 0, 0, 0, 1656, 1663, 3, 128, 64, 0, 1657, 1658, 3, 132, 66, 0, 1658, - 1659, 3, 128, 64, 0, 1659, 1660, 3, 134, 67, 0, 1660, 1662, 1, 0, 0, 0, - 1661, 1657, 1, 0, 0, 0, 1662, 1665, 1, 0, 0, 0, 1663, 1661, 1, 0, 0, 0, - 1663, 1664, 1, 0, 0, 0, 1664, 131, 1, 0, 0, 0, 1665, 1663, 1, 0, 0, 0, - 1666, 1680, 5, 6, 0, 0, 1667, 1669, 5, 102, 0, 0, 1668, 1667, 1, 0, 0, - 0, 1668, 1669, 1, 0, 0, 0, 1669, 1676, 1, 0, 0, 0, 1670, 1672, 5, 98, 0, - 0, 1671, 1673, 5, 114, 0, 0, 1672, 1671, 1, 0, 0, 0, 1672, 1673, 1, 0, - 0, 0, 1673, 1677, 1, 0, 0, 0, 1674, 1677, 5, 89, 0, 0, 1675, 1677, 5, 52, - 0, 0, 1676, 1670, 1, 0, 0, 0, 1676, 1674, 1, 0, 0, 0, 1676, 1675, 1, 0, - 0, 0, 1676, 1677, 1, 0, 0, 0, 1677, 1678, 1, 0, 0, 0, 1678, 1680, 5, 96, - 0, 0, 1679, 1666, 1, 0, 0, 0, 1679, 1668, 1, 0, 0, 0, 1680, 133, 1, 0, - 0, 0, 1681, 1682, 5, 110, 0, 0, 1682, 1696, 3, 94, 47, 0, 1683, 1684, 5, - 144, 0, 0, 1684, 1685, 5, 4, 0, 0, 1685, 1690, 3, 172, 86, 0, 1686, 1687, - 5, 6, 0, 0, 1687, 1689, 3, 172, 86, 0, 1688, 1686, 1, 0, 0, 0, 1689, 1692, - 1, 0, 0, 0, 1690, 1688, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1693, - 1, 0, 0, 0, 1692, 1690, 1, 0, 0, 0, 1693, 1694, 5, 5, 0, 0, 1694, 1696, - 1, 0, 0, 0, 1695, 1681, 1, 0, 0, 0, 1695, 1683, 1, 0, 0, 0, 1695, 1696, - 1, 0, 0, 0, 1696, 135, 1, 0, 0, 0, 1697, 1699, 5, 132, 0, 0, 1698, 1700, - 7, 4, 0, 0, 1699, 1698, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 1701, - 1, 0, 0, 0, 1701, 1706, 3, 126, 63, 0, 1702, 1703, 5, 6, 0, 0, 1703, 1705, - 3, 126, 63, 0, 1704, 1702, 1, 0, 0, 0, 1705, 1708, 1, 0, 0, 0, 1706, 1704, - 1, 0, 0, 0, 1706, 1707, 1, 0, 0, 0, 1707, 1721, 1, 0, 0, 0, 1708, 1706, - 1, 0, 0, 0, 1709, 1719, 5, 77, 0, 0, 1710, 1715, 3, 128, 64, 0, 1711, 1712, - 5, 6, 0, 0, 1712, 1714, 3, 128, 64, 0, 1713, 1711, 1, 0, 0, 0, 1714, 1717, - 1, 0, 0, 0, 1715, 1713, 1, 0, 0, 0, 1715, 1716, 1, 0, 0, 0, 1716, 1720, - 1, 0, 0, 0, 1717, 1715, 1, 0, 0, 0, 1718, 1720, 3, 130, 65, 0, 1719, 1710, - 1, 0, 0, 0, 1719, 1718, 1, 0, 0, 0, 1720, 1722, 1, 0, 0, 0, 1721, 1709, - 1, 0, 0, 0, 1721, 1722, 1, 0, 0, 0, 1722, 1725, 1, 0, 0, 0, 1723, 1724, - 5, 150, 0, 0, 1724, 1726, 3, 94, 47, 0, 1725, 1723, 1, 0, 0, 0, 1725, 1726, - 1, 0, 0, 0, 1726, 1741, 1, 0, 0, 0, 1727, 1728, 5, 80, 0, 0, 1728, 1729, - 5, 41, 0, 0, 1729, 1734, 3, 94, 47, 0, 1730, 1731, 5, 6, 0, 0, 1731, 1733, - 3, 94, 47, 0, 1732, 1730, 1, 0, 0, 0, 1733, 1736, 1, 0, 0, 0, 1734, 1732, - 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0, 1735, 1739, 1, 0, 0, 0, 1736, 1734, - 1, 0, 0, 0, 1737, 1738, 5, 81, 0, 0, 1738, 1740, 3, 94, 47, 0, 1739, 1737, - 1, 0, 0, 0, 1739, 1740, 1, 0, 0, 0, 1740, 1742, 1, 0, 0, 0, 1741, 1727, - 1, 0, 0, 0, 1741, 1742, 1, 0, 0, 0, 1742, 1772, 1, 0, 0, 0, 1743, 1744, - 5, 146, 0, 0, 1744, 1745, 5, 4, 0, 0, 1745, 1750, 3, 94, 47, 0, 1746, 1747, - 5, 6, 0, 0, 1747, 1749, 3, 94, 47, 0, 1748, 1746, 1, 0, 0, 0, 1749, 1752, - 1, 0, 0, 0, 1750, 1748, 1, 0, 0, 0, 1750, 1751, 1, 0, 0, 0, 1751, 1753, - 1, 0, 0, 0, 1752, 1750, 1, 0, 0, 0, 1753, 1768, 5, 5, 0, 0, 1754, 1755, - 5, 6, 0, 0, 1755, 1756, 5, 4, 0, 0, 1756, 1761, 3, 94, 47, 0, 1757, 1758, - 5, 6, 0, 0, 1758, 1760, 3, 94, 47, 0, 1759, 1757, 1, 0, 0, 0, 1760, 1763, - 1, 0, 0, 0, 1761, 1759, 1, 0, 0, 0, 1761, 1762, 1, 0, 0, 0, 1762, 1764, - 1, 0, 0, 0, 1763, 1761, 1, 0, 0, 0, 1764, 1765, 5, 5, 0, 0, 1765, 1767, - 1, 0, 0, 0, 1766, 1754, 1, 0, 0, 0, 1767, 1770, 1, 0, 0, 0, 1768, 1766, - 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1772, 1, 0, 0, 0, 1770, 1768, - 1, 0, 0, 0, 1771, 1697, 1, 0, 0, 0, 1771, 1743, 1, 0, 0, 0, 1772, 137, - 1, 0, 0, 0, 1773, 1779, 5, 141, 0, 0, 1774, 1775, 5, 141, 0, 0, 1775, 1779, - 5, 30, 0, 0, 1776, 1779, 5, 92, 0, 0, 1777, 1779, 5, 70, 0, 0, 1778, 1773, - 1, 0, 0, 0, 1778, 1774, 1, 0, 0, 0, 1778, 1776, 1, 0, 0, 0, 1778, 1777, - 1, 0, 0, 0, 1779, 139, 1, 0, 0, 0, 1780, 1792, 3, 166, 83, 0, 1781, 1782, - 5, 4, 0, 0, 1782, 1787, 3, 172, 86, 0, 1783, 1784, 5, 6, 0, 0, 1784, 1786, - 3, 172, 86, 0, 1785, 1783, 1, 0, 0, 0, 1786, 1789, 1, 0, 0, 0, 1787, 1785, - 1, 0, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 1790, 1, 0, 0, 0, 1789, 1787, - 1, 0, 0, 0, 1790, 1791, 5, 5, 0, 0, 1791, 1793, 1, 0, 0, 0, 1792, 1781, - 1, 0, 0, 0, 1792, 1793, 1, 0, 0, 0, 1793, 141, 1, 0, 0, 0, 1794, 1796, - 7, 8, 0, 0, 1795, 1794, 1, 0, 0, 0, 1795, 1796, 1, 0, 0, 0, 1796, 1797, - 1, 0, 0, 0, 1797, 1800, 5, 154, 0, 0, 1798, 1800, 5, 8, 0, 0, 1799, 1795, - 1, 0, 0, 0, 1799, 1798, 1, 0, 0, 0, 1800, 143, 1, 0, 0, 0, 1801, 1802, - 7, 14, 0, 0, 1802, 145, 1, 0, 0, 0, 1803, 1804, 7, 15, 0, 0, 1804, 147, - 1, 0, 0, 0, 1805, 1806, 5, 156, 0, 0, 1806, 149, 1, 0, 0, 0, 1807, 1810, - 3, 94, 47, 0, 1808, 1810, 3, 74, 37, 0, 1809, 1807, 1, 0, 0, 0, 1809, 1808, - 1, 0, 0, 0, 1810, 151, 1, 0, 0, 0, 1811, 1812, 7, 16, 0, 0, 1812, 153, - 1, 0, 0, 0, 1813, 1814, 7, 17, 0, 0, 1814, 155, 1, 0, 0, 0, 1815, 1817, - 9, 0, 0, 0, 1816, 1815, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1816, - 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 157, 1, 0, 0, 0, 1820, 1821, - 3, 194, 97, 0, 1821, 159, 1, 0, 0, 0, 1822, 1823, 3, 194, 97, 0, 1823, - 161, 1, 0, 0, 0, 1824, 1825, 3, 194, 97, 0, 1825, 163, 1, 0, 0, 0, 1826, - 1827, 3, 194, 97, 0, 1827, 165, 1, 0, 0, 0, 1828, 1829, 3, 194, 97, 0, - 1829, 167, 1, 0, 0, 0, 1830, 1831, 3, 194, 97, 0, 1831, 169, 1, 0, 0, 0, - 1832, 1833, 3, 194, 97, 0, 1833, 171, 1, 0, 0, 0, 1834, 1835, 3, 194, 97, - 0, 1835, 173, 1, 0, 0, 0, 1836, 1837, 3, 194, 97, 0, 1837, 175, 1, 0, 0, - 0, 1838, 1839, 3, 194, 97, 0, 1839, 177, 1, 0, 0, 0, 1840, 1841, 3, 194, - 97, 0, 1841, 179, 1, 0, 0, 0, 1842, 1843, 3, 194, 97, 0, 1843, 181, 1, - 0, 0, 0, 1844, 1845, 3, 194, 97, 0, 1845, 183, 1, 0, 0, 0, 1846, 1847, - 3, 194, 97, 0, 1847, 185, 1, 0, 0, 0, 1848, 1849, 3, 194, 97, 0, 1849, - 187, 1, 0, 0, 0, 1850, 1851, 3, 194, 97, 0, 1851, 189, 1, 0, 0, 0, 1852, - 1853, 3, 194, 97, 0, 1853, 191, 1, 0, 0, 0, 1854, 1855, 3, 194, 97, 0, - 1855, 193, 1, 0, 0, 0, 1856, 1864, 5, 153, 0, 0, 1857, 1864, 3, 154, 77, - 0, 1858, 1864, 5, 156, 0, 0, 1859, 1860, 5, 4, 0, 0, 1860, 1861, 3, 194, - 97, 0, 1861, 1862, 5, 5, 0, 0, 1862, 1864, 1, 0, 0, 0, 1863, 1856, 1, 0, - 0, 0, 1863, 1857, 1, 0, 0, 0, 1863, 1858, 1, 0, 0, 0, 1863, 1859, 1, 0, - 0, 0, 1864, 195, 1, 0, 0, 0, 260, 198, 200, 211, 218, 223, 229, 235, 237, - 269, 274, 279, 289, 292, 295, 298, 315, 319, 327, 331, 333, 338, 340, 344, - 351, 354, 359, 363, 368, 377, 380, 386, 388, 392, 398, 403, 414, 420, 424, - 430, 435, 444, 446, 452, 456, 459, 463, 469, 474, 481, 492, 495, 497, 503, - 509, 513, 520, 526, 532, 538, 543, 555, 560, 571, 576, 579, 586, 589, 596, - 605, 608, 614, 616, 620, 628, 633, 641, 646, 654, 659, 667, 672, 678, 685, - 688, 696, 706, 709, 715, 717, 720, 739, 745, 754, 759, 768, 779, 786, 792, - 798, 807, 814, 818, 820, 824, 831, 833, 837, 840, 847, 854, 857, 867, 870, - 876, 878, 882, 889, 892, 900, 910, 913, 919, 921, 925, 932, 941, 945, 947, - 951, 960, 965, 967, 976, 987, 994, 997, 1000, 1013, 1027, 1032, 1035, 1048, - 1062, 1067, 1076, 1079, 1085, 1087, 1094, 1096, 1103, 1110, 1115, 1119, - 1123, 1139, 1144, 1148, 1171, 1177, 1179, 1183, 1188, 1196, 1201, 1210, - 1217, 1221, 1237, 1240, 1248, 1257, 1261, 1266, 1296, 1308, 1313, 1325, - 1331, 1338, 1342, 1352, 1355, 1361, 1364, 1366, 1368, 1375, 1384, 1389, - 1401, 1405, 1409, 1413, 1420, 1423, 1425, 1435, 1442, 1445, 1449, 1460, - 1470, 1484, 1492, 1495, 1503, 1511, 1519, 1529, 1545, 1551, 1559, 1564, - 1567, 1572, 1581, 1586, 1600, 1603, 1605, 1610, 1614, 1617, 1624, 1632, - 1636, 1640, 1643, 1649, 1652, 1654, 1663, 1668, 1672, 1676, 1679, 1690, - 1695, 1699, 1706, 1715, 1719, 1721, 1725, 1734, 1739, 1741, 1750, 1761, - 1768, 1771, 1778, 1787, 1792, 1795, 1799, 1809, 1818, 1863, -} - deserializer := antlr.NewATNDeserializer(nil) - staticData.atn = deserializer.Deserialize(staticData.serializedATN) - atn := staticData.atn - staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) - decisionToDFA := staticData.decisionToDFA - for index, state := range atn.DecisionToState { - decisionToDFA[index] = antlr.NewDFA(state, index) - } -} - -// SqlParserInit initializes any static state used to implement SqlParser. By default the -// static state used to implement the parser is lazily initialized during the first call to -// NewSqlParser(). You can call this function if you wish to initialize the static state ahead -// of time. -func SqlParserInit() { - staticData := &sqlParserStaticData - staticData.once.Do(sqlParserInit) -} - -// NewSqlParser produces a new parser instance for the optional input antlr.TokenStream. -func NewSqlParser(input antlr.TokenStream) *SqlParser { - SqlParserInit() - this := new(SqlParser) - this.BaseParser = antlr.NewBaseParser(input) - staticData := &sqlParserStaticData - this.Interpreter = antlr.NewParserATNSimulator(this, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) - this.RuleNames = staticData.ruleNames - this.LiteralNames = staticData.literalNames - this.SymbolicNames = staticData.symbolicNames - this.GrammarFileName = "Sql.g4" - - return this -} - - -// SqlParser tokens. -const ( - SqlParserEOF = antlr.TokenEOF - SqlParserT__0 = 1 - SqlParserSCOL = 2 - SqlParserDOT = 3 - SqlParserOPEN_PAR = 4 - SqlParserCLOSE_PAR = 5 - SqlParserCOMMA = 6 - SqlParserASSIGN = 7 - SqlParserSTAR = 8 - SqlParserPLUS = 9 - SqlParserMINUS = 10 - SqlParserTILDE = 11 - SqlParserPIPE2 = 12 - SqlParserDIV = 13 - SqlParserMOD = 14 - SqlParserLT2 = 15 - SqlParserGT2 = 16 - SqlParserAMP = 17 - SqlParserPIPE = 18 - SqlParserLT = 19 - SqlParserLT_EQ = 20 - SqlParserGT = 21 - SqlParserGT_EQ = 22 - SqlParserEQ = 23 - SqlParserNOT_EQ1 = 24 - SqlParserNOT_EQ2 = 25 - SqlParserK_ABORT = 26 - SqlParserK_ACTION = 27 - SqlParserK_ADD = 28 - SqlParserK_AFTER = 29 - SqlParserK_ALL = 30 - SqlParserK_ALTER = 31 - SqlParserK_ANALYZE = 32 - SqlParserK_AND = 33 - SqlParserK_AS = 34 - SqlParserK_ASC = 35 - SqlParserK_ATTACH = 36 - SqlParserK_AUTOINCREMENT = 37 - SqlParserK_BEFORE = 38 - SqlParserK_BEGIN = 39 - SqlParserK_BETWEEN = 40 - SqlParserK_BY = 41 - SqlParserK_CASCADE = 42 - SqlParserK_CASE = 43 - SqlParserK_CAST = 44 - SqlParserK_CHECK = 45 - SqlParserK_COLLATE = 46 - SqlParserK_COLUMN = 47 - SqlParserK_COMMIT = 48 - SqlParserK_CONFLICT = 49 - SqlParserK_CONSTRAINT = 50 - SqlParserK_CREATE = 51 - SqlParserK_CROSS = 52 - SqlParserK_CURRENT_DATE = 53 - SqlParserK_CURRENT_TIME = 54 - SqlParserK_CURRENT_TIMESTAMP = 55 - SqlParserK_DATABASE = 56 - SqlParserK_DEFAULT = 57 - SqlParserK_DEFERRABLE = 58 - SqlParserK_DEFERRED = 59 - SqlParserK_DELETE = 60 - SqlParserK_DESC = 61 - SqlParserK_DETACH = 62 - SqlParserK_DISTINCT = 63 - SqlParserK_DROP = 64 - SqlParserK_EACH = 65 - SqlParserK_ELSE = 66 - SqlParserK_END = 67 - SqlParserK_ENABLE = 68 - SqlParserK_ESCAPE = 69 - SqlParserK_EXCEPT = 70 - SqlParserK_EXCLUSIVE = 71 - SqlParserK_EXISTS = 72 - SqlParserK_EXPLAIN = 73 - SqlParserK_FAIL = 74 - SqlParserK_FOR = 75 - SqlParserK_FOREIGN = 76 - SqlParserK_FROM = 77 - SqlParserK_FULL = 78 - SqlParserK_GLOB = 79 - SqlParserK_GROUP = 80 - SqlParserK_HAVING = 81 - SqlParserK_IF = 82 - SqlParserK_IGNORE = 83 - SqlParserK_IMMEDIATE = 84 - SqlParserK_IN = 85 - SqlParserK_INDEX = 86 - SqlParserK_INDEXED = 87 - SqlParserK_INITIALLY = 88 - SqlParserK_INNER = 89 - SqlParserK_INSERT = 90 - SqlParserK_INSTEAD = 91 - SqlParserK_INTERSECT = 92 - SqlParserK_INTO = 93 - SqlParserK_IS = 94 - SqlParserK_ISNULL = 95 - SqlParserK_JOIN = 96 - SqlParserK_KEY = 97 - SqlParserK_LEFT = 98 - SqlParserK_LIKE = 99 - SqlParserK_LIMIT = 100 - SqlParserK_MATCH = 101 - SqlParserK_NATURAL = 102 - SqlParserK_NEXTVAL = 103 - SqlParserK_NO = 104 - SqlParserK_NOT = 105 - SqlParserK_NOTNULL = 106 - SqlParserK_NULL = 107 - SqlParserK_OF = 108 - SqlParserK_OFFSET = 109 - SqlParserK_ON = 110 - SqlParserK_ONLY = 111 - SqlParserK_OR = 112 - SqlParserK_ORDER = 113 - SqlParserK_OUTER = 114 - SqlParserK_PLAN = 115 - SqlParserK_PRAGMA = 116 - SqlParserK_PRIMARY = 117 - SqlParserK_QUERY = 118 - SqlParserK_RAISE = 119 - SqlParserK_RECURSIVE = 120 - SqlParserK_REFERENCES = 121 - SqlParserK_REGEXP = 122 - SqlParserK_REINDEX = 123 - SqlParserK_RELEASE = 124 - SqlParserK_RENAME = 125 - SqlParserK_REPLACE = 126 - SqlParserK_RESTRICT = 127 - SqlParserK_RIGHT = 128 - SqlParserK_ROLLBACK = 129 - SqlParserK_ROW = 130 - SqlParserK_SAVEPOINT = 131 - SqlParserK_SELECT = 132 - SqlParserK_SET = 133 - SqlParserK_TABLE = 134 - SqlParserK_TEMP = 135 - SqlParserK_TEMPORARY = 136 - SqlParserK_THEN = 137 - SqlParserK_TO = 138 - SqlParserK_TRANSACTION = 139 - SqlParserK_TRIGGER = 140 - SqlParserK_UNION = 141 - SqlParserK_UNIQUE = 142 - SqlParserK_UPDATE = 143 - SqlParserK_USING = 144 - SqlParserK_VACUUM = 145 - SqlParserK_VALUES = 146 - SqlParserK_VIEW = 147 - SqlParserK_VIRTUAL = 148 - SqlParserK_WHEN = 149 - SqlParserK_WHERE = 150 - SqlParserK_WITH = 151 - SqlParserK_WITHOUT = 152 - SqlParserIDENTIFIER = 153 - SqlParserNUMERIC_LITERAL = 154 - SqlParserBIND_PARAMETER = 155 - SqlParserSTRING_LITERAL = 156 - SqlParserBLOB_LITERAL = 157 - SqlParserSINGLE_LINE_COMMENT = 158 - SqlParserMULTILINE_COMMENT = 159 - SqlParserSPACES = 160 - SqlParserUNEXPECTED_CHAR = 161 -) - -// SqlParser rules. -const ( - SqlParserRULE_parse = 0 - SqlParserRULE_error = 1 - SqlParserRULE_sql_stmt_list = 2 - SqlParserRULE_sql_stmt = 3 - SqlParserRULE_alter_table_stmt = 4 - SqlParserRULE_alter_table_add_constraint = 5 - SqlParserRULE_alter_table_add = 6 - SqlParserRULE_analyze_stmt = 7 - SqlParserRULE_attach_stmt = 8 - SqlParserRULE_begin_stmt = 9 - SqlParserRULE_commit_stmt = 10 - SqlParserRULE_compound_select_stmt = 11 - SqlParserRULE_create_index_stmt = 12 - SqlParserRULE_create_table_stmt = 13 - SqlParserRULE_create_trigger_stmt = 14 - SqlParserRULE_create_view_stmt = 15 - SqlParserRULE_create_virtual_table_stmt = 16 - SqlParserRULE_delete_stmt = 17 - SqlParserRULE_delete_stmt_limited = 18 - SqlParserRULE_detach_stmt = 19 - SqlParserRULE_drop_index_stmt = 20 - SqlParserRULE_drop_table_stmt = 21 - SqlParserRULE_drop_trigger_stmt = 22 - SqlParserRULE_drop_view_stmt = 23 - SqlParserRULE_factored_select_stmt = 24 - SqlParserRULE_insert_stmt = 25 - SqlParserRULE_pragma_stmt = 26 - SqlParserRULE_reindex_stmt = 27 - SqlParserRULE_release_stmt = 28 - SqlParserRULE_rollback_stmt = 29 - SqlParserRULE_savepoint_stmt = 30 - SqlParserRULE_simple_select_stmt = 31 - SqlParserRULE_select_stmt = 32 - SqlParserRULE_select_or_values = 33 - SqlParserRULE_update_stmt = 34 - SqlParserRULE_update_stmt_limited = 35 - SqlParserRULE_vacuum_stmt = 36 - SqlParserRULE_column_def = 37 - SqlParserRULE_type_name = 38 - SqlParserRULE_column_constraint = 39 - SqlParserRULE_column_constraint_primary_key = 40 - SqlParserRULE_column_constraint_foreign_key = 41 - SqlParserRULE_column_constraint_not_null = 42 - SqlParserRULE_column_constraint_null = 43 - SqlParserRULE_column_default = 44 - SqlParserRULE_column_default_value = 45 - SqlParserRULE_conflict_clause = 46 - SqlParserRULE_expr = 47 - SqlParserRULE_foreign_key_clause = 48 - SqlParserRULE_fk_target_column_name = 49 - SqlParserRULE_raise_function = 50 - SqlParserRULE_indexed_column = 51 - SqlParserRULE_table_constraint = 52 - SqlParserRULE_table_constraint_primary_key = 53 - SqlParserRULE_table_constraint_foreign_key = 54 - SqlParserRULE_table_constraint_unique = 55 - SqlParserRULE_table_constraint_key = 56 - SqlParserRULE_fk_origin_column_name = 57 - SqlParserRULE_with_clause = 58 - SqlParserRULE_qualified_table_name = 59 - SqlParserRULE_ordering_term = 60 - SqlParserRULE_pragma_value = 61 - SqlParserRULE_common_table_expression = 62 - SqlParserRULE_result_column = 63 - SqlParserRULE_table_or_subquery = 64 - SqlParserRULE_join_clause = 65 - SqlParserRULE_join_operator = 66 - SqlParserRULE_join_constraint = 67 - SqlParserRULE_select_core = 68 - SqlParserRULE_compound_operator = 69 - SqlParserRULE_cte_table_name = 70 - SqlParserRULE_signed_number = 71 - SqlParserRULE_literal_value = 72 - SqlParserRULE_unary_operator = 73 - SqlParserRULE_error_message = 74 - SqlParserRULE_module_argument = 75 - SqlParserRULE_column_alias = 76 - SqlParserRULE_keyword = 77 - SqlParserRULE_unknown = 78 - SqlParserRULE_name = 79 - SqlParserRULE_function_name = 80 - SqlParserRULE_database_name = 81 - SqlParserRULE_source_table_name = 82 - SqlParserRULE_table_name = 83 - SqlParserRULE_table_or_index_name = 84 - SqlParserRULE_new_table_name = 85 - SqlParserRULE_column_name = 86 - SqlParserRULE_collation_name = 87 - SqlParserRULE_foreign_table = 88 - SqlParserRULE_index_name = 89 - SqlParserRULE_trigger_name = 90 - SqlParserRULE_view_name = 91 - SqlParserRULE_module_name = 92 - SqlParserRULE_pragma_name = 93 - SqlParserRULE_savepoint_name = 94 - SqlParserRULE_table_alias = 95 - SqlParserRULE_transaction_name = 96 - SqlParserRULE_any_name = 97 -) - -// IParseContext is an interface to support dynamic dispatch. -type IParseContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsParseContext differentiates from other interfaces. - IsParseContext() -} - -type ParseContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyParseContext() *ParseContext { - var p = new(ParseContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_parse - return p -} - -func (*ParseContext) IsParseContext() {} - -func NewParseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ParseContext { - var p = new(ParseContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_parse - - return p -} - -func (s *ParseContext) GetParser() antlr.Parser { return s.parser } - -func (s *ParseContext) EOF() antlr.TerminalNode { - return s.GetToken(SqlParserEOF, 0) -} - -func (s *ParseContext) AllSql_stmt_list() []ISql_stmt_listContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ISql_stmt_listContext); ok { - len++ - } - } - - tst := make([]ISql_stmt_listContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ISql_stmt_listContext); ok { - tst[i] = t.(ISql_stmt_listContext) - i++ - } - } - - return tst -} - -func (s *ParseContext) Sql_stmt_list(i int) ISql_stmt_listContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISql_stmt_listContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ISql_stmt_listContext) -} - -func (s *ParseContext) AllError() []IErrorContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IErrorContext); ok { - len++ - } - } - - tst := make([]IErrorContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IErrorContext); ok { - tst[i] = t.(IErrorContext) - i++ - } - } - - return tst -} - -func (s *ParseContext) Error(i int) IErrorContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IErrorContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IErrorContext) -} - -func (s *ParseContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *ParseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *ParseContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterParse(s) - } -} - -func (s *ParseContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitParse(s) - } -} - - - - -func (p *SqlParser) Parse() (localctx IParseContext) { - this := p - _ = this - - localctx = NewParseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 0, SqlParserRULE_parse) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(200) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserSCOL || _la == SqlParserK_ALTER || ((((_la - 32)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 32))) & ((1 << (SqlParserK_ANALYZE - 32)) | (1 << (SqlParserK_ATTACH - 32)) | (1 << (SqlParserK_BEGIN - 32)) | (1 << (SqlParserK_COMMIT - 32)) | (1 << (SqlParserK_CREATE - 32)) | (1 << (SqlParserK_DELETE - 32)) | (1 << (SqlParserK_DETACH - 32)))) != 0) || ((((_la - 64)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 64))) & ((1 << (SqlParserK_DROP - 64)) | (1 << (SqlParserK_END - 64)) | (1 << (SqlParserK_EXPLAIN - 64)) | (1 << (SqlParserK_INSERT - 64)))) != 0) || ((((_la - 116)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 116))) & ((1 << (SqlParserK_PRAGMA - 116)) | (1 << (SqlParserK_REINDEX - 116)) | (1 << (SqlParserK_RELEASE - 116)) | (1 << (SqlParserK_REPLACE - 116)) | (1 << (SqlParserK_ROLLBACK - 116)) | (1 << (SqlParserK_SAVEPOINT - 116)) | (1 << (SqlParserK_SELECT - 116)) | (1 << (SqlParserK_UPDATE - 116)) | (1 << (SqlParserK_VACUUM - 116)) | (1 << (SqlParserK_VALUES - 116)))) != 0) || _la == SqlParserK_WITH || _la == SqlParserUNEXPECTED_CHAR { - p.SetState(198) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserSCOL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_ATTACH, SqlParserK_BEGIN, SqlParserK_COMMIT, SqlParserK_CREATE, SqlParserK_DELETE, SqlParserK_DETACH, SqlParserK_DROP, SqlParserK_END, SqlParserK_EXPLAIN, SqlParserK_INSERT, SqlParserK_PRAGMA, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_REPLACE, SqlParserK_ROLLBACK, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_UPDATE, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_WITH: - { - p.SetState(196) - p.Sql_stmt_list() - } - - - case SqlParserUNEXPECTED_CHAR: - { - p.SetState(197) - p.Error() - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - p.SetState(202) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(203) - p.Match(SqlParserEOF) - } - - - - return localctx -} - - -// IErrorContext is an interface to support dynamic dispatch. -type IErrorContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // Get_UNEXPECTED_CHAR returns the _UNEXPECTED_CHAR token. - Get_UNEXPECTED_CHAR() antlr.Token - - - // Set_UNEXPECTED_CHAR sets the _UNEXPECTED_CHAR token. - Set_UNEXPECTED_CHAR(antlr.Token) - - - // IsErrorContext differentiates from other interfaces. - IsErrorContext() -} - -type ErrorContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser - _UNEXPECTED_CHAR antlr.Token -} - -func NewEmptyErrorContext() *ErrorContext { - var p = new(ErrorContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_error - return p -} - -func (*ErrorContext) IsErrorContext() {} - -func NewErrorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ErrorContext { - var p = new(ErrorContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_error - - return p -} - -func (s *ErrorContext) GetParser() antlr.Parser { return s.parser } - -func (s *ErrorContext) Get_UNEXPECTED_CHAR() antlr.Token { return s._UNEXPECTED_CHAR } - - -func (s *ErrorContext) Set_UNEXPECTED_CHAR(v antlr.Token) { s._UNEXPECTED_CHAR = v } - - -func (s *ErrorContext) UNEXPECTED_CHAR() antlr.TerminalNode { - return s.GetToken(SqlParserUNEXPECTED_CHAR, 0) -} - -func (s *ErrorContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *ErrorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *ErrorContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterError(s) - } -} - -func (s *ErrorContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitError(s) - } -} - - - - -func (p *SqlParser) Error() (localctx IErrorContext) { - this := p - _ = this - - localctx = NewErrorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 2, SqlParserRULE_error) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(205) - - var _m = p.Match(SqlParserUNEXPECTED_CHAR) - - localctx.(*ErrorContext)._UNEXPECTED_CHAR = _m - } - - - - - - return localctx -} - - -// ISql_stmt_listContext is an interface to support dynamic dispatch. -type ISql_stmt_listContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSql_stmt_listContext differentiates from other interfaces. - IsSql_stmt_listContext() -} - -type Sql_stmt_listContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySql_stmt_listContext() *Sql_stmt_listContext { - var p = new(Sql_stmt_listContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_sql_stmt_list - return p -} - -func (*Sql_stmt_listContext) IsSql_stmt_listContext() {} - -func NewSql_stmt_listContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Sql_stmt_listContext { - var p = new(Sql_stmt_listContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_sql_stmt_list - - return p -} - -func (s *Sql_stmt_listContext) GetParser() antlr.Parser { return s.parser } - -func (s *Sql_stmt_listContext) AllSql_stmt() []ISql_stmtContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ISql_stmtContext); ok { - len++ - } - } - - tst := make([]ISql_stmtContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ISql_stmtContext); ok { - tst[i] = t.(ISql_stmtContext) - i++ - } - } - - return tst -} - -func (s *Sql_stmt_listContext) Sql_stmt(i int) ISql_stmtContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISql_stmtContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ISql_stmtContext) -} - -func (s *Sql_stmt_listContext) AllSCOL() []antlr.TerminalNode { - return s.GetTokens(SqlParserSCOL) -} - -func (s *Sql_stmt_listContext) SCOL(i int) antlr.TerminalNode { - return s.GetToken(SqlParserSCOL, i) -} - -func (s *Sql_stmt_listContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Sql_stmt_listContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Sql_stmt_listContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSql_stmt_list(s) - } -} - -func (s *Sql_stmt_listContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSql_stmt_list(s) - } -} - - - - -func (p *SqlParser) Sql_stmt_list() (localctx ISql_stmt_listContext) { - this := p - _ = this - - localctx = NewSql_stmt_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 4, SqlParserRULE_sql_stmt_list) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.EnterOuterAlt(localctx, 1) - p.SetState(211) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserSCOL { - { - p.SetState(208) - p.Match(SqlParserSCOL) - } - - - p.SetState(213) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(214) - p.Sql_stmt() - } - p.SetState(223) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 4, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - p.SetState(216) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for ok := true; ok; ok = _la == SqlParserSCOL { - { - p.SetState(215) - p.Match(SqlParserSCOL) - } - - - p.SetState(218) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(220) - p.Sql_stmt() - } - - - } - p.SetState(225) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 4, p.GetParserRuleContext()) - } - p.SetState(229) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 5, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - { - p.SetState(226) - p.Match(SqlParserSCOL) - } - - - } - p.SetState(231) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 5, p.GetParserRuleContext()) - } - - - - return localctx -} - - -// ISql_stmtContext is an interface to support dynamic dispatch. -type ISql_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSql_stmtContext differentiates from other interfaces. - IsSql_stmtContext() -} - -type Sql_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySql_stmtContext() *Sql_stmtContext { - var p = new(Sql_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_sql_stmt - return p -} - -func (*Sql_stmtContext) IsSql_stmtContext() {} - -func NewSql_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Sql_stmtContext { - var p = new(Sql_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_sql_stmt - - return p -} - -func (s *Sql_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Sql_stmtContext) Alter_table_stmt() IAlter_table_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAlter_table_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAlter_table_stmtContext) -} - -func (s *Sql_stmtContext) Analyze_stmt() IAnalyze_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAnalyze_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAnalyze_stmtContext) -} - -func (s *Sql_stmtContext) Attach_stmt() IAttach_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAttach_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAttach_stmtContext) -} - -func (s *Sql_stmtContext) Begin_stmt() IBegin_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IBegin_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IBegin_stmtContext) -} - -func (s *Sql_stmtContext) Commit_stmt() ICommit_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICommit_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICommit_stmtContext) -} - -func (s *Sql_stmtContext) Compound_select_stmt() ICompound_select_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICompound_select_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICompound_select_stmtContext) -} - -func (s *Sql_stmtContext) Create_index_stmt() ICreate_index_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICreate_index_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICreate_index_stmtContext) -} - -func (s *Sql_stmtContext) Create_table_stmt() ICreate_table_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICreate_table_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICreate_table_stmtContext) -} - -func (s *Sql_stmtContext) Create_trigger_stmt() ICreate_trigger_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICreate_trigger_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICreate_trigger_stmtContext) -} - -func (s *Sql_stmtContext) Create_view_stmt() ICreate_view_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICreate_view_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICreate_view_stmtContext) -} - -func (s *Sql_stmtContext) Create_virtual_table_stmt() ICreate_virtual_table_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICreate_virtual_table_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICreate_virtual_table_stmtContext) -} - -func (s *Sql_stmtContext) Delete_stmt() IDelete_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDelete_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDelete_stmtContext) -} - -func (s *Sql_stmtContext) Delete_stmt_limited() IDelete_stmt_limitedContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDelete_stmt_limitedContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDelete_stmt_limitedContext) -} - -func (s *Sql_stmtContext) Detach_stmt() IDetach_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDetach_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDetach_stmtContext) -} - -func (s *Sql_stmtContext) Drop_index_stmt() IDrop_index_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDrop_index_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDrop_index_stmtContext) -} - -func (s *Sql_stmtContext) Drop_table_stmt() IDrop_table_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDrop_table_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDrop_table_stmtContext) -} - -func (s *Sql_stmtContext) Drop_trigger_stmt() IDrop_trigger_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDrop_trigger_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDrop_trigger_stmtContext) -} - -func (s *Sql_stmtContext) Drop_view_stmt() IDrop_view_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDrop_view_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDrop_view_stmtContext) -} - -func (s *Sql_stmtContext) Factored_select_stmt() IFactored_select_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IFactored_select_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IFactored_select_stmtContext) -} - -func (s *Sql_stmtContext) Insert_stmt() IInsert_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IInsert_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IInsert_stmtContext) -} - -func (s *Sql_stmtContext) Pragma_stmt() IPragma_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IPragma_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IPragma_stmtContext) -} - -func (s *Sql_stmtContext) Reindex_stmt() IReindex_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IReindex_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IReindex_stmtContext) -} - -func (s *Sql_stmtContext) Release_stmt() IRelease_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IRelease_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IRelease_stmtContext) -} - -func (s *Sql_stmtContext) Rollback_stmt() IRollback_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IRollback_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IRollback_stmtContext) -} - -func (s *Sql_stmtContext) Savepoint_stmt() ISavepoint_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISavepoint_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISavepoint_stmtContext) -} - -func (s *Sql_stmtContext) Simple_select_stmt() ISimple_select_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISimple_select_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISimple_select_stmtContext) -} - -func (s *Sql_stmtContext) Select_stmt() ISelect_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISelect_stmtContext) -} - -func (s *Sql_stmtContext) Update_stmt() IUpdate_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IUpdate_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IUpdate_stmtContext) -} - -func (s *Sql_stmtContext) Update_stmt_limited() IUpdate_stmt_limitedContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IUpdate_stmt_limitedContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IUpdate_stmt_limitedContext) -} - -func (s *Sql_stmtContext) Vacuum_stmt() IVacuum_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IVacuum_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IVacuum_stmtContext) -} - -func (s *Sql_stmtContext) K_EXPLAIN() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXPLAIN, 0) -} - -func (s *Sql_stmtContext) K_QUERY() antlr.TerminalNode { - return s.GetToken(SqlParserK_QUERY, 0) -} - -func (s *Sql_stmtContext) K_PLAN() antlr.TerminalNode { - return s.GetToken(SqlParserK_PLAN, 0) -} - -func (s *Sql_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Sql_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Sql_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSql_stmt(s) - } -} - -func (s *Sql_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSql_stmt(s) - } -} - - - - -func (p *SqlParser) Sql_stmt() (localctx ISql_stmtContext) { - this := p - _ = this - - localctx = NewSql_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 6, SqlParserRULE_sql_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(237) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_EXPLAIN { - { - p.SetState(232) - p.Match(SqlParserK_EXPLAIN) - } - p.SetState(235) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_QUERY { - { - p.SetState(233) - p.Match(SqlParserK_QUERY) - } - { - p.SetState(234) - p.Match(SqlParserK_PLAN) - } - - } - - } - p.SetState(269) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 8, p.GetParserRuleContext()) { - case 1: - { - p.SetState(239) - p.Alter_table_stmt() - } - - - case 2: - { - p.SetState(240) - p.Analyze_stmt() - } - - - case 3: - { - p.SetState(241) - p.Attach_stmt() - } - - - case 4: - { - p.SetState(242) - p.Begin_stmt() - } - - - case 5: - { - p.SetState(243) - p.Commit_stmt() - } - - - case 6: - { - p.SetState(244) - p.Compound_select_stmt() - } - - - case 7: - { - p.SetState(245) - p.Create_index_stmt() - } - - - case 8: - { - p.SetState(246) - p.Create_table_stmt() - } - - - case 9: - { - p.SetState(247) - p.Create_trigger_stmt() - } - - - case 10: - { - p.SetState(248) - p.Create_view_stmt() - } - - - case 11: - { - p.SetState(249) - p.Create_virtual_table_stmt() - } - - - case 12: - { - p.SetState(250) - p.Delete_stmt() - } - - - case 13: - { - p.SetState(251) - p.Delete_stmt_limited() - } - - - case 14: - { - p.SetState(252) - p.Detach_stmt() - } - - - case 15: - { - p.SetState(253) - p.Drop_index_stmt() - } - - - case 16: - { - p.SetState(254) - p.Drop_table_stmt() - } - - - case 17: - { - p.SetState(255) - p.Drop_trigger_stmt() - } - - - case 18: - { - p.SetState(256) - p.Drop_view_stmt() - } - - - case 19: - { - p.SetState(257) - p.Factored_select_stmt() - } - - - case 20: - { - p.SetState(258) - p.Insert_stmt() - } - - - case 21: - { - p.SetState(259) - p.Pragma_stmt() - } - - - case 22: - { - p.SetState(260) - p.Reindex_stmt() - } - - - case 23: - { - p.SetState(261) - p.Release_stmt() - } - - - case 24: - { - p.SetState(262) - p.Rollback_stmt() - } - - - case 25: - { - p.SetState(263) - p.Savepoint_stmt() - } - - - case 26: - { - p.SetState(264) - p.Simple_select_stmt() - } - - - case 27: - { - p.SetState(265) - p.Select_stmt() - } - - - case 28: - { - p.SetState(266) - p.Update_stmt() - } - - - case 29: - { - p.SetState(267) - p.Update_stmt_limited() - } - - - case 30: - { - p.SetState(268) - p.Vacuum_stmt() - } - - } - - - - return localctx -} - - -// IAlter_table_stmtContext is an interface to support dynamic dispatch. -type IAlter_table_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsAlter_table_stmtContext differentiates from other interfaces. - IsAlter_table_stmtContext() -} - -type Alter_table_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyAlter_table_stmtContext() *Alter_table_stmtContext { - var p = new(Alter_table_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_alter_table_stmt - return p -} - -func (*Alter_table_stmtContext) IsAlter_table_stmtContext() {} - -func NewAlter_table_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Alter_table_stmtContext { - var p = new(Alter_table_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_alter_table_stmt - - return p -} - -func (s *Alter_table_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Alter_table_stmtContext) K_ALTER() antlr.TerminalNode { - return s.GetToken(SqlParserK_ALTER, 0) -} - -func (s *Alter_table_stmtContext) K_TABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_TABLE, 0) -} - -func (s *Alter_table_stmtContext) Source_table_name() ISource_table_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISource_table_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISource_table_nameContext) -} - -func (s *Alter_table_stmtContext) K_RENAME() antlr.TerminalNode { - return s.GetToken(SqlParserK_RENAME, 0) -} - -func (s *Alter_table_stmtContext) K_TO() antlr.TerminalNode { - return s.GetToken(SqlParserK_TO, 0) -} - -func (s *Alter_table_stmtContext) New_table_name() INew_table_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INew_table_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(INew_table_nameContext) -} - -func (s *Alter_table_stmtContext) Alter_table_add() IAlter_table_addContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAlter_table_addContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAlter_table_addContext) -} - -func (s *Alter_table_stmtContext) Alter_table_add_constraint() IAlter_table_add_constraintContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAlter_table_add_constraintContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAlter_table_add_constraintContext) -} - -func (s *Alter_table_stmtContext) K_ADD() antlr.TerminalNode { - return s.GetToken(SqlParserK_ADD, 0) -} - -func (s *Alter_table_stmtContext) Column_def() IColumn_defContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_defContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_defContext) -} - -func (s *Alter_table_stmtContext) K_ONLY() antlr.TerminalNode { - return s.GetToken(SqlParserK_ONLY, 0) -} - -func (s *Alter_table_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Alter_table_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Alter_table_stmtContext) K_ENABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_ENABLE, 0) -} - -func (s *Alter_table_stmtContext) Unknown() IUnknownContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IUnknownContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IUnknownContext) -} - -func (s *Alter_table_stmtContext) K_COLUMN() antlr.TerminalNode { - return s.GetToken(SqlParserK_COLUMN, 0) -} - -func (s *Alter_table_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Alter_table_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Alter_table_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterAlter_table_stmt(s) - } -} - -func (s *Alter_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitAlter_table_stmt(s) - } -} - - - - -func (p *SqlParser) Alter_table_stmt() (localctx IAlter_table_stmtContext) { - this := p - _ = this - - localctx = NewAlter_table_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 8, SqlParserRULE_alter_table_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(271) - p.Match(SqlParserK_ALTER) - } - { - p.SetState(272) - p.Match(SqlParserK_TABLE) - } - p.SetState(274) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_ONLY { - { - p.SetState(273) - p.Match(SqlParserK_ONLY) - } - - } - p.SetState(279) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 10, p.GetParserRuleContext()) == 1 { - { - p.SetState(276) - p.Database_name() - } - { - p.SetState(277) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(281) - p.Source_table_name() - } - p.SetState(292) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 12, p.GetParserRuleContext()) { - case 1: - { - p.SetState(282) - p.Match(SqlParserK_RENAME) - } - { - p.SetState(283) - p.Match(SqlParserK_TO) - } - { - p.SetState(284) - p.New_table_name() - } - - - case 2: - { - p.SetState(285) - p.Alter_table_add() - } - - - case 3: - { - p.SetState(286) - p.Alter_table_add_constraint() - } - - - case 4: - { - p.SetState(287) - p.Match(SqlParserK_ADD) - } - p.SetState(289) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 11, p.GetParserRuleContext()) == 1 { - { - p.SetState(288) - p.Match(SqlParserK_COLUMN) - } - - - } - { - p.SetState(291) - p.Column_def() - } - - } - p.SetState(295) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 13, p.GetParserRuleContext()) == 1 { - { - p.SetState(294) - p.Match(SqlParserK_ENABLE) - } - - - } - p.SetState(298) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 14, p.GetParserRuleContext()) == 1 { - { - p.SetState(297) - p.Unknown() - } - - - } - - - - return localctx -} - - -// IAlter_table_add_constraintContext is an interface to support dynamic dispatch. -type IAlter_table_add_constraintContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsAlter_table_add_constraintContext differentiates from other interfaces. - IsAlter_table_add_constraintContext() -} - -type Alter_table_add_constraintContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyAlter_table_add_constraintContext() *Alter_table_add_constraintContext { - var p = new(Alter_table_add_constraintContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_alter_table_add_constraint - return p -} - -func (*Alter_table_add_constraintContext) IsAlter_table_add_constraintContext() {} - -func NewAlter_table_add_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Alter_table_add_constraintContext { - var p = new(Alter_table_add_constraintContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_alter_table_add_constraint - - return p -} - -func (s *Alter_table_add_constraintContext) GetParser() antlr.Parser { return s.parser } - -func (s *Alter_table_add_constraintContext) K_ADD() antlr.TerminalNode { - return s.GetToken(SqlParserK_ADD, 0) -} - -func (s *Alter_table_add_constraintContext) K_CONSTRAINT() antlr.TerminalNode { - return s.GetToken(SqlParserK_CONSTRAINT, 0) -} - -func (s *Alter_table_add_constraintContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Alter_table_add_constraintContext) Table_constraint() ITable_constraintContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_constraintContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_constraintContext) -} - -func (s *Alter_table_add_constraintContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Alter_table_add_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Alter_table_add_constraintContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterAlter_table_add_constraint(s) - } -} - -func (s *Alter_table_add_constraintContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitAlter_table_add_constraint(s) - } -} - - - - -func (p *SqlParser) Alter_table_add_constraint() (localctx IAlter_table_add_constraintContext) { - this := p - _ = this - - localctx = NewAlter_table_add_constraintContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 10, SqlParserRULE_alter_table_add_constraint) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(300) - p.Match(SqlParserK_ADD) - } - { - p.SetState(301) - p.Match(SqlParserK_CONSTRAINT) - } - { - p.SetState(302) - p.Any_name() - } - { - p.SetState(303) - p.Table_constraint() - } - - - - return localctx -} - - -// IAlter_table_addContext is an interface to support dynamic dispatch. -type IAlter_table_addContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsAlter_table_addContext differentiates from other interfaces. - IsAlter_table_addContext() -} - -type Alter_table_addContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyAlter_table_addContext() *Alter_table_addContext { - var p = new(Alter_table_addContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_alter_table_add - return p -} - -func (*Alter_table_addContext) IsAlter_table_addContext() {} - -func NewAlter_table_addContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Alter_table_addContext { - var p = new(Alter_table_addContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_alter_table_add - - return p -} - -func (s *Alter_table_addContext) GetParser() antlr.Parser { return s.parser } - -func (s *Alter_table_addContext) K_ADD() antlr.TerminalNode { - return s.GetToken(SqlParserK_ADD, 0) -} - -func (s *Alter_table_addContext) Table_constraint() ITable_constraintContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_constraintContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_constraintContext) -} - -func (s *Alter_table_addContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Alter_table_addContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Alter_table_addContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterAlter_table_add(s) - } -} - -func (s *Alter_table_addContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitAlter_table_add(s) - } -} - - - - -func (p *SqlParser) Alter_table_add() (localctx IAlter_table_addContext) { - this := p - _ = this - - localctx = NewAlter_table_addContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 12, SqlParserRULE_alter_table_add) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(305) - p.Match(SqlParserK_ADD) - } - { - p.SetState(306) - p.Table_constraint() - } - - - - return localctx -} - - -// IAnalyze_stmtContext is an interface to support dynamic dispatch. -type IAnalyze_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsAnalyze_stmtContext differentiates from other interfaces. - IsAnalyze_stmtContext() -} - -type Analyze_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyAnalyze_stmtContext() *Analyze_stmtContext { - var p = new(Analyze_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_analyze_stmt - return p -} - -func (*Analyze_stmtContext) IsAnalyze_stmtContext() {} - -func NewAnalyze_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Analyze_stmtContext { - var p = new(Analyze_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_analyze_stmt - - return p -} - -func (s *Analyze_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Analyze_stmtContext) K_ANALYZE() antlr.TerminalNode { - return s.GetToken(SqlParserK_ANALYZE, 0) -} - -func (s *Analyze_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Analyze_stmtContext) Table_or_index_name() ITable_or_index_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_or_index_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_or_index_nameContext) -} - -func (s *Analyze_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Analyze_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Analyze_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Analyze_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterAnalyze_stmt(s) - } -} - -func (s *Analyze_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitAnalyze_stmt(s) - } -} - - - - -func (p *SqlParser) Analyze_stmt() (localctx IAnalyze_stmtContext) { - this := p - _ = this - - localctx = NewAnalyze_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 14, SqlParserRULE_analyze_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(308) - p.Match(SqlParserK_ANALYZE) - } - p.SetState(315) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 15, p.GetParserRuleContext()) == 1 { - { - p.SetState(309) - p.Database_name() - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 15, p.GetParserRuleContext()) == 2 { - { - p.SetState(310) - p.Table_or_index_name() - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 15, p.GetParserRuleContext()) == 3 { - { - p.SetState(311) - p.Database_name() - } - { - p.SetState(312) - p.Match(SqlParserDOT) - } - { - p.SetState(313) - p.Table_or_index_name() - } - - - } - - - - return localctx -} - - -// IAttach_stmtContext is an interface to support dynamic dispatch. -type IAttach_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsAttach_stmtContext differentiates from other interfaces. - IsAttach_stmtContext() -} - -type Attach_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyAttach_stmtContext() *Attach_stmtContext { - var p = new(Attach_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_attach_stmt - return p -} - -func (*Attach_stmtContext) IsAttach_stmtContext() {} - -func NewAttach_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Attach_stmtContext { - var p = new(Attach_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_attach_stmt - - return p -} - -func (s *Attach_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Attach_stmtContext) K_ATTACH() antlr.TerminalNode { - return s.GetToken(SqlParserK_ATTACH, 0) -} - -func (s *Attach_stmtContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Attach_stmtContext) K_AS() antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, 0) -} - -func (s *Attach_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Attach_stmtContext) K_DATABASE() antlr.TerminalNode { - return s.GetToken(SqlParserK_DATABASE, 0) -} - -func (s *Attach_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Attach_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Attach_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterAttach_stmt(s) - } -} - -func (s *Attach_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitAttach_stmt(s) - } -} - - - - -func (p *SqlParser) Attach_stmt() (localctx IAttach_stmtContext) { - this := p - _ = this - - localctx = NewAttach_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 16, SqlParserRULE_attach_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(317) - p.Match(SqlParserK_ATTACH) - } - p.SetState(319) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 16, p.GetParserRuleContext()) == 1 { - { - p.SetState(318) - p.Match(SqlParserK_DATABASE) - } - - - } - { - p.SetState(321) - p.expr(0) - } - { - p.SetState(322) - p.Match(SqlParserK_AS) - } - { - p.SetState(323) - p.Database_name() - } - - - - return localctx -} - - -// IBegin_stmtContext is an interface to support dynamic dispatch. -type IBegin_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsBegin_stmtContext differentiates from other interfaces. - IsBegin_stmtContext() -} - -type Begin_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyBegin_stmtContext() *Begin_stmtContext { - var p = new(Begin_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_begin_stmt - return p -} - -func (*Begin_stmtContext) IsBegin_stmtContext() {} - -func NewBegin_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Begin_stmtContext { - var p = new(Begin_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_begin_stmt - - return p -} - -func (s *Begin_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Begin_stmtContext) K_BEGIN() antlr.TerminalNode { - return s.GetToken(SqlParserK_BEGIN, 0) -} - -func (s *Begin_stmtContext) K_TRANSACTION() antlr.TerminalNode { - return s.GetToken(SqlParserK_TRANSACTION, 0) -} - -func (s *Begin_stmtContext) K_DEFERRED() antlr.TerminalNode { - return s.GetToken(SqlParserK_DEFERRED, 0) -} - -func (s *Begin_stmtContext) K_IMMEDIATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_IMMEDIATE, 0) -} - -func (s *Begin_stmtContext) K_EXCLUSIVE() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXCLUSIVE, 0) -} - -func (s *Begin_stmtContext) Transaction_name() ITransaction_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITransaction_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITransaction_nameContext) -} - -func (s *Begin_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Begin_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Begin_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterBegin_stmt(s) - } -} - -func (s *Begin_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitBegin_stmt(s) - } -} - - - - -func (p *SqlParser) Begin_stmt() (localctx IBegin_stmtContext) { - this := p - _ = this - - localctx = NewBegin_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 18, SqlParserRULE_begin_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(325) - p.Match(SqlParserK_BEGIN) - } - p.SetState(327) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if ((((_la - 59)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 59))) & ((1 << (SqlParserK_DEFERRED - 59)) | (1 << (SqlParserK_EXCLUSIVE - 59)) | (1 << (SqlParserK_IMMEDIATE - 59)))) != 0) { - { - p.SetState(326) - _la = p.GetTokenStream().LA(1) - - if !(((((_la - 59)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 59))) & ((1 << (SqlParserK_DEFERRED - 59)) | (1 << (SqlParserK_EXCLUSIVE - 59)) | (1 << (SqlParserK_IMMEDIATE - 59)))) != 0)) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - } - p.SetState(333) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_TRANSACTION { - { - p.SetState(329) - p.Match(SqlParserK_TRANSACTION) - } - p.SetState(331) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 18, p.GetParserRuleContext()) == 1 { - { - p.SetState(330) - p.Transaction_name() - } - - - } - - } - - - - return localctx -} - - -// ICommit_stmtContext is an interface to support dynamic dispatch. -type ICommit_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCommit_stmtContext differentiates from other interfaces. - IsCommit_stmtContext() -} - -type Commit_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCommit_stmtContext() *Commit_stmtContext { - var p = new(Commit_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_commit_stmt - return p -} - -func (*Commit_stmtContext) IsCommit_stmtContext() {} - -func NewCommit_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Commit_stmtContext { - var p = new(Commit_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_commit_stmt - - return p -} - -func (s *Commit_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Commit_stmtContext) K_COMMIT() antlr.TerminalNode { - return s.GetToken(SqlParserK_COMMIT, 0) -} - -func (s *Commit_stmtContext) K_END() antlr.TerminalNode { - return s.GetToken(SqlParserK_END, 0) -} - -func (s *Commit_stmtContext) K_TRANSACTION() antlr.TerminalNode { - return s.GetToken(SqlParserK_TRANSACTION, 0) -} - -func (s *Commit_stmtContext) Transaction_name() ITransaction_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITransaction_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITransaction_nameContext) -} - -func (s *Commit_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Commit_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Commit_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCommit_stmt(s) - } -} - -func (s *Commit_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCommit_stmt(s) - } -} - - - - -func (p *SqlParser) Commit_stmt() (localctx ICommit_stmtContext) { - this := p - _ = this - - localctx = NewCommit_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 20, SqlParserRULE_commit_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(335) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_COMMIT || _la == SqlParserK_END) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - p.SetState(340) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_TRANSACTION { - { - p.SetState(336) - p.Match(SqlParserK_TRANSACTION) - } - p.SetState(338) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 20, p.GetParserRuleContext()) == 1 { - { - p.SetState(337) - p.Transaction_name() - } - - - } - - } - - - - return localctx -} - - -// ICompound_select_stmtContext is an interface to support dynamic dispatch. -type ICompound_select_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCompound_select_stmtContext differentiates from other interfaces. - IsCompound_select_stmtContext() -} - -type Compound_select_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCompound_select_stmtContext() *Compound_select_stmtContext { - var p = new(Compound_select_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_compound_select_stmt - return p -} - -func (*Compound_select_stmtContext) IsCompound_select_stmtContext() {} - -func NewCompound_select_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Compound_select_stmtContext { - var p = new(Compound_select_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_compound_select_stmt - - return p -} - -func (s *Compound_select_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Compound_select_stmtContext) AllSelect_core() []ISelect_coreContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ISelect_coreContext); ok { - len++ - } - } - - tst := make([]ISelect_coreContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ISelect_coreContext); ok { - tst[i] = t.(ISelect_coreContext) - i++ - } - } - - return tst -} - -func (s *Compound_select_stmtContext) Select_core(i int) ISelect_coreContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_coreContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ISelect_coreContext) -} - -func (s *Compound_select_stmtContext) K_WITH() antlr.TerminalNode { - return s.GetToken(SqlParserK_WITH, 0) -} - -func (s *Compound_select_stmtContext) AllCommon_table_expression() []ICommon_table_expressionContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ICommon_table_expressionContext); ok { - len++ - } - } - - tst := make([]ICommon_table_expressionContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ICommon_table_expressionContext); ok { - tst[i] = t.(ICommon_table_expressionContext) - i++ - } - } - - return tst -} - -func (s *Compound_select_stmtContext) Common_table_expression(i int) ICommon_table_expressionContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICommon_table_expressionContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ICommon_table_expressionContext) -} - -func (s *Compound_select_stmtContext) K_ORDER() antlr.TerminalNode { - return s.GetToken(SqlParserK_ORDER, 0) -} - -func (s *Compound_select_stmtContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Compound_select_stmtContext) AllOrdering_term() []IOrdering_termContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IOrdering_termContext); ok { - len++ - } - } - - tst := make([]IOrdering_termContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IOrdering_termContext); ok { - tst[i] = t.(IOrdering_termContext) - i++ - } - } - - return tst -} - -func (s *Compound_select_stmtContext) Ordering_term(i int) IOrdering_termContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOrdering_termContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IOrdering_termContext) -} - -func (s *Compound_select_stmtContext) K_LIMIT() antlr.TerminalNode { - return s.GetToken(SqlParserK_LIMIT, 0) -} - -func (s *Compound_select_stmtContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Compound_select_stmtContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Compound_select_stmtContext) AllK_UNION() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_UNION) -} - -func (s *Compound_select_stmtContext) K_UNION(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_UNION, i) -} - -func (s *Compound_select_stmtContext) AllK_INTERSECT() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_INTERSECT) -} - -func (s *Compound_select_stmtContext) K_INTERSECT(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_INTERSECT, i) -} - -func (s *Compound_select_stmtContext) AllK_EXCEPT() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_EXCEPT) -} - -func (s *Compound_select_stmtContext) K_EXCEPT(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_EXCEPT, i) -} - -func (s *Compound_select_stmtContext) K_RECURSIVE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RECURSIVE, 0) -} - -func (s *Compound_select_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Compound_select_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Compound_select_stmtContext) K_OFFSET() antlr.TerminalNode { - return s.GetToken(SqlParserK_OFFSET, 0) -} - -func (s *Compound_select_stmtContext) AllK_ALL() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_ALL) -} - -func (s *Compound_select_stmtContext) K_ALL(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_ALL, i) -} - -func (s *Compound_select_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Compound_select_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Compound_select_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCompound_select_stmt(s) - } -} - -func (s *Compound_select_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCompound_select_stmt(s) - } -} - - - - -func (p *SqlParser) Compound_select_stmt() (localctx ICompound_select_stmtContext) { - this := p - _ = this - - localctx = NewCompound_select_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 22, SqlParserRULE_compound_select_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(354) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WITH { - { - p.SetState(342) - p.Match(SqlParserK_WITH) - } - p.SetState(344) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 22, p.GetParserRuleContext()) == 1 { - { - p.SetState(343) - p.Match(SqlParserK_RECURSIVE) - } - - - } - { - p.SetState(346) - p.Common_table_expression() - } - p.SetState(351) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(347) - p.Match(SqlParserCOMMA) - } - { - p.SetState(348) - p.Common_table_expression() - } - - - p.SetState(353) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - { - p.SetState(356) - p.Select_core() - } - p.SetState(366) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for ok := true; ok; ok = _la == SqlParserK_EXCEPT || _la == SqlParserK_INTERSECT || _la == SqlParserK_UNION { - p.SetState(363) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_UNION: - { - p.SetState(357) - p.Match(SqlParserK_UNION) - } - p.SetState(359) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_ALL { - { - p.SetState(358) - p.Match(SqlParserK_ALL) - } - - } - - - case SqlParserK_INTERSECT: - { - p.SetState(361) - p.Match(SqlParserK_INTERSECT) - } - - - case SqlParserK_EXCEPT: - { - p.SetState(362) - p.Match(SqlParserK_EXCEPT) - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - { - p.SetState(365) - p.Select_core() - } - - - p.SetState(368) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - p.SetState(380) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_ORDER { - { - p.SetState(370) - p.Match(SqlParserK_ORDER) - } - { - p.SetState(371) - p.Match(SqlParserK_BY) - } - { - p.SetState(372) - p.Ordering_term() - } - p.SetState(377) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(373) - p.Match(SqlParserCOMMA) - } - { - p.SetState(374) - p.Ordering_term() - } - - - p.SetState(379) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - p.SetState(388) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_LIMIT { - { - p.SetState(382) - p.Match(SqlParserK_LIMIT) - } - { - p.SetState(383) - p.expr(0) - } - p.SetState(386) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { - { - p.SetState(384) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(385) - p.expr(0) - } - - } - - } - - - - return localctx -} - - -// ICreate_index_stmtContext is an interface to support dynamic dispatch. -type ICreate_index_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCreate_index_stmtContext differentiates from other interfaces. - IsCreate_index_stmtContext() -} - -type Create_index_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCreate_index_stmtContext() *Create_index_stmtContext { - var p = new(Create_index_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_create_index_stmt - return p -} - -func (*Create_index_stmtContext) IsCreate_index_stmtContext() {} - -func NewCreate_index_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_index_stmtContext { - var p = new(Create_index_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_create_index_stmt - - return p -} - -func (s *Create_index_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Create_index_stmtContext) K_CREATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CREATE, 0) -} - -func (s *Create_index_stmtContext) K_INDEX() antlr.TerminalNode { - return s.GetToken(SqlParserK_INDEX, 0) -} - -func (s *Create_index_stmtContext) Index_name() IIndex_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIndex_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IIndex_nameContext) -} - -func (s *Create_index_stmtContext) K_ON() antlr.TerminalNode { - return s.GetToken(SqlParserK_ON, 0) -} - -func (s *Create_index_stmtContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Create_index_stmtContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Create_index_stmtContext) AllIndexed_column() []IIndexed_columnContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IIndexed_columnContext); ok { - len++ - } - } - - tst := make([]IIndexed_columnContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IIndexed_columnContext); ok { - tst[i] = t.(IIndexed_columnContext) - i++ - } - } - - return tst -} - -func (s *Create_index_stmtContext) Indexed_column(i int) IIndexed_columnContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIndexed_columnContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IIndexed_columnContext) -} - -func (s *Create_index_stmtContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Create_index_stmtContext) K_UNIQUE() antlr.TerminalNode { - return s.GetToken(SqlParserK_UNIQUE, 0) -} - -func (s *Create_index_stmtContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *Create_index_stmtContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Create_index_stmtContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *Create_index_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Create_index_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Create_index_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Create_index_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Create_index_stmtContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHERE, 0) -} - -func (s *Create_index_stmtContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Create_index_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Create_index_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Create_index_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCreate_index_stmt(s) - } -} - -func (s *Create_index_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCreate_index_stmt(s) - } -} - - - - -func (p *SqlParser) Create_index_stmt() (localctx ICreate_index_stmtContext) { - this := p - _ = this - - localctx = NewCreate_index_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 24, SqlParserRULE_create_index_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(390) - p.Match(SqlParserK_CREATE) - } - p.SetState(392) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_UNIQUE { - { - p.SetState(391) - p.Match(SqlParserK_UNIQUE) - } - - } - { - p.SetState(394) - p.Match(SqlParserK_INDEX) - } - p.SetState(398) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 33, p.GetParserRuleContext()) == 1 { - { - p.SetState(395) - p.Match(SqlParserK_IF) - } - { - p.SetState(396) - p.Match(SqlParserK_NOT) - } - { - p.SetState(397) - p.Match(SqlParserK_EXISTS) - } - - - } - p.SetState(403) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 34, p.GetParserRuleContext()) == 1 { - { - p.SetState(400) - p.Database_name() - } - { - p.SetState(401) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(405) - p.Index_name() - } - { - p.SetState(406) - p.Match(SqlParserK_ON) - } - { - p.SetState(407) - p.Table_name() - } - { - p.SetState(408) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(409) - p.Indexed_column() - } - p.SetState(414) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(410) - p.Match(SqlParserCOMMA) - } - { - p.SetState(411) - p.Indexed_column() - } - - - p.SetState(416) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(417) - p.Match(SqlParserCLOSE_PAR) - } - p.SetState(420) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WHERE { - { - p.SetState(418) - p.Match(SqlParserK_WHERE) - } - { - p.SetState(419) - p.expr(0) - } - - } - - - - return localctx -} - - -// ICreate_table_stmtContext is an interface to support dynamic dispatch. -type ICreate_table_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCreate_table_stmtContext differentiates from other interfaces. - IsCreate_table_stmtContext() -} - -type Create_table_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCreate_table_stmtContext() *Create_table_stmtContext { - var p = new(Create_table_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_create_table_stmt - return p -} - -func (*Create_table_stmtContext) IsCreate_table_stmtContext() {} - -func NewCreate_table_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_table_stmtContext { - var p = new(Create_table_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_create_table_stmt - - return p -} - -func (s *Create_table_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Create_table_stmtContext) K_CREATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CREATE, 0) -} - -func (s *Create_table_stmtContext) K_TABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_TABLE, 0) -} - -func (s *Create_table_stmtContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Create_table_stmtContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Create_table_stmtContext) AllColumn_def() []IColumn_defContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IColumn_defContext); ok { - len++ - } - } - - tst := make([]IColumn_defContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IColumn_defContext); ok { - tst[i] = t.(IColumn_defContext) - i++ - } - } - - return tst -} - -func (s *Create_table_stmtContext) Column_def(i int) IColumn_defContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_defContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IColumn_defContext) -} - -func (s *Create_table_stmtContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Create_table_stmtContext) K_AS() antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, 0) -} - -func (s *Create_table_stmtContext) Select_stmt() ISelect_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISelect_stmtContext) -} - -func (s *Create_table_stmtContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *Create_table_stmtContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Create_table_stmtContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *Create_table_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Create_table_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Create_table_stmtContext) Unknown() IUnknownContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IUnknownContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IUnknownContext) -} - -func (s *Create_table_stmtContext) K_TEMP() antlr.TerminalNode { - return s.GetToken(SqlParserK_TEMP, 0) -} - -func (s *Create_table_stmtContext) K_TEMPORARY() antlr.TerminalNode { - return s.GetToken(SqlParserK_TEMPORARY, 0) -} - -func (s *Create_table_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Create_table_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Create_table_stmtContext) AllTable_constraint() []ITable_constraintContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ITable_constraintContext); ok { - len++ - } - } - - tst := make([]ITable_constraintContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ITable_constraintContext); ok { - tst[i] = t.(ITable_constraintContext) - i++ - } - } - - return tst -} - -func (s *Create_table_stmtContext) Table_constraint(i int) ITable_constraintContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_constraintContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ITable_constraintContext) -} - -func (s *Create_table_stmtContext) K_WITHOUT() antlr.TerminalNode { - return s.GetToken(SqlParserK_WITHOUT, 0) -} - -func (s *Create_table_stmtContext) IDENTIFIER() antlr.TerminalNode { - return s.GetToken(SqlParserIDENTIFIER, 0) -} - -func (s *Create_table_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Create_table_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Create_table_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCreate_table_stmt(s) - } -} - -func (s *Create_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCreate_table_stmt(s) - } -} - - - - -func (p *SqlParser) Create_table_stmt() (localctx ICreate_table_stmtContext) { - this := p - _ = this - - localctx = NewCreate_table_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 26, SqlParserRULE_create_table_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(422) - p.Match(SqlParserK_CREATE) - } - p.SetState(424) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY { - { - p.SetState(423) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - } - { - p.SetState(426) - p.Match(SqlParserK_TABLE) - } - p.SetState(430) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 38, p.GetParserRuleContext()) == 1 { - { - p.SetState(427) - p.Match(SqlParserK_IF) - } - { - p.SetState(428) - p.Match(SqlParserK_NOT) - } - { - p.SetState(429) - p.Match(SqlParserK_EXISTS) - } - - - } - p.SetState(435) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 39, p.GetParserRuleContext()) == 1 { - { - p.SetState(432) - p.Database_name() - } - { - p.SetState(433) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(437) - p.Table_name() - } - p.SetState(456) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserOPEN_PAR: - { - p.SetState(438) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(439) - p.Column_def() - } - p.SetState(446) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - p.SetState(444) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 40, p.GetParserRuleContext()) { - case 1: - { - p.SetState(440) - p.Match(SqlParserCOMMA) - } - { - p.SetState(441) - p.Table_constraint() - } - - - case 2: - { - p.SetState(442) - p.Match(SqlParserCOMMA) - } - { - p.SetState(443) - p.Column_def() - } - - } - - p.SetState(448) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(449) - p.Match(SqlParserCLOSE_PAR) - } - p.SetState(452) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 42, p.GetParserRuleContext()) == 1 { - { - p.SetState(450) - p.Match(SqlParserK_WITHOUT) - } - { - p.SetState(451) - p.Match(SqlParserIDENTIFIER) - } - - - } - - - case SqlParserK_AS: - { - p.SetState(454) - p.Match(SqlParserK_AS) - } - { - p.SetState(455) - p.Select_stmt() - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - p.SetState(459) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 44, p.GetParserRuleContext()) == 1 { - { - p.SetState(458) - p.Unknown() - } - - - } - - - - return localctx -} - - -// ICreate_trigger_stmtContext is an interface to support dynamic dispatch. -type ICreate_trigger_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCreate_trigger_stmtContext differentiates from other interfaces. - IsCreate_trigger_stmtContext() -} - -type Create_trigger_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCreate_trigger_stmtContext() *Create_trigger_stmtContext { - var p = new(Create_trigger_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_create_trigger_stmt - return p -} - -func (*Create_trigger_stmtContext) IsCreate_trigger_stmtContext() {} - -func NewCreate_trigger_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_trigger_stmtContext { - var p = new(Create_trigger_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_create_trigger_stmt - - return p -} - -func (s *Create_trigger_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Create_trigger_stmtContext) K_CREATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CREATE, 0) -} - -func (s *Create_trigger_stmtContext) K_TRIGGER() antlr.TerminalNode { - return s.GetToken(SqlParserK_TRIGGER, 0) -} - -func (s *Create_trigger_stmtContext) Trigger_name() ITrigger_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITrigger_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITrigger_nameContext) -} - -func (s *Create_trigger_stmtContext) K_ON() antlr.TerminalNode { - return s.GetToken(SqlParserK_ON, 0) -} - -func (s *Create_trigger_stmtContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Create_trigger_stmtContext) K_BEGIN() antlr.TerminalNode { - return s.GetToken(SqlParserK_BEGIN, 0) -} - -func (s *Create_trigger_stmtContext) K_END() antlr.TerminalNode { - return s.GetToken(SqlParserK_END, 0) -} - -func (s *Create_trigger_stmtContext) K_DELETE() antlr.TerminalNode { - return s.GetToken(SqlParserK_DELETE, 0) -} - -func (s *Create_trigger_stmtContext) K_INSERT() antlr.TerminalNode { - return s.GetToken(SqlParserK_INSERT, 0) -} - -func (s *Create_trigger_stmtContext) K_UPDATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_UPDATE, 0) -} - -func (s *Create_trigger_stmtContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *Create_trigger_stmtContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Create_trigger_stmtContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *Create_trigger_stmtContext) AllDatabase_name() []IDatabase_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IDatabase_nameContext); ok { - len++ - } - } - - tst := make([]IDatabase_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IDatabase_nameContext); ok { - tst[i] = t.(IDatabase_nameContext) - i++ - } - } - - return tst -} - -func (s *Create_trigger_stmtContext) Database_name(i int) IDatabase_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Create_trigger_stmtContext) AllDOT() []antlr.TerminalNode { - return s.GetTokens(SqlParserDOT) -} - -func (s *Create_trigger_stmtContext) DOT(i int) antlr.TerminalNode { - return s.GetToken(SqlParserDOT, i) -} - -func (s *Create_trigger_stmtContext) K_BEFORE() antlr.TerminalNode { - return s.GetToken(SqlParserK_BEFORE, 0) -} - -func (s *Create_trigger_stmtContext) K_AFTER() antlr.TerminalNode { - return s.GetToken(SqlParserK_AFTER, 0) -} - -func (s *Create_trigger_stmtContext) K_INSTEAD() antlr.TerminalNode { - return s.GetToken(SqlParserK_INSTEAD, 0) -} - -func (s *Create_trigger_stmtContext) AllK_OF() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_OF) -} - -func (s *Create_trigger_stmtContext) K_OF(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_OF, i) -} - -func (s *Create_trigger_stmtContext) K_FOR() antlr.TerminalNode { - return s.GetToken(SqlParserK_FOR, 0) -} - -func (s *Create_trigger_stmtContext) K_EACH() antlr.TerminalNode { - return s.GetToken(SqlParserK_EACH, 0) -} - -func (s *Create_trigger_stmtContext) K_ROW() antlr.TerminalNode { - return s.GetToken(SqlParserK_ROW, 0) -} - -func (s *Create_trigger_stmtContext) K_WHEN() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHEN, 0) -} - -func (s *Create_trigger_stmtContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Create_trigger_stmtContext) AllSCOL() []antlr.TerminalNode { - return s.GetTokens(SqlParserSCOL) -} - -func (s *Create_trigger_stmtContext) SCOL(i int) antlr.TerminalNode { - return s.GetToken(SqlParserSCOL, i) -} - -func (s *Create_trigger_stmtContext) K_TEMP() antlr.TerminalNode { - return s.GetToken(SqlParserK_TEMP, 0) -} - -func (s *Create_trigger_stmtContext) K_TEMPORARY() antlr.TerminalNode { - return s.GetToken(SqlParserK_TEMPORARY, 0) -} - -func (s *Create_trigger_stmtContext) AllColumn_name() []IColumn_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IColumn_nameContext); ok { - len++ - } - } - - tst := make([]IColumn_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IColumn_nameContext); ok { - tst[i] = t.(IColumn_nameContext) - i++ - } - } - - return tst -} - -func (s *Create_trigger_stmtContext) Column_name(i int) IColumn_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Create_trigger_stmtContext) AllUpdate_stmt() []IUpdate_stmtContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IUpdate_stmtContext); ok { - len++ - } - } - - tst := make([]IUpdate_stmtContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IUpdate_stmtContext); ok { - tst[i] = t.(IUpdate_stmtContext) - i++ - } - } - - return tst -} - -func (s *Create_trigger_stmtContext) Update_stmt(i int) IUpdate_stmtContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IUpdate_stmtContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IUpdate_stmtContext) -} - -func (s *Create_trigger_stmtContext) AllInsert_stmt() []IInsert_stmtContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IInsert_stmtContext); ok { - len++ - } - } - - tst := make([]IInsert_stmtContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IInsert_stmtContext); ok { - tst[i] = t.(IInsert_stmtContext) - i++ - } - } - - return tst -} - -func (s *Create_trigger_stmtContext) Insert_stmt(i int) IInsert_stmtContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IInsert_stmtContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IInsert_stmtContext) -} - -func (s *Create_trigger_stmtContext) AllDelete_stmt() []IDelete_stmtContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IDelete_stmtContext); ok { - len++ - } - } - - tst := make([]IDelete_stmtContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IDelete_stmtContext); ok { - tst[i] = t.(IDelete_stmtContext) - i++ - } - } - - return tst -} - -func (s *Create_trigger_stmtContext) Delete_stmt(i int) IDelete_stmtContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDelete_stmtContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IDelete_stmtContext) -} - -func (s *Create_trigger_stmtContext) AllSelect_stmt() []ISelect_stmtContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ISelect_stmtContext); ok { - len++ - } - } - - tst := make([]ISelect_stmtContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ISelect_stmtContext); ok { - tst[i] = t.(ISelect_stmtContext) - i++ - } - } - - return tst -} - -func (s *Create_trigger_stmtContext) Select_stmt(i int) ISelect_stmtContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_stmtContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ISelect_stmtContext) -} - -func (s *Create_trigger_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Create_trigger_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Create_trigger_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Create_trigger_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Create_trigger_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCreate_trigger_stmt(s) - } -} - -func (s *Create_trigger_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCreate_trigger_stmt(s) - } -} - - - - -func (p *SqlParser) Create_trigger_stmt() (localctx ICreate_trigger_stmtContext) { - this := p - _ = this - - localctx = NewCreate_trigger_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 28, SqlParserRULE_create_trigger_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(461) - p.Match(SqlParserK_CREATE) - } - p.SetState(463) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY { - { - p.SetState(462) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - } - { - p.SetState(465) - p.Match(SqlParserK_TRIGGER) - } - p.SetState(469) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 46, p.GetParserRuleContext()) == 1 { - { - p.SetState(466) - p.Match(SqlParserK_IF) - } - { - p.SetState(467) - p.Match(SqlParserK_NOT) - } - { - p.SetState(468) - p.Match(SqlParserK_EXISTS) - } - - - } - p.SetState(474) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 47, p.GetParserRuleContext()) == 1 { - { - p.SetState(471) - p.Database_name() - } - { - p.SetState(472) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(476) - p.Trigger_name() - } - p.SetState(481) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_BEFORE: - { - p.SetState(477) - p.Match(SqlParserK_BEFORE) - } - - - case SqlParserK_AFTER: - { - p.SetState(478) - p.Match(SqlParserK_AFTER) - } - - - case SqlParserK_INSTEAD: - { - p.SetState(479) - p.Match(SqlParserK_INSTEAD) - } - { - p.SetState(480) - p.Match(SqlParserK_OF) - } - - - case SqlParserK_DELETE, SqlParserK_INSERT, SqlParserK_UPDATE: - - - - default: - } - p.SetState(497) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_DELETE: - { - p.SetState(483) - p.Match(SqlParserK_DELETE) - } - - - case SqlParserK_INSERT: - { - p.SetState(484) - p.Match(SqlParserK_INSERT) - } - - - case SqlParserK_UPDATE: - { - p.SetState(485) - p.Match(SqlParserK_UPDATE) - } - p.SetState(495) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_OF { - { - p.SetState(486) - p.Match(SqlParserK_OF) - } - { - p.SetState(487) - p.Column_name() - } - p.SetState(492) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(488) - p.Match(SqlParserCOMMA) - } - { - p.SetState(489) - p.Column_name() - } - - - p.SetState(494) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - { - p.SetState(499) - p.Match(SqlParserK_ON) - } - p.SetState(503) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 52, p.GetParserRuleContext()) == 1 { - { - p.SetState(500) - p.Database_name() - } - { - p.SetState(501) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(505) - p.Table_name() - } - p.SetState(509) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_FOR { - { - p.SetState(506) - p.Match(SqlParserK_FOR) - } - { - p.SetState(507) - p.Match(SqlParserK_EACH) - } - { - p.SetState(508) - p.Match(SqlParserK_ROW) - } - - } - p.SetState(513) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WHEN { - { - p.SetState(511) - p.Match(SqlParserK_WHEN) - } - { - p.SetState(512) - p.expr(0) - } - - } - { - p.SetState(515) - p.Match(SqlParserK_BEGIN) - } - p.SetState(524) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for ok := true; ok; ok = _la == SqlParserK_DELETE || _la == SqlParserK_INSERT || ((((_la - 126)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 126))) & ((1 << (SqlParserK_REPLACE - 126)) | (1 << (SqlParserK_SELECT - 126)) | (1 << (SqlParserK_UPDATE - 126)) | (1 << (SqlParserK_VALUES - 126)) | (1 << (SqlParserK_WITH - 126)))) != 0) { - p.SetState(520) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 55, p.GetParserRuleContext()) { - case 1: - { - p.SetState(516) - p.Update_stmt() - } - - - case 2: - { - p.SetState(517) - p.Insert_stmt() - } - - - case 3: - { - p.SetState(518) - p.Delete_stmt() - } - - - case 4: - { - p.SetState(519) - p.Select_stmt() - } - - } - { - p.SetState(522) - p.Match(SqlParserSCOL) - } - - - p.SetState(526) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(528) - p.Match(SqlParserK_END) - } - - - - return localctx -} - - -// ICreate_view_stmtContext is an interface to support dynamic dispatch. -type ICreate_view_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCreate_view_stmtContext differentiates from other interfaces. - IsCreate_view_stmtContext() -} - -type Create_view_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCreate_view_stmtContext() *Create_view_stmtContext { - var p = new(Create_view_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_create_view_stmt - return p -} - -func (*Create_view_stmtContext) IsCreate_view_stmtContext() {} - -func NewCreate_view_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_view_stmtContext { - var p = new(Create_view_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_create_view_stmt - - return p -} - -func (s *Create_view_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Create_view_stmtContext) K_CREATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CREATE, 0) -} - -func (s *Create_view_stmtContext) K_VIEW() antlr.TerminalNode { - return s.GetToken(SqlParserK_VIEW, 0) -} - -func (s *Create_view_stmtContext) View_name() IView_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IView_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IView_nameContext) -} - -func (s *Create_view_stmtContext) K_AS() antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, 0) -} - -func (s *Create_view_stmtContext) Select_stmt() ISelect_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISelect_stmtContext) -} - -func (s *Create_view_stmtContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *Create_view_stmtContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Create_view_stmtContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *Create_view_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Create_view_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Create_view_stmtContext) K_TEMP() antlr.TerminalNode { - return s.GetToken(SqlParserK_TEMP, 0) -} - -func (s *Create_view_stmtContext) K_TEMPORARY() antlr.TerminalNode { - return s.GetToken(SqlParserK_TEMPORARY, 0) -} - -func (s *Create_view_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Create_view_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Create_view_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCreate_view_stmt(s) - } -} - -func (s *Create_view_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCreate_view_stmt(s) - } -} - - - - -func (p *SqlParser) Create_view_stmt() (localctx ICreate_view_stmtContext) { - this := p - _ = this - - localctx = NewCreate_view_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 30, SqlParserRULE_create_view_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(530) - p.Match(SqlParserK_CREATE) - } - p.SetState(532) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY { - { - p.SetState(531) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - } - { - p.SetState(534) - p.Match(SqlParserK_VIEW) - } - p.SetState(538) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 58, p.GetParserRuleContext()) == 1 { - { - p.SetState(535) - p.Match(SqlParserK_IF) - } - { - p.SetState(536) - p.Match(SqlParserK_NOT) - } - { - p.SetState(537) - p.Match(SqlParserK_EXISTS) - } - - - } - p.SetState(543) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 59, p.GetParserRuleContext()) == 1 { - { - p.SetState(540) - p.Database_name() - } - { - p.SetState(541) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(545) - p.View_name() - } - { - p.SetState(546) - p.Match(SqlParserK_AS) - } - { - p.SetState(547) - p.Select_stmt() - } - - - - return localctx -} - - -// ICreate_virtual_table_stmtContext is an interface to support dynamic dispatch. -type ICreate_virtual_table_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCreate_virtual_table_stmtContext differentiates from other interfaces. - IsCreate_virtual_table_stmtContext() -} - -type Create_virtual_table_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCreate_virtual_table_stmtContext() *Create_virtual_table_stmtContext { - var p = new(Create_virtual_table_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_create_virtual_table_stmt - return p -} - -func (*Create_virtual_table_stmtContext) IsCreate_virtual_table_stmtContext() {} - -func NewCreate_virtual_table_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_virtual_table_stmtContext { - var p = new(Create_virtual_table_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_create_virtual_table_stmt - - return p -} - -func (s *Create_virtual_table_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Create_virtual_table_stmtContext) K_CREATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CREATE, 0) -} - -func (s *Create_virtual_table_stmtContext) K_VIRTUAL() antlr.TerminalNode { - return s.GetToken(SqlParserK_VIRTUAL, 0) -} - -func (s *Create_virtual_table_stmtContext) K_TABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_TABLE, 0) -} - -func (s *Create_virtual_table_stmtContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Create_virtual_table_stmtContext) K_USING() antlr.TerminalNode { - return s.GetToken(SqlParserK_USING, 0) -} - -func (s *Create_virtual_table_stmtContext) Module_name() IModule_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IModule_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IModule_nameContext) -} - -func (s *Create_virtual_table_stmtContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *Create_virtual_table_stmtContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Create_virtual_table_stmtContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *Create_virtual_table_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Create_virtual_table_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Create_virtual_table_stmtContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Create_virtual_table_stmtContext) AllModule_argument() []IModule_argumentContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IModule_argumentContext); ok { - len++ - } - } - - tst := make([]IModule_argumentContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IModule_argumentContext); ok { - tst[i] = t.(IModule_argumentContext) - i++ - } - } - - return tst -} - -func (s *Create_virtual_table_stmtContext) Module_argument(i int) IModule_argumentContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IModule_argumentContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IModule_argumentContext) -} - -func (s *Create_virtual_table_stmtContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Create_virtual_table_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Create_virtual_table_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Create_virtual_table_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Create_virtual_table_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Create_virtual_table_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCreate_virtual_table_stmt(s) - } -} - -func (s *Create_virtual_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCreate_virtual_table_stmt(s) - } -} - - - - -func (p *SqlParser) Create_virtual_table_stmt() (localctx ICreate_virtual_table_stmtContext) { - this := p - _ = this - - localctx = NewCreate_virtual_table_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 32, SqlParserRULE_create_virtual_table_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(549) - p.Match(SqlParserK_CREATE) - } - { - p.SetState(550) - p.Match(SqlParserK_VIRTUAL) - } - { - p.SetState(551) - p.Match(SqlParserK_TABLE) - } - p.SetState(555) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 60, p.GetParserRuleContext()) == 1 { - { - p.SetState(552) - p.Match(SqlParserK_IF) - } - { - p.SetState(553) - p.Match(SqlParserK_NOT) - } - { - p.SetState(554) - p.Match(SqlParserK_EXISTS) - } - - - } - p.SetState(560) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 61, p.GetParserRuleContext()) == 1 { - { - p.SetState(557) - p.Database_name() - } - { - p.SetState(558) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(562) - p.Table_name() - } - { - p.SetState(563) - p.Match(SqlParserK_USING) - } - { - p.SetState(564) - p.Module_name() - } - p.SetState(576) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserOPEN_PAR { - { - p.SetState(565) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(566) - p.Module_argument() - } - p.SetState(571) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(567) - p.Match(SqlParserCOMMA) - } - { - p.SetState(568) - p.Module_argument() - } - - - p.SetState(573) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(574) - p.Match(SqlParserCLOSE_PAR) - } - - } - - - - return localctx -} - - -// IDelete_stmtContext is an interface to support dynamic dispatch. -type IDelete_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsDelete_stmtContext differentiates from other interfaces. - IsDelete_stmtContext() -} - -type Delete_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyDelete_stmtContext() *Delete_stmtContext { - var p = new(Delete_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_delete_stmt - return p -} - -func (*Delete_stmtContext) IsDelete_stmtContext() {} - -func NewDelete_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Delete_stmtContext { - var p = new(Delete_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_delete_stmt - - return p -} - -func (s *Delete_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Delete_stmtContext) K_DELETE() antlr.TerminalNode { - return s.GetToken(SqlParserK_DELETE, 0) -} - -func (s *Delete_stmtContext) K_FROM() antlr.TerminalNode { - return s.GetToken(SqlParserK_FROM, 0) -} - -func (s *Delete_stmtContext) Qualified_table_name() IQualified_table_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IQualified_table_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IQualified_table_nameContext) -} - -func (s *Delete_stmtContext) With_clause() IWith_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IWith_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IWith_clauseContext) -} - -func (s *Delete_stmtContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHERE, 0) -} - -func (s *Delete_stmtContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Delete_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Delete_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Delete_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterDelete_stmt(s) - } -} - -func (s *Delete_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitDelete_stmt(s) - } -} - - - - -func (p *SqlParser) Delete_stmt() (localctx IDelete_stmtContext) { - this := p - _ = this - - localctx = NewDelete_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 34, SqlParserRULE_delete_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(579) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WITH { - { - p.SetState(578) - p.With_clause() - } - - } - { - p.SetState(581) - p.Match(SqlParserK_DELETE) - } - { - p.SetState(582) - p.Match(SqlParserK_FROM) - } - { - p.SetState(583) - p.Qualified_table_name() - } - p.SetState(586) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WHERE { - { - p.SetState(584) - p.Match(SqlParserK_WHERE) - } - { - p.SetState(585) - p.expr(0) - } - - } - - - - return localctx -} - - -// IDelete_stmt_limitedContext is an interface to support dynamic dispatch. -type IDelete_stmt_limitedContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsDelete_stmt_limitedContext differentiates from other interfaces. - IsDelete_stmt_limitedContext() -} - -type Delete_stmt_limitedContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyDelete_stmt_limitedContext() *Delete_stmt_limitedContext { - var p = new(Delete_stmt_limitedContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_delete_stmt_limited - return p -} - -func (*Delete_stmt_limitedContext) IsDelete_stmt_limitedContext() {} - -func NewDelete_stmt_limitedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Delete_stmt_limitedContext { - var p = new(Delete_stmt_limitedContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_delete_stmt_limited - - return p -} - -func (s *Delete_stmt_limitedContext) GetParser() antlr.Parser { return s.parser } - -func (s *Delete_stmt_limitedContext) K_DELETE() antlr.TerminalNode { - return s.GetToken(SqlParserK_DELETE, 0) -} - -func (s *Delete_stmt_limitedContext) K_FROM() antlr.TerminalNode { - return s.GetToken(SqlParserK_FROM, 0) -} - -func (s *Delete_stmt_limitedContext) Qualified_table_name() IQualified_table_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IQualified_table_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IQualified_table_nameContext) -} - -func (s *Delete_stmt_limitedContext) With_clause() IWith_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IWith_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IWith_clauseContext) -} - -func (s *Delete_stmt_limitedContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHERE, 0) -} - -func (s *Delete_stmt_limitedContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Delete_stmt_limitedContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Delete_stmt_limitedContext) K_LIMIT() antlr.TerminalNode { - return s.GetToken(SqlParserK_LIMIT, 0) -} - -func (s *Delete_stmt_limitedContext) K_ORDER() antlr.TerminalNode { - return s.GetToken(SqlParserK_ORDER, 0) -} - -func (s *Delete_stmt_limitedContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Delete_stmt_limitedContext) AllOrdering_term() []IOrdering_termContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IOrdering_termContext); ok { - len++ - } - } - - tst := make([]IOrdering_termContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IOrdering_termContext); ok { - tst[i] = t.(IOrdering_termContext) - i++ - } - } - - return tst -} - -func (s *Delete_stmt_limitedContext) Ordering_term(i int) IOrdering_termContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOrdering_termContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IOrdering_termContext) -} - -func (s *Delete_stmt_limitedContext) K_OFFSET() antlr.TerminalNode { - return s.GetToken(SqlParserK_OFFSET, 0) -} - -func (s *Delete_stmt_limitedContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Delete_stmt_limitedContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Delete_stmt_limitedContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Delete_stmt_limitedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Delete_stmt_limitedContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterDelete_stmt_limited(s) - } -} - -func (s *Delete_stmt_limitedContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitDelete_stmt_limited(s) - } -} - - - - -func (p *SqlParser) Delete_stmt_limited() (localctx IDelete_stmt_limitedContext) { - this := p - _ = this - - localctx = NewDelete_stmt_limitedContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 36, SqlParserRULE_delete_stmt_limited) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(589) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WITH { - { - p.SetState(588) - p.With_clause() - } - - } - { - p.SetState(591) - p.Match(SqlParserK_DELETE) - } - { - p.SetState(592) - p.Match(SqlParserK_FROM) - } - { - p.SetState(593) - p.Qualified_table_name() - } - p.SetState(596) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WHERE { - { - p.SetState(594) - p.Match(SqlParserK_WHERE) - } - { - p.SetState(595) - p.expr(0) - } - - } - p.SetState(616) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_LIMIT || _la == SqlParserK_ORDER { - p.SetState(608) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_ORDER { - { - p.SetState(598) - p.Match(SqlParserK_ORDER) - } - { - p.SetState(599) - p.Match(SqlParserK_BY) - } - { - p.SetState(600) - p.Ordering_term() - } - p.SetState(605) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(601) - p.Match(SqlParserCOMMA) - } - { - p.SetState(602) - p.Ordering_term() - } - - - p.SetState(607) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - { - p.SetState(610) - p.Match(SqlParserK_LIMIT) - } - { - p.SetState(611) - p.expr(0) - } - p.SetState(614) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { - { - p.SetState(612) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(613) - p.expr(0) - } - - } - - } - - - - return localctx -} - - -// IDetach_stmtContext is an interface to support dynamic dispatch. -type IDetach_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsDetach_stmtContext differentiates from other interfaces. - IsDetach_stmtContext() -} - -type Detach_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyDetach_stmtContext() *Detach_stmtContext { - var p = new(Detach_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_detach_stmt - return p -} - -func (*Detach_stmtContext) IsDetach_stmtContext() {} - -func NewDetach_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Detach_stmtContext { - var p = new(Detach_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_detach_stmt - - return p -} - -func (s *Detach_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Detach_stmtContext) K_DETACH() antlr.TerminalNode { - return s.GetToken(SqlParserK_DETACH, 0) -} - -func (s *Detach_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Detach_stmtContext) K_DATABASE() antlr.TerminalNode { - return s.GetToken(SqlParserK_DATABASE, 0) -} - -func (s *Detach_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Detach_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Detach_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterDetach_stmt(s) - } -} - -func (s *Detach_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitDetach_stmt(s) - } -} - - - - -func (p *SqlParser) Detach_stmt() (localctx IDetach_stmtContext) { - this := p - _ = this - - localctx = NewDetach_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 38, SqlParserRULE_detach_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(618) - p.Match(SqlParserK_DETACH) - } - p.SetState(620) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 72, p.GetParserRuleContext()) == 1 { - { - p.SetState(619) - p.Match(SqlParserK_DATABASE) - } - - - } - { - p.SetState(622) - p.Database_name() - } - - - - return localctx -} - - -// IDrop_index_stmtContext is an interface to support dynamic dispatch. -type IDrop_index_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsDrop_index_stmtContext differentiates from other interfaces. - IsDrop_index_stmtContext() -} - -type Drop_index_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyDrop_index_stmtContext() *Drop_index_stmtContext { - var p = new(Drop_index_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_drop_index_stmt - return p -} - -func (*Drop_index_stmtContext) IsDrop_index_stmtContext() {} - -func NewDrop_index_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_index_stmtContext { - var p = new(Drop_index_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_drop_index_stmt - - return p -} - -func (s *Drop_index_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Drop_index_stmtContext) K_DROP() antlr.TerminalNode { - return s.GetToken(SqlParserK_DROP, 0) -} - -func (s *Drop_index_stmtContext) K_INDEX() antlr.TerminalNode { - return s.GetToken(SqlParserK_INDEX, 0) -} - -func (s *Drop_index_stmtContext) Index_name() IIndex_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIndex_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IIndex_nameContext) -} - -func (s *Drop_index_stmtContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *Drop_index_stmtContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *Drop_index_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Drop_index_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Drop_index_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Drop_index_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Drop_index_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterDrop_index_stmt(s) - } -} - -func (s *Drop_index_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitDrop_index_stmt(s) - } -} - - - - -func (p *SqlParser) Drop_index_stmt() (localctx IDrop_index_stmtContext) { - this := p - _ = this - - localctx = NewDrop_index_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 40, SqlParserRULE_drop_index_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(624) - p.Match(SqlParserK_DROP) - } - { - p.SetState(625) - p.Match(SqlParserK_INDEX) - } - p.SetState(628) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 73, p.GetParserRuleContext()) == 1 { - { - p.SetState(626) - p.Match(SqlParserK_IF) - } - { - p.SetState(627) - p.Match(SqlParserK_EXISTS) - } - - - } - p.SetState(633) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 74, p.GetParserRuleContext()) == 1 { - { - p.SetState(630) - p.Database_name() - } - { - p.SetState(631) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(635) - p.Index_name() - } - - - - return localctx -} - - -// IDrop_table_stmtContext is an interface to support dynamic dispatch. -type IDrop_table_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsDrop_table_stmtContext differentiates from other interfaces. - IsDrop_table_stmtContext() -} - -type Drop_table_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyDrop_table_stmtContext() *Drop_table_stmtContext { - var p = new(Drop_table_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_drop_table_stmt - return p -} - -func (*Drop_table_stmtContext) IsDrop_table_stmtContext() {} - -func NewDrop_table_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_table_stmtContext { - var p = new(Drop_table_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_drop_table_stmt - - return p -} - -func (s *Drop_table_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Drop_table_stmtContext) K_DROP() antlr.TerminalNode { - return s.GetToken(SqlParserK_DROP, 0) -} - -func (s *Drop_table_stmtContext) K_TABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_TABLE, 0) -} - -func (s *Drop_table_stmtContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Drop_table_stmtContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *Drop_table_stmtContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *Drop_table_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Drop_table_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Drop_table_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Drop_table_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Drop_table_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterDrop_table_stmt(s) - } -} - -func (s *Drop_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitDrop_table_stmt(s) - } -} - - - - -func (p *SqlParser) Drop_table_stmt() (localctx IDrop_table_stmtContext) { - this := p - _ = this - - localctx = NewDrop_table_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 42, SqlParserRULE_drop_table_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(637) - p.Match(SqlParserK_DROP) - } - { - p.SetState(638) - p.Match(SqlParserK_TABLE) - } - p.SetState(641) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 75, p.GetParserRuleContext()) == 1 { - { - p.SetState(639) - p.Match(SqlParserK_IF) - } - { - p.SetState(640) - p.Match(SqlParserK_EXISTS) - } - - - } - p.SetState(646) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 76, p.GetParserRuleContext()) == 1 { - { - p.SetState(643) - p.Database_name() - } - { - p.SetState(644) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(648) - p.Table_name() - } - - - - return localctx -} - - -// IDrop_trigger_stmtContext is an interface to support dynamic dispatch. -type IDrop_trigger_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsDrop_trigger_stmtContext differentiates from other interfaces. - IsDrop_trigger_stmtContext() -} - -type Drop_trigger_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyDrop_trigger_stmtContext() *Drop_trigger_stmtContext { - var p = new(Drop_trigger_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_drop_trigger_stmt - return p -} - -func (*Drop_trigger_stmtContext) IsDrop_trigger_stmtContext() {} - -func NewDrop_trigger_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_trigger_stmtContext { - var p = new(Drop_trigger_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_drop_trigger_stmt - - return p -} - -func (s *Drop_trigger_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Drop_trigger_stmtContext) K_DROP() antlr.TerminalNode { - return s.GetToken(SqlParserK_DROP, 0) -} - -func (s *Drop_trigger_stmtContext) K_TRIGGER() antlr.TerminalNode { - return s.GetToken(SqlParserK_TRIGGER, 0) -} - -func (s *Drop_trigger_stmtContext) Trigger_name() ITrigger_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITrigger_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITrigger_nameContext) -} - -func (s *Drop_trigger_stmtContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *Drop_trigger_stmtContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *Drop_trigger_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Drop_trigger_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Drop_trigger_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Drop_trigger_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Drop_trigger_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterDrop_trigger_stmt(s) - } -} - -func (s *Drop_trigger_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitDrop_trigger_stmt(s) - } -} - - - - -func (p *SqlParser) Drop_trigger_stmt() (localctx IDrop_trigger_stmtContext) { - this := p - _ = this - - localctx = NewDrop_trigger_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 44, SqlParserRULE_drop_trigger_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(650) - p.Match(SqlParserK_DROP) - } - { - p.SetState(651) - p.Match(SqlParserK_TRIGGER) - } - p.SetState(654) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 77, p.GetParserRuleContext()) == 1 { - { - p.SetState(652) - p.Match(SqlParserK_IF) - } - { - p.SetState(653) - p.Match(SqlParserK_EXISTS) - } - - - } - p.SetState(659) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 78, p.GetParserRuleContext()) == 1 { - { - p.SetState(656) - p.Database_name() - } - { - p.SetState(657) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(661) - p.Trigger_name() - } - - - - return localctx -} - - -// IDrop_view_stmtContext is an interface to support dynamic dispatch. -type IDrop_view_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsDrop_view_stmtContext differentiates from other interfaces. - IsDrop_view_stmtContext() -} - -type Drop_view_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyDrop_view_stmtContext() *Drop_view_stmtContext { - var p = new(Drop_view_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_drop_view_stmt - return p -} - -func (*Drop_view_stmtContext) IsDrop_view_stmtContext() {} - -func NewDrop_view_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_view_stmtContext { - var p = new(Drop_view_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_drop_view_stmt - - return p -} - -func (s *Drop_view_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Drop_view_stmtContext) K_DROP() antlr.TerminalNode { - return s.GetToken(SqlParserK_DROP, 0) -} - -func (s *Drop_view_stmtContext) K_VIEW() antlr.TerminalNode { - return s.GetToken(SqlParserK_VIEW, 0) -} - -func (s *Drop_view_stmtContext) View_name() IView_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IView_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IView_nameContext) -} - -func (s *Drop_view_stmtContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *Drop_view_stmtContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *Drop_view_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Drop_view_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Drop_view_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Drop_view_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Drop_view_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterDrop_view_stmt(s) - } -} - -func (s *Drop_view_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitDrop_view_stmt(s) - } -} - - - - -func (p *SqlParser) Drop_view_stmt() (localctx IDrop_view_stmtContext) { - this := p - _ = this - - localctx = NewDrop_view_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 46, SqlParserRULE_drop_view_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(663) - p.Match(SqlParserK_DROP) - } - { - p.SetState(664) - p.Match(SqlParserK_VIEW) - } - p.SetState(667) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 79, p.GetParserRuleContext()) == 1 { - { - p.SetState(665) - p.Match(SqlParserK_IF) - } - { - p.SetState(666) - p.Match(SqlParserK_EXISTS) - } - - - } - p.SetState(672) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 80, p.GetParserRuleContext()) == 1 { - { - p.SetState(669) - p.Database_name() - } - { - p.SetState(670) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(674) - p.View_name() - } - - - - return localctx -} - - -// IFactored_select_stmtContext is an interface to support dynamic dispatch. -type IFactored_select_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsFactored_select_stmtContext differentiates from other interfaces. - IsFactored_select_stmtContext() -} - -type Factored_select_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyFactored_select_stmtContext() *Factored_select_stmtContext { - var p = new(Factored_select_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_factored_select_stmt - return p -} - -func (*Factored_select_stmtContext) IsFactored_select_stmtContext() {} - -func NewFactored_select_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Factored_select_stmtContext { - var p = new(Factored_select_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_factored_select_stmt - - return p -} - -func (s *Factored_select_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Factored_select_stmtContext) AllSelect_core() []ISelect_coreContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ISelect_coreContext); ok { - len++ - } - } - - tst := make([]ISelect_coreContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ISelect_coreContext); ok { - tst[i] = t.(ISelect_coreContext) - i++ - } - } - - return tst -} - -func (s *Factored_select_stmtContext) Select_core(i int) ISelect_coreContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_coreContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ISelect_coreContext) -} - -func (s *Factored_select_stmtContext) K_WITH() antlr.TerminalNode { - return s.GetToken(SqlParserK_WITH, 0) -} - -func (s *Factored_select_stmtContext) AllCommon_table_expression() []ICommon_table_expressionContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ICommon_table_expressionContext); ok { - len++ - } - } - - tst := make([]ICommon_table_expressionContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ICommon_table_expressionContext); ok { - tst[i] = t.(ICommon_table_expressionContext) - i++ - } - } - - return tst -} - -func (s *Factored_select_stmtContext) Common_table_expression(i int) ICommon_table_expressionContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICommon_table_expressionContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ICommon_table_expressionContext) -} - -func (s *Factored_select_stmtContext) AllCompound_operator() []ICompound_operatorContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ICompound_operatorContext); ok { - len++ - } - } - - tst := make([]ICompound_operatorContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ICompound_operatorContext); ok { - tst[i] = t.(ICompound_operatorContext) - i++ - } - } - - return tst -} - -func (s *Factored_select_stmtContext) Compound_operator(i int) ICompound_operatorContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICompound_operatorContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ICompound_operatorContext) -} - -func (s *Factored_select_stmtContext) K_ORDER() antlr.TerminalNode { - return s.GetToken(SqlParserK_ORDER, 0) -} - -func (s *Factored_select_stmtContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Factored_select_stmtContext) AllOrdering_term() []IOrdering_termContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IOrdering_termContext); ok { - len++ - } - } - - tst := make([]IOrdering_termContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IOrdering_termContext); ok { - tst[i] = t.(IOrdering_termContext) - i++ - } - } - - return tst -} - -func (s *Factored_select_stmtContext) Ordering_term(i int) IOrdering_termContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOrdering_termContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IOrdering_termContext) -} - -func (s *Factored_select_stmtContext) K_LIMIT() antlr.TerminalNode { - return s.GetToken(SqlParserK_LIMIT, 0) -} - -func (s *Factored_select_stmtContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Factored_select_stmtContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Factored_select_stmtContext) K_RECURSIVE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RECURSIVE, 0) -} - -func (s *Factored_select_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Factored_select_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Factored_select_stmtContext) K_OFFSET() antlr.TerminalNode { - return s.GetToken(SqlParserK_OFFSET, 0) -} - -func (s *Factored_select_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Factored_select_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Factored_select_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterFactored_select_stmt(s) - } -} - -func (s *Factored_select_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitFactored_select_stmt(s) - } -} - - - - -func (p *SqlParser) Factored_select_stmt() (localctx IFactored_select_stmtContext) { - this := p - _ = this - - localctx = NewFactored_select_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 48, SqlParserRULE_factored_select_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(688) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WITH { - { - p.SetState(676) - p.Match(SqlParserK_WITH) - } - p.SetState(678) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 81, p.GetParserRuleContext()) == 1 { - { - p.SetState(677) - p.Match(SqlParserK_RECURSIVE) - } - - - } - { - p.SetState(680) - p.Common_table_expression() - } - p.SetState(685) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(681) - p.Match(SqlParserCOMMA) - } - { - p.SetState(682) - p.Common_table_expression() - } - - - p.SetState(687) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - { - p.SetState(690) - p.Select_core() - } - p.SetState(696) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserK_EXCEPT || _la == SqlParserK_INTERSECT || _la == SqlParserK_UNION { - { - p.SetState(691) - p.Compound_operator() - } - { - p.SetState(692) - p.Select_core() - } - - - p.SetState(698) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - p.SetState(709) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_ORDER { - { - p.SetState(699) - p.Match(SqlParserK_ORDER) - } - { - p.SetState(700) - p.Match(SqlParserK_BY) - } - { - p.SetState(701) - p.Ordering_term() - } - p.SetState(706) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(702) - p.Match(SqlParserCOMMA) - } - { - p.SetState(703) - p.Ordering_term() - } - - - p.SetState(708) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - p.SetState(717) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_LIMIT { - { - p.SetState(711) - p.Match(SqlParserK_LIMIT) - } - { - p.SetState(712) - p.expr(0) - } - p.SetState(715) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { - { - p.SetState(713) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(714) - p.expr(0) - } - - } - - } - - - - return localctx -} - - -// IInsert_stmtContext is an interface to support dynamic dispatch. -type IInsert_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsInsert_stmtContext differentiates from other interfaces. - IsInsert_stmtContext() -} - -type Insert_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyInsert_stmtContext() *Insert_stmtContext { - var p = new(Insert_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_insert_stmt - return p -} - -func (*Insert_stmtContext) IsInsert_stmtContext() {} - -func NewInsert_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Insert_stmtContext { - var p = new(Insert_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_insert_stmt - - return p -} - -func (s *Insert_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Insert_stmtContext) K_INTO() antlr.TerminalNode { - return s.GetToken(SqlParserK_INTO, 0) -} - -func (s *Insert_stmtContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Insert_stmtContext) K_INSERT() antlr.TerminalNode { - return s.GetToken(SqlParserK_INSERT, 0) -} - -func (s *Insert_stmtContext) K_REPLACE() antlr.TerminalNode { - return s.GetToken(SqlParserK_REPLACE, 0) -} - -func (s *Insert_stmtContext) K_OR() antlr.TerminalNode { - return s.GetToken(SqlParserK_OR, 0) -} - -func (s *Insert_stmtContext) K_ROLLBACK() antlr.TerminalNode { - return s.GetToken(SqlParserK_ROLLBACK, 0) -} - -func (s *Insert_stmtContext) K_ABORT() antlr.TerminalNode { - return s.GetToken(SqlParserK_ABORT, 0) -} - -func (s *Insert_stmtContext) K_FAIL() antlr.TerminalNode { - return s.GetToken(SqlParserK_FAIL, 0) -} - -func (s *Insert_stmtContext) K_IGNORE() antlr.TerminalNode { - return s.GetToken(SqlParserK_IGNORE, 0) -} - -func (s *Insert_stmtContext) K_VALUES() antlr.TerminalNode { - return s.GetToken(SqlParserK_VALUES, 0) -} - -func (s *Insert_stmtContext) AllOPEN_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserOPEN_PAR) -} - -func (s *Insert_stmtContext) OPEN_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, i) -} - -func (s *Insert_stmtContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Insert_stmtContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Insert_stmtContext) AllCLOSE_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserCLOSE_PAR) -} - -func (s *Insert_stmtContext) CLOSE_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, i) -} - -func (s *Insert_stmtContext) Select_stmt() ISelect_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISelect_stmtContext) -} - -func (s *Insert_stmtContext) K_DEFAULT() antlr.TerminalNode { - return s.GetToken(SqlParserK_DEFAULT, 0) -} - -func (s *Insert_stmtContext) With_clause() IWith_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IWith_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IWith_clauseContext) -} - -func (s *Insert_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Insert_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Insert_stmtContext) AllColumn_name() []IColumn_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IColumn_nameContext); ok { - len++ - } - } - - tst := make([]IColumn_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IColumn_nameContext); ok { - tst[i] = t.(IColumn_nameContext) - i++ - } - } - - return tst -} - -func (s *Insert_stmtContext) Column_name(i int) IColumn_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Insert_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Insert_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Insert_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Insert_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Insert_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterInsert_stmt(s) - } -} - -func (s *Insert_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitInsert_stmt(s) - } -} - - - - -func (p *SqlParser) Insert_stmt() (localctx IInsert_stmtContext) { - this := p - _ = this - - localctx = NewInsert_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 50, SqlParserRULE_insert_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(720) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WITH { - { - p.SetState(719) - p.With_clause() - } - - } - p.SetState(739) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 90, p.GetParserRuleContext()) { - case 1: - { - p.SetState(722) - p.Match(SqlParserK_INSERT) - } - - - case 2: - { - p.SetState(723) - p.Match(SqlParserK_REPLACE) - } - - - case 3: - { - p.SetState(724) - p.Match(SqlParserK_INSERT) - } - { - p.SetState(725) - p.Match(SqlParserK_OR) - } - { - p.SetState(726) - p.Match(SqlParserK_REPLACE) - } - - - case 4: - { - p.SetState(727) - p.Match(SqlParserK_INSERT) - } - { - p.SetState(728) - p.Match(SqlParserK_OR) - } - { - p.SetState(729) - p.Match(SqlParserK_ROLLBACK) - } - - - case 5: - { - p.SetState(730) - p.Match(SqlParserK_INSERT) - } - { - p.SetState(731) - p.Match(SqlParserK_OR) - } - { - p.SetState(732) - p.Match(SqlParserK_ABORT) - } - - - case 6: - { - p.SetState(733) - p.Match(SqlParserK_INSERT) - } - { - p.SetState(734) - p.Match(SqlParserK_OR) - } - { - p.SetState(735) - p.Match(SqlParserK_FAIL) - } - - - case 7: - { - p.SetState(736) - p.Match(SqlParserK_INSERT) - } - { - p.SetState(737) - p.Match(SqlParserK_OR) - } - { - p.SetState(738) - p.Match(SqlParserK_IGNORE) - } - - } - { - p.SetState(741) - p.Match(SqlParserK_INTO) - } - p.SetState(745) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 91, p.GetParserRuleContext()) == 1 { - { - p.SetState(742) - p.Database_name() - } - { - p.SetState(743) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(747) - p.Table_name() - } - p.SetState(759) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserOPEN_PAR { - { - p.SetState(748) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(749) - p.Column_name() - } - p.SetState(754) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(750) - p.Match(SqlParserCOMMA) - } - { - p.SetState(751) - p.Column_name() - } - - - p.SetState(756) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(757) - p.Match(SqlParserCLOSE_PAR) - } - - } - p.SetState(792) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 97, p.GetParserRuleContext()) { - case 1: - { - p.SetState(761) - p.Match(SqlParserK_VALUES) - } - { - p.SetState(762) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(763) - p.expr(0) - } - p.SetState(768) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(764) - p.Match(SqlParserCOMMA) - } - { - p.SetState(765) - p.expr(0) - } - - - p.SetState(770) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(771) - p.Match(SqlParserCLOSE_PAR) - } - p.SetState(786) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(772) - p.Match(SqlParserCOMMA) - } - { - p.SetState(773) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(774) - p.expr(0) - } - p.SetState(779) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(775) - p.Match(SqlParserCOMMA) - } - { - p.SetState(776) - p.expr(0) - } - - - p.SetState(781) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(782) - p.Match(SqlParserCLOSE_PAR) - } - - - p.SetState(788) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - - case 2: - { - p.SetState(789) - p.Select_stmt() - } - - - case 3: - { - p.SetState(790) - p.Match(SqlParserK_DEFAULT) - } - { - p.SetState(791) - p.Match(SqlParserK_VALUES) - } - - } - - - - return localctx -} - - -// IPragma_stmtContext is an interface to support dynamic dispatch. -type IPragma_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsPragma_stmtContext differentiates from other interfaces. - IsPragma_stmtContext() -} - -type Pragma_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyPragma_stmtContext() *Pragma_stmtContext { - var p = new(Pragma_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_pragma_stmt - return p -} - -func (*Pragma_stmtContext) IsPragma_stmtContext() {} - -func NewPragma_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Pragma_stmtContext { - var p = new(Pragma_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_pragma_stmt - - return p -} - -func (s *Pragma_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Pragma_stmtContext) K_PRAGMA() antlr.TerminalNode { - return s.GetToken(SqlParserK_PRAGMA, 0) -} - -func (s *Pragma_stmtContext) Pragma_name() IPragma_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IPragma_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IPragma_nameContext) -} - -func (s *Pragma_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Pragma_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Pragma_stmtContext) ASSIGN() antlr.TerminalNode { - return s.GetToken(SqlParserASSIGN, 0) -} - -func (s *Pragma_stmtContext) Pragma_value() IPragma_valueContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IPragma_valueContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IPragma_valueContext) -} - -func (s *Pragma_stmtContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Pragma_stmtContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Pragma_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Pragma_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Pragma_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterPragma_stmt(s) - } -} - -func (s *Pragma_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitPragma_stmt(s) - } -} - - - - -func (p *SqlParser) Pragma_stmt() (localctx IPragma_stmtContext) { - this := p - _ = this - - localctx = NewPragma_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 52, SqlParserRULE_pragma_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(794) - p.Match(SqlParserK_PRAGMA) - } - p.SetState(798) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 98, p.GetParserRuleContext()) == 1 { - { - p.SetState(795) - p.Database_name() - } - { - p.SetState(796) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(800) - p.Pragma_name() - } - p.SetState(807) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserASSIGN: - { - p.SetState(801) - p.Match(SqlParserASSIGN) - } - { - p.SetState(802) - p.Pragma_value() - } - - - case SqlParserOPEN_PAR: - { - p.SetState(803) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(804) - p.Pragma_value() - } - { - p.SetState(805) - p.Match(SqlParserCLOSE_PAR) - } - - - case SqlParserEOF, SqlParserSCOL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_ATTACH, SqlParserK_BEGIN, SqlParserK_COMMIT, SqlParserK_CREATE, SqlParserK_DELETE, SqlParserK_DETACH, SqlParserK_DROP, SqlParserK_END, SqlParserK_EXPLAIN, SqlParserK_INSERT, SqlParserK_PRAGMA, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_REPLACE, SqlParserK_ROLLBACK, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_UPDATE, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_WITH, SqlParserUNEXPECTED_CHAR: - - - - default: - } - - - - return localctx -} - - -// IReindex_stmtContext is an interface to support dynamic dispatch. -type IReindex_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsReindex_stmtContext differentiates from other interfaces. - IsReindex_stmtContext() -} - -type Reindex_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyReindex_stmtContext() *Reindex_stmtContext { - var p = new(Reindex_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_reindex_stmt - return p -} - -func (*Reindex_stmtContext) IsReindex_stmtContext() {} - -func NewReindex_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Reindex_stmtContext { - var p = new(Reindex_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_reindex_stmt - - return p -} - -func (s *Reindex_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Reindex_stmtContext) K_REINDEX() antlr.TerminalNode { - return s.GetToken(SqlParserK_REINDEX, 0) -} - -func (s *Reindex_stmtContext) Collation_name() ICollation_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICollation_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICollation_nameContext) -} - -func (s *Reindex_stmtContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Reindex_stmtContext) Index_name() IIndex_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIndex_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IIndex_nameContext) -} - -func (s *Reindex_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Reindex_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Reindex_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Reindex_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Reindex_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterReindex_stmt(s) - } -} - -func (s *Reindex_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitReindex_stmt(s) - } -} - - - - -func (p *SqlParser) Reindex_stmt() (localctx IReindex_stmtContext) { - this := p - _ = this - - localctx = NewReindex_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 54, SqlParserRULE_reindex_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(809) - p.Match(SqlParserK_REINDEX) - } - p.SetState(820) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 102, p.GetParserRuleContext()) == 1 { - { - p.SetState(810) - p.Collation_name() - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 102, p.GetParserRuleContext()) == 2 { - p.SetState(814) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 100, p.GetParserRuleContext()) == 1 { - { - p.SetState(811) - p.Database_name() - } - { - p.SetState(812) - p.Match(SqlParserDOT) - } - - - } - p.SetState(818) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 101, p.GetParserRuleContext()) { - case 1: - { - p.SetState(816) - p.Table_name() - } - - - case 2: - { - p.SetState(817) - p.Index_name() - } - - } - - - } - - - - return localctx -} - - -// IRelease_stmtContext is an interface to support dynamic dispatch. -type IRelease_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsRelease_stmtContext differentiates from other interfaces. - IsRelease_stmtContext() -} - -type Release_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyRelease_stmtContext() *Release_stmtContext { - var p = new(Release_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_release_stmt - return p -} - -func (*Release_stmtContext) IsRelease_stmtContext() {} - -func NewRelease_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Release_stmtContext { - var p = new(Release_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_release_stmt - - return p -} - -func (s *Release_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Release_stmtContext) K_RELEASE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RELEASE, 0) -} - -func (s *Release_stmtContext) Savepoint_name() ISavepoint_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISavepoint_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISavepoint_nameContext) -} - -func (s *Release_stmtContext) K_SAVEPOINT() antlr.TerminalNode { - return s.GetToken(SqlParserK_SAVEPOINT, 0) -} - -func (s *Release_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Release_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Release_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterRelease_stmt(s) - } -} - -func (s *Release_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitRelease_stmt(s) - } -} - - - - -func (p *SqlParser) Release_stmt() (localctx IRelease_stmtContext) { - this := p - _ = this - - localctx = NewRelease_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 56, SqlParserRULE_release_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(822) - p.Match(SqlParserK_RELEASE) - } - p.SetState(824) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 103, p.GetParserRuleContext()) == 1 { - { - p.SetState(823) - p.Match(SqlParserK_SAVEPOINT) - } - - - } - { - p.SetState(826) - p.Savepoint_name() - } - - - - return localctx -} - - -// IRollback_stmtContext is an interface to support dynamic dispatch. -type IRollback_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsRollback_stmtContext differentiates from other interfaces. - IsRollback_stmtContext() -} - -type Rollback_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyRollback_stmtContext() *Rollback_stmtContext { - var p = new(Rollback_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_rollback_stmt - return p -} - -func (*Rollback_stmtContext) IsRollback_stmtContext() {} - -func NewRollback_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Rollback_stmtContext { - var p = new(Rollback_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_rollback_stmt - - return p -} - -func (s *Rollback_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Rollback_stmtContext) K_ROLLBACK() antlr.TerminalNode { - return s.GetToken(SqlParserK_ROLLBACK, 0) -} - -func (s *Rollback_stmtContext) K_TRANSACTION() antlr.TerminalNode { - return s.GetToken(SqlParserK_TRANSACTION, 0) -} - -func (s *Rollback_stmtContext) K_TO() antlr.TerminalNode { - return s.GetToken(SqlParserK_TO, 0) -} - -func (s *Rollback_stmtContext) Savepoint_name() ISavepoint_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISavepoint_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISavepoint_nameContext) -} - -func (s *Rollback_stmtContext) Transaction_name() ITransaction_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITransaction_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITransaction_nameContext) -} - -func (s *Rollback_stmtContext) K_SAVEPOINT() antlr.TerminalNode { - return s.GetToken(SqlParserK_SAVEPOINT, 0) -} - -func (s *Rollback_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Rollback_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Rollback_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterRollback_stmt(s) - } -} - -func (s *Rollback_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitRollback_stmt(s) - } -} - - - - -func (p *SqlParser) Rollback_stmt() (localctx IRollback_stmtContext) { - this := p - _ = this - - localctx = NewRollback_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 58, SqlParserRULE_rollback_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(828) - p.Match(SqlParserK_ROLLBACK) - } - p.SetState(833) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_TRANSACTION { - { - p.SetState(829) - p.Match(SqlParserK_TRANSACTION) - } - p.SetState(831) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 104, p.GetParserRuleContext()) == 1 { - { - p.SetState(830) - p.Transaction_name() - } - - - } - - } - p.SetState(840) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_TO { - { - p.SetState(835) - p.Match(SqlParserK_TO) - } - p.SetState(837) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 106, p.GetParserRuleContext()) == 1 { - { - p.SetState(836) - p.Match(SqlParserK_SAVEPOINT) - } - - - } - { - p.SetState(839) - p.Savepoint_name() - } - - } - - - - return localctx -} - - -// ISavepoint_stmtContext is an interface to support dynamic dispatch. -type ISavepoint_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSavepoint_stmtContext differentiates from other interfaces. - IsSavepoint_stmtContext() -} - -type Savepoint_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySavepoint_stmtContext() *Savepoint_stmtContext { - var p = new(Savepoint_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_savepoint_stmt - return p -} - -func (*Savepoint_stmtContext) IsSavepoint_stmtContext() {} - -func NewSavepoint_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Savepoint_stmtContext { - var p = new(Savepoint_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_savepoint_stmt - - return p -} - -func (s *Savepoint_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Savepoint_stmtContext) K_SAVEPOINT() antlr.TerminalNode { - return s.GetToken(SqlParserK_SAVEPOINT, 0) -} - -func (s *Savepoint_stmtContext) Savepoint_name() ISavepoint_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISavepoint_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISavepoint_nameContext) -} - -func (s *Savepoint_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Savepoint_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Savepoint_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSavepoint_stmt(s) - } -} - -func (s *Savepoint_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSavepoint_stmt(s) - } -} - - - - -func (p *SqlParser) Savepoint_stmt() (localctx ISavepoint_stmtContext) { - this := p - _ = this - - localctx = NewSavepoint_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 60, SqlParserRULE_savepoint_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(842) - p.Match(SqlParserK_SAVEPOINT) - } - { - p.SetState(843) - p.Savepoint_name() - } - - - - return localctx -} - - -// ISimple_select_stmtContext is an interface to support dynamic dispatch. -type ISimple_select_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSimple_select_stmtContext differentiates from other interfaces. - IsSimple_select_stmtContext() -} - -type Simple_select_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySimple_select_stmtContext() *Simple_select_stmtContext { - var p = new(Simple_select_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_simple_select_stmt - return p -} - -func (*Simple_select_stmtContext) IsSimple_select_stmtContext() {} - -func NewSimple_select_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Simple_select_stmtContext { - var p = new(Simple_select_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_simple_select_stmt - - return p -} - -func (s *Simple_select_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Simple_select_stmtContext) Select_core() ISelect_coreContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_coreContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISelect_coreContext) -} - -func (s *Simple_select_stmtContext) K_WITH() antlr.TerminalNode { - return s.GetToken(SqlParserK_WITH, 0) -} - -func (s *Simple_select_stmtContext) AllCommon_table_expression() []ICommon_table_expressionContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ICommon_table_expressionContext); ok { - len++ - } - } - - tst := make([]ICommon_table_expressionContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ICommon_table_expressionContext); ok { - tst[i] = t.(ICommon_table_expressionContext) - i++ - } - } - - return tst -} - -func (s *Simple_select_stmtContext) Common_table_expression(i int) ICommon_table_expressionContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICommon_table_expressionContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ICommon_table_expressionContext) -} - -func (s *Simple_select_stmtContext) K_ORDER() antlr.TerminalNode { - return s.GetToken(SqlParserK_ORDER, 0) -} - -func (s *Simple_select_stmtContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Simple_select_stmtContext) AllOrdering_term() []IOrdering_termContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IOrdering_termContext); ok { - len++ - } - } - - tst := make([]IOrdering_termContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IOrdering_termContext); ok { - tst[i] = t.(IOrdering_termContext) - i++ - } - } - - return tst -} - -func (s *Simple_select_stmtContext) Ordering_term(i int) IOrdering_termContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOrdering_termContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IOrdering_termContext) -} - -func (s *Simple_select_stmtContext) K_LIMIT() antlr.TerminalNode { - return s.GetToken(SqlParserK_LIMIT, 0) -} - -func (s *Simple_select_stmtContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Simple_select_stmtContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Simple_select_stmtContext) K_RECURSIVE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RECURSIVE, 0) -} - -func (s *Simple_select_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Simple_select_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Simple_select_stmtContext) K_OFFSET() antlr.TerminalNode { - return s.GetToken(SqlParserK_OFFSET, 0) -} - -func (s *Simple_select_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Simple_select_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Simple_select_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSimple_select_stmt(s) - } -} - -func (s *Simple_select_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSimple_select_stmt(s) - } -} - - - - -func (p *SqlParser) Simple_select_stmt() (localctx ISimple_select_stmtContext) { - this := p - _ = this - - localctx = NewSimple_select_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 62, SqlParserRULE_simple_select_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(857) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WITH { - { - p.SetState(845) - p.Match(SqlParserK_WITH) - } - p.SetState(847) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 108, p.GetParserRuleContext()) == 1 { - { - p.SetState(846) - p.Match(SqlParserK_RECURSIVE) - } - - - } - { - p.SetState(849) - p.Common_table_expression() - } - p.SetState(854) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(850) - p.Match(SqlParserCOMMA) - } - { - p.SetState(851) - p.Common_table_expression() - } - - - p.SetState(856) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - { - p.SetState(859) - p.Select_core() - } - p.SetState(870) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_ORDER { - { - p.SetState(860) - p.Match(SqlParserK_ORDER) - } - { - p.SetState(861) - p.Match(SqlParserK_BY) - } - { - p.SetState(862) - p.Ordering_term() - } - p.SetState(867) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(863) - p.Match(SqlParserCOMMA) - } - { - p.SetState(864) - p.Ordering_term() - } - - - p.SetState(869) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - p.SetState(878) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_LIMIT { - { - p.SetState(872) - p.Match(SqlParserK_LIMIT) - } - { - p.SetState(873) - p.expr(0) - } - p.SetState(876) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { - { - p.SetState(874) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(875) - p.expr(0) - } - - } - - } - - - - return localctx -} - - -// ISelect_stmtContext is an interface to support dynamic dispatch. -type ISelect_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSelect_stmtContext differentiates from other interfaces. - IsSelect_stmtContext() -} - -type Select_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySelect_stmtContext() *Select_stmtContext { - var p = new(Select_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_select_stmt - return p -} - -func (*Select_stmtContext) IsSelect_stmtContext() {} - -func NewSelect_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Select_stmtContext { - var p = new(Select_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_select_stmt - - return p -} - -func (s *Select_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Select_stmtContext) AllSelect_or_values() []ISelect_or_valuesContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ISelect_or_valuesContext); ok { - len++ - } - } - - tst := make([]ISelect_or_valuesContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ISelect_or_valuesContext); ok { - tst[i] = t.(ISelect_or_valuesContext) - i++ - } - } - - return tst -} - -func (s *Select_stmtContext) Select_or_values(i int) ISelect_or_valuesContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_or_valuesContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ISelect_or_valuesContext) -} - -func (s *Select_stmtContext) K_WITH() antlr.TerminalNode { - return s.GetToken(SqlParserK_WITH, 0) -} - -func (s *Select_stmtContext) AllCommon_table_expression() []ICommon_table_expressionContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ICommon_table_expressionContext); ok { - len++ - } - } - - tst := make([]ICommon_table_expressionContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ICommon_table_expressionContext); ok { - tst[i] = t.(ICommon_table_expressionContext) - i++ - } - } - - return tst -} - -func (s *Select_stmtContext) Common_table_expression(i int) ICommon_table_expressionContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICommon_table_expressionContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ICommon_table_expressionContext) -} - -func (s *Select_stmtContext) AllCompound_operator() []ICompound_operatorContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ICompound_operatorContext); ok { - len++ - } - } - - tst := make([]ICompound_operatorContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ICompound_operatorContext); ok { - tst[i] = t.(ICompound_operatorContext) - i++ - } - } - - return tst -} - -func (s *Select_stmtContext) Compound_operator(i int) ICompound_operatorContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICompound_operatorContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ICompound_operatorContext) -} - -func (s *Select_stmtContext) K_ORDER() antlr.TerminalNode { - return s.GetToken(SqlParserK_ORDER, 0) -} - -func (s *Select_stmtContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Select_stmtContext) AllOrdering_term() []IOrdering_termContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IOrdering_termContext); ok { - len++ - } - } - - tst := make([]IOrdering_termContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IOrdering_termContext); ok { - tst[i] = t.(IOrdering_termContext) - i++ - } - } - - return tst -} - -func (s *Select_stmtContext) Ordering_term(i int) IOrdering_termContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOrdering_termContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IOrdering_termContext) -} - -func (s *Select_stmtContext) K_LIMIT() antlr.TerminalNode { - return s.GetToken(SqlParserK_LIMIT, 0) -} - -func (s *Select_stmtContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Select_stmtContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Select_stmtContext) K_RECURSIVE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RECURSIVE, 0) -} - -func (s *Select_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Select_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Select_stmtContext) K_OFFSET() antlr.TerminalNode { - return s.GetToken(SqlParserK_OFFSET, 0) -} - -func (s *Select_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Select_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Select_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSelect_stmt(s) - } -} - -func (s *Select_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSelect_stmt(s) - } -} - - - - -func (p *SqlParser) Select_stmt() (localctx ISelect_stmtContext) { - this := p - _ = this - - localctx = NewSelect_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 64, SqlParserRULE_select_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.EnterOuterAlt(localctx, 1) - p.SetState(892) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WITH { - { - p.SetState(880) - p.Match(SqlParserK_WITH) - } - p.SetState(882) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 115, p.GetParserRuleContext()) == 1 { - { - p.SetState(881) - p.Match(SqlParserK_RECURSIVE) - } - - - } - { - p.SetState(884) - p.Common_table_expression() - } - p.SetState(889) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(885) - p.Match(SqlParserCOMMA) - } - { - p.SetState(886) - p.Common_table_expression() - } - - - p.SetState(891) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - { - p.SetState(894) - p.Select_or_values() - } - p.SetState(900) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 118, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - { - p.SetState(895) - p.Compound_operator() - } - { - p.SetState(896) - p.Select_or_values() - } - - - } - p.SetState(902) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 118, p.GetParserRuleContext()) - } - p.SetState(913) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 120, p.GetParserRuleContext()) == 1 { - { - p.SetState(903) - p.Match(SqlParserK_ORDER) - } - { - p.SetState(904) - p.Match(SqlParserK_BY) - } - { - p.SetState(905) - p.Ordering_term() - } - p.SetState(910) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 119, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - { - p.SetState(906) - p.Match(SqlParserCOMMA) - } - { - p.SetState(907) - p.Ordering_term() - } - - - } - p.SetState(912) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 119, p.GetParserRuleContext()) - } - - - } - p.SetState(921) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 122, p.GetParserRuleContext()) == 1 { - { - p.SetState(915) - p.Match(SqlParserK_LIMIT) - } - { - p.SetState(916) - p.expr(0) - } - p.SetState(919) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 121, p.GetParserRuleContext()) == 1 { - { - p.SetState(917) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(918) - p.expr(0) - } - - - } - - - } - - - - return localctx -} - - -// ISelect_or_valuesContext is an interface to support dynamic dispatch. -type ISelect_or_valuesContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSelect_or_valuesContext differentiates from other interfaces. - IsSelect_or_valuesContext() -} - -type Select_or_valuesContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySelect_or_valuesContext() *Select_or_valuesContext { - var p = new(Select_or_valuesContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_select_or_values - return p -} - -func (*Select_or_valuesContext) IsSelect_or_valuesContext() {} - -func NewSelect_or_valuesContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Select_or_valuesContext { - var p = new(Select_or_valuesContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_select_or_values - - return p -} - -func (s *Select_or_valuesContext) GetParser() antlr.Parser { return s.parser } - -func (s *Select_or_valuesContext) K_SELECT() antlr.TerminalNode { - return s.GetToken(SqlParserK_SELECT, 0) -} - -func (s *Select_or_valuesContext) AllResult_column() []IResult_columnContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IResult_columnContext); ok { - len++ - } - } - - tst := make([]IResult_columnContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IResult_columnContext); ok { - tst[i] = t.(IResult_columnContext) - i++ - } - } - - return tst -} - -func (s *Select_or_valuesContext) Result_column(i int) IResult_columnContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IResult_columnContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IResult_columnContext) -} - -func (s *Select_or_valuesContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Select_or_valuesContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Select_or_valuesContext) K_FROM() antlr.TerminalNode { - return s.GetToken(SqlParserK_FROM, 0) -} - -func (s *Select_or_valuesContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHERE, 0) -} - -func (s *Select_or_valuesContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Select_or_valuesContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Select_or_valuesContext) K_GROUP() antlr.TerminalNode { - return s.GetToken(SqlParserK_GROUP, 0) -} - -func (s *Select_or_valuesContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Select_or_valuesContext) K_DISTINCT() antlr.TerminalNode { - return s.GetToken(SqlParserK_DISTINCT, 0) -} - -func (s *Select_or_valuesContext) K_ALL() antlr.TerminalNode { - return s.GetToken(SqlParserK_ALL, 0) -} - -func (s *Select_or_valuesContext) AllTable_or_subquery() []ITable_or_subqueryContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ITable_or_subqueryContext); ok { - len++ - } - } - - tst := make([]ITable_or_subqueryContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ITable_or_subqueryContext); ok { - tst[i] = t.(ITable_or_subqueryContext) - i++ - } - } - - return tst -} - -func (s *Select_or_valuesContext) Table_or_subquery(i int) ITable_or_subqueryContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_or_subqueryContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ITable_or_subqueryContext) -} - -func (s *Select_or_valuesContext) Join_clause() IJoin_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IJoin_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IJoin_clauseContext) -} - -func (s *Select_or_valuesContext) K_HAVING() antlr.TerminalNode { - return s.GetToken(SqlParserK_HAVING, 0) -} - -func (s *Select_or_valuesContext) K_VALUES() antlr.TerminalNode { - return s.GetToken(SqlParserK_VALUES, 0) -} - -func (s *Select_or_valuesContext) AllOPEN_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserOPEN_PAR) -} - -func (s *Select_or_valuesContext) OPEN_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, i) -} - -func (s *Select_or_valuesContext) AllCLOSE_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserCLOSE_PAR) -} - -func (s *Select_or_valuesContext) CLOSE_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, i) -} - -func (s *Select_or_valuesContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Select_or_valuesContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Select_or_valuesContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSelect_or_values(s) - } -} - -func (s *Select_or_valuesContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSelect_or_values(s) - } -} - - - - -func (p *SqlParser) Select_or_values() (localctx ISelect_or_valuesContext) { - this := p - _ = this - - localctx = NewSelect_or_valuesContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 66, SqlParserRULE_select_or_values) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.SetState(997) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_SELECT: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(923) - p.Match(SqlParserK_SELECT) - } - p.SetState(925) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 123, p.GetParserRuleContext()) == 1 { - { - p.SetState(924) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_ALL || _la == SqlParserK_DISTINCT) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - - } - { - p.SetState(927) - p.Result_column() - } - p.SetState(932) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 124, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - { - p.SetState(928) - p.Match(SqlParserCOMMA) - } - { - p.SetState(929) - p.Result_column() - } - - - } - p.SetState(934) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 124, p.GetParserRuleContext()) - } - p.SetState(947) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 127, p.GetParserRuleContext()) == 1 { - { - p.SetState(935) - p.Match(SqlParserK_FROM) - } - p.SetState(945) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 126, p.GetParserRuleContext()) { - case 1: - { - p.SetState(936) - p.Table_or_subquery() - } - p.SetState(941) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 125, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - { - p.SetState(937) - p.Match(SqlParserCOMMA) - } - { - p.SetState(938) - p.Table_or_subquery() - } - - - } - p.SetState(943) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 125, p.GetParserRuleContext()) - } - - - case 2: - { - p.SetState(944) - p.Join_clause() - } - - } - - - } - p.SetState(951) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 128, p.GetParserRuleContext()) == 1 { - { - p.SetState(949) - p.Match(SqlParserK_WHERE) - } - { - p.SetState(950) - p.expr(0) - } - - - } - p.SetState(967) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 131, p.GetParserRuleContext()) == 1 { - { - p.SetState(953) - p.Match(SqlParserK_GROUP) - } - { - p.SetState(954) - p.Match(SqlParserK_BY) - } - { - p.SetState(955) - p.expr(0) - } - p.SetState(960) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 129, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - { - p.SetState(956) - p.Match(SqlParserCOMMA) - } - { - p.SetState(957) - p.expr(0) - } - - - } - p.SetState(962) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 129, p.GetParserRuleContext()) - } - p.SetState(965) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 130, p.GetParserRuleContext()) == 1 { - { - p.SetState(963) - p.Match(SqlParserK_HAVING) - } - { - p.SetState(964) - p.expr(0) - } - - - } - - - } - - - case SqlParserK_VALUES: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(969) - p.Match(SqlParserK_VALUES) - } - { - p.SetState(970) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(971) - p.expr(0) - } - p.SetState(976) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(972) - p.Match(SqlParserCOMMA) - } - { - p.SetState(973) - p.expr(0) - } - - - p.SetState(978) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(979) - p.Match(SqlParserCLOSE_PAR) - } - p.SetState(994) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 134, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - { - p.SetState(980) - p.Match(SqlParserCOMMA) - } - { - p.SetState(981) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(982) - p.expr(0) - } - p.SetState(987) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(983) - p.Match(SqlParserCOMMA) - } - { - p.SetState(984) - p.expr(0) - } - - - p.SetState(989) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(990) - p.Match(SqlParserCLOSE_PAR) - } - - - } - p.SetState(996) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 134, p.GetParserRuleContext()) - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - - return localctx -} - - -// IUpdate_stmtContext is an interface to support dynamic dispatch. -type IUpdate_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsUpdate_stmtContext differentiates from other interfaces. - IsUpdate_stmtContext() -} - -type Update_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyUpdate_stmtContext() *Update_stmtContext { - var p = new(Update_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_update_stmt - return p -} - -func (*Update_stmtContext) IsUpdate_stmtContext() {} - -func NewUpdate_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Update_stmtContext { - var p = new(Update_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_update_stmt - - return p -} - -func (s *Update_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Update_stmtContext) K_UPDATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_UPDATE, 0) -} - -func (s *Update_stmtContext) Qualified_table_name() IQualified_table_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IQualified_table_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IQualified_table_nameContext) -} - -func (s *Update_stmtContext) K_SET() antlr.TerminalNode { - return s.GetToken(SqlParserK_SET, 0) -} - -func (s *Update_stmtContext) AllColumn_name() []IColumn_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IColumn_nameContext); ok { - len++ - } - } - - tst := make([]IColumn_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IColumn_nameContext); ok { - tst[i] = t.(IColumn_nameContext) - i++ - } - } - - return tst -} - -func (s *Update_stmtContext) Column_name(i int) IColumn_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Update_stmtContext) AllASSIGN() []antlr.TerminalNode { - return s.GetTokens(SqlParserASSIGN) -} - -func (s *Update_stmtContext) ASSIGN(i int) antlr.TerminalNode { - return s.GetToken(SqlParserASSIGN, i) -} - -func (s *Update_stmtContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Update_stmtContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Update_stmtContext) With_clause() IWith_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IWith_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IWith_clauseContext) -} - -func (s *Update_stmtContext) K_OR() antlr.TerminalNode { - return s.GetToken(SqlParserK_OR, 0) -} - -func (s *Update_stmtContext) K_ROLLBACK() antlr.TerminalNode { - return s.GetToken(SqlParserK_ROLLBACK, 0) -} - -func (s *Update_stmtContext) K_ABORT() antlr.TerminalNode { - return s.GetToken(SqlParserK_ABORT, 0) -} - -func (s *Update_stmtContext) K_REPLACE() antlr.TerminalNode { - return s.GetToken(SqlParserK_REPLACE, 0) -} - -func (s *Update_stmtContext) K_FAIL() antlr.TerminalNode { - return s.GetToken(SqlParserK_FAIL, 0) -} - -func (s *Update_stmtContext) K_IGNORE() antlr.TerminalNode { - return s.GetToken(SqlParserK_IGNORE, 0) -} - -func (s *Update_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Update_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Update_stmtContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHERE, 0) -} - -func (s *Update_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Update_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Update_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterUpdate_stmt(s) - } -} - -func (s *Update_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitUpdate_stmt(s) - } -} - - - - -func (p *SqlParser) Update_stmt() (localctx IUpdate_stmtContext) { - this := p - _ = this - - localctx = NewUpdate_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 68, SqlParserRULE_update_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(1000) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WITH { - { - p.SetState(999) - p.With_clause() - } - - } - { - p.SetState(1002) - p.Match(SqlParserK_UPDATE) - } - p.SetState(1013) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 1 { - { - p.SetState(1003) - p.Match(SqlParserK_OR) - } - { - p.SetState(1004) - p.Match(SqlParserK_ROLLBACK) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 2 { - { - p.SetState(1005) - p.Match(SqlParserK_OR) - } - { - p.SetState(1006) - p.Match(SqlParserK_ABORT) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 3 { - { - p.SetState(1007) - p.Match(SqlParserK_OR) - } - { - p.SetState(1008) - p.Match(SqlParserK_REPLACE) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 4 { - { - p.SetState(1009) - p.Match(SqlParserK_OR) - } - { - p.SetState(1010) - p.Match(SqlParserK_FAIL) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 5 { - { - p.SetState(1011) - p.Match(SqlParserK_OR) - } - { - p.SetState(1012) - p.Match(SqlParserK_IGNORE) - } - - - } - { - p.SetState(1015) - p.Qualified_table_name() - } - { - p.SetState(1016) - p.Match(SqlParserK_SET) - } - { - p.SetState(1017) - p.Column_name() - } - { - p.SetState(1018) - p.Match(SqlParserASSIGN) - } - { - p.SetState(1019) - p.expr(0) - } - p.SetState(1027) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1020) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1021) - p.Column_name() - } - { - p.SetState(1022) - p.Match(SqlParserASSIGN) - } - { - p.SetState(1023) - p.expr(0) - } - - - p.SetState(1029) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - p.SetState(1032) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WHERE { - { - p.SetState(1030) - p.Match(SqlParserK_WHERE) - } - { - p.SetState(1031) - p.expr(0) - } - - } - - - - return localctx -} - - -// IUpdate_stmt_limitedContext is an interface to support dynamic dispatch. -type IUpdate_stmt_limitedContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsUpdate_stmt_limitedContext differentiates from other interfaces. - IsUpdate_stmt_limitedContext() -} - -type Update_stmt_limitedContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyUpdate_stmt_limitedContext() *Update_stmt_limitedContext { - var p = new(Update_stmt_limitedContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_update_stmt_limited - return p -} - -func (*Update_stmt_limitedContext) IsUpdate_stmt_limitedContext() {} - -func NewUpdate_stmt_limitedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Update_stmt_limitedContext { - var p = new(Update_stmt_limitedContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_update_stmt_limited - - return p -} - -func (s *Update_stmt_limitedContext) GetParser() antlr.Parser { return s.parser } - -func (s *Update_stmt_limitedContext) K_UPDATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_UPDATE, 0) -} - -func (s *Update_stmt_limitedContext) Qualified_table_name() IQualified_table_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IQualified_table_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IQualified_table_nameContext) -} - -func (s *Update_stmt_limitedContext) K_SET() antlr.TerminalNode { - return s.GetToken(SqlParserK_SET, 0) -} - -func (s *Update_stmt_limitedContext) AllColumn_name() []IColumn_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IColumn_nameContext); ok { - len++ - } - } - - tst := make([]IColumn_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IColumn_nameContext); ok { - tst[i] = t.(IColumn_nameContext) - i++ - } - } - - return tst -} - -func (s *Update_stmt_limitedContext) Column_name(i int) IColumn_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Update_stmt_limitedContext) AllASSIGN() []antlr.TerminalNode { - return s.GetTokens(SqlParserASSIGN) -} - -func (s *Update_stmt_limitedContext) ASSIGN(i int) antlr.TerminalNode { - return s.GetToken(SqlParserASSIGN, i) -} - -func (s *Update_stmt_limitedContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Update_stmt_limitedContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Update_stmt_limitedContext) With_clause() IWith_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IWith_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IWith_clauseContext) -} - -func (s *Update_stmt_limitedContext) K_OR() antlr.TerminalNode { - return s.GetToken(SqlParserK_OR, 0) -} - -func (s *Update_stmt_limitedContext) K_ROLLBACK() antlr.TerminalNode { - return s.GetToken(SqlParserK_ROLLBACK, 0) -} - -func (s *Update_stmt_limitedContext) K_ABORT() antlr.TerminalNode { - return s.GetToken(SqlParserK_ABORT, 0) -} - -func (s *Update_stmt_limitedContext) K_REPLACE() antlr.TerminalNode { - return s.GetToken(SqlParserK_REPLACE, 0) -} - -func (s *Update_stmt_limitedContext) K_FAIL() antlr.TerminalNode { - return s.GetToken(SqlParserK_FAIL, 0) -} - -func (s *Update_stmt_limitedContext) K_IGNORE() antlr.TerminalNode { - return s.GetToken(SqlParserK_IGNORE, 0) -} - -func (s *Update_stmt_limitedContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Update_stmt_limitedContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Update_stmt_limitedContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHERE, 0) -} - -func (s *Update_stmt_limitedContext) K_LIMIT() antlr.TerminalNode { - return s.GetToken(SqlParserK_LIMIT, 0) -} - -func (s *Update_stmt_limitedContext) K_ORDER() antlr.TerminalNode { - return s.GetToken(SqlParserK_ORDER, 0) -} - -func (s *Update_stmt_limitedContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Update_stmt_limitedContext) AllOrdering_term() []IOrdering_termContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IOrdering_termContext); ok { - len++ - } - } - - tst := make([]IOrdering_termContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IOrdering_termContext); ok { - tst[i] = t.(IOrdering_termContext) - i++ - } - } - - return tst -} - -func (s *Update_stmt_limitedContext) Ordering_term(i int) IOrdering_termContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOrdering_termContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IOrdering_termContext) -} - -func (s *Update_stmt_limitedContext) K_OFFSET() antlr.TerminalNode { - return s.GetToken(SqlParserK_OFFSET, 0) -} - -func (s *Update_stmt_limitedContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Update_stmt_limitedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Update_stmt_limitedContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterUpdate_stmt_limited(s) - } -} - -func (s *Update_stmt_limitedContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitUpdate_stmt_limited(s) - } -} - - - - -func (p *SqlParser) Update_stmt_limited() (localctx IUpdate_stmt_limitedContext) { - this := p - _ = this - - localctx = NewUpdate_stmt_limitedContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 70, SqlParserRULE_update_stmt_limited) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(1035) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WITH { - { - p.SetState(1034) - p.With_clause() - } - - } - { - p.SetState(1037) - p.Match(SqlParserK_UPDATE) - } - p.SetState(1048) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 1 { - { - p.SetState(1038) - p.Match(SqlParserK_OR) - } - { - p.SetState(1039) - p.Match(SqlParserK_ROLLBACK) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 2 { - { - p.SetState(1040) - p.Match(SqlParserK_OR) - } - { - p.SetState(1041) - p.Match(SqlParserK_ABORT) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 3 { - { - p.SetState(1042) - p.Match(SqlParserK_OR) - } - { - p.SetState(1043) - p.Match(SqlParserK_REPLACE) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 4 { - { - p.SetState(1044) - p.Match(SqlParserK_OR) - } - { - p.SetState(1045) - p.Match(SqlParserK_FAIL) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 5 { - { - p.SetState(1046) - p.Match(SqlParserK_OR) - } - { - p.SetState(1047) - p.Match(SqlParserK_IGNORE) - } - - - } - { - p.SetState(1050) - p.Qualified_table_name() - } - { - p.SetState(1051) - p.Match(SqlParserK_SET) - } - { - p.SetState(1052) - p.Column_name() - } - { - p.SetState(1053) - p.Match(SqlParserASSIGN) - } - { - p.SetState(1054) - p.expr(0) - } - p.SetState(1062) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1055) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1056) - p.Column_name() - } - { - p.SetState(1057) - p.Match(SqlParserASSIGN) - } - { - p.SetState(1058) - p.expr(0) - } - - - p.SetState(1064) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - p.SetState(1067) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WHERE { - { - p.SetState(1065) - p.Match(SqlParserK_WHERE) - } - { - p.SetState(1066) - p.expr(0) - } - - } - p.SetState(1087) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_LIMIT || _la == SqlParserK_ORDER { - p.SetState(1079) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_ORDER { - { - p.SetState(1069) - p.Match(SqlParserK_ORDER) - } - { - p.SetState(1070) - p.Match(SqlParserK_BY) - } - { - p.SetState(1071) - p.Ordering_term() - } - p.SetState(1076) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1072) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1073) - p.Ordering_term() - } - - - p.SetState(1078) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - { - p.SetState(1081) - p.Match(SqlParserK_LIMIT) - } - { - p.SetState(1082) - p.expr(0) - } - p.SetState(1085) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { - { - p.SetState(1083) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(1084) - p.expr(0) - } - - } - - } - - - - return localctx -} - - -// IVacuum_stmtContext is an interface to support dynamic dispatch. -type IVacuum_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsVacuum_stmtContext differentiates from other interfaces. - IsVacuum_stmtContext() -} - -type Vacuum_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyVacuum_stmtContext() *Vacuum_stmtContext { - var p = new(Vacuum_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_vacuum_stmt - return p -} - -func (*Vacuum_stmtContext) IsVacuum_stmtContext() {} - -func NewVacuum_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Vacuum_stmtContext { - var p = new(Vacuum_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_vacuum_stmt - - return p -} - -func (s *Vacuum_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Vacuum_stmtContext) K_VACUUM() antlr.TerminalNode { - return s.GetToken(SqlParserK_VACUUM, 0) -} - -func (s *Vacuum_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Vacuum_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Vacuum_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterVacuum_stmt(s) - } -} - -func (s *Vacuum_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitVacuum_stmt(s) - } -} - - - - -func (p *SqlParser) Vacuum_stmt() (localctx IVacuum_stmtContext) { - this := p - _ = this - - localctx = NewVacuum_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 72, SqlParserRULE_vacuum_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1089) - p.Match(SqlParserK_VACUUM) - } - - - - return localctx -} - - -// IColumn_defContext is an interface to support dynamic dispatch. -type IColumn_defContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_defContext differentiates from other interfaces. - IsColumn_defContext() -} - -type Column_defContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_defContext() *Column_defContext { - var p = new(Column_defContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_def - return p -} - -func (*Column_defContext) IsColumn_defContext() {} - -func NewColumn_defContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_defContext { - var p = new(Column_defContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_def - - return p -} - -func (s *Column_defContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_defContext) Column_name() IColumn_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Column_defContext) AllColumn_constraint() []IColumn_constraintContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IColumn_constraintContext); ok { - len++ - } - } - - tst := make([]IColumn_constraintContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IColumn_constraintContext); ok { - tst[i] = t.(IColumn_constraintContext) - i++ - } - } - - return tst -} - -func (s *Column_defContext) Column_constraint(i int) IColumn_constraintContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_constraintContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IColumn_constraintContext) -} - -func (s *Column_defContext) AllType_name() []IType_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IType_nameContext); ok { - len++ - } - } - - tst := make([]IType_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IType_nameContext); ok { - tst[i] = t.(IType_nameContext) - i++ - } - } - - return tst -} - -func (s *Column_defContext) Type_name(i int) IType_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IType_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IType_nameContext) -} - -func (s *Column_defContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_defContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_defContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_def(s) - } -} - -func (s *Column_defContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_def(s) - } -} - - - - -func (p *SqlParser) Column_def() (localctx IColumn_defContext) { - this := p - _ = this - - localctx = NewColumn_defContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 74, SqlParserRULE_column_def) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1091) - p.Column_name() - } - p.SetState(1096) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 149, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - p.SetState(1094) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 148, p.GetParserRuleContext()) { - case 1: - { - p.SetState(1092) - p.Column_constraint() - } - - - case 2: - { - p.SetState(1093) - p.Type_name() - } - - } - - } - p.SetState(1098) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 149, p.GetParserRuleContext()) - } - - - - return localctx -} - - -// IType_nameContext is an interface to support dynamic dispatch. -type IType_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsType_nameContext differentiates from other interfaces. - IsType_nameContext() -} - -type Type_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyType_nameContext() *Type_nameContext { - var p = new(Type_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_type_name - return p -} - -func (*Type_nameContext) IsType_nameContext() {} - -func NewType_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Type_nameContext { - var p = new(Type_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_type_name - - return p -} - -func (s *Type_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Type_nameContext) Name() INameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(INameContext) -} - -func (s *Type_nameContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Type_nameContext) AllSigned_number() []ISigned_numberContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ISigned_numberContext); ok { - len++ - } - } - - tst := make([]ISigned_numberContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ISigned_numberContext); ok { - tst[i] = t.(ISigned_numberContext) - i++ - } - } - - return tst -} - -func (s *Type_nameContext) Signed_number(i int) ISigned_numberContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISigned_numberContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ISigned_numberContext) -} - -func (s *Type_nameContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Type_nameContext) COMMA() antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, 0) -} - -func (s *Type_nameContext) AllAny_name() []IAny_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IAny_nameContext); ok { - len++ - } - } - - tst := make([]IAny_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IAny_nameContext); ok { - tst[i] = t.(IAny_nameContext) - i++ - } - } - - return tst -} - -func (s *Type_nameContext) Any_name(i int) IAny_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Type_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Type_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Type_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterType_name(s) - } -} - -func (s *Type_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitType_name(s) - } -} - - - - -func (p *SqlParser) Type_name() (localctx IType_nameContext) { - this := p - _ = this - - localctx = NewType_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 76, SqlParserRULE_type_name) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1099) - p.Name() - } - p.SetState(1119) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 153, p.GetParserRuleContext()) == 1 { - { - p.SetState(1100) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1101) - p.Signed_number() - } - p.SetState(1103) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if (((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserOPEN_PAR) | (1 << SqlParserK_ABORT) | (1 << SqlParserK_ACTION) | (1 << SqlParserK_ADD) | (1 << SqlParserK_AFTER) | (1 << SqlParserK_ALL) | (1 << SqlParserK_ALTER))) != 0) || ((((_la - 32)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 32))) & ((1 << (SqlParserK_ANALYZE - 32)) | (1 << (SqlParserK_AND - 32)) | (1 << (SqlParserK_AS - 32)) | (1 << (SqlParserK_ASC - 32)) | (1 << (SqlParserK_ATTACH - 32)) | (1 << (SqlParserK_AUTOINCREMENT - 32)) | (1 << (SqlParserK_BEFORE - 32)) | (1 << (SqlParserK_BEGIN - 32)) | (1 << (SqlParserK_BETWEEN - 32)) | (1 << (SqlParserK_BY - 32)) | (1 << (SqlParserK_CASCADE - 32)) | (1 << (SqlParserK_CASE - 32)) | (1 << (SqlParserK_CAST - 32)) | (1 << (SqlParserK_CHECK - 32)) | (1 << (SqlParserK_COLLATE - 32)) | (1 << (SqlParserK_COLUMN - 32)) | (1 << (SqlParserK_COMMIT - 32)) | (1 << (SqlParserK_CONFLICT - 32)) | (1 << (SqlParserK_CONSTRAINT - 32)) | (1 << (SqlParserK_CREATE - 32)) | (1 << (SqlParserK_CROSS - 32)) | (1 << (SqlParserK_CURRENT_DATE - 32)) | (1 << (SqlParserK_CURRENT_TIME - 32)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 32)) | (1 << (SqlParserK_DATABASE - 32)) | (1 << (SqlParserK_DEFAULT - 32)) | (1 << (SqlParserK_DEFERRABLE - 32)) | (1 << (SqlParserK_DEFERRED - 32)) | (1 << (SqlParserK_DELETE - 32)) | (1 << (SqlParserK_DESC - 32)) | (1 << (SqlParserK_DETACH - 32)) | (1 << (SqlParserK_DISTINCT - 32)))) != 0) || ((((_la - 64)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 64))) & ((1 << (SqlParserK_DROP - 64)) | (1 << (SqlParserK_EACH - 64)) | (1 << (SqlParserK_ELSE - 64)) | (1 << (SqlParserK_END - 64)) | (1 << (SqlParserK_ENABLE - 64)) | (1 << (SqlParserK_ESCAPE - 64)) | (1 << (SqlParserK_EXCEPT - 64)) | (1 << (SqlParserK_EXCLUSIVE - 64)) | (1 << (SqlParserK_EXISTS - 64)) | (1 << (SqlParserK_EXPLAIN - 64)) | (1 << (SqlParserK_FAIL - 64)) | (1 << (SqlParserK_FOR - 64)) | (1 << (SqlParserK_FOREIGN - 64)) | (1 << (SqlParserK_FROM - 64)) | (1 << (SqlParserK_FULL - 64)) | (1 << (SqlParserK_GLOB - 64)) | (1 << (SqlParserK_GROUP - 64)) | (1 << (SqlParserK_HAVING - 64)) | (1 << (SqlParserK_IF - 64)) | (1 << (SqlParserK_IGNORE - 64)) | (1 << (SqlParserK_IMMEDIATE - 64)) | (1 << (SqlParserK_IN - 64)) | (1 << (SqlParserK_INDEX - 64)) | (1 << (SqlParserK_INDEXED - 64)) | (1 << (SqlParserK_INITIALLY - 64)) | (1 << (SqlParserK_INNER - 64)) | (1 << (SqlParserK_INSERT - 64)) | (1 << (SqlParserK_INSTEAD - 64)) | (1 << (SqlParserK_INTERSECT - 64)) | (1 << (SqlParserK_INTO - 64)) | (1 << (SqlParserK_IS - 64)) | (1 << (SqlParserK_ISNULL - 64)))) != 0) || ((((_la - 96)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 96))) & ((1 << (SqlParserK_JOIN - 96)) | (1 << (SqlParserK_KEY - 96)) | (1 << (SqlParserK_LEFT - 96)) | (1 << (SqlParserK_LIKE - 96)) | (1 << (SqlParserK_LIMIT - 96)) | (1 << (SqlParserK_MATCH - 96)) | (1 << (SqlParserK_NATURAL - 96)) | (1 << (SqlParserK_NEXTVAL - 96)) | (1 << (SqlParserK_NO - 96)) | (1 << (SqlParserK_NOT - 96)) | (1 << (SqlParserK_NOTNULL - 96)) | (1 << (SqlParserK_NULL - 96)) | (1 << (SqlParserK_OF - 96)) | (1 << (SqlParserK_OFFSET - 96)) | (1 << (SqlParserK_ON - 96)) | (1 << (SqlParserK_OR - 96)) | (1 << (SqlParserK_ORDER - 96)) | (1 << (SqlParserK_OUTER - 96)) | (1 << (SqlParserK_PLAN - 96)) | (1 << (SqlParserK_PRAGMA - 96)) | (1 << (SqlParserK_PRIMARY - 96)) | (1 << (SqlParserK_QUERY - 96)) | (1 << (SqlParserK_RAISE - 96)) | (1 << (SqlParserK_RECURSIVE - 96)) | (1 << (SqlParserK_REFERENCES - 96)) | (1 << (SqlParserK_REGEXP - 96)) | (1 << (SqlParserK_REINDEX - 96)) | (1 << (SqlParserK_RELEASE - 96)) | (1 << (SqlParserK_RENAME - 96)) | (1 << (SqlParserK_REPLACE - 96)) | (1 << (SqlParserK_RESTRICT - 96)))) != 0) || ((((_la - 128)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 128))) & ((1 << (SqlParserK_RIGHT - 128)) | (1 << (SqlParserK_ROLLBACK - 128)) | (1 << (SqlParserK_ROW - 128)) | (1 << (SqlParserK_SAVEPOINT - 128)) | (1 << (SqlParserK_SELECT - 128)) | (1 << (SqlParserK_SET - 128)) | (1 << (SqlParserK_TABLE - 128)) | (1 << (SqlParserK_TEMP - 128)) | (1 << (SqlParserK_TEMPORARY - 128)) | (1 << (SqlParserK_THEN - 128)) | (1 << (SqlParserK_TO - 128)) | (1 << (SqlParserK_TRANSACTION - 128)) | (1 << (SqlParserK_TRIGGER - 128)) | (1 << (SqlParserK_UNION - 128)) | (1 << (SqlParserK_UNIQUE - 128)) | (1 << (SqlParserK_UPDATE - 128)) | (1 << (SqlParserK_USING - 128)) | (1 << (SqlParserK_VACUUM - 128)) | (1 << (SqlParserK_VALUES - 128)) | (1 << (SqlParserK_VIEW - 128)) | (1 << (SqlParserK_VIRTUAL - 128)) | (1 << (SqlParserK_WHEN - 128)) | (1 << (SqlParserK_WHERE - 128)) | (1 << (SqlParserK_WITH - 128)) | (1 << (SqlParserK_WITHOUT - 128)) | (1 << (SqlParserIDENTIFIER - 128)) | (1 << (SqlParserSTRING_LITERAL - 128)))) != 0) { - { - p.SetState(1102) - p.Any_name() - } - - } - { - p.SetState(1105) - p.Match(SqlParserCLOSE_PAR) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 153, p.GetParserRuleContext()) == 2 { - { - p.SetState(1107) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1108) - p.Signed_number() - } - p.SetState(1110) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if (((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserOPEN_PAR) | (1 << SqlParserK_ABORT) | (1 << SqlParserK_ACTION) | (1 << SqlParserK_ADD) | (1 << SqlParserK_AFTER) | (1 << SqlParserK_ALL) | (1 << SqlParserK_ALTER))) != 0) || ((((_la - 32)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 32))) & ((1 << (SqlParserK_ANALYZE - 32)) | (1 << (SqlParserK_AND - 32)) | (1 << (SqlParserK_AS - 32)) | (1 << (SqlParserK_ASC - 32)) | (1 << (SqlParserK_ATTACH - 32)) | (1 << (SqlParserK_AUTOINCREMENT - 32)) | (1 << (SqlParserK_BEFORE - 32)) | (1 << (SqlParserK_BEGIN - 32)) | (1 << (SqlParserK_BETWEEN - 32)) | (1 << (SqlParserK_BY - 32)) | (1 << (SqlParserK_CASCADE - 32)) | (1 << (SqlParserK_CASE - 32)) | (1 << (SqlParserK_CAST - 32)) | (1 << (SqlParserK_CHECK - 32)) | (1 << (SqlParserK_COLLATE - 32)) | (1 << (SqlParserK_COLUMN - 32)) | (1 << (SqlParserK_COMMIT - 32)) | (1 << (SqlParserK_CONFLICT - 32)) | (1 << (SqlParserK_CONSTRAINT - 32)) | (1 << (SqlParserK_CREATE - 32)) | (1 << (SqlParserK_CROSS - 32)) | (1 << (SqlParserK_CURRENT_DATE - 32)) | (1 << (SqlParserK_CURRENT_TIME - 32)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 32)) | (1 << (SqlParserK_DATABASE - 32)) | (1 << (SqlParserK_DEFAULT - 32)) | (1 << (SqlParserK_DEFERRABLE - 32)) | (1 << (SqlParserK_DEFERRED - 32)) | (1 << (SqlParserK_DELETE - 32)) | (1 << (SqlParserK_DESC - 32)) | (1 << (SqlParserK_DETACH - 32)) | (1 << (SqlParserK_DISTINCT - 32)))) != 0) || ((((_la - 64)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 64))) & ((1 << (SqlParserK_DROP - 64)) | (1 << (SqlParserK_EACH - 64)) | (1 << (SqlParserK_ELSE - 64)) | (1 << (SqlParserK_END - 64)) | (1 << (SqlParserK_ENABLE - 64)) | (1 << (SqlParserK_ESCAPE - 64)) | (1 << (SqlParserK_EXCEPT - 64)) | (1 << (SqlParserK_EXCLUSIVE - 64)) | (1 << (SqlParserK_EXISTS - 64)) | (1 << (SqlParserK_EXPLAIN - 64)) | (1 << (SqlParserK_FAIL - 64)) | (1 << (SqlParserK_FOR - 64)) | (1 << (SqlParserK_FOREIGN - 64)) | (1 << (SqlParserK_FROM - 64)) | (1 << (SqlParserK_FULL - 64)) | (1 << (SqlParserK_GLOB - 64)) | (1 << (SqlParserK_GROUP - 64)) | (1 << (SqlParserK_HAVING - 64)) | (1 << (SqlParserK_IF - 64)) | (1 << (SqlParserK_IGNORE - 64)) | (1 << (SqlParserK_IMMEDIATE - 64)) | (1 << (SqlParserK_IN - 64)) | (1 << (SqlParserK_INDEX - 64)) | (1 << (SqlParserK_INDEXED - 64)) | (1 << (SqlParserK_INITIALLY - 64)) | (1 << (SqlParserK_INNER - 64)) | (1 << (SqlParserK_INSERT - 64)) | (1 << (SqlParserK_INSTEAD - 64)) | (1 << (SqlParserK_INTERSECT - 64)) | (1 << (SqlParserK_INTO - 64)) | (1 << (SqlParserK_IS - 64)) | (1 << (SqlParserK_ISNULL - 64)))) != 0) || ((((_la - 96)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 96))) & ((1 << (SqlParserK_JOIN - 96)) | (1 << (SqlParserK_KEY - 96)) | (1 << (SqlParserK_LEFT - 96)) | (1 << (SqlParserK_LIKE - 96)) | (1 << (SqlParserK_LIMIT - 96)) | (1 << (SqlParserK_MATCH - 96)) | (1 << (SqlParserK_NATURAL - 96)) | (1 << (SqlParserK_NEXTVAL - 96)) | (1 << (SqlParserK_NO - 96)) | (1 << (SqlParserK_NOT - 96)) | (1 << (SqlParserK_NOTNULL - 96)) | (1 << (SqlParserK_NULL - 96)) | (1 << (SqlParserK_OF - 96)) | (1 << (SqlParserK_OFFSET - 96)) | (1 << (SqlParserK_ON - 96)) | (1 << (SqlParserK_OR - 96)) | (1 << (SqlParserK_ORDER - 96)) | (1 << (SqlParserK_OUTER - 96)) | (1 << (SqlParserK_PLAN - 96)) | (1 << (SqlParserK_PRAGMA - 96)) | (1 << (SqlParserK_PRIMARY - 96)) | (1 << (SqlParserK_QUERY - 96)) | (1 << (SqlParserK_RAISE - 96)) | (1 << (SqlParserK_RECURSIVE - 96)) | (1 << (SqlParserK_REFERENCES - 96)) | (1 << (SqlParserK_REGEXP - 96)) | (1 << (SqlParserK_REINDEX - 96)) | (1 << (SqlParserK_RELEASE - 96)) | (1 << (SqlParserK_RENAME - 96)) | (1 << (SqlParserK_REPLACE - 96)) | (1 << (SqlParserK_RESTRICT - 96)))) != 0) || ((((_la - 128)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 128))) & ((1 << (SqlParserK_RIGHT - 128)) | (1 << (SqlParserK_ROLLBACK - 128)) | (1 << (SqlParserK_ROW - 128)) | (1 << (SqlParserK_SAVEPOINT - 128)) | (1 << (SqlParserK_SELECT - 128)) | (1 << (SqlParserK_SET - 128)) | (1 << (SqlParserK_TABLE - 128)) | (1 << (SqlParserK_TEMP - 128)) | (1 << (SqlParserK_TEMPORARY - 128)) | (1 << (SqlParserK_THEN - 128)) | (1 << (SqlParserK_TO - 128)) | (1 << (SqlParserK_TRANSACTION - 128)) | (1 << (SqlParserK_TRIGGER - 128)) | (1 << (SqlParserK_UNION - 128)) | (1 << (SqlParserK_UNIQUE - 128)) | (1 << (SqlParserK_UPDATE - 128)) | (1 << (SqlParserK_USING - 128)) | (1 << (SqlParserK_VACUUM - 128)) | (1 << (SqlParserK_VALUES - 128)) | (1 << (SqlParserK_VIEW - 128)) | (1 << (SqlParserK_VIRTUAL - 128)) | (1 << (SqlParserK_WHEN - 128)) | (1 << (SqlParserK_WHERE - 128)) | (1 << (SqlParserK_WITH - 128)) | (1 << (SqlParserK_WITHOUT - 128)) | (1 << (SqlParserIDENTIFIER - 128)) | (1 << (SqlParserSTRING_LITERAL - 128)))) != 0) { - { - p.SetState(1109) - p.Any_name() - } - - } - { - p.SetState(1112) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1113) - p.Signed_number() - } - p.SetState(1115) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if (((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserOPEN_PAR) | (1 << SqlParserK_ABORT) | (1 << SqlParserK_ACTION) | (1 << SqlParserK_ADD) | (1 << SqlParserK_AFTER) | (1 << SqlParserK_ALL) | (1 << SqlParserK_ALTER))) != 0) || ((((_la - 32)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 32))) & ((1 << (SqlParserK_ANALYZE - 32)) | (1 << (SqlParserK_AND - 32)) | (1 << (SqlParserK_AS - 32)) | (1 << (SqlParserK_ASC - 32)) | (1 << (SqlParserK_ATTACH - 32)) | (1 << (SqlParserK_AUTOINCREMENT - 32)) | (1 << (SqlParserK_BEFORE - 32)) | (1 << (SqlParserK_BEGIN - 32)) | (1 << (SqlParserK_BETWEEN - 32)) | (1 << (SqlParserK_BY - 32)) | (1 << (SqlParserK_CASCADE - 32)) | (1 << (SqlParserK_CASE - 32)) | (1 << (SqlParserK_CAST - 32)) | (1 << (SqlParserK_CHECK - 32)) | (1 << (SqlParserK_COLLATE - 32)) | (1 << (SqlParserK_COLUMN - 32)) | (1 << (SqlParserK_COMMIT - 32)) | (1 << (SqlParserK_CONFLICT - 32)) | (1 << (SqlParserK_CONSTRAINT - 32)) | (1 << (SqlParserK_CREATE - 32)) | (1 << (SqlParserK_CROSS - 32)) | (1 << (SqlParserK_CURRENT_DATE - 32)) | (1 << (SqlParserK_CURRENT_TIME - 32)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 32)) | (1 << (SqlParserK_DATABASE - 32)) | (1 << (SqlParserK_DEFAULT - 32)) | (1 << (SqlParserK_DEFERRABLE - 32)) | (1 << (SqlParserK_DEFERRED - 32)) | (1 << (SqlParserK_DELETE - 32)) | (1 << (SqlParserK_DESC - 32)) | (1 << (SqlParserK_DETACH - 32)) | (1 << (SqlParserK_DISTINCT - 32)))) != 0) || ((((_la - 64)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 64))) & ((1 << (SqlParserK_DROP - 64)) | (1 << (SqlParserK_EACH - 64)) | (1 << (SqlParserK_ELSE - 64)) | (1 << (SqlParserK_END - 64)) | (1 << (SqlParserK_ENABLE - 64)) | (1 << (SqlParserK_ESCAPE - 64)) | (1 << (SqlParserK_EXCEPT - 64)) | (1 << (SqlParserK_EXCLUSIVE - 64)) | (1 << (SqlParserK_EXISTS - 64)) | (1 << (SqlParserK_EXPLAIN - 64)) | (1 << (SqlParserK_FAIL - 64)) | (1 << (SqlParserK_FOR - 64)) | (1 << (SqlParserK_FOREIGN - 64)) | (1 << (SqlParserK_FROM - 64)) | (1 << (SqlParserK_FULL - 64)) | (1 << (SqlParserK_GLOB - 64)) | (1 << (SqlParserK_GROUP - 64)) | (1 << (SqlParserK_HAVING - 64)) | (1 << (SqlParserK_IF - 64)) | (1 << (SqlParserK_IGNORE - 64)) | (1 << (SqlParserK_IMMEDIATE - 64)) | (1 << (SqlParserK_IN - 64)) | (1 << (SqlParserK_INDEX - 64)) | (1 << (SqlParserK_INDEXED - 64)) | (1 << (SqlParserK_INITIALLY - 64)) | (1 << (SqlParserK_INNER - 64)) | (1 << (SqlParserK_INSERT - 64)) | (1 << (SqlParserK_INSTEAD - 64)) | (1 << (SqlParserK_INTERSECT - 64)) | (1 << (SqlParserK_INTO - 64)) | (1 << (SqlParserK_IS - 64)) | (1 << (SqlParserK_ISNULL - 64)))) != 0) || ((((_la - 96)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 96))) & ((1 << (SqlParserK_JOIN - 96)) | (1 << (SqlParserK_KEY - 96)) | (1 << (SqlParserK_LEFT - 96)) | (1 << (SqlParserK_LIKE - 96)) | (1 << (SqlParserK_LIMIT - 96)) | (1 << (SqlParserK_MATCH - 96)) | (1 << (SqlParserK_NATURAL - 96)) | (1 << (SqlParserK_NEXTVAL - 96)) | (1 << (SqlParserK_NO - 96)) | (1 << (SqlParserK_NOT - 96)) | (1 << (SqlParserK_NOTNULL - 96)) | (1 << (SqlParserK_NULL - 96)) | (1 << (SqlParserK_OF - 96)) | (1 << (SqlParserK_OFFSET - 96)) | (1 << (SqlParserK_ON - 96)) | (1 << (SqlParserK_OR - 96)) | (1 << (SqlParserK_ORDER - 96)) | (1 << (SqlParserK_OUTER - 96)) | (1 << (SqlParserK_PLAN - 96)) | (1 << (SqlParserK_PRAGMA - 96)) | (1 << (SqlParserK_PRIMARY - 96)) | (1 << (SqlParserK_QUERY - 96)) | (1 << (SqlParserK_RAISE - 96)) | (1 << (SqlParserK_RECURSIVE - 96)) | (1 << (SqlParserK_REFERENCES - 96)) | (1 << (SqlParserK_REGEXP - 96)) | (1 << (SqlParserK_REINDEX - 96)) | (1 << (SqlParserK_RELEASE - 96)) | (1 << (SqlParserK_RENAME - 96)) | (1 << (SqlParserK_REPLACE - 96)) | (1 << (SqlParserK_RESTRICT - 96)))) != 0) || ((((_la - 128)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 128))) & ((1 << (SqlParserK_RIGHT - 128)) | (1 << (SqlParserK_ROLLBACK - 128)) | (1 << (SqlParserK_ROW - 128)) | (1 << (SqlParserK_SAVEPOINT - 128)) | (1 << (SqlParserK_SELECT - 128)) | (1 << (SqlParserK_SET - 128)) | (1 << (SqlParserK_TABLE - 128)) | (1 << (SqlParserK_TEMP - 128)) | (1 << (SqlParserK_TEMPORARY - 128)) | (1 << (SqlParserK_THEN - 128)) | (1 << (SqlParserK_TO - 128)) | (1 << (SqlParserK_TRANSACTION - 128)) | (1 << (SqlParserK_TRIGGER - 128)) | (1 << (SqlParserK_UNION - 128)) | (1 << (SqlParserK_UNIQUE - 128)) | (1 << (SqlParserK_UPDATE - 128)) | (1 << (SqlParserK_USING - 128)) | (1 << (SqlParserK_VACUUM - 128)) | (1 << (SqlParserK_VALUES - 128)) | (1 << (SqlParserK_VIEW - 128)) | (1 << (SqlParserK_VIRTUAL - 128)) | (1 << (SqlParserK_WHEN - 128)) | (1 << (SqlParserK_WHERE - 128)) | (1 << (SqlParserK_WITH - 128)) | (1 << (SqlParserK_WITHOUT - 128)) | (1 << (SqlParserIDENTIFIER - 128)) | (1 << (SqlParserSTRING_LITERAL - 128)))) != 0) { - { - p.SetState(1114) - p.Any_name() - } - - } - { - p.SetState(1117) - p.Match(SqlParserCLOSE_PAR) - } - - - } - - - - return localctx -} - - -// IColumn_constraintContext is an interface to support dynamic dispatch. -type IColumn_constraintContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_constraintContext differentiates from other interfaces. - IsColumn_constraintContext() -} - -type Column_constraintContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_constraintContext() *Column_constraintContext { - var p = new(Column_constraintContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_constraint - return p -} - -func (*Column_constraintContext) IsColumn_constraintContext() {} - -func NewColumn_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraintContext { - var p = new(Column_constraintContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_constraint - - return p -} - -func (s *Column_constraintContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_constraintContext) Column_constraint_primary_key() IColumn_constraint_primary_keyContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_constraint_primary_keyContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_constraint_primary_keyContext) -} - -func (s *Column_constraintContext) Column_constraint_foreign_key() IColumn_constraint_foreign_keyContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_constraint_foreign_keyContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_constraint_foreign_keyContext) -} - -func (s *Column_constraintContext) Column_constraint_not_null() IColumn_constraint_not_nullContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_constraint_not_nullContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_constraint_not_nullContext) -} - -func (s *Column_constraintContext) Column_constraint_null() IColumn_constraint_nullContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_constraint_nullContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_constraint_nullContext) -} - -func (s *Column_constraintContext) K_UNIQUE() antlr.TerminalNode { - return s.GetToken(SqlParserK_UNIQUE, 0) -} - -func (s *Column_constraintContext) Conflict_clause() IConflict_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IConflict_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IConflict_clauseContext) -} - -func (s *Column_constraintContext) K_CHECK() antlr.TerminalNode { - return s.GetToken(SqlParserK_CHECK, 0) -} - -func (s *Column_constraintContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Column_constraintContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Column_constraintContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Column_constraintContext) Column_default() IColumn_defaultContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_defaultContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_defaultContext) -} - -func (s *Column_constraintContext) K_COLLATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_COLLATE, 0) -} - -func (s *Column_constraintContext) Collation_name() ICollation_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICollation_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICollation_nameContext) -} - -func (s *Column_constraintContext) K_CONSTRAINT() antlr.TerminalNode { - return s.GetToken(SqlParserK_CONSTRAINT, 0) -} - -func (s *Column_constraintContext) Name() INameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(INameContext) -} - -func (s *Column_constraintContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_constraintContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_constraint(s) - } -} - -func (s *Column_constraintContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_constraint(s) - } -} - - - - -func (p *SqlParser) Column_constraint() (localctx IColumn_constraintContext) { - this := p - _ = this - - localctx = NewColumn_constraintContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 78, SqlParserRULE_column_constraint) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(1123) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_CONSTRAINT { - { - p.SetState(1121) - p.Match(SqlParserK_CONSTRAINT) - } - { - p.SetState(1122) - p.Name() - } - - } - p.SetState(1139) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_PRIMARY: - { - p.SetState(1125) - p.Column_constraint_primary_key() - } - - - case SqlParserK_REFERENCES: - { - p.SetState(1126) - p.Column_constraint_foreign_key() - } - - - case SqlParserK_NOT: - { - p.SetState(1127) - p.Column_constraint_not_null() - } - - - case SqlParserK_NULL: - { - p.SetState(1128) - p.Column_constraint_null() - } - - - case SqlParserK_UNIQUE: - { - p.SetState(1129) - p.Match(SqlParserK_UNIQUE) - } - { - p.SetState(1130) - p.Conflict_clause() - } - - - case SqlParserK_CHECK: - { - p.SetState(1131) - p.Match(SqlParserK_CHECK) - } - { - p.SetState(1132) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1133) - p.expr(0) - } - { - p.SetState(1134) - p.Match(SqlParserCLOSE_PAR) - } - - - case SqlParserK_DEFAULT: - { - p.SetState(1136) - p.Column_default() - } - - - case SqlParserK_COLLATE: - { - p.SetState(1137) - p.Match(SqlParserK_COLLATE) - } - { - p.SetState(1138) - p.Collation_name() - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - - - return localctx -} - - -// IColumn_constraint_primary_keyContext is an interface to support dynamic dispatch. -type IColumn_constraint_primary_keyContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_constraint_primary_keyContext differentiates from other interfaces. - IsColumn_constraint_primary_keyContext() -} - -type Column_constraint_primary_keyContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_constraint_primary_keyContext() *Column_constraint_primary_keyContext { - var p = new(Column_constraint_primary_keyContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_constraint_primary_key - return p -} - -func (*Column_constraint_primary_keyContext) IsColumn_constraint_primary_keyContext() {} - -func NewColumn_constraint_primary_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraint_primary_keyContext { - var p = new(Column_constraint_primary_keyContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_constraint_primary_key - - return p -} - -func (s *Column_constraint_primary_keyContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_constraint_primary_keyContext) K_PRIMARY() antlr.TerminalNode { - return s.GetToken(SqlParserK_PRIMARY, 0) -} - -func (s *Column_constraint_primary_keyContext) K_KEY() antlr.TerminalNode { - return s.GetToken(SqlParserK_KEY, 0) -} - -func (s *Column_constraint_primary_keyContext) Conflict_clause() IConflict_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IConflict_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IConflict_clauseContext) -} - -func (s *Column_constraint_primary_keyContext) K_AUTOINCREMENT() antlr.TerminalNode { - return s.GetToken(SqlParserK_AUTOINCREMENT, 0) -} - -func (s *Column_constraint_primary_keyContext) K_ASC() antlr.TerminalNode { - return s.GetToken(SqlParserK_ASC, 0) -} - -func (s *Column_constraint_primary_keyContext) K_DESC() antlr.TerminalNode { - return s.GetToken(SqlParserK_DESC, 0) -} - -func (s *Column_constraint_primary_keyContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_constraint_primary_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_constraint_primary_keyContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_constraint_primary_key(s) - } -} - -func (s *Column_constraint_primary_keyContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_constraint_primary_key(s) - } -} - - - - -func (p *SqlParser) Column_constraint_primary_key() (localctx IColumn_constraint_primary_keyContext) { - this := p - _ = this - - localctx = NewColumn_constraint_primary_keyContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 80, SqlParserRULE_column_constraint_primary_key) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1141) - p.Match(SqlParserK_PRIMARY) - } - { - p.SetState(1142) - p.Match(SqlParserK_KEY) - } - p.SetState(1144) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 156, p.GetParserRuleContext()) == 1 { - { - p.SetState(1143) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_ASC || _la == SqlParserK_DESC) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - - } - { - p.SetState(1146) - p.Conflict_clause() - } - p.SetState(1148) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 157, p.GetParserRuleContext()) == 1 { - { - p.SetState(1147) - p.Match(SqlParserK_AUTOINCREMENT) - } - - - } - - - - return localctx -} - - -// IColumn_constraint_foreign_keyContext is an interface to support dynamic dispatch. -type IColumn_constraint_foreign_keyContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_constraint_foreign_keyContext differentiates from other interfaces. - IsColumn_constraint_foreign_keyContext() -} - -type Column_constraint_foreign_keyContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_constraint_foreign_keyContext() *Column_constraint_foreign_keyContext { - var p = new(Column_constraint_foreign_keyContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_constraint_foreign_key - return p -} - -func (*Column_constraint_foreign_keyContext) IsColumn_constraint_foreign_keyContext() {} - -func NewColumn_constraint_foreign_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraint_foreign_keyContext { - var p = new(Column_constraint_foreign_keyContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_constraint_foreign_key - - return p -} - -func (s *Column_constraint_foreign_keyContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_constraint_foreign_keyContext) Foreign_key_clause() IForeign_key_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IForeign_key_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IForeign_key_clauseContext) -} - -func (s *Column_constraint_foreign_keyContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_constraint_foreign_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_constraint_foreign_keyContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_constraint_foreign_key(s) - } -} - -func (s *Column_constraint_foreign_keyContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_constraint_foreign_key(s) - } -} - - - - -func (p *SqlParser) Column_constraint_foreign_key() (localctx IColumn_constraint_foreign_keyContext) { - this := p - _ = this - - localctx = NewColumn_constraint_foreign_keyContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 82, SqlParserRULE_column_constraint_foreign_key) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1150) - p.Foreign_key_clause() - } - - - - return localctx -} - - -// IColumn_constraint_not_nullContext is an interface to support dynamic dispatch. -type IColumn_constraint_not_nullContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_constraint_not_nullContext differentiates from other interfaces. - IsColumn_constraint_not_nullContext() -} - -type Column_constraint_not_nullContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_constraint_not_nullContext() *Column_constraint_not_nullContext { - var p = new(Column_constraint_not_nullContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_constraint_not_null - return p -} - -func (*Column_constraint_not_nullContext) IsColumn_constraint_not_nullContext() {} - -func NewColumn_constraint_not_nullContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraint_not_nullContext { - var p = new(Column_constraint_not_nullContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_constraint_not_null - - return p -} - -func (s *Column_constraint_not_nullContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_constraint_not_nullContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Column_constraint_not_nullContext) K_NULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NULL, 0) -} - -func (s *Column_constraint_not_nullContext) Conflict_clause() IConflict_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IConflict_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IConflict_clauseContext) -} - -func (s *Column_constraint_not_nullContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_constraint_not_nullContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_constraint_not_nullContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_constraint_not_null(s) - } -} - -func (s *Column_constraint_not_nullContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_constraint_not_null(s) - } -} - - - - -func (p *SqlParser) Column_constraint_not_null() (localctx IColumn_constraint_not_nullContext) { - this := p - _ = this - - localctx = NewColumn_constraint_not_nullContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 84, SqlParserRULE_column_constraint_not_null) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1152) - p.Match(SqlParserK_NOT) - } - { - p.SetState(1153) - p.Match(SqlParserK_NULL) - } - { - p.SetState(1154) - p.Conflict_clause() - } - - - - return localctx -} - - -// IColumn_constraint_nullContext is an interface to support dynamic dispatch. -type IColumn_constraint_nullContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_constraint_nullContext differentiates from other interfaces. - IsColumn_constraint_nullContext() -} - -type Column_constraint_nullContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_constraint_nullContext() *Column_constraint_nullContext { - var p = new(Column_constraint_nullContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_constraint_null - return p -} - -func (*Column_constraint_nullContext) IsColumn_constraint_nullContext() {} - -func NewColumn_constraint_nullContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraint_nullContext { - var p = new(Column_constraint_nullContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_constraint_null - - return p -} - -func (s *Column_constraint_nullContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_constraint_nullContext) K_NULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NULL, 0) -} - -func (s *Column_constraint_nullContext) Conflict_clause() IConflict_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IConflict_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IConflict_clauseContext) -} - -func (s *Column_constraint_nullContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_constraint_nullContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_constraint_nullContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_constraint_null(s) - } -} - -func (s *Column_constraint_nullContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_constraint_null(s) - } -} - - - - -func (p *SqlParser) Column_constraint_null() (localctx IColumn_constraint_nullContext) { - this := p - _ = this - - localctx = NewColumn_constraint_nullContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 86, SqlParserRULE_column_constraint_null) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1156) - p.Match(SqlParserK_NULL) - } - { - p.SetState(1157) - p.Conflict_clause() - } - - - - return localctx -} - - -// IColumn_defaultContext is an interface to support dynamic dispatch. -type IColumn_defaultContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_defaultContext differentiates from other interfaces. - IsColumn_defaultContext() -} - -type Column_defaultContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_defaultContext() *Column_defaultContext { - var p = new(Column_defaultContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_default - return p -} - -func (*Column_defaultContext) IsColumn_defaultContext() {} - -func NewColumn_defaultContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_defaultContext { - var p = new(Column_defaultContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_default - - return p -} - -func (s *Column_defaultContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_defaultContext) K_DEFAULT() antlr.TerminalNode { - return s.GetToken(SqlParserK_DEFAULT, 0) -} - -func (s *Column_defaultContext) Column_default_value() IColumn_default_valueContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_default_valueContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_default_valueContext) -} - -func (s *Column_defaultContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Column_defaultContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Column_defaultContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Column_defaultContext) K_NEXTVAL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NEXTVAL, 0) -} - -func (s *Column_defaultContext) AllAny_name() []IAny_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IAny_nameContext); ok { - len++ - } - } - - tst := make([]IAny_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IAny_nameContext); ok { - tst[i] = t.(IAny_nameContext) - i++ - } - } - - return tst -} - -func (s *Column_defaultContext) Any_name(i int) IAny_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Column_defaultContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_defaultContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_defaultContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_default(s) - } -} - -func (s *Column_defaultContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_default(s) - } -} - - - - -func (p *SqlParser) Column_default() (localctx IColumn_defaultContext) { - this := p - _ = this - - localctx = NewColumn_defaultContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 88, SqlParserRULE_column_default) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1159) - p.Match(SqlParserK_DEFAULT) - } - p.SetState(1171) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 158, p.GetParserRuleContext()) { - case 1: - { - p.SetState(1160) - p.Column_default_value() - } - - - case 2: - { - p.SetState(1161) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1162) - p.expr(0) - } - { - p.SetState(1163) - p.Match(SqlParserCLOSE_PAR) - } - - - case 3: - { - p.SetState(1165) - p.Match(SqlParserK_NEXTVAL) - } - { - p.SetState(1166) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1167) - p.expr(0) - } - { - p.SetState(1168) - p.Match(SqlParserCLOSE_PAR) - } - - - case 4: - { - p.SetState(1170) - p.Any_name() - } - - } - p.SetState(1179) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 160, p.GetParserRuleContext()) == 1 { - { - p.SetState(1173) - p.Match(SqlParserT__0) - } - p.SetState(1175) - p.GetErrorHandler().Sync(p) - _alt = 1 - for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - switch _alt { - case 1: - { - p.SetState(1174) - p.Any_name() - } - - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - p.SetState(1177) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 159, p.GetParserRuleContext()) - } - - - } - - - - return localctx -} - - -// IColumn_default_valueContext is an interface to support dynamic dispatch. -type IColumn_default_valueContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_default_valueContext differentiates from other interfaces. - IsColumn_default_valueContext() -} - -type Column_default_valueContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_default_valueContext() *Column_default_valueContext { - var p = new(Column_default_valueContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_default_value - return p -} - -func (*Column_default_valueContext) IsColumn_default_valueContext() {} - -func NewColumn_default_valueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_default_valueContext { - var p = new(Column_default_valueContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_default_value - - return p -} - -func (s *Column_default_valueContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_default_valueContext) Signed_number() ISigned_numberContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISigned_numberContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISigned_numberContext) -} - -func (s *Column_default_valueContext) Literal_value() ILiteral_valueContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ILiteral_valueContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ILiteral_valueContext) -} - -func (s *Column_default_valueContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_default_valueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_default_valueContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_default_value(s) - } -} - -func (s *Column_default_valueContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_default_value(s) - } -} - - - - -func (p *SqlParser) Column_default_value() (localctx IColumn_default_valueContext) { - this := p - _ = this - - localctx = NewColumn_default_valueContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 90, SqlParserRULE_column_default_value) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(1183) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 161, p.GetParserRuleContext()) { - case 1: - { - p.SetState(1181) - p.Signed_number() - } - - - case 2: - { - p.SetState(1182) - p.Literal_value() - } - - } - - - - return localctx -} - - -// IConflict_clauseContext is an interface to support dynamic dispatch. -type IConflict_clauseContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsConflict_clauseContext differentiates from other interfaces. - IsConflict_clauseContext() -} - -type Conflict_clauseContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyConflict_clauseContext() *Conflict_clauseContext { - var p = new(Conflict_clauseContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_conflict_clause - return p -} - -func (*Conflict_clauseContext) IsConflict_clauseContext() {} - -func NewConflict_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Conflict_clauseContext { - var p = new(Conflict_clauseContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_conflict_clause - - return p -} - -func (s *Conflict_clauseContext) GetParser() antlr.Parser { return s.parser } - -func (s *Conflict_clauseContext) K_ON() antlr.TerminalNode { - return s.GetToken(SqlParserK_ON, 0) -} - -func (s *Conflict_clauseContext) K_CONFLICT() antlr.TerminalNode { - return s.GetToken(SqlParserK_CONFLICT, 0) -} - -func (s *Conflict_clauseContext) K_ROLLBACK() antlr.TerminalNode { - return s.GetToken(SqlParserK_ROLLBACK, 0) -} - -func (s *Conflict_clauseContext) K_ABORT() antlr.TerminalNode { - return s.GetToken(SqlParserK_ABORT, 0) -} - -func (s *Conflict_clauseContext) K_FAIL() antlr.TerminalNode { - return s.GetToken(SqlParserK_FAIL, 0) -} - -func (s *Conflict_clauseContext) K_IGNORE() antlr.TerminalNode { - return s.GetToken(SqlParserK_IGNORE, 0) -} - -func (s *Conflict_clauseContext) K_REPLACE() antlr.TerminalNode { - return s.GetToken(SqlParserK_REPLACE, 0) -} - -func (s *Conflict_clauseContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Conflict_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Conflict_clauseContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterConflict_clause(s) - } -} - -func (s *Conflict_clauseContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitConflict_clause(s) - } -} - - - - -func (p *SqlParser) Conflict_clause() (localctx IConflict_clauseContext) { - this := p - _ = this - - localctx = NewConflict_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 92, SqlParserRULE_conflict_clause) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(1188) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 162, p.GetParserRuleContext()) == 1 { - { - p.SetState(1185) - p.Match(SqlParserK_ON) - } - { - p.SetState(1186) - p.Match(SqlParserK_CONFLICT) - } - { - p.SetState(1187) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_ABORT || _la == SqlParserK_FAIL || _la == SqlParserK_IGNORE || _la == SqlParserK_REPLACE || _la == SqlParserK_ROLLBACK) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - - } - - - - return localctx -} - - -// IExprContext is an interface to support dynamic dispatch. -type IExprContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsExprContext differentiates from other interfaces. - IsExprContext() -} - -type ExprContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyExprContext() *ExprContext { - var p = new(ExprContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_expr - return p -} - -func (*ExprContext) IsExprContext() {} - -func NewExprContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExprContext { - var p = new(ExprContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_expr - - return p -} - -func (s *ExprContext) GetParser() antlr.Parser { return s.parser } - -func (s *ExprContext) Literal_value() ILiteral_valueContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ILiteral_valueContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ILiteral_valueContext) -} - -func (s *ExprContext) BIND_PARAMETER() antlr.TerminalNode { - return s.GetToken(SqlParserBIND_PARAMETER, 0) -} - -func (s *ExprContext) Column_name() IColumn_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *ExprContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *ExprContext) AllDOT() []antlr.TerminalNode { - return s.GetTokens(SqlParserDOT) -} - -func (s *ExprContext) DOT(i int) antlr.TerminalNode { - return s.GetToken(SqlParserDOT, i) -} - -func (s *ExprContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *ExprContext) Unary_operator() IUnary_operatorContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IUnary_operatorContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IUnary_operatorContext) -} - -func (s *ExprContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *ExprContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *ExprContext) Function_name() IFunction_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IFunction_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IFunction_nameContext) -} - -func (s *ExprContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *ExprContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *ExprContext) STAR() antlr.TerminalNode { - return s.GetToken(SqlParserSTAR, 0) -} - -func (s *ExprContext) K_DISTINCT() antlr.TerminalNode { - return s.GetToken(SqlParserK_DISTINCT, 0) -} - -func (s *ExprContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *ExprContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *ExprContext) K_CAST() antlr.TerminalNode { - return s.GetToken(SqlParserK_CAST, 0) -} - -func (s *ExprContext) K_AS() antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, 0) -} - -func (s *ExprContext) Type_name() IType_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IType_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IType_nameContext) -} - -func (s *ExprContext) Select_stmt() ISelect_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISelect_stmtContext) -} - -func (s *ExprContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *ExprContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *ExprContext) K_CASE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CASE, 0) -} - -func (s *ExprContext) K_END() antlr.TerminalNode { - return s.GetToken(SqlParserK_END, 0) -} - -func (s *ExprContext) AllK_WHEN() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_WHEN) -} - -func (s *ExprContext) K_WHEN(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_WHEN, i) -} - -func (s *ExprContext) AllK_THEN() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_THEN) -} - -func (s *ExprContext) K_THEN(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_THEN, i) -} - -func (s *ExprContext) K_ELSE() antlr.TerminalNode { - return s.GetToken(SqlParserK_ELSE, 0) -} - -func (s *ExprContext) Raise_function() IRaise_functionContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IRaise_functionContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IRaise_functionContext) -} - -func (s *ExprContext) PIPE2() antlr.TerminalNode { - return s.GetToken(SqlParserPIPE2, 0) -} - -func (s *ExprContext) DIV() antlr.TerminalNode { - return s.GetToken(SqlParserDIV, 0) -} - -func (s *ExprContext) MOD() antlr.TerminalNode { - return s.GetToken(SqlParserMOD, 0) -} - -func (s *ExprContext) PLUS() antlr.TerminalNode { - return s.GetToken(SqlParserPLUS, 0) -} - -func (s *ExprContext) MINUS() antlr.TerminalNode { - return s.GetToken(SqlParserMINUS, 0) -} - -func (s *ExprContext) LT2() antlr.TerminalNode { - return s.GetToken(SqlParserLT2, 0) -} - -func (s *ExprContext) GT2() antlr.TerminalNode { - return s.GetToken(SqlParserGT2, 0) -} - -func (s *ExprContext) AMP() antlr.TerminalNode { - return s.GetToken(SqlParserAMP, 0) -} - -func (s *ExprContext) PIPE() antlr.TerminalNode { - return s.GetToken(SqlParserPIPE, 0) -} - -func (s *ExprContext) LT() antlr.TerminalNode { - return s.GetToken(SqlParserLT, 0) -} - -func (s *ExprContext) LT_EQ() antlr.TerminalNode { - return s.GetToken(SqlParserLT_EQ, 0) -} - -func (s *ExprContext) GT() antlr.TerminalNode { - return s.GetToken(SqlParserGT, 0) -} - -func (s *ExprContext) GT_EQ() antlr.TerminalNode { - return s.GetToken(SqlParserGT_EQ, 0) -} - -func (s *ExprContext) ASSIGN() antlr.TerminalNode { - return s.GetToken(SqlParserASSIGN, 0) -} - -func (s *ExprContext) EQ() antlr.TerminalNode { - return s.GetToken(SqlParserEQ, 0) -} - -func (s *ExprContext) NOT_EQ1() antlr.TerminalNode { - return s.GetToken(SqlParserNOT_EQ1, 0) -} - -func (s *ExprContext) NOT_EQ2() antlr.TerminalNode { - return s.GetToken(SqlParserNOT_EQ2, 0) -} - -func (s *ExprContext) K_IS() antlr.TerminalNode { - return s.GetToken(SqlParserK_IS, 0) -} - -func (s *ExprContext) K_IN() antlr.TerminalNode { - return s.GetToken(SqlParserK_IN, 0) -} - -func (s *ExprContext) K_LIKE() antlr.TerminalNode { - return s.GetToken(SqlParserK_LIKE, 0) -} - -func (s *ExprContext) K_GLOB() antlr.TerminalNode { - return s.GetToken(SqlParserK_GLOB, 0) -} - -func (s *ExprContext) K_MATCH() antlr.TerminalNode { - return s.GetToken(SqlParserK_MATCH, 0) -} - -func (s *ExprContext) K_REGEXP() antlr.TerminalNode { - return s.GetToken(SqlParserK_REGEXP, 0) -} - -func (s *ExprContext) K_AND() antlr.TerminalNode { - return s.GetToken(SqlParserK_AND, 0) -} - -func (s *ExprContext) K_OR() antlr.TerminalNode { - return s.GetToken(SqlParserK_OR, 0) -} - -func (s *ExprContext) K_BETWEEN() antlr.TerminalNode { - return s.GetToken(SqlParserK_BETWEEN, 0) -} - -func (s *ExprContext) K_COLLATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_COLLATE, 0) -} - -func (s *ExprContext) Collation_name() ICollation_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICollation_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICollation_nameContext) -} - -func (s *ExprContext) K_ESCAPE() antlr.TerminalNode { - return s.GetToken(SqlParserK_ESCAPE, 0) -} - -func (s *ExprContext) K_ISNULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_ISNULL, 0) -} - -func (s *ExprContext) K_NOTNULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOTNULL, 0) -} - -func (s *ExprContext) K_NULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NULL, 0) -} - -func (s *ExprContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *ExprContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *ExprContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterExpr(s) - } -} - -func (s *ExprContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitExpr(s) - } -} - - - - - -func (p *SqlParser) Expr() (localctx IExprContext) { - return p.expr(0) -} - -func (p *SqlParser) expr(_p int) (localctx IExprContext) { - this := p - _ = this - - var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext() - _parentState := p.GetState() - localctx = NewExprContext(p, p.GetParserRuleContext(), _parentState) - var _prevctx IExprContext = localctx - var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. - _startState := 94 - p.EnterRecursionRule(localctx, 94, SqlParserRULE_expr, _p) - var _la int - - - defer func() { - p.UnrollRecursionContexts(_parentctx) - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.EnterOuterAlt(localctx, 1) - p.SetState(1266) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 173, p.GetParserRuleContext()) { - case 1: - { - p.SetState(1191) - p.Literal_value() - } - - - case 2: - { - p.SetState(1192) - p.Match(SqlParserBIND_PARAMETER) - } - - - case 3: - p.SetState(1201) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 164, p.GetParserRuleContext()) == 1 { - p.SetState(1196) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 163, p.GetParserRuleContext()) == 1 { - { - p.SetState(1193) - p.Database_name() - } - { - p.SetState(1194) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(1198) - p.Table_name() - } - { - p.SetState(1199) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(1203) - p.Column_name() - } - - - case 4: - { - p.SetState(1204) - p.Unary_operator() - } - { - p.SetState(1205) - p.expr(21) - } - - - case 5: - { - p.SetState(1207) - p.Function_name() - } - { - p.SetState(1208) - p.Match(SqlParserOPEN_PAR) - } - p.SetState(1221) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserOPEN_PAR, SqlParserPLUS, SqlParserMINUS, SqlParserTILDE, SqlParserK_ABORT, SqlParserK_ACTION, SqlParserK_ADD, SqlParserK_AFTER, SqlParserK_ALL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_AND, SqlParserK_AS, SqlParserK_ASC, SqlParserK_ATTACH, SqlParserK_AUTOINCREMENT, SqlParserK_BEFORE, SqlParserK_BEGIN, SqlParserK_BETWEEN, SqlParserK_BY, SqlParserK_CASCADE, SqlParserK_CASE, SqlParserK_CAST, SqlParserK_CHECK, SqlParserK_COLLATE, SqlParserK_COLUMN, SqlParserK_COMMIT, SqlParserK_CONFLICT, SqlParserK_CONSTRAINT, SqlParserK_CREATE, SqlParserK_CROSS, SqlParserK_CURRENT_DATE, SqlParserK_CURRENT_TIME, SqlParserK_CURRENT_TIMESTAMP, SqlParserK_DATABASE, SqlParserK_DEFAULT, SqlParserK_DEFERRABLE, SqlParserK_DEFERRED, SqlParserK_DELETE, SqlParserK_DESC, SqlParserK_DETACH, SqlParserK_DISTINCT, SqlParserK_DROP, SqlParserK_EACH, SqlParserK_ELSE, SqlParserK_END, SqlParserK_ENABLE, SqlParserK_ESCAPE, SqlParserK_EXCEPT, SqlParserK_EXCLUSIVE, SqlParserK_EXISTS, SqlParserK_EXPLAIN, SqlParserK_FAIL, SqlParserK_FOR, SqlParserK_FOREIGN, SqlParserK_FROM, SqlParserK_FULL, SqlParserK_GLOB, SqlParserK_GROUP, SqlParserK_HAVING, SqlParserK_IF, SqlParserK_IGNORE, SqlParserK_IMMEDIATE, SqlParserK_IN, SqlParserK_INDEX, SqlParserK_INDEXED, SqlParserK_INITIALLY, SqlParserK_INNER, SqlParserK_INSERT, SqlParserK_INSTEAD, SqlParserK_INTERSECT, SqlParserK_INTO, SqlParserK_IS, SqlParserK_ISNULL, SqlParserK_JOIN, SqlParserK_KEY, SqlParserK_LEFT, SqlParserK_LIKE, SqlParserK_LIMIT, SqlParserK_MATCH, SqlParserK_NATURAL, SqlParserK_NEXTVAL, SqlParserK_NO, SqlParserK_NOT, SqlParserK_NOTNULL, SqlParserK_NULL, SqlParserK_OF, SqlParserK_OFFSET, SqlParserK_ON, SqlParserK_OR, SqlParserK_ORDER, SqlParserK_OUTER, SqlParserK_PLAN, SqlParserK_PRAGMA, SqlParserK_PRIMARY, SqlParserK_QUERY, SqlParserK_RAISE, SqlParserK_RECURSIVE, SqlParserK_REFERENCES, SqlParserK_REGEXP, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_RENAME, SqlParserK_REPLACE, SqlParserK_RESTRICT, SqlParserK_RIGHT, SqlParserK_ROLLBACK, SqlParserK_ROW, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_SET, SqlParserK_TABLE, SqlParserK_TEMP, SqlParserK_TEMPORARY, SqlParserK_THEN, SqlParserK_TO, SqlParserK_TRANSACTION, SqlParserK_TRIGGER, SqlParserK_UNION, SqlParserK_UNIQUE, SqlParserK_UPDATE, SqlParserK_USING, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_VIEW, SqlParserK_VIRTUAL, SqlParserK_WHEN, SqlParserK_WHERE, SqlParserK_WITH, SqlParserK_WITHOUT, SqlParserIDENTIFIER, SqlParserNUMERIC_LITERAL, SqlParserBIND_PARAMETER, SqlParserSTRING_LITERAL, SqlParserBLOB_LITERAL: - p.SetState(1210) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 165, p.GetParserRuleContext()) == 1 { - { - p.SetState(1209) - p.Match(SqlParserK_DISTINCT) - } - - - } - { - p.SetState(1212) - p.expr(0) - } - p.SetState(1217) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1213) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1214) - p.expr(0) - } - - - p.SetState(1219) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - - case SqlParserSTAR: - { - p.SetState(1220) - p.Match(SqlParserSTAR) - } - - - case SqlParserCLOSE_PAR: - - - - default: - } - { - p.SetState(1223) - p.Match(SqlParserCLOSE_PAR) - } - - - case 6: - { - p.SetState(1225) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1226) - p.expr(0) - } - { - p.SetState(1227) - p.Match(SqlParserCLOSE_PAR) - } - - - case 7: - { - p.SetState(1229) - p.Match(SqlParserK_CAST) - } - { - p.SetState(1230) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1231) - p.expr(0) - } - { - p.SetState(1232) - p.Match(SqlParserK_AS) - } - { - p.SetState(1233) - p.Type_name() - } - { - p.SetState(1234) - p.Match(SqlParserCLOSE_PAR) - } - - - case 8: - p.SetState(1240) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_EXISTS || _la == SqlParserK_NOT { - p.SetState(1237) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_NOT { - { - p.SetState(1236) - p.Match(SqlParserK_NOT) - } - - } - { - p.SetState(1239) - p.Match(SqlParserK_EXISTS) - } - - } - { - p.SetState(1242) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1243) - p.Select_stmt() - } - { - p.SetState(1244) - p.Match(SqlParserCLOSE_PAR) - } - - - case 9: - { - p.SetState(1246) - p.Match(SqlParserK_CASE) - } - p.SetState(1248) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 170, p.GetParserRuleContext()) == 1 { - { - p.SetState(1247) - p.expr(0) - } - - - } - p.SetState(1255) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for ok := true; ok; ok = _la == SqlParserK_WHEN { - { - p.SetState(1250) - p.Match(SqlParserK_WHEN) - } - { - p.SetState(1251) - p.expr(0) - } - { - p.SetState(1252) - p.Match(SqlParserK_THEN) - } - { - p.SetState(1253) - p.expr(0) - } - - - p.SetState(1257) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - p.SetState(1261) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_ELSE { - { - p.SetState(1259) - p.Match(SqlParserK_ELSE) - } - { - p.SetState(1260) - p.expr(0) - } - - } - { - p.SetState(1263) - p.Match(SqlParserK_END) - } - - - case 10: - { - p.SetState(1265) - p.Raise_function() - } - - } - p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(1368) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 186, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - if p.GetParseListeners() != nil { - p.TriggerExitRuleEvent() - } - _prevctx = localctx - p.SetState(1366) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 185, p.GetParserRuleContext()) { - case 1: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1268) - - if !(p.Precpred(p.GetParserRuleContext(), 20)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 20)", "")) - } - { - p.SetState(1269) - p.Match(SqlParserPIPE2) - } - { - p.SetState(1270) - p.expr(21) - } - - - case 2: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1271) - - if !(p.Precpred(p.GetParserRuleContext(), 19)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 19)", "")) - } - { - p.SetState(1272) - _la = p.GetTokenStream().LA(1) - - if !((((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserSTAR) | (1 << SqlParserDIV) | (1 << SqlParserMOD))) != 0)) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(1273) - p.expr(20) - } - - - case 3: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1274) - - if !(p.Precpred(p.GetParserRuleContext(), 18)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 18)", "")) - } - { - p.SetState(1275) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserPLUS || _la == SqlParserMINUS) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(1276) - p.expr(19) - } - - - case 4: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1277) - - if !(p.Precpred(p.GetParserRuleContext(), 17)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 17)", "")) - } - { - p.SetState(1278) - _la = p.GetTokenStream().LA(1) - - if !((((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserLT2) | (1 << SqlParserGT2) | (1 << SqlParserAMP) | (1 << SqlParserPIPE))) != 0)) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(1279) - p.expr(18) - } - - - case 5: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1280) - - if !(p.Precpred(p.GetParserRuleContext(), 16)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 16)", "")) - } - { - p.SetState(1281) - _la = p.GetTokenStream().LA(1) - - if !((((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserLT) | (1 << SqlParserLT_EQ) | (1 << SqlParserGT) | (1 << SqlParserGT_EQ))) != 0)) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(1282) - p.expr(17) - } - - - case 6: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1283) - - if !(p.Precpred(p.GetParserRuleContext(), 15)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 15)", "")) - } - p.SetState(1296) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 174, p.GetParserRuleContext()) { - case 1: - { - p.SetState(1284) - p.Match(SqlParserASSIGN) - } - - - case 2: - { - p.SetState(1285) - p.Match(SqlParserEQ) - } - - - case 3: - { - p.SetState(1286) - p.Match(SqlParserNOT_EQ1) - } - - - case 4: - { - p.SetState(1287) - p.Match(SqlParserNOT_EQ2) - } - - - case 5: - { - p.SetState(1288) - p.Match(SqlParserK_IS) - } - - - case 6: - { - p.SetState(1289) - p.Match(SqlParserK_IS) - } - { - p.SetState(1290) - p.Match(SqlParserK_NOT) - } - - - case 7: - { - p.SetState(1291) - p.Match(SqlParserK_IN) - } - - - case 8: - { - p.SetState(1292) - p.Match(SqlParserK_LIKE) - } - - - case 9: - { - p.SetState(1293) - p.Match(SqlParserK_GLOB) - } - - - case 10: - { - p.SetState(1294) - p.Match(SqlParserK_MATCH) - } - - - case 11: - { - p.SetState(1295) - p.Match(SqlParserK_REGEXP) - } - - } - { - p.SetState(1298) - p.expr(16) - } - - - case 7: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1299) - - if !(p.Precpred(p.GetParserRuleContext(), 14)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 14)", "")) - } - { - p.SetState(1300) - p.Match(SqlParserK_AND) - } - { - p.SetState(1301) - p.expr(15) - } - - - case 8: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1302) - - if !(p.Precpred(p.GetParserRuleContext(), 13)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 13)", "")) - } - { - p.SetState(1303) - p.Match(SqlParserK_OR) - } - { - p.SetState(1304) - p.expr(14) - } - - - case 9: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1305) - - if !(p.Precpred(p.GetParserRuleContext(), 6)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", "")) - } - { - p.SetState(1306) - p.Match(SqlParserK_IS) - } - p.SetState(1308) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 175, p.GetParserRuleContext()) == 1 { - { - p.SetState(1307) - p.Match(SqlParserK_NOT) - } - - - } - { - p.SetState(1310) - p.expr(7) - } - - - case 10: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1311) - - if !(p.Precpred(p.GetParserRuleContext(), 5)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) - } - p.SetState(1313) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_NOT { - { - p.SetState(1312) - p.Match(SqlParserK_NOT) - } - - } - { - p.SetState(1315) - p.Match(SqlParserK_BETWEEN) - } - { - p.SetState(1316) - p.expr(0) - } - { - p.SetState(1317) - p.Match(SqlParserK_AND) - } - { - p.SetState(1318) - p.expr(6) - } - - - case 11: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1320) - - if !(p.Precpred(p.GetParserRuleContext(), 9)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 9)", "")) - } - { - p.SetState(1321) - p.Match(SqlParserK_COLLATE) - } - { - p.SetState(1322) - p.Collation_name() - } - - - case 12: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1323) - - if !(p.Precpred(p.GetParserRuleContext(), 8)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 8)", "")) - } - p.SetState(1325) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_NOT { - { - p.SetState(1324) - p.Match(SqlParserK_NOT) - } - - } - { - p.SetState(1327) - _la = p.GetTokenStream().LA(1) - - if !(((((_la - 79)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 79))) & ((1 << (SqlParserK_GLOB - 79)) | (1 << (SqlParserK_LIKE - 79)) | (1 << (SqlParserK_MATCH - 79)))) != 0) || _la == SqlParserK_REGEXP) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(1328) - p.expr(0) - } - p.SetState(1331) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 178, p.GetParserRuleContext()) == 1 { - { - p.SetState(1329) - p.Match(SqlParserK_ESCAPE) - } - { - p.SetState(1330) - p.expr(0) - } - - - } - - - case 13: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1333) - - if !(p.Precpred(p.GetParserRuleContext(), 7)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 7)", "")) - } - p.SetState(1338) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_ISNULL: - { - p.SetState(1334) - p.Match(SqlParserK_ISNULL) - } - - - case SqlParserK_NOTNULL: - { - p.SetState(1335) - p.Match(SqlParserK_NOTNULL) - } - - - case SqlParserK_NOT: - { - p.SetState(1336) - p.Match(SqlParserK_NOT) - } - { - p.SetState(1337) - p.Match(SqlParserK_NULL) - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - - case 14: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1340) - - if !(p.Precpred(p.GetParserRuleContext(), 4)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) - } - p.SetState(1342) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_NOT { - { - p.SetState(1341) - p.Match(SqlParserK_NOT) - } - - } - { - p.SetState(1344) - p.Match(SqlParserK_IN) - } - p.SetState(1364) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 184, p.GetParserRuleContext()) { - case 1: - { - p.SetState(1345) - p.Match(SqlParserOPEN_PAR) - } - p.SetState(1355) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 182, p.GetParserRuleContext()) == 1 { - { - p.SetState(1346) - p.Select_stmt() - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 182, p.GetParserRuleContext()) == 2 { - { - p.SetState(1347) - p.expr(0) - } - p.SetState(1352) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1348) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1349) - p.expr(0) - } - - - p.SetState(1354) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - - } - { - p.SetState(1357) - p.Match(SqlParserCLOSE_PAR) - } - - - case 2: - p.SetState(1361) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 183, p.GetParserRuleContext()) == 1 { - { - p.SetState(1358) - p.Database_name() - } - { - p.SetState(1359) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(1363) - p.Table_name() - } - - } - - } - - } - p.SetState(1370) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 186, p.GetParserRuleContext()) - } - - - - return localctx -} - - -// IForeign_key_clauseContext is an interface to support dynamic dispatch. -type IForeign_key_clauseContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsForeign_key_clauseContext differentiates from other interfaces. - IsForeign_key_clauseContext() -} - -type Foreign_key_clauseContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyForeign_key_clauseContext() *Foreign_key_clauseContext { - var p = new(Foreign_key_clauseContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_foreign_key_clause - return p -} - -func (*Foreign_key_clauseContext) IsForeign_key_clauseContext() {} - -func NewForeign_key_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Foreign_key_clauseContext { - var p = new(Foreign_key_clauseContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_foreign_key_clause - - return p -} - -func (s *Foreign_key_clauseContext) GetParser() antlr.Parser { return s.parser } - -func (s *Foreign_key_clauseContext) K_REFERENCES() antlr.TerminalNode { - return s.GetToken(SqlParserK_REFERENCES, 0) -} - -func (s *Foreign_key_clauseContext) Foreign_table() IForeign_tableContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IForeign_tableContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IForeign_tableContext) -} - -func (s *Foreign_key_clauseContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Foreign_key_clauseContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Foreign_key_clauseContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Foreign_key_clauseContext) AllFk_target_column_name() []IFk_target_column_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IFk_target_column_nameContext); ok { - len++ - } - } - - tst := make([]IFk_target_column_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IFk_target_column_nameContext); ok { - tst[i] = t.(IFk_target_column_nameContext) - i++ - } - } - - return tst -} - -func (s *Foreign_key_clauseContext) Fk_target_column_name(i int) IFk_target_column_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IFk_target_column_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IFk_target_column_nameContext) -} - -func (s *Foreign_key_clauseContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Foreign_key_clauseContext) K_DEFERRABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_DEFERRABLE, 0) -} - -func (s *Foreign_key_clauseContext) AllK_ON() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_ON) -} - -func (s *Foreign_key_clauseContext) K_ON(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_ON, i) -} - -func (s *Foreign_key_clauseContext) AllK_MATCH() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_MATCH) -} - -func (s *Foreign_key_clauseContext) K_MATCH(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_MATCH, i) -} - -func (s *Foreign_key_clauseContext) AllName() []INameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(INameContext); ok { - len++ - } - } - - tst := make([]INameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(INameContext); ok { - tst[i] = t.(INameContext) - i++ - } - } - - return tst -} - -func (s *Foreign_key_clauseContext) Name(i int) INameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(INameContext) -} - -func (s *Foreign_key_clauseContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Foreign_key_clauseContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Foreign_key_clauseContext) AllK_DELETE() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_DELETE) -} - -func (s *Foreign_key_clauseContext) K_DELETE(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_DELETE, i) -} - -func (s *Foreign_key_clauseContext) AllK_UPDATE() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_UPDATE) -} - -func (s *Foreign_key_clauseContext) K_UPDATE(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_UPDATE, i) -} - -func (s *Foreign_key_clauseContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Foreign_key_clauseContext) K_INITIALLY() antlr.TerminalNode { - return s.GetToken(SqlParserK_INITIALLY, 0) -} - -func (s *Foreign_key_clauseContext) K_DEFERRED() antlr.TerminalNode { - return s.GetToken(SqlParserK_DEFERRED, 0) -} - -func (s *Foreign_key_clauseContext) K_IMMEDIATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_IMMEDIATE, 0) -} - -func (s *Foreign_key_clauseContext) K_ENABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_ENABLE, 0) -} - -func (s *Foreign_key_clauseContext) AllK_SET() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_SET) -} - -func (s *Foreign_key_clauseContext) K_SET(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_SET, i) -} - -func (s *Foreign_key_clauseContext) AllK_NULL() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_NULL) -} - -func (s *Foreign_key_clauseContext) K_NULL(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_NULL, i) -} - -func (s *Foreign_key_clauseContext) AllK_DEFAULT() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_DEFAULT) -} - -func (s *Foreign_key_clauseContext) K_DEFAULT(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_DEFAULT, i) -} - -func (s *Foreign_key_clauseContext) AllK_CASCADE() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_CASCADE) -} - -func (s *Foreign_key_clauseContext) K_CASCADE(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_CASCADE, i) -} - -func (s *Foreign_key_clauseContext) AllK_RESTRICT() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_RESTRICT) -} - -func (s *Foreign_key_clauseContext) K_RESTRICT(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_RESTRICT, i) -} - -func (s *Foreign_key_clauseContext) AllK_NO() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_NO) -} - -func (s *Foreign_key_clauseContext) K_NO(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_NO, i) -} - -func (s *Foreign_key_clauseContext) AllK_ACTION() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_ACTION) -} - -func (s *Foreign_key_clauseContext) K_ACTION(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_ACTION, i) -} - -func (s *Foreign_key_clauseContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Foreign_key_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Foreign_key_clauseContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterForeign_key_clause(s) - } -} - -func (s *Foreign_key_clauseContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitForeign_key_clause(s) - } -} - - - - -func (p *SqlParser) Foreign_key_clause() (localctx IForeign_key_clauseContext) { - this := p - _ = this - - localctx = NewForeign_key_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 96, SqlParserRULE_foreign_key_clause) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1371) - p.Match(SqlParserK_REFERENCES) - } - p.SetState(1375) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 187, p.GetParserRuleContext()) == 1 { - { - p.SetState(1372) - p.Database_name() - } - { - p.SetState(1373) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(1377) - p.Foreign_table() - } - p.SetState(1389) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 189, p.GetParserRuleContext()) == 1 { - { - p.SetState(1378) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1379) - p.Fk_target_column_name() - } - p.SetState(1384) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1380) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1381) - p.Fk_target_column_name() - } - - - p.SetState(1386) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1387) - p.Match(SqlParserCLOSE_PAR) - } - - - } - p.SetState(1409) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 192, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - p.SetState(1405) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_ON: - { - p.SetState(1391) - p.Match(SqlParserK_ON) - } - { - p.SetState(1392) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_DELETE || _la == SqlParserK_UPDATE) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - p.SetState(1401) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 190, p.GetParserRuleContext()) { - case 1: - { - p.SetState(1393) - p.Match(SqlParserK_SET) - } - { - p.SetState(1394) - p.Match(SqlParserK_NULL) - } - - - case 2: - { - p.SetState(1395) - p.Match(SqlParserK_SET) - } - { - p.SetState(1396) - p.Match(SqlParserK_DEFAULT) - } - - - case 3: - { - p.SetState(1397) - p.Match(SqlParserK_CASCADE) - } - - - case 4: - { - p.SetState(1398) - p.Match(SqlParserK_RESTRICT) - } - - - case 5: - { - p.SetState(1399) - p.Match(SqlParserK_NO) - } - { - p.SetState(1400) - p.Match(SqlParserK_ACTION) - } - - } - - - case SqlParserK_MATCH: - { - p.SetState(1403) - p.Match(SqlParserK_MATCH) - } - { - p.SetState(1404) - p.Name() - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - - } - p.SetState(1411) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 192, p.GetParserRuleContext()) - } - p.SetState(1425) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 196, p.GetParserRuleContext()) == 1 { - p.SetState(1413) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_NOT { - { - p.SetState(1412) - p.Match(SqlParserK_NOT) - } - - } - { - p.SetState(1415) - p.Match(SqlParserK_DEFERRABLE) - } - p.SetState(1420) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 194, p.GetParserRuleContext()) == 1 { - { - p.SetState(1416) - p.Match(SqlParserK_INITIALLY) - } - { - p.SetState(1417) - p.Match(SqlParserK_DEFERRED) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 194, p.GetParserRuleContext()) == 2 { - { - p.SetState(1418) - p.Match(SqlParserK_INITIALLY) - } - { - p.SetState(1419) - p.Match(SqlParserK_IMMEDIATE) - } - - - } - p.SetState(1423) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 195, p.GetParserRuleContext()) == 1 { - { - p.SetState(1422) - p.Match(SqlParserK_ENABLE) - } - - - } - - - } - - - - return localctx -} - - -// IFk_target_column_nameContext is an interface to support dynamic dispatch. -type IFk_target_column_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsFk_target_column_nameContext differentiates from other interfaces. - IsFk_target_column_nameContext() -} - -type Fk_target_column_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyFk_target_column_nameContext() *Fk_target_column_nameContext { - var p = new(Fk_target_column_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_fk_target_column_name - return p -} - -func (*Fk_target_column_nameContext) IsFk_target_column_nameContext() {} - -func NewFk_target_column_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Fk_target_column_nameContext { - var p = new(Fk_target_column_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_fk_target_column_name - - return p -} - -func (s *Fk_target_column_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Fk_target_column_nameContext) Name() INameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(INameContext) -} - -func (s *Fk_target_column_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Fk_target_column_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Fk_target_column_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterFk_target_column_name(s) - } -} - -func (s *Fk_target_column_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitFk_target_column_name(s) - } -} - - - - -func (p *SqlParser) Fk_target_column_name() (localctx IFk_target_column_nameContext) { - this := p - _ = this - - localctx = NewFk_target_column_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 98, SqlParserRULE_fk_target_column_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1427) - p.Name() - } - - - - return localctx -} - - -// IRaise_functionContext is an interface to support dynamic dispatch. -type IRaise_functionContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsRaise_functionContext differentiates from other interfaces. - IsRaise_functionContext() -} - -type Raise_functionContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyRaise_functionContext() *Raise_functionContext { - var p = new(Raise_functionContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_raise_function - return p -} - -func (*Raise_functionContext) IsRaise_functionContext() {} - -func NewRaise_functionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Raise_functionContext { - var p = new(Raise_functionContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_raise_function - - return p -} - -func (s *Raise_functionContext) GetParser() antlr.Parser { return s.parser } - -func (s *Raise_functionContext) K_RAISE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RAISE, 0) -} - -func (s *Raise_functionContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Raise_functionContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Raise_functionContext) K_IGNORE() antlr.TerminalNode { - return s.GetToken(SqlParserK_IGNORE, 0) -} - -func (s *Raise_functionContext) COMMA() antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, 0) -} - -func (s *Raise_functionContext) Error_message() IError_messageContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IError_messageContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IError_messageContext) -} - -func (s *Raise_functionContext) K_ROLLBACK() antlr.TerminalNode { - return s.GetToken(SqlParserK_ROLLBACK, 0) -} - -func (s *Raise_functionContext) K_ABORT() antlr.TerminalNode { - return s.GetToken(SqlParserK_ABORT, 0) -} - -func (s *Raise_functionContext) K_FAIL() antlr.TerminalNode { - return s.GetToken(SqlParserK_FAIL, 0) -} - -func (s *Raise_functionContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Raise_functionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Raise_functionContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterRaise_function(s) - } -} - -func (s *Raise_functionContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitRaise_function(s) - } -} - - - - -func (p *SqlParser) Raise_function() (localctx IRaise_functionContext) { - this := p - _ = this - - localctx = NewRaise_functionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 100, SqlParserRULE_raise_function) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1429) - p.Match(SqlParserK_RAISE) - } - { - p.SetState(1430) - p.Match(SqlParserOPEN_PAR) - } - p.SetState(1435) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_IGNORE: - { - p.SetState(1431) - p.Match(SqlParserK_IGNORE) - } - - - case SqlParserK_ABORT, SqlParserK_FAIL, SqlParserK_ROLLBACK: - { - p.SetState(1432) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_ABORT || _la == SqlParserK_FAIL || _la == SqlParserK_ROLLBACK) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(1433) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1434) - p.Error_message() - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - { - p.SetState(1437) - p.Match(SqlParserCLOSE_PAR) - } - - - - return localctx -} - - -// IIndexed_columnContext is an interface to support dynamic dispatch. -type IIndexed_columnContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsIndexed_columnContext differentiates from other interfaces. - IsIndexed_columnContext() -} - -type Indexed_columnContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyIndexed_columnContext() *Indexed_columnContext { - var p = new(Indexed_columnContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_indexed_column - return p -} - -func (*Indexed_columnContext) IsIndexed_columnContext() {} - -func NewIndexed_columnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Indexed_columnContext { - var p = new(Indexed_columnContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_indexed_column - - return p -} - -func (s *Indexed_columnContext) GetParser() antlr.Parser { return s.parser } - -func (s *Indexed_columnContext) Column_name() IColumn_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Indexed_columnContext) K_COLLATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_COLLATE, 0) -} - -func (s *Indexed_columnContext) Collation_name() ICollation_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICollation_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICollation_nameContext) -} - -func (s *Indexed_columnContext) K_ASC() antlr.TerminalNode { - return s.GetToken(SqlParserK_ASC, 0) -} - -func (s *Indexed_columnContext) K_DESC() antlr.TerminalNode { - return s.GetToken(SqlParserK_DESC, 0) -} - -func (s *Indexed_columnContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Indexed_columnContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Indexed_columnContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterIndexed_column(s) - } -} - -func (s *Indexed_columnContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitIndexed_column(s) - } -} - - - - -func (p *SqlParser) Indexed_column() (localctx IIndexed_columnContext) { - this := p - _ = this - - localctx = NewIndexed_columnContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 102, SqlParserRULE_indexed_column) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1439) - p.Column_name() - } - p.SetState(1442) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_COLLATE { - { - p.SetState(1440) - p.Match(SqlParserK_COLLATE) - } - { - p.SetState(1441) - p.Collation_name() - } - - } - p.SetState(1445) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_ASC || _la == SqlParserK_DESC { - { - p.SetState(1444) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_ASC || _la == SqlParserK_DESC) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - } - - - - return localctx -} - - -// ITable_constraintContext is an interface to support dynamic dispatch. -type ITable_constraintContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTable_constraintContext differentiates from other interfaces. - IsTable_constraintContext() -} - -type Table_constraintContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTable_constraintContext() *Table_constraintContext { - var p = new(Table_constraintContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_table_constraint - return p -} - -func (*Table_constraintContext) IsTable_constraintContext() {} - -func NewTable_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraintContext { - var p = new(Table_constraintContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_table_constraint - - return p -} - -func (s *Table_constraintContext) GetParser() antlr.Parser { return s.parser } - -func (s *Table_constraintContext) Table_constraint_primary_key() ITable_constraint_primary_keyContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_constraint_primary_keyContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_constraint_primary_keyContext) -} - -func (s *Table_constraintContext) Table_constraint_key() ITable_constraint_keyContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_constraint_keyContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_constraint_keyContext) -} - -func (s *Table_constraintContext) Table_constraint_unique() ITable_constraint_uniqueContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_constraint_uniqueContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_constraint_uniqueContext) -} - -func (s *Table_constraintContext) K_CHECK() antlr.TerminalNode { - return s.GetToken(SqlParserK_CHECK, 0) -} - -func (s *Table_constraintContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Table_constraintContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Table_constraintContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Table_constraintContext) Table_constraint_foreign_key() ITable_constraint_foreign_keyContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_constraint_foreign_keyContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_constraint_foreign_keyContext) -} - -func (s *Table_constraintContext) K_CONSTRAINT() antlr.TerminalNode { - return s.GetToken(SqlParserK_CONSTRAINT, 0) -} - -func (s *Table_constraintContext) Name() INameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(INameContext) -} - -func (s *Table_constraintContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Table_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Table_constraintContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTable_constraint(s) - } -} - -func (s *Table_constraintContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTable_constraint(s) - } -} - - - - -func (p *SqlParser) Table_constraint() (localctx ITable_constraintContext) { - this := p - _ = this - - localctx = NewTable_constraintContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 104, SqlParserRULE_table_constraint) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(1449) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_CONSTRAINT { - { - p.SetState(1447) - p.Match(SqlParserK_CONSTRAINT) - } - { - p.SetState(1448) - p.Name() - } - - } - p.SetState(1460) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_PRIMARY: - { - p.SetState(1451) - p.Table_constraint_primary_key() - } - - - case SqlParserK_KEY: - { - p.SetState(1452) - p.Table_constraint_key() - } - - - case SqlParserK_UNIQUE: - { - p.SetState(1453) - p.Table_constraint_unique() - } - - - case SqlParserK_CHECK: - { - p.SetState(1454) - p.Match(SqlParserK_CHECK) - } - { - p.SetState(1455) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1456) - p.expr(0) - } - { - p.SetState(1457) - p.Match(SqlParserCLOSE_PAR) - } - - - case SqlParserK_FOREIGN: - { - p.SetState(1459) - p.Table_constraint_foreign_key() - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - - - return localctx -} - - -// ITable_constraint_primary_keyContext is an interface to support dynamic dispatch. -type ITable_constraint_primary_keyContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTable_constraint_primary_keyContext differentiates from other interfaces. - IsTable_constraint_primary_keyContext() -} - -type Table_constraint_primary_keyContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTable_constraint_primary_keyContext() *Table_constraint_primary_keyContext { - var p = new(Table_constraint_primary_keyContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_table_constraint_primary_key - return p -} - -func (*Table_constraint_primary_keyContext) IsTable_constraint_primary_keyContext() {} - -func NewTable_constraint_primary_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraint_primary_keyContext { - var p = new(Table_constraint_primary_keyContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_table_constraint_primary_key - - return p -} - -func (s *Table_constraint_primary_keyContext) GetParser() antlr.Parser { return s.parser } - -func (s *Table_constraint_primary_keyContext) K_PRIMARY() antlr.TerminalNode { - return s.GetToken(SqlParserK_PRIMARY, 0) -} - -func (s *Table_constraint_primary_keyContext) K_KEY() antlr.TerminalNode { - return s.GetToken(SqlParserK_KEY, 0) -} - -func (s *Table_constraint_primary_keyContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Table_constraint_primary_keyContext) AllIndexed_column() []IIndexed_columnContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IIndexed_columnContext); ok { - len++ - } - } - - tst := make([]IIndexed_columnContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IIndexed_columnContext); ok { - tst[i] = t.(IIndexed_columnContext) - i++ - } - } - - return tst -} - -func (s *Table_constraint_primary_keyContext) Indexed_column(i int) IIndexed_columnContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIndexed_columnContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IIndexed_columnContext) -} - -func (s *Table_constraint_primary_keyContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Table_constraint_primary_keyContext) Conflict_clause() IConflict_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IConflict_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IConflict_clauseContext) -} - -func (s *Table_constraint_primary_keyContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Table_constraint_primary_keyContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Table_constraint_primary_keyContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Table_constraint_primary_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Table_constraint_primary_keyContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTable_constraint_primary_key(s) - } -} - -func (s *Table_constraint_primary_keyContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTable_constraint_primary_key(s) - } -} - - - - -func (p *SqlParser) Table_constraint_primary_key() (localctx ITable_constraint_primary_keyContext) { - this := p - _ = this - - localctx = NewTable_constraint_primary_keyContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 106, SqlParserRULE_table_constraint_primary_key) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1462) - p.Match(SqlParserK_PRIMARY) - } - { - p.SetState(1463) - p.Match(SqlParserK_KEY) - } - { - p.SetState(1464) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1465) - p.Indexed_column() - } - p.SetState(1470) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1466) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1467) - p.Indexed_column() - } - - - p.SetState(1472) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1473) - p.Match(SqlParserCLOSE_PAR) - } - { - p.SetState(1474) - p.Conflict_clause() - } - - - - return localctx -} - - -// ITable_constraint_foreign_keyContext is an interface to support dynamic dispatch. -type ITable_constraint_foreign_keyContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTable_constraint_foreign_keyContext differentiates from other interfaces. - IsTable_constraint_foreign_keyContext() -} - -type Table_constraint_foreign_keyContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTable_constraint_foreign_keyContext() *Table_constraint_foreign_keyContext { - var p = new(Table_constraint_foreign_keyContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_table_constraint_foreign_key - return p -} - -func (*Table_constraint_foreign_keyContext) IsTable_constraint_foreign_keyContext() {} - -func NewTable_constraint_foreign_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraint_foreign_keyContext { - var p = new(Table_constraint_foreign_keyContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_table_constraint_foreign_key - - return p -} - -func (s *Table_constraint_foreign_keyContext) GetParser() antlr.Parser { return s.parser } - -func (s *Table_constraint_foreign_keyContext) K_FOREIGN() antlr.TerminalNode { - return s.GetToken(SqlParserK_FOREIGN, 0) -} - -func (s *Table_constraint_foreign_keyContext) K_KEY() antlr.TerminalNode { - return s.GetToken(SqlParserK_KEY, 0) -} - -func (s *Table_constraint_foreign_keyContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Table_constraint_foreign_keyContext) AllFk_origin_column_name() []IFk_origin_column_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IFk_origin_column_nameContext); ok { - len++ - } - } - - tst := make([]IFk_origin_column_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IFk_origin_column_nameContext); ok { - tst[i] = t.(IFk_origin_column_nameContext) - i++ - } - } - - return tst -} - -func (s *Table_constraint_foreign_keyContext) Fk_origin_column_name(i int) IFk_origin_column_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IFk_origin_column_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IFk_origin_column_nameContext) -} - -func (s *Table_constraint_foreign_keyContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Table_constraint_foreign_keyContext) Foreign_key_clause() IForeign_key_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IForeign_key_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IForeign_key_clauseContext) -} - -func (s *Table_constraint_foreign_keyContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Table_constraint_foreign_keyContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Table_constraint_foreign_keyContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Table_constraint_foreign_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Table_constraint_foreign_keyContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTable_constraint_foreign_key(s) - } -} - -func (s *Table_constraint_foreign_keyContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTable_constraint_foreign_key(s) - } -} - - - - -func (p *SqlParser) Table_constraint_foreign_key() (localctx ITable_constraint_foreign_keyContext) { - this := p - _ = this - - localctx = NewTable_constraint_foreign_keyContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 108, SqlParserRULE_table_constraint_foreign_key) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1476) - p.Match(SqlParserK_FOREIGN) - } - { - p.SetState(1477) - p.Match(SqlParserK_KEY) - } - { - p.SetState(1478) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1479) - p.Fk_origin_column_name() - } - p.SetState(1484) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1480) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1481) - p.Fk_origin_column_name() - } - - - p.SetState(1486) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1487) - p.Match(SqlParserCLOSE_PAR) - } - { - p.SetState(1488) - p.Foreign_key_clause() - } - - - - return localctx -} - - -// ITable_constraint_uniqueContext is an interface to support dynamic dispatch. -type ITable_constraint_uniqueContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTable_constraint_uniqueContext differentiates from other interfaces. - IsTable_constraint_uniqueContext() -} - -type Table_constraint_uniqueContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTable_constraint_uniqueContext() *Table_constraint_uniqueContext { - var p = new(Table_constraint_uniqueContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_table_constraint_unique - return p -} - -func (*Table_constraint_uniqueContext) IsTable_constraint_uniqueContext() {} - -func NewTable_constraint_uniqueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraint_uniqueContext { - var p = new(Table_constraint_uniqueContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_table_constraint_unique - - return p -} - -func (s *Table_constraint_uniqueContext) GetParser() antlr.Parser { return s.parser } - -func (s *Table_constraint_uniqueContext) K_UNIQUE() antlr.TerminalNode { - return s.GetToken(SqlParserK_UNIQUE, 0) -} - -func (s *Table_constraint_uniqueContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Table_constraint_uniqueContext) AllIndexed_column() []IIndexed_columnContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IIndexed_columnContext); ok { - len++ - } - } - - tst := make([]IIndexed_columnContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IIndexed_columnContext); ok { - tst[i] = t.(IIndexed_columnContext) - i++ - } - } - - return tst -} - -func (s *Table_constraint_uniqueContext) Indexed_column(i int) IIndexed_columnContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIndexed_columnContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IIndexed_columnContext) -} - -func (s *Table_constraint_uniqueContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Table_constraint_uniqueContext) Conflict_clause() IConflict_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IConflict_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IConflict_clauseContext) -} - -func (s *Table_constraint_uniqueContext) K_KEY() antlr.TerminalNode { - return s.GetToken(SqlParserK_KEY, 0) -} - -func (s *Table_constraint_uniqueContext) Name() INameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(INameContext) -} - -func (s *Table_constraint_uniqueContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Table_constraint_uniqueContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Table_constraint_uniqueContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Table_constraint_uniqueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Table_constraint_uniqueContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTable_constraint_unique(s) - } -} - -func (s *Table_constraint_uniqueContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTable_constraint_unique(s) - } -} - - - - -func (p *SqlParser) Table_constraint_unique() (localctx ITable_constraint_uniqueContext) { - this := p - _ = this - - localctx = NewTable_constraint_uniqueContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 110, SqlParserRULE_table_constraint_unique) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1490) - p.Match(SqlParserK_UNIQUE) - } - p.SetState(1492) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 204, p.GetParserRuleContext()) == 1 { - { - p.SetState(1491) - p.Match(SqlParserK_KEY) - } - - - } - p.SetState(1495) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 205, p.GetParserRuleContext()) == 1 { - { - p.SetState(1494) - p.Name() - } - - - } - { - p.SetState(1497) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1498) - p.Indexed_column() - } - p.SetState(1503) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1499) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1500) - p.Indexed_column() - } - - - p.SetState(1505) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1506) - p.Match(SqlParserCLOSE_PAR) - } - { - p.SetState(1507) - p.Conflict_clause() - } - - - - return localctx -} - - -// ITable_constraint_keyContext is an interface to support dynamic dispatch. -type ITable_constraint_keyContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTable_constraint_keyContext differentiates from other interfaces. - IsTable_constraint_keyContext() -} - -type Table_constraint_keyContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTable_constraint_keyContext() *Table_constraint_keyContext { - var p = new(Table_constraint_keyContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_table_constraint_key - return p -} - -func (*Table_constraint_keyContext) IsTable_constraint_keyContext() {} - -func NewTable_constraint_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraint_keyContext { - var p = new(Table_constraint_keyContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_table_constraint_key - - return p -} - -func (s *Table_constraint_keyContext) GetParser() antlr.Parser { return s.parser } - -func (s *Table_constraint_keyContext) K_KEY() antlr.TerminalNode { - return s.GetToken(SqlParserK_KEY, 0) -} - -func (s *Table_constraint_keyContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Table_constraint_keyContext) AllIndexed_column() []IIndexed_columnContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IIndexed_columnContext); ok { - len++ - } - } - - tst := make([]IIndexed_columnContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IIndexed_columnContext); ok { - tst[i] = t.(IIndexed_columnContext) - i++ - } - } - - return tst -} - -func (s *Table_constraint_keyContext) Indexed_column(i int) IIndexed_columnContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIndexed_columnContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IIndexed_columnContext) -} - -func (s *Table_constraint_keyContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Table_constraint_keyContext) Conflict_clause() IConflict_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IConflict_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IConflict_clauseContext) -} - -func (s *Table_constraint_keyContext) Name() INameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(INameContext) -} - -func (s *Table_constraint_keyContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Table_constraint_keyContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Table_constraint_keyContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Table_constraint_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Table_constraint_keyContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTable_constraint_key(s) - } -} - -func (s *Table_constraint_keyContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTable_constraint_key(s) - } -} - - - - -func (p *SqlParser) Table_constraint_key() (localctx ITable_constraint_keyContext) { - this := p - _ = this - - localctx = NewTable_constraint_keyContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 112, SqlParserRULE_table_constraint_key) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1509) - p.Match(SqlParserK_KEY) - } - p.SetState(1511) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 207, p.GetParserRuleContext()) == 1 { - { - p.SetState(1510) - p.Name() - } - - - } - { - p.SetState(1513) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1514) - p.Indexed_column() - } - p.SetState(1519) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1515) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1516) - p.Indexed_column() - } - - - p.SetState(1521) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1522) - p.Match(SqlParserCLOSE_PAR) - } - { - p.SetState(1523) - p.Conflict_clause() - } - - - - return localctx -} - - -// IFk_origin_column_nameContext is an interface to support dynamic dispatch. -type IFk_origin_column_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsFk_origin_column_nameContext differentiates from other interfaces. - IsFk_origin_column_nameContext() -} - -type Fk_origin_column_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyFk_origin_column_nameContext() *Fk_origin_column_nameContext { - var p = new(Fk_origin_column_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_fk_origin_column_name - return p -} - -func (*Fk_origin_column_nameContext) IsFk_origin_column_nameContext() {} - -func NewFk_origin_column_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Fk_origin_column_nameContext { - var p = new(Fk_origin_column_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_fk_origin_column_name - - return p -} - -func (s *Fk_origin_column_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Fk_origin_column_nameContext) Column_name() IColumn_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Fk_origin_column_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Fk_origin_column_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Fk_origin_column_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterFk_origin_column_name(s) - } -} - -func (s *Fk_origin_column_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitFk_origin_column_name(s) - } -} - - - - -func (p *SqlParser) Fk_origin_column_name() (localctx IFk_origin_column_nameContext) { - this := p - _ = this - - localctx = NewFk_origin_column_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 114, SqlParserRULE_fk_origin_column_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1525) - p.Column_name() - } - - - - return localctx -} - - -// IWith_clauseContext is an interface to support dynamic dispatch. -type IWith_clauseContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsWith_clauseContext differentiates from other interfaces. - IsWith_clauseContext() -} - -type With_clauseContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyWith_clauseContext() *With_clauseContext { - var p = new(With_clauseContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_with_clause - return p -} - -func (*With_clauseContext) IsWith_clauseContext() {} - -func NewWith_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *With_clauseContext { - var p = new(With_clauseContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_with_clause - - return p -} - -func (s *With_clauseContext) GetParser() antlr.Parser { return s.parser } - -func (s *With_clauseContext) K_WITH() antlr.TerminalNode { - return s.GetToken(SqlParserK_WITH, 0) -} - -func (s *With_clauseContext) AllCte_table_name() []ICte_table_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ICte_table_nameContext); ok { - len++ - } - } - - tst := make([]ICte_table_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ICte_table_nameContext); ok { - tst[i] = t.(ICte_table_nameContext) - i++ - } - } - - return tst -} - -func (s *With_clauseContext) Cte_table_name(i int) ICte_table_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICte_table_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ICte_table_nameContext) -} - -func (s *With_clauseContext) AllK_AS() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_AS) -} - -func (s *With_clauseContext) K_AS(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, i) -} - -func (s *With_clauseContext) AllOPEN_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserOPEN_PAR) -} - -func (s *With_clauseContext) OPEN_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, i) -} - -func (s *With_clauseContext) AllSelect_stmt() []ISelect_stmtContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ISelect_stmtContext); ok { - len++ - } - } - - tst := make([]ISelect_stmtContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ISelect_stmtContext); ok { - tst[i] = t.(ISelect_stmtContext) - i++ - } - } - - return tst -} - -func (s *With_clauseContext) Select_stmt(i int) ISelect_stmtContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_stmtContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ISelect_stmtContext) -} - -func (s *With_clauseContext) AllCLOSE_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserCLOSE_PAR) -} - -func (s *With_clauseContext) CLOSE_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, i) -} - -func (s *With_clauseContext) K_RECURSIVE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RECURSIVE, 0) -} - -func (s *With_clauseContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *With_clauseContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *With_clauseContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *With_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *With_clauseContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterWith_clause(s) - } -} - -func (s *With_clauseContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitWith_clause(s) - } -} - - - - -func (p *SqlParser) With_clause() (localctx IWith_clauseContext) { - this := p - _ = this - - localctx = NewWith_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 116, SqlParserRULE_with_clause) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1527) - p.Match(SqlParserK_WITH) - } - p.SetState(1529) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 209, p.GetParserRuleContext()) == 1 { - { - p.SetState(1528) - p.Match(SqlParserK_RECURSIVE) - } - - - } - { - p.SetState(1531) - p.Cte_table_name() - } - { - p.SetState(1532) - p.Match(SqlParserK_AS) - } - { - p.SetState(1533) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1534) - p.Select_stmt() - } - { - p.SetState(1535) - p.Match(SqlParserCLOSE_PAR) - } - p.SetState(1545) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1536) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1537) - p.Cte_table_name() - } - { - p.SetState(1538) - p.Match(SqlParserK_AS) - } - { - p.SetState(1539) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1540) - p.Select_stmt() - } - { - p.SetState(1541) - p.Match(SqlParserCLOSE_PAR) - } - - - p.SetState(1547) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - - - return localctx -} - - -// IQualified_table_nameContext is an interface to support dynamic dispatch. -type IQualified_table_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsQualified_table_nameContext differentiates from other interfaces. - IsQualified_table_nameContext() -} - -type Qualified_table_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyQualified_table_nameContext() *Qualified_table_nameContext { - var p = new(Qualified_table_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_qualified_table_name - return p -} - -func (*Qualified_table_nameContext) IsQualified_table_nameContext() {} - -func NewQualified_table_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Qualified_table_nameContext { - var p = new(Qualified_table_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_qualified_table_name - - return p -} - -func (s *Qualified_table_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Qualified_table_nameContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Qualified_table_nameContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Qualified_table_nameContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Qualified_table_nameContext) K_INDEXED() antlr.TerminalNode { - return s.GetToken(SqlParserK_INDEXED, 0) -} - -func (s *Qualified_table_nameContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Qualified_table_nameContext) Index_name() IIndex_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIndex_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IIndex_nameContext) -} - -func (s *Qualified_table_nameContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Qualified_table_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Qualified_table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Qualified_table_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterQualified_table_name(s) - } -} - -func (s *Qualified_table_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitQualified_table_name(s) - } -} - - - - -func (p *SqlParser) Qualified_table_name() (localctx IQualified_table_nameContext) { - this := p - _ = this - - localctx = NewQualified_table_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 118, SqlParserRULE_qualified_table_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(1551) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 211, p.GetParserRuleContext()) == 1 { - { - p.SetState(1548) - p.Database_name() - } - { - p.SetState(1549) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(1553) - p.Table_name() - } - p.SetState(1559) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_INDEXED: - { - p.SetState(1554) - p.Match(SqlParserK_INDEXED) - } - { - p.SetState(1555) - p.Match(SqlParserK_BY) - } - { - p.SetState(1556) - p.Index_name() - } - - - case SqlParserK_NOT: - { - p.SetState(1557) - p.Match(SqlParserK_NOT) - } - { - p.SetState(1558) - p.Match(SqlParserK_INDEXED) - } - - - case SqlParserEOF, SqlParserSCOL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_ATTACH, SqlParserK_BEGIN, SqlParserK_COMMIT, SqlParserK_CREATE, SqlParserK_DELETE, SqlParserK_DETACH, SqlParserK_DROP, SqlParserK_END, SqlParserK_EXPLAIN, SqlParserK_INSERT, SqlParserK_LIMIT, SqlParserK_ORDER, SqlParserK_PRAGMA, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_REPLACE, SqlParserK_ROLLBACK, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_SET, SqlParserK_UPDATE, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_WHERE, SqlParserK_WITH, SqlParserUNEXPECTED_CHAR: - - - - default: - } - - - - return localctx -} - - -// IOrdering_termContext is an interface to support dynamic dispatch. -type IOrdering_termContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsOrdering_termContext differentiates from other interfaces. - IsOrdering_termContext() -} - -type Ordering_termContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyOrdering_termContext() *Ordering_termContext { - var p = new(Ordering_termContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_ordering_term - return p -} - -func (*Ordering_termContext) IsOrdering_termContext() {} - -func NewOrdering_termContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Ordering_termContext { - var p = new(Ordering_termContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_ordering_term - - return p -} - -func (s *Ordering_termContext) GetParser() antlr.Parser { return s.parser } - -func (s *Ordering_termContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Ordering_termContext) K_COLLATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_COLLATE, 0) -} - -func (s *Ordering_termContext) Collation_name() ICollation_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICollation_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICollation_nameContext) -} - -func (s *Ordering_termContext) K_ASC() antlr.TerminalNode { - return s.GetToken(SqlParserK_ASC, 0) -} - -func (s *Ordering_termContext) K_DESC() antlr.TerminalNode { - return s.GetToken(SqlParserK_DESC, 0) -} - -func (s *Ordering_termContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Ordering_termContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Ordering_termContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterOrdering_term(s) - } -} - -func (s *Ordering_termContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitOrdering_term(s) - } -} - - - - -func (p *SqlParser) Ordering_term() (localctx IOrdering_termContext) { - this := p - _ = this - - localctx = NewOrdering_termContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 120, SqlParserRULE_ordering_term) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1561) - p.expr(0) - } - p.SetState(1564) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 213, p.GetParserRuleContext()) == 1 { - { - p.SetState(1562) - p.Match(SqlParserK_COLLATE) - } - { - p.SetState(1563) - p.Collation_name() - } - - - } - p.SetState(1567) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 214, p.GetParserRuleContext()) == 1 { - { - p.SetState(1566) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_ASC || _la == SqlParserK_DESC) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - - } - - - - return localctx -} - - -// IPragma_valueContext is an interface to support dynamic dispatch. -type IPragma_valueContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsPragma_valueContext differentiates from other interfaces. - IsPragma_valueContext() -} - -type Pragma_valueContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyPragma_valueContext() *Pragma_valueContext { - var p = new(Pragma_valueContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_pragma_value - return p -} - -func (*Pragma_valueContext) IsPragma_valueContext() {} - -func NewPragma_valueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Pragma_valueContext { - var p = new(Pragma_valueContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_pragma_value - - return p -} - -func (s *Pragma_valueContext) GetParser() antlr.Parser { return s.parser } - -func (s *Pragma_valueContext) Signed_number() ISigned_numberContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISigned_numberContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISigned_numberContext) -} - -func (s *Pragma_valueContext) Name() INameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(INameContext) -} - -func (s *Pragma_valueContext) STRING_LITERAL() antlr.TerminalNode { - return s.GetToken(SqlParserSTRING_LITERAL, 0) -} - -func (s *Pragma_valueContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Pragma_valueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Pragma_valueContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterPragma_value(s) - } -} - -func (s *Pragma_valueContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitPragma_value(s) - } -} - - - - -func (p *SqlParser) Pragma_value() (localctx IPragma_valueContext) { - this := p - _ = this - - localctx = NewPragma_valueContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 122, SqlParserRULE_pragma_value) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(1572) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 215, p.GetParserRuleContext()) { - case 1: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1569) - p.Signed_number() - } - - - case 2: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(1570) - p.Name() - } - - - case 3: - p.EnterOuterAlt(localctx, 3) - { - p.SetState(1571) - p.Match(SqlParserSTRING_LITERAL) - } - - } - - - return localctx -} - - -// ICommon_table_expressionContext is an interface to support dynamic dispatch. -type ICommon_table_expressionContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCommon_table_expressionContext differentiates from other interfaces. - IsCommon_table_expressionContext() -} - -type Common_table_expressionContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCommon_table_expressionContext() *Common_table_expressionContext { - var p = new(Common_table_expressionContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_common_table_expression - return p -} - -func (*Common_table_expressionContext) IsCommon_table_expressionContext() {} - -func NewCommon_table_expressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Common_table_expressionContext { - var p = new(Common_table_expressionContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_common_table_expression - - return p -} - -func (s *Common_table_expressionContext) GetParser() antlr.Parser { return s.parser } - -func (s *Common_table_expressionContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Common_table_expressionContext) K_AS() antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, 0) -} - -func (s *Common_table_expressionContext) AllOPEN_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserOPEN_PAR) -} - -func (s *Common_table_expressionContext) OPEN_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, i) -} - -func (s *Common_table_expressionContext) Select_stmt() ISelect_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISelect_stmtContext) -} - -func (s *Common_table_expressionContext) AllCLOSE_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserCLOSE_PAR) -} - -func (s *Common_table_expressionContext) CLOSE_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, i) -} - -func (s *Common_table_expressionContext) AllColumn_name() []IColumn_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IColumn_nameContext); ok { - len++ - } - } - - tst := make([]IColumn_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IColumn_nameContext); ok { - tst[i] = t.(IColumn_nameContext) - i++ - } - } - - return tst -} - -func (s *Common_table_expressionContext) Column_name(i int) IColumn_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Common_table_expressionContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Common_table_expressionContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Common_table_expressionContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Common_table_expressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Common_table_expressionContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCommon_table_expression(s) - } -} - -func (s *Common_table_expressionContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCommon_table_expression(s) - } -} - - - - -func (p *SqlParser) Common_table_expression() (localctx ICommon_table_expressionContext) { - this := p - _ = this - - localctx = NewCommon_table_expressionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 124, SqlParserRULE_common_table_expression) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1574) - p.Table_name() - } - p.SetState(1586) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserOPEN_PAR { - { - p.SetState(1575) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1576) - p.Column_name() - } - p.SetState(1581) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1577) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1578) - p.Column_name() - } - - - p.SetState(1583) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1584) - p.Match(SqlParserCLOSE_PAR) - } - - } - { - p.SetState(1588) - p.Match(SqlParserK_AS) - } - { - p.SetState(1589) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1590) - p.Select_stmt() - } - { - p.SetState(1591) - p.Match(SqlParserCLOSE_PAR) - } - - - - return localctx -} - - -// IResult_columnContext is an interface to support dynamic dispatch. -type IResult_columnContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsResult_columnContext differentiates from other interfaces. - IsResult_columnContext() -} - -type Result_columnContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyResult_columnContext() *Result_columnContext { - var p = new(Result_columnContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_result_column - return p -} - -func (*Result_columnContext) IsResult_columnContext() {} - -func NewResult_columnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Result_columnContext { - var p = new(Result_columnContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_result_column - - return p -} - -func (s *Result_columnContext) GetParser() antlr.Parser { return s.parser } - -func (s *Result_columnContext) STAR() antlr.TerminalNode { - return s.GetToken(SqlParserSTAR, 0) -} - -func (s *Result_columnContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Result_columnContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Result_columnContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Result_columnContext) Column_alias() IColumn_aliasContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_aliasContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_aliasContext) -} - -func (s *Result_columnContext) K_AS() antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, 0) -} - -func (s *Result_columnContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Result_columnContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Result_columnContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterResult_column(s) - } -} - -func (s *Result_columnContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitResult_column(s) - } -} - - - - -func (p *SqlParser) Result_column() (localctx IResult_columnContext) { - this := p - _ = this - - localctx = NewResult_columnContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 126, SqlParserRULE_result_column) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(1605) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 220, p.GetParserRuleContext()) { - case 1: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1593) - p.Match(SqlParserSTAR) - } - - - case 2: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(1594) - p.Table_name() - } - { - p.SetState(1595) - p.Match(SqlParserDOT) - } - { - p.SetState(1596) - p.Match(SqlParserSTAR) - } - - - case 3: - p.EnterOuterAlt(localctx, 3) - { - p.SetState(1598) - p.expr(0) - } - p.SetState(1603) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 219, p.GetParserRuleContext()) == 1 { - p.SetState(1600) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_AS { - { - p.SetState(1599) - p.Match(SqlParserK_AS) - } - - } - { - p.SetState(1602) - p.Column_alias() - } - - - } - - } - - - return localctx -} - - -// ITable_or_subqueryContext is an interface to support dynamic dispatch. -type ITable_or_subqueryContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTable_or_subqueryContext differentiates from other interfaces. - IsTable_or_subqueryContext() -} - -type Table_or_subqueryContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTable_or_subqueryContext() *Table_or_subqueryContext { - var p = new(Table_or_subqueryContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_table_or_subquery - return p -} - -func (*Table_or_subqueryContext) IsTable_or_subqueryContext() {} - -func NewTable_or_subqueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_or_subqueryContext { - var p = new(Table_or_subqueryContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_table_or_subquery - - return p -} - -func (s *Table_or_subqueryContext) GetParser() antlr.Parser { return s.parser } - -func (s *Table_or_subqueryContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Table_or_subqueryContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Table_or_subqueryContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Table_or_subqueryContext) Table_alias() ITable_aliasContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_aliasContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_aliasContext) -} - -func (s *Table_or_subqueryContext) K_INDEXED() antlr.TerminalNode { - return s.GetToken(SqlParserK_INDEXED, 0) -} - -func (s *Table_or_subqueryContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Table_or_subqueryContext) Index_name() IIndex_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIndex_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IIndex_nameContext) -} - -func (s *Table_or_subqueryContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Table_or_subqueryContext) K_AS() antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, 0) -} - -func (s *Table_or_subqueryContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Table_or_subqueryContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Table_or_subqueryContext) AllTable_or_subquery() []ITable_or_subqueryContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ITable_or_subqueryContext); ok { - len++ - } - } - - tst := make([]ITable_or_subqueryContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ITable_or_subqueryContext); ok { - tst[i] = t.(ITable_or_subqueryContext) - i++ - } - } - - return tst -} - -func (s *Table_or_subqueryContext) Table_or_subquery(i int) ITable_or_subqueryContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_or_subqueryContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ITable_or_subqueryContext) -} - -func (s *Table_or_subqueryContext) Join_clause() IJoin_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IJoin_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IJoin_clauseContext) -} - -func (s *Table_or_subqueryContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Table_or_subqueryContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Table_or_subqueryContext) Select_stmt() ISelect_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISelect_stmtContext) -} - -func (s *Table_or_subqueryContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Table_or_subqueryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Table_or_subqueryContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTable_or_subquery(s) - } -} - -func (s *Table_or_subqueryContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTable_or_subquery(s) - } -} - - - - -func (p *SqlParser) Table_or_subquery() (localctx ITable_or_subqueryContext) { - this := p - _ = this - - localctx = NewTable_or_subqueryContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 128, SqlParserRULE_table_or_subquery) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(1654) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 231, p.GetParserRuleContext()) { - case 1: - p.EnterOuterAlt(localctx, 1) - p.SetState(1610) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 221, p.GetParserRuleContext()) == 1 { - { - p.SetState(1607) - p.Database_name() - } - { - p.SetState(1608) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(1612) - p.Table_name() - } - p.SetState(1617) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 223, p.GetParserRuleContext()) == 1 { - p.SetState(1614) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 222, p.GetParserRuleContext()) == 1 { - { - p.SetState(1613) - p.Match(SqlParserK_AS) - } - - - } - { - p.SetState(1616) - p.Table_alias() - } - - - } - p.SetState(1624) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 224, p.GetParserRuleContext()) == 1 { - { - p.SetState(1619) - p.Match(SqlParserK_INDEXED) - } - { - p.SetState(1620) - p.Match(SqlParserK_BY) - } - { - p.SetState(1621) - p.Index_name() - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 224, p.GetParserRuleContext()) == 2 { - { - p.SetState(1622) - p.Match(SqlParserK_NOT) - } - { - p.SetState(1623) - p.Match(SqlParserK_INDEXED) - } - - - } - - - case 2: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(1626) - p.Match(SqlParserOPEN_PAR) - } - p.SetState(1636) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 226, p.GetParserRuleContext()) { - case 1: - { - p.SetState(1627) - p.Table_or_subquery() - } - p.SetState(1632) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1628) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1629) - p.Table_or_subquery() - } - - - p.SetState(1634) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - - case 2: - { - p.SetState(1635) - p.Join_clause() - } - - } - { - p.SetState(1638) - p.Match(SqlParserCLOSE_PAR) - } - p.SetState(1643) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 228, p.GetParserRuleContext()) == 1 { - p.SetState(1640) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 227, p.GetParserRuleContext()) == 1 { - { - p.SetState(1639) - p.Match(SqlParserK_AS) - } - - - } - { - p.SetState(1642) - p.Table_alias() - } - - - } - - - case 3: - p.EnterOuterAlt(localctx, 3) - { - p.SetState(1645) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1646) - p.Select_stmt() - } - { - p.SetState(1647) - p.Match(SqlParserCLOSE_PAR) - } - p.SetState(1652) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 230, p.GetParserRuleContext()) == 1 { - p.SetState(1649) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 229, p.GetParserRuleContext()) == 1 { - { - p.SetState(1648) - p.Match(SqlParserK_AS) - } - - - } - { - p.SetState(1651) - p.Table_alias() - } - - - } - - } - - - return localctx -} - - -// IJoin_clauseContext is an interface to support dynamic dispatch. -type IJoin_clauseContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsJoin_clauseContext differentiates from other interfaces. - IsJoin_clauseContext() -} - -type Join_clauseContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyJoin_clauseContext() *Join_clauseContext { - var p = new(Join_clauseContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_join_clause - return p -} - -func (*Join_clauseContext) IsJoin_clauseContext() {} - -func NewJoin_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Join_clauseContext { - var p = new(Join_clauseContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_join_clause - - return p -} - -func (s *Join_clauseContext) GetParser() antlr.Parser { return s.parser } - -func (s *Join_clauseContext) AllTable_or_subquery() []ITable_or_subqueryContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ITable_or_subqueryContext); ok { - len++ - } - } - - tst := make([]ITable_or_subqueryContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ITable_or_subqueryContext); ok { - tst[i] = t.(ITable_or_subqueryContext) - i++ - } - } - - return tst -} - -func (s *Join_clauseContext) Table_or_subquery(i int) ITable_or_subqueryContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_or_subqueryContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ITable_or_subqueryContext) -} - -func (s *Join_clauseContext) AllJoin_operator() []IJoin_operatorContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IJoin_operatorContext); ok { - len++ - } - } - - tst := make([]IJoin_operatorContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IJoin_operatorContext); ok { - tst[i] = t.(IJoin_operatorContext) - i++ - } - } - - return tst -} - -func (s *Join_clauseContext) Join_operator(i int) IJoin_operatorContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IJoin_operatorContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IJoin_operatorContext) -} - -func (s *Join_clauseContext) AllJoin_constraint() []IJoin_constraintContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IJoin_constraintContext); ok { - len++ - } - } - - tst := make([]IJoin_constraintContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IJoin_constraintContext); ok { - tst[i] = t.(IJoin_constraintContext) - i++ - } - } - - return tst -} - -func (s *Join_clauseContext) Join_constraint(i int) IJoin_constraintContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IJoin_constraintContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IJoin_constraintContext) -} - -func (s *Join_clauseContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Join_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Join_clauseContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterJoin_clause(s) - } -} - -func (s *Join_clauseContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitJoin_clause(s) - } -} - - - - -func (p *SqlParser) Join_clause() (localctx IJoin_clauseContext) { - this := p - _ = this - - localctx = NewJoin_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 130, SqlParserRULE_join_clause) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1656) - p.Table_or_subquery() - } - p.SetState(1663) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 232, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - { - p.SetState(1657) - p.Join_operator() - } - { - p.SetState(1658) - p.Table_or_subquery() - } - { - p.SetState(1659) - p.Join_constraint() - } - - - } - p.SetState(1665) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 232, p.GetParserRuleContext()) - } - - - - return localctx -} - - -// IJoin_operatorContext is an interface to support dynamic dispatch. -type IJoin_operatorContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsJoin_operatorContext differentiates from other interfaces. - IsJoin_operatorContext() -} - -type Join_operatorContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyJoin_operatorContext() *Join_operatorContext { - var p = new(Join_operatorContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_join_operator - return p -} - -func (*Join_operatorContext) IsJoin_operatorContext() {} - -func NewJoin_operatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Join_operatorContext { - var p = new(Join_operatorContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_join_operator - - return p -} - -func (s *Join_operatorContext) GetParser() antlr.Parser { return s.parser } - -func (s *Join_operatorContext) COMMA() antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, 0) -} - -func (s *Join_operatorContext) K_JOIN() antlr.TerminalNode { - return s.GetToken(SqlParserK_JOIN, 0) -} - -func (s *Join_operatorContext) K_NATURAL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NATURAL, 0) -} - -func (s *Join_operatorContext) K_LEFT() antlr.TerminalNode { - return s.GetToken(SqlParserK_LEFT, 0) -} - -func (s *Join_operatorContext) K_INNER() antlr.TerminalNode { - return s.GetToken(SqlParserK_INNER, 0) -} - -func (s *Join_operatorContext) K_CROSS() antlr.TerminalNode { - return s.GetToken(SqlParserK_CROSS, 0) -} - -func (s *Join_operatorContext) K_OUTER() antlr.TerminalNode { - return s.GetToken(SqlParserK_OUTER, 0) -} - -func (s *Join_operatorContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Join_operatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Join_operatorContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterJoin_operator(s) - } -} - -func (s *Join_operatorContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitJoin_operator(s) - } -} - - - - -func (p *SqlParser) Join_operator() (localctx IJoin_operatorContext) { - this := p - _ = this - - localctx = NewJoin_operatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 132, SqlParserRULE_join_operator) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(1679) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserCOMMA: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1666) - p.Match(SqlParserCOMMA) - } - - - case SqlParserK_CROSS, SqlParserK_INNER, SqlParserK_JOIN, SqlParserK_LEFT, SqlParserK_NATURAL: - p.EnterOuterAlt(localctx, 2) - p.SetState(1668) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_NATURAL { - { - p.SetState(1667) - p.Match(SqlParserK_NATURAL) - } - - } - p.SetState(1676) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_LEFT: - { - p.SetState(1670) - p.Match(SqlParserK_LEFT) - } - p.SetState(1672) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_OUTER { - { - p.SetState(1671) - p.Match(SqlParserK_OUTER) - } - - } - - - case SqlParserK_INNER: - { - p.SetState(1674) - p.Match(SqlParserK_INNER) - } - - - case SqlParserK_CROSS: - { - p.SetState(1675) - p.Match(SqlParserK_CROSS) - } - - - case SqlParserK_JOIN: - - - - default: - } - { - p.SetState(1678) - p.Match(SqlParserK_JOIN) - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - - return localctx -} - - -// IJoin_constraintContext is an interface to support dynamic dispatch. -type IJoin_constraintContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsJoin_constraintContext differentiates from other interfaces. - IsJoin_constraintContext() -} - -type Join_constraintContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyJoin_constraintContext() *Join_constraintContext { - var p = new(Join_constraintContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_join_constraint - return p -} - -func (*Join_constraintContext) IsJoin_constraintContext() {} - -func NewJoin_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Join_constraintContext { - var p = new(Join_constraintContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_join_constraint - - return p -} - -func (s *Join_constraintContext) GetParser() antlr.Parser { return s.parser } - -func (s *Join_constraintContext) K_ON() antlr.TerminalNode { - return s.GetToken(SqlParserK_ON, 0) -} - -func (s *Join_constraintContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Join_constraintContext) K_USING() antlr.TerminalNode { - return s.GetToken(SqlParserK_USING, 0) -} - -func (s *Join_constraintContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Join_constraintContext) AllColumn_name() []IColumn_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IColumn_nameContext); ok { - len++ - } - } - - tst := make([]IColumn_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IColumn_nameContext); ok { - tst[i] = t.(IColumn_nameContext) - i++ - } - } - - return tst -} - -func (s *Join_constraintContext) Column_name(i int) IColumn_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Join_constraintContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Join_constraintContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Join_constraintContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Join_constraintContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Join_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Join_constraintContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterJoin_constraint(s) - } -} - -func (s *Join_constraintContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitJoin_constraint(s) - } -} - - - - -func (p *SqlParser) Join_constraint() (localctx IJoin_constraintContext) { - this := p - _ = this - - localctx = NewJoin_constraintContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 134, SqlParserRULE_join_constraint) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(1695) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 238, p.GetParserRuleContext()) == 1 { - { - p.SetState(1681) - p.Match(SqlParserK_ON) - } - { - p.SetState(1682) - p.expr(0) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 238, p.GetParserRuleContext()) == 2 { - { - p.SetState(1683) - p.Match(SqlParserK_USING) - } - { - p.SetState(1684) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1685) - p.Column_name() - } - p.SetState(1690) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1686) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1687) - p.Column_name() - } - - - p.SetState(1692) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1693) - p.Match(SqlParserCLOSE_PAR) - } - - - } - - - - return localctx -} - - -// ISelect_coreContext is an interface to support dynamic dispatch. -type ISelect_coreContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSelect_coreContext differentiates from other interfaces. - IsSelect_coreContext() -} - -type Select_coreContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySelect_coreContext() *Select_coreContext { - var p = new(Select_coreContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_select_core - return p -} - -func (*Select_coreContext) IsSelect_coreContext() {} - -func NewSelect_coreContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Select_coreContext { - var p = new(Select_coreContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_select_core - - return p -} - -func (s *Select_coreContext) GetParser() antlr.Parser { return s.parser } - -func (s *Select_coreContext) K_SELECT() antlr.TerminalNode { - return s.GetToken(SqlParserK_SELECT, 0) -} - -func (s *Select_coreContext) AllResult_column() []IResult_columnContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IResult_columnContext); ok { - len++ - } - } - - tst := make([]IResult_columnContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IResult_columnContext); ok { - tst[i] = t.(IResult_columnContext) - i++ - } - } - - return tst -} - -func (s *Select_coreContext) Result_column(i int) IResult_columnContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IResult_columnContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IResult_columnContext) -} - -func (s *Select_coreContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Select_coreContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Select_coreContext) K_FROM() antlr.TerminalNode { - return s.GetToken(SqlParserK_FROM, 0) -} - -func (s *Select_coreContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHERE, 0) -} - -func (s *Select_coreContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Select_coreContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Select_coreContext) K_GROUP() antlr.TerminalNode { - return s.GetToken(SqlParserK_GROUP, 0) -} - -func (s *Select_coreContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Select_coreContext) K_DISTINCT() antlr.TerminalNode { - return s.GetToken(SqlParserK_DISTINCT, 0) -} - -func (s *Select_coreContext) K_ALL() antlr.TerminalNode { - return s.GetToken(SqlParserK_ALL, 0) -} - -func (s *Select_coreContext) AllTable_or_subquery() []ITable_or_subqueryContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ITable_or_subqueryContext); ok { - len++ - } - } - - tst := make([]ITable_or_subqueryContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ITable_or_subqueryContext); ok { - tst[i] = t.(ITable_or_subqueryContext) - i++ - } - } - - return tst -} - -func (s *Select_coreContext) Table_or_subquery(i int) ITable_or_subqueryContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_or_subqueryContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ITable_or_subqueryContext) -} - -func (s *Select_coreContext) Join_clause() IJoin_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IJoin_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IJoin_clauseContext) -} - -func (s *Select_coreContext) K_HAVING() antlr.TerminalNode { - return s.GetToken(SqlParserK_HAVING, 0) -} - -func (s *Select_coreContext) K_VALUES() antlr.TerminalNode { - return s.GetToken(SqlParserK_VALUES, 0) -} - -func (s *Select_coreContext) AllOPEN_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserOPEN_PAR) -} - -func (s *Select_coreContext) OPEN_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, i) -} - -func (s *Select_coreContext) AllCLOSE_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserCLOSE_PAR) -} - -func (s *Select_coreContext) CLOSE_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, i) -} - -func (s *Select_coreContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Select_coreContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Select_coreContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSelect_core(s) - } -} - -func (s *Select_coreContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSelect_core(s) - } -} - - - - -func (p *SqlParser) Select_core() (localctx ISelect_coreContext) { - this := p - _ = this - - localctx = NewSelect_coreContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 136, SqlParserRULE_select_core) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(1771) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_SELECT: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1697) - p.Match(SqlParserK_SELECT) - } - p.SetState(1699) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 239, p.GetParserRuleContext()) == 1 { - { - p.SetState(1698) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_ALL || _la == SqlParserK_DISTINCT) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - - } - { - p.SetState(1701) - p.Result_column() - } - p.SetState(1706) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1702) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1703) - p.Result_column() - } - - - p.SetState(1708) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - p.SetState(1721) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_FROM { - { - p.SetState(1709) - p.Match(SqlParserK_FROM) - } - p.SetState(1719) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 242, p.GetParserRuleContext()) { - case 1: - { - p.SetState(1710) - p.Table_or_subquery() - } - p.SetState(1715) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1711) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1712) - p.Table_or_subquery() - } - - - p.SetState(1717) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - - case 2: - { - p.SetState(1718) - p.Join_clause() - } - - } - - } - p.SetState(1725) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WHERE { - { - p.SetState(1723) - p.Match(SqlParserK_WHERE) - } - { - p.SetState(1724) - p.expr(0) - } - - } - p.SetState(1741) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_GROUP { - { - p.SetState(1727) - p.Match(SqlParserK_GROUP) - } - { - p.SetState(1728) - p.Match(SqlParserK_BY) - } - { - p.SetState(1729) - p.expr(0) - } - p.SetState(1734) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1730) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1731) - p.expr(0) - } - - - p.SetState(1736) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - p.SetState(1739) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_HAVING { - { - p.SetState(1737) - p.Match(SqlParserK_HAVING) - } - { - p.SetState(1738) - p.expr(0) - } - - } - - } - - - case SqlParserK_VALUES: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(1743) - p.Match(SqlParserK_VALUES) - } - { - p.SetState(1744) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1745) - p.expr(0) - } - p.SetState(1750) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1746) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1747) - p.expr(0) - } - - - p.SetState(1752) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1753) - p.Match(SqlParserCLOSE_PAR) - } - p.SetState(1768) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1754) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1755) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1756) - p.expr(0) - } - p.SetState(1761) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1757) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1758) - p.expr(0) - } - - - p.SetState(1763) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1764) - p.Match(SqlParserCLOSE_PAR) - } - - - p.SetState(1770) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - - return localctx -} - - -// ICompound_operatorContext is an interface to support dynamic dispatch. -type ICompound_operatorContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCompound_operatorContext differentiates from other interfaces. - IsCompound_operatorContext() -} - -type Compound_operatorContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCompound_operatorContext() *Compound_operatorContext { - var p = new(Compound_operatorContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_compound_operator - return p -} - -func (*Compound_operatorContext) IsCompound_operatorContext() {} - -func NewCompound_operatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Compound_operatorContext { - var p = new(Compound_operatorContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_compound_operator - - return p -} - -func (s *Compound_operatorContext) GetParser() antlr.Parser { return s.parser } - -func (s *Compound_operatorContext) K_UNION() antlr.TerminalNode { - return s.GetToken(SqlParserK_UNION, 0) -} - -func (s *Compound_operatorContext) K_ALL() antlr.TerminalNode { - return s.GetToken(SqlParserK_ALL, 0) -} - -func (s *Compound_operatorContext) K_INTERSECT() antlr.TerminalNode { - return s.GetToken(SqlParserK_INTERSECT, 0) -} - -func (s *Compound_operatorContext) K_EXCEPT() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXCEPT, 0) -} - -func (s *Compound_operatorContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Compound_operatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Compound_operatorContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCompound_operator(s) - } -} - -func (s *Compound_operatorContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCompound_operator(s) - } -} - - - - -func (p *SqlParser) Compound_operator() (localctx ICompound_operatorContext) { - this := p - _ = this - - localctx = NewCompound_operatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 138, SqlParserRULE_compound_operator) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(1778) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 252, p.GetParserRuleContext()) { - case 1: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1773) - p.Match(SqlParserK_UNION) - } - - - case 2: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(1774) - p.Match(SqlParserK_UNION) - } - { - p.SetState(1775) - p.Match(SqlParserK_ALL) - } - - - case 3: - p.EnterOuterAlt(localctx, 3) - { - p.SetState(1776) - p.Match(SqlParserK_INTERSECT) - } - - - case 4: - p.EnterOuterAlt(localctx, 4) - { - p.SetState(1777) - p.Match(SqlParserK_EXCEPT) - } - - } - - - return localctx -} - - -// ICte_table_nameContext is an interface to support dynamic dispatch. -type ICte_table_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCte_table_nameContext differentiates from other interfaces. - IsCte_table_nameContext() -} - -type Cte_table_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCte_table_nameContext() *Cte_table_nameContext { - var p = new(Cte_table_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_cte_table_name - return p -} - -func (*Cte_table_nameContext) IsCte_table_nameContext() {} - -func NewCte_table_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Cte_table_nameContext { - var p = new(Cte_table_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_cte_table_name - - return p -} - -func (s *Cte_table_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Cte_table_nameContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Cte_table_nameContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Cte_table_nameContext) AllColumn_name() []IColumn_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IColumn_nameContext); ok { - len++ - } - } - - tst := make([]IColumn_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IColumn_nameContext); ok { - tst[i] = t.(IColumn_nameContext) - i++ - } - } - - return tst -} - -func (s *Cte_table_nameContext) Column_name(i int) IColumn_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Cte_table_nameContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Cte_table_nameContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Cte_table_nameContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Cte_table_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Cte_table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Cte_table_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCte_table_name(s) - } -} - -func (s *Cte_table_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCte_table_name(s) - } -} - - - - -func (p *SqlParser) Cte_table_name() (localctx ICte_table_nameContext) { - this := p - _ = this - - localctx = NewCte_table_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 140, SqlParserRULE_cte_table_name) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1780) - p.Table_name() - } - p.SetState(1792) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserOPEN_PAR { - { - p.SetState(1781) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1782) - p.Column_name() - } - p.SetState(1787) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1783) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1784) - p.Column_name() - } - - - p.SetState(1789) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1790) - p.Match(SqlParserCLOSE_PAR) - } - - } - - - - return localctx -} - - -// ISigned_numberContext is an interface to support dynamic dispatch. -type ISigned_numberContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSigned_numberContext differentiates from other interfaces. - IsSigned_numberContext() -} - -type Signed_numberContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySigned_numberContext() *Signed_numberContext { - var p = new(Signed_numberContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_signed_number - return p -} - -func (*Signed_numberContext) IsSigned_numberContext() {} - -func NewSigned_numberContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Signed_numberContext { - var p = new(Signed_numberContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_signed_number - - return p -} - -func (s *Signed_numberContext) GetParser() antlr.Parser { return s.parser } - -func (s *Signed_numberContext) NUMERIC_LITERAL() antlr.TerminalNode { - return s.GetToken(SqlParserNUMERIC_LITERAL, 0) -} - -func (s *Signed_numberContext) STAR() antlr.TerminalNode { - return s.GetToken(SqlParserSTAR, 0) -} - -func (s *Signed_numberContext) PLUS() antlr.TerminalNode { - return s.GetToken(SqlParserPLUS, 0) -} - -func (s *Signed_numberContext) MINUS() antlr.TerminalNode { - return s.GetToken(SqlParserMINUS, 0) -} - -func (s *Signed_numberContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Signed_numberContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Signed_numberContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSigned_number(s) - } -} - -func (s *Signed_numberContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSigned_number(s) - } -} - - - - -func (p *SqlParser) Signed_number() (localctx ISigned_numberContext) { - this := p - _ = this - - localctx = NewSigned_numberContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 142, SqlParserRULE_signed_number) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(1799) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserPLUS, SqlParserMINUS, SqlParserNUMERIC_LITERAL: - p.SetState(1795) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserPLUS || _la == SqlParserMINUS { - { - p.SetState(1794) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserPLUS || _la == SqlParserMINUS) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - } - { - p.SetState(1797) - p.Match(SqlParserNUMERIC_LITERAL) - } - - - case SqlParserSTAR: - { - p.SetState(1798) - p.Match(SqlParserSTAR) - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - - - return localctx -} - - -// ILiteral_valueContext is an interface to support dynamic dispatch. -type ILiteral_valueContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsLiteral_valueContext differentiates from other interfaces. - IsLiteral_valueContext() -} - -type Literal_valueContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyLiteral_valueContext() *Literal_valueContext { - var p = new(Literal_valueContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_literal_value - return p -} - -func (*Literal_valueContext) IsLiteral_valueContext() {} - -func NewLiteral_valueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Literal_valueContext { - var p = new(Literal_valueContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_literal_value - - return p -} - -func (s *Literal_valueContext) GetParser() antlr.Parser { return s.parser } - -func (s *Literal_valueContext) NUMERIC_LITERAL() antlr.TerminalNode { - return s.GetToken(SqlParserNUMERIC_LITERAL, 0) -} - -func (s *Literal_valueContext) STRING_LITERAL() antlr.TerminalNode { - return s.GetToken(SqlParserSTRING_LITERAL, 0) -} - -func (s *Literal_valueContext) BLOB_LITERAL() antlr.TerminalNode { - return s.GetToken(SqlParserBLOB_LITERAL, 0) -} - -func (s *Literal_valueContext) K_NULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NULL, 0) -} - -func (s *Literal_valueContext) K_CURRENT_TIME() antlr.TerminalNode { - return s.GetToken(SqlParserK_CURRENT_TIME, 0) -} - -func (s *Literal_valueContext) K_CURRENT_DATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CURRENT_DATE, 0) -} - -func (s *Literal_valueContext) K_CURRENT_TIMESTAMP() antlr.TerminalNode { - return s.GetToken(SqlParserK_CURRENT_TIMESTAMP, 0) -} - -func (s *Literal_valueContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Literal_valueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Literal_valueContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterLiteral_value(s) - } -} - -func (s *Literal_valueContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitLiteral_value(s) - } -} - - - - -func (p *SqlParser) Literal_value() (localctx ILiteral_valueContext) { - this := p - _ = this - - localctx = NewLiteral_valueContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 144, SqlParserRULE_literal_value) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1801) - _la = p.GetTokenStream().LA(1) - - if !(((((_la - 53)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 53))) & ((1 << (SqlParserK_CURRENT_DATE - 53)) | (1 << (SqlParserK_CURRENT_TIME - 53)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 53)))) != 0) || _la == SqlParserK_NULL || ((((_la - 154)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 154))) & ((1 << (SqlParserNUMERIC_LITERAL - 154)) | (1 << (SqlParserSTRING_LITERAL - 154)) | (1 << (SqlParserBLOB_LITERAL - 154)))) != 0)) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - - - return localctx -} - - -// IUnary_operatorContext is an interface to support dynamic dispatch. -type IUnary_operatorContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsUnary_operatorContext differentiates from other interfaces. - IsUnary_operatorContext() -} - -type Unary_operatorContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyUnary_operatorContext() *Unary_operatorContext { - var p = new(Unary_operatorContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_unary_operator - return p -} - -func (*Unary_operatorContext) IsUnary_operatorContext() {} - -func NewUnary_operatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Unary_operatorContext { - var p = new(Unary_operatorContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_unary_operator - - return p -} - -func (s *Unary_operatorContext) GetParser() antlr.Parser { return s.parser } - -func (s *Unary_operatorContext) MINUS() antlr.TerminalNode { - return s.GetToken(SqlParserMINUS, 0) -} - -func (s *Unary_operatorContext) PLUS() antlr.TerminalNode { - return s.GetToken(SqlParserPLUS, 0) -} - -func (s *Unary_operatorContext) TILDE() antlr.TerminalNode { - return s.GetToken(SqlParserTILDE, 0) -} - -func (s *Unary_operatorContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Unary_operatorContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Unary_operatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Unary_operatorContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterUnary_operator(s) - } -} - -func (s *Unary_operatorContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitUnary_operator(s) - } -} - - - - -func (p *SqlParser) Unary_operator() (localctx IUnary_operatorContext) { - this := p - _ = this - - localctx = NewUnary_operatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 146, SqlParserRULE_unary_operator) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1803) - _la = p.GetTokenStream().LA(1) - - if !((((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserPLUS) | (1 << SqlParserMINUS) | (1 << SqlParserTILDE))) != 0) || _la == SqlParserK_NOT) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - - - return localctx -} - - -// IError_messageContext is an interface to support dynamic dispatch. -type IError_messageContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsError_messageContext differentiates from other interfaces. - IsError_messageContext() -} - -type Error_messageContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyError_messageContext() *Error_messageContext { - var p = new(Error_messageContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_error_message - return p -} - -func (*Error_messageContext) IsError_messageContext() {} - -func NewError_messageContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Error_messageContext { - var p = new(Error_messageContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_error_message - - return p -} - -func (s *Error_messageContext) GetParser() antlr.Parser { return s.parser } - -func (s *Error_messageContext) STRING_LITERAL() antlr.TerminalNode { - return s.GetToken(SqlParserSTRING_LITERAL, 0) -} - -func (s *Error_messageContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Error_messageContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Error_messageContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterError_message(s) - } -} - -func (s *Error_messageContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitError_message(s) - } -} - - - - -func (p *SqlParser) Error_message() (localctx IError_messageContext) { - this := p - _ = this - - localctx = NewError_messageContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 148, SqlParserRULE_error_message) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1805) - p.Match(SqlParserSTRING_LITERAL) - } - - - - return localctx -} - - -// IModule_argumentContext is an interface to support dynamic dispatch. -type IModule_argumentContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsModule_argumentContext differentiates from other interfaces. - IsModule_argumentContext() -} - -type Module_argumentContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyModule_argumentContext() *Module_argumentContext { - var p = new(Module_argumentContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_module_argument - return p -} - -func (*Module_argumentContext) IsModule_argumentContext() {} - -func NewModule_argumentContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Module_argumentContext { - var p = new(Module_argumentContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_module_argument - - return p -} - -func (s *Module_argumentContext) GetParser() antlr.Parser { return s.parser } - -func (s *Module_argumentContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Module_argumentContext) Column_def() IColumn_defContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_defContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_defContext) -} - -func (s *Module_argumentContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Module_argumentContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Module_argumentContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterModule_argument(s) - } -} - -func (s *Module_argumentContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitModule_argument(s) - } -} - - - - -func (p *SqlParser) Module_argument() (localctx IModule_argumentContext) { - this := p - _ = this - - localctx = NewModule_argumentContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 150, SqlParserRULE_module_argument) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(1809) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 257, p.GetParserRuleContext()) { - case 1: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1807) - p.expr(0) - } - - - case 2: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(1808) - p.Column_def() - } - - } - - - return localctx -} - - -// IColumn_aliasContext is an interface to support dynamic dispatch. -type IColumn_aliasContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_aliasContext differentiates from other interfaces. - IsColumn_aliasContext() -} - -type Column_aliasContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_aliasContext() *Column_aliasContext { - var p = new(Column_aliasContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_alias - return p -} - -func (*Column_aliasContext) IsColumn_aliasContext() {} - -func NewColumn_aliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_aliasContext { - var p = new(Column_aliasContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_alias - - return p -} - -func (s *Column_aliasContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_aliasContext) IDENTIFIER() antlr.TerminalNode { - return s.GetToken(SqlParserIDENTIFIER, 0) -} - -func (s *Column_aliasContext) STRING_LITERAL() antlr.TerminalNode { - return s.GetToken(SqlParserSTRING_LITERAL, 0) -} - -func (s *Column_aliasContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_aliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_aliasContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_alias(s) - } -} - -func (s *Column_aliasContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_alias(s) - } -} - - - - -func (p *SqlParser) Column_alias() (localctx IColumn_aliasContext) { - this := p - _ = this - - localctx = NewColumn_aliasContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 152, SqlParserRULE_column_alias) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1811) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserIDENTIFIER || _la == SqlParserSTRING_LITERAL) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - - - return localctx -} - - -// IKeywordContext is an interface to support dynamic dispatch. -type IKeywordContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsKeywordContext differentiates from other interfaces. - IsKeywordContext() -} - -type KeywordContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyKeywordContext() *KeywordContext { - var p = new(KeywordContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_keyword - return p -} - -func (*KeywordContext) IsKeywordContext() {} - -func NewKeywordContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *KeywordContext { - var p = new(KeywordContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_keyword - - return p -} - -func (s *KeywordContext) GetParser() antlr.Parser { return s.parser } - -func (s *KeywordContext) K_ABORT() antlr.TerminalNode { - return s.GetToken(SqlParserK_ABORT, 0) -} - -func (s *KeywordContext) K_ACTION() antlr.TerminalNode { - return s.GetToken(SqlParserK_ACTION, 0) -} - -func (s *KeywordContext) K_ADD() antlr.TerminalNode { - return s.GetToken(SqlParserK_ADD, 0) -} - -func (s *KeywordContext) K_AFTER() antlr.TerminalNode { - return s.GetToken(SqlParserK_AFTER, 0) -} - -func (s *KeywordContext) K_ALL() antlr.TerminalNode { - return s.GetToken(SqlParserK_ALL, 0) -} - -func (s *KeywordContext) K_ALTER() antlr.TerminalNode { - return s.GetToken(SqlParserK_ALTER, 0) -} - -func (s *KeywordContext) K_ANALYZE() antlr.TerminalNode { - return s.GetToken(SqlParserK_ANALYZE, 0) -} - -func (s *KeywordContext) K_AND() antlr.TerminalNode { - return s.GetToken(SqlParserK_AND, 0) -} - -func (s *KeywordContext) K_AS() antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, 0) -} - -func (s *KeywordContext) K_ASC() antlr.TerminalNode { - return s.GetToken(SqlParserK_ASC, 0) -} - -func (s *KeywordContext) K_ATTACH() antlr.TerminalNode { - return s.GetToken(SqlParserK_ATTACH, 0) -} - -func (s *KeywordContext) K_AUTOINCREMENT() antlr.TerminalNode { - return s.GetToken(SqlParserK_AUTOINCREMENT, 0) -} - -func (s *KeywordContext) K_BEFORE() antlr.TerminalNode { - return s.GetToken(SqlParserK_BEFORE, 0) -} - -func (s *KeywordContext) K_BEGIN() antlr.TerminalNode { - return s.GetToken(SqlParserK_BEGIN, 0) -} - -func (s *KeywordContext) K_BETWEEN() antlr.TerminalNode { - return s.GetToken(SqlParserK_BETWEEN, 0) -} - -func (s *KeywordContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *KeywordContext) K_CASCADE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CASCADE, 0) -} - -func (s *KeywordContext) K_CASE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CASE, 0) -} - -func (s *KeywordContext) K_CAST() antlr.TerminalNode { - return s.GetToken(SqlParserK_CAST, 0) -} - -func (s *KeywordContext) K_CHECK() antlr.TerminalNode { - return s.GetToken(SqlParserK_CHECK, 0) -} - -func (s *KeywordContext) K_COLLATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_COLLATE, 0) -} - -func (s *KeywordContext) K_COLUMN() antlr.TerminalNode { - return s.GetToken(SqlParserK_COLUMN, 0) -} - -func (s *KeywordContext) K_COMMIT() antlr.TerminalNode { - return s.GetToken(SqlParserK_COMMIT, 0) -} - -func (s *KeywordContext) K_CONFLICT() antlr.TerminalNode { - return s.GetToken(SqlParserK_CONFLICT, 0) -} - -func (s *KeywordContext) K_CONSTRAINT() antlr.TerminalNode { - return s.GetToken(SqlParserK_CONSTRAINT, 0) -} - -func (s *KeywordContext) K_CREATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CREATE, 0) -} - -func (s *KeywordContext) K_CROSS() antlr.TerminalNode { - return s.GetToken(SqlParserK_CROSS, 0) -} - -func (s *KeywordContext) K_CURRENT_DATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CURRENT_DATE, 0) -} - -func (s *KeywordContext) K_CURRENT_TIME() antlr.TerminalNode { - return s.GetToken(SqlParserK_CURRENT_TIME, 0) -} - -func (s *KeywordContext) K_CURRENT_TIMESTAMP() antlr.TerminalNode { - return s.GetToken(SqlParserK_CURRENT_TIMESTAMP, 0) -} - -func (s *KeywordContext) K_DATABASE() antlr.TerminalNode { - return s.GetToken(SqlParserK_DATABASE, 0) -} - -func (s *KeywordContext) K_DEFAULT() antlr.TerminalNode { - return s.GetToken(SqlParserK_DEFAULT, 0) -} - -func (s *KeywordContext) K_DEFERRABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_DEFERRABLE, 0) -} - -func (s *KeywordContext) K_DEFERRED() antlr.TerminalNode { - return s.GetToken(SqlParserK_DEFERRED, 0) -} - -func (s *KeywordContext) K_DELETE() antlr.TerminalNode { - return s.GetToken(SqlParserK_DELETE, 0) -} - -func (s *KeywordContext) K_DESC() antlr.TerminalNode { - return s.GetToken(SqlParserK_DESC, 0) -} - -func (s *KeywordContext) K_DETACH() antlr.TerminalNode { - return s.GetToken(SqlParserK_DETACH, 0) -} - -func (s *KeywordContext) K_DISTINCT() antlr.TerminalNode { - return s.GetToken(SqlParserK_DISTINCT, 0) -} - -func (s *KeywordContext) K_DROP() antlr.TerminalNode { - return s.GetToken(SqlParserK_DROP, 0) -} - -func (s *KeywordContext) K_EACH() antlr.TerminalNode { - return s.GetToken(SqlParserK_EACH, 0) -} - -func (s *KeywordContext) K_ELSE() antlr.TerminalNode { - return s.GetToken(SqlParserK_ELSE, 0) -} - -func (s *KeywordContext) K_END() antlr.TerminalNode { - return s.GetToken(SqlParserK_END, 0) -} - -func (s *KeywordContext) K_ENABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_ENABLE, 0) -} - -func (s *KeywordContext) K_ESCAPE() antlr.TerminalNode { - return s.GetToken(SqlParserK_ESCAPE, 0) -} - -func (s *KeywordContext) K_EXCEPT() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXCEPT, 0) -} - -func (s *KeywordContext) K_EXCLUSIVE() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXCLUSIVE, 0) -} - -func (s *KeywordContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *KeywordContext) K_EXPLAIN() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXPLAIN, 0) -} - -func (s *KeywordContext) K_FAIL() antlr.TerminalNode { - return s.GetToken(SqlParserK_FAIL, 0) -} - -func (s *KeywordContext) K_FOR() antlr.TerminalNode { - return s.GetToken(SqlParserK_FOR, 0) -} - -func (s *KeywordContext) K_FOREIGN() antlr.TerminalNode { - return s.GetToken(SqlParserK_FOREIGN, 0) -} - -func (s *KeywordContext) K_FROM() antlr.TerminalNode { - return s.GetToken(SqlParserK_FROM, 0) -} - -func (s *KeywordContext) K_FULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_FULL, 0) -} - -func (s *KeywordContext) K_GLOB() antlr.TerminalNode { - return s.GetToken(SqlParserK_GLOB, 0) -} - -func (s *KeywordContext) K_GROUP() antlr.TerminalNode { - return s.GetToken(SqlParserK_GROUP, 0) -} - -func (s *KeywordContext) K_HAVING() antlr.TerminalNode { - return s.GetToken(SqlParserK_HAVING, 0) -} - -func (s *KeywordContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *KeywordContext) K_IGNORE() antlr.TerminalNode { - return s.GetToken(SqlParserK_IGNORE, 0) -} - -func (s *KeywordContext) K_IMMEDIATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_IMMEDIATE, 0) -} - -func (s *KeywordContext) K_IN() antlr.TerminalNode { - return s.GetToken(SqlParserK_IN, 0) -} - -func (s *KeywordContext) K_INDEX() antlr.TerminalNode { - return s.GetToken(SqlParserK_INDEX, 0) -} - -func (s *KeywordContext) K_INDEXED() antlr.TerminalNode { - return s.GetToken(SqlParserK_INDEXED, 0) -} - -func (s *KeywordContext) K_INITIALLY() antlr.TerminalNode { - return s.GetToken(SqlParserK_INITIALLY, 0) -} - -func (s *KeywordContext) K_INNER() antlr.TerminalNode { - return s.GetToken(SqlParserK_INNER, 0) -} - -func (s *KeywordContext) K_INSERT() antlr.TerminalNode { - return s.GetToken(SqlParserK_INSERT, 0) -} - -func (s *KeywordContext) K_INSTEAD() antlr.TerminalNode { - return s.GetToken(SqlParserK_INSTEAD, 0) -} - -func (s *KeywordContext) K_INTERSECT() antlr.TerminalNode { - return s.GetToken(SqlParserK_INTERSECT, 0) -} - -func (s *KeywordContext) K_INTO() antlr.TerminalNode { - return s.GetToken(SqlParserK_INTO, 0) -} - -func (s *KeywordContext) K_IS() antlr.TerminalNode { - return s.GetToken(SqlParserK_IS, 0) -} - -func (s *KeywordContext) K_ISNULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_ISNULL, 0) -} - -func (s *KeywordContext) K_JOIN() antlr.TerminalNode { - return s.GetToken(SqlParserK_JOIN, 0) -} - -func (s *KeywordContext) K_KEY() antlr.TerminalNode { - return s.GetToken(SqlParserK_KEY, 0) -} - -func (s *KeywordContext) K_LEFT() antlr.TerminalNode { - return s.GetToken(SqlParserK_LEFT, 0) -} - -func (s *KeywordContext) K_LIKE() antlr.TerminalNode { - return s.GetToken(SqlParserK_LIKE, 0) -} - -func (s *KeywordContext) K_LIMIT() antlr.TerminalNode { - return s.GetToken(SqlParserK_LIMIT, 0) -} - -func (s *KeywordContext) K_MATCH() antlr.TerminalNode { - return s.GetToken(SqlParserK_MATCH, 0) -} - -func (s *KeywordContext) K_NATURAL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NATURAL, 0) -} - -func (s *KeywordContext) K_NO() antlr.TerminalNode { - return s.GetToken(SqlParserK_NO, 0) -} - -func (s *KeywordContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *KeywordContext) K_NOTNULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOTNULL, 0) -} - -func (s *KeywordContext) K_NULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NULL, 0) -} - -func (s *KeywordContext) K_OF() antlr.TerminalNode { - return s.GetToken(SqlParserK_OF, 0) -} - -func (s *KeywordContext) K_OFFSET() antlr.TerminalNode { - return s.GetToken(SqlParserK_OFFSET, 0) -} - -func (s *KeywordContext) K_ON() antlr.TerminalNode { - return s.GetToken(SqlParserK_ON, 0) -} - -func (s *KeywordContext) K_OR() antlr.TerminalNode { - return s.GetToken(SqlParserK_OR, 0) -} - -func (s *KeywordContext) K_ORDER() antlr.TerminalNode { - return s.GetToken(SqlParserK_ORDER, 0) -} - -func (s *KeywordContext) K_OUTER() antlr.TerminalNode { - return s.GetToken(SqlParserK_OUTER, 0) -} - -func (s *KeywordContext) K_PLAN() antlr.TerminalNode { - return s.GetToken(SqlParserK_PLAN, 0) -} - -func (s *KeywordContext) K_PRAGMA() antlr.TerminalNode { - return s.GetToken(SqlParserK_PRAGMA, 0) -} - -func (s *KeywordContext) K_PRIMARY() antlr.TerminalNode { - return s.GetToken(SqlParserK_PRIMARY, 0) -} - -func (s *KeywordContext) K_QUERY() antlr.TerminalNode { - return s.GetToken(SqlParserK_QUERY, 0) -} - -func (s *KeywordContext) K_RAISE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RAISE, 0) -} - -func (s *KeywordContext) K_RECURSIVE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RECURSIVE, 0) -} - -func (s *KeywordContext) K_REFERENCES() antlr.TerminalNode { - return s.GetToken(SqlParserK_REFERENCES, 0) -} - -func (s *KeywordContext) K_REGEXP() antlr.TerminalNode { - return s.GetToken(SqlParserK_REGEXP, 0) -} - -func (s *KeywordContext) K_REINDEX() antlr.TerminalNode { - return s.GetToken(SqlParserK_REINDEX, 0) -} - -func (s *KeywordContext) K_RELEASE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RELEASE, 0) -} - -func (s *KeywordContext) K_RENAME() antlr.TerminalNode { - return s.GetToken(SqlParserK_RENAME, 0) -} - -func (s *KeywordContext) K_REPLACE() antlr.TerminalNode { - return s.GetToken(SqlParserK_REPLACE, 0) -} - -func (s *KeywordContext) K_RESTRICT() antlr.TerminalNode { - return s.GetToken(SqlParserK_RESTRICT, 0) -} - -func (s *KeywordContext) K_RIGHT() antlr.TerminalNode { - return s.GetToken(SqlParserK_RIGHT, 0) -} - -func (s *KeywordContext) K_ROLLBACK() antlr.TerminalNode { - return s.GetToken(SqlParserK_ROLLBACK, 0) -} - -func (s *KeywordContext) K_ROW() antlr.TerminalNode { - return s.GetToken(SqlParserK_ROW, 0) -} - -func (s *KeywordContext) K_SAVEPOINT() antlr.TerminalNode { - return s.GetToken(SqlParserK_SAVEPOINT, 0) -} - -func (s *KeywordContext) K_SELECT() antlr.TerminalNode { - return s.GetToken(SqlParserK_SELECT, 0) -} - -func (s *KeywordContext) K_SET() antlr.TerminalNode { - return s.GetToken(SqlParserK_SET, 0) -} - -func (s *KeywordContext) K_TABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_TABLE, 0) -} - -func (s *KeywordContext) K_TEMP() antlr.TerminalNode { - return s.GetToken(SqlParserK_TEMP, 0) -} - -func (s *KeywordContext) K_TEMPORARY() antlr.TerminalNode { - return s.GetToken(SqlParserK_TEMPORARY, 0) -} - -func (s *KeywordContext) K_THEN() antlr.TerminalNode { - return s.GetToken(SqlParserK_THEN, 0) -} - -func (s *KeywordContext) K_TO() antlr.TerminalNode { - return s.GetToken(SqlParserK_TO, 0) -} - -func (s *KeywordContext) K_TRANSACTION() antlr.TerminalNode { - return s.GetToken(SqlParserK_TRANSACTION, 0) -} - -func (s *KeywordContext) K_TRIGGER() antlr.TerminalNode { - return s.GetToken(SqlParserK_TRIGGER, 0) -} - -func (s *KeywordContext) K_UNION() antlr.TerminalNode { - return s.GetToken(SqlParserK_UNION, 0) -} - -func (s *KeywordContext) K_UNIQUE() antlr.TerminalNode { - return s.GetToken(SqlParserK_UNIQUE, 0) -} - -func (s *KeywordContext) K_UPDATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_UPDATE, 0) -} - -func (s *KeywordContext) K_USING() antlr.TerminalNode { - return s.GetToken(SqlParserK_USING, 0) -} - -func (s *KeywordContext) K_VACUUM() antlr.TerminalNode { - return s.GetToken(SqlParserK_VACUUM, 0) -} - -func (s *KeywordContext) K_VALUES() antlr.TerminalNode { - return s.GetToken(SqlParserK_VALUES, 0) -} - -func (s *KeywordContext) K_VIEW() antlr.TerminalNode { - return s.GetToken(SqlParserK_VIEW, 0) -} - -func (s *KeywordContext) K_VIRTUAL() antlr.TerminalNode { - return s.GetToken(SqlParserK_VIRTUAL, 0) -} - -func (s *KeywordContext) K_WHEN() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHEN, 0) -} - -func (s *KeywordContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHERE, 0) -} - -func (s *KeywordContext) K_WITH() antlr.TerminalNode { - return s.GetToken(SqlParserK_WITH, 0) -} - -func (s *KeywordContext) K_WITHOUT() antlr.TerminalNode { - return s.GetToken(SqlParserK_WITHOUT, 0) -} - -func (s *KeywordContext) K_NEXTVAL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NEXTVAL, 0) -} - -func (s *KeywordContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *KeywordContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *KeywordContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterKeyword(s) - } -} - -func (s *KeywordContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitKeyword(s) - } -} - - - - -func (p *SqlParser) Keyword() (localctx IKeywordContext) { - this := p - _ = this - - localctx = NewKeywordContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 154, SqlParserRULE_keyword) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1813) - _la = p.GetTokenStream().LA(1) - - if !(((((_la - 26)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 26))) & ((1 << (SqlParserK_ABORT - 26)) | (1 << (SqlParserK_ACTION - 26)) | (1 << (SqlParserK_ADD - 26)) | (1 << (SqlParserK_AFTER - 26)) | (1 << (SqlParserK_ALL - 26)) | (1 << (SqlParserK_ALTER - 26)) | (1 << (SqlParserK_ANALYZE - 26)) | (1 << (SqlParserK_AND - 26)) | (1 << (SqlParserK_AS - 26)) | (1 << (SqlParserK_ASC - 26)) | (1 << (SqlParserK_ATTACH - 26)) | (1 << (SqlParserK_AUTOINCREMENT - 26)) | (1 << (SqlParserK_BEFORE - 26)) | (1 << (SqlParserK_BEGIN - 26)) | (1 << (SqlParserK_BETWEEN - 26)) | (1 << (SqlParserK_BY - 26)) | (1 << (SqlParserK_CASCADE - 26)) | (1 << (SqlParserK_CASE - 26)) | (1 << (SqlParserK_CAST - 26)) | (1 << (SqlParserK_CHECK - 26)) | (1 << (SqlParserK_COLLATE - 26)) | (1 << (SqlParserK_COLUMN - 26)) | (1 << (SqlParserK_COMMIT - 26)) | (1 << (SqlParserK_CONFLICT - 26)) | (1 << (SqlParserK_CONSTRAINT - 26)) | (1 << (SqlParserK_CREATE - 26)) | (1 << (SqlParserK_CROSS - 26)) | (1 << (SqlParserK_CURRENT_DATE - 26)) | (1 << (SqlParserK_CURRENT_TIME - 26)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 26)) | (1 << (SqlParserK_DATABASE - 26)) | (1 << (SqlParserK_DEFAULT - 26)))) != 0) || ((((_la - 58)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 58))) & ((1 << (SqlParserK_DEFERRABLE - 58)) | (1 << (SqlParserK_DEFERRED - 58)) | (1 << (SqlParserK_DELETE - 58)) | (1 << (SqlParserK_DESC - 58)) | (1 << (SqlParserK_DETACH - 58)) | (1 << (SqlParserK_DISTINCT - 58)) | (1 << (SqlParserK_DROP - 58)) | (1 << (SqlParserK_EACH - 58)) | (1 << (SqlParserK_ELSE - 58)) | (1 << (SqlParserK_END - 58)) | (1 << (SqlParserK_ENABLE - 58)) | (1 << (SqlParserK_ESCAPE - 58)) | (1 << (SqlParserK_EXCEPT - 58)) | (1 << (SqlParserK_EXCLUSIVE - 58)) | (1 << (SqlParserK_EXISTS - 58)) | (1 << (SqlParserK_EXPLAIN - 58)) | (1 << (SqlParserK_FAIL - 58)) | (1 << (SqlParserK_FOR - 58)) | (1 << (SqlParserK_FOREIGN - 58)) | (1 << (SqlParserK_FROM - 58)) | (1 << (SqlParserK_FULL - 58)) | (1 << (SqlParserK_GLOB - 58)) | (1 << (SqlParserK_GROUP - 58)) | (1 << (SqlParserK_HAVING - 58)) | (1 << (SqlParserK_IF - 58)) | (1 << (SqlParserK_IGNORE - 58)) | (1 << (SqlParserK_IMMEDIATE - 58)) | (1 << (SqlParserK_IN - 58)) | (1 << (SqlParserK_INDEX - 58)) | (1 << (SqlParserK_INDEXED - 58)) | (1 << (SqlParserK_INITIALLY - 58)) | (1 << (SqlParserK_INNER - 58)))) != 0) || ((((_la - 90)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 90))) & ((1 << (SqlParserK_INSERT - 90)) | (1 << (SqlParserK_INSTEAD - 90)) | (1 << (SqlParserK_INTERSECT - 90)) | (1 << (SqlParserK_INTO - 90)) | (1 << (SqlParserK_IS - 90)) | (1 << (SqlParserK_ISNULL - 90)) | (1 << (SqlParserK_JOIN - 90)) | (1 << (SqlParserK_KEY - 90)) | (1 << (SqlParserK_LEFT - 90)) | (1 << (SqlParserK_LIKE - 90)) | (1 << (SqlParserK_LIMIT - 90)) | (1 << (SqlParserK_MATCH - 90)) | (1 << (SqlParserK_NATURAL - 90)) | (1 << (SqlParserK_NEXTVAL - 90)) | (1 << (SqlParserK_NO - 90)) | (1 << (SqlParserK_NOT - 90)) | (1 << (SqlParserK_NOTNULL - 90)) | (1 << (SqlParserK_NULL - 90)) | (1 << (SqlParserK_OF - 90)) | (1 << (SqlParserK_OFFSET - 90)) | (1 << (SqlParserK_ON - 90)) | (1 << (SqlParserK_OR - 90)) | (1 << (SqlParserK_ORDER - 90)) | (1 << (SqlParserK_OUTER - 90)) | (1 << (SqlParserK_PLAN - 90)) | (1 << (SqlParserK_PRAGMA - 90)) | (1 << (SqlParserK_PRIMARY - 90)) | (1 << (SqlParserK_QUERY - 90)) | (1 << (SqlParserK_RAISE - 90)) | (1 << (SqlParserK_RECURSIVE - 90)) | (1 << (SqlParserK_REFERENCES - 90)))) != 0) || ((((_la - 122)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 122))) & ((1 << (SqlParserK_REGEXP - 122)) | (1 << (SqlParserK_REINDEX - 122)) | (1 << (SqlParserK_RELEASE - 122)) | (1 << (SqlParserK_RENAME - 122)) | (1 << (SqlParserK_REPLACE - 122)) | (1 << (SqlParserK_RESTRICT - 122)) | (1 << (SqlParserK_RIGHT - 122)) | (1 << (SqlParserK_ROLLBACK - 122)) | (1 << (SqlParserK_ROW - 122)) | (1 << (SqlParserK_SAVEPOINT - 122)) | (1 << (SqlParserK_SELECT - 122)) | (1 << (SqlParserK_SET - 122)) | (1 << (SqlParserK_TABLE - 122)) | (1 << (SqlParserK_TEMP - 122)) | (1 << (SqlParserK_TEMPORARY - 122)) | (1 << (SqlParserK_THEN - 122)) | (1 << (SqlParserK_TO - 122)) | (1 << (SqlParserK_TRANSACTION - 122)) | (1 << (SqlParserK_TRIGGER - 122)) | (1 << (SqlParserK_UNION - 122)) | (1 << (SqlParserK_UNIQUE - 122)) | (1 << (SqlParserK_UPDATE - 122)) | (1 << (SqlParserK_USING - 122)) | (1 << (SqlParserK_VACUUM - 122)) | (1 << (SqlParserK_VALUES - 122)) | (1 << (SqlParserK_VIEW - 122)) | (1 << (SqlParserK_VIRTUAL - 122)) | (1 << (SqlParserK_WHEN - 122)) | (1 << (SqlParserK_WHERE - 122)) | (1 << (SqlParserK_WITH - 122)) | (1 << (SqlParserK_WITHOUT - 122)))) != 0)) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - - - return localctx -} - - -// IUnknownContext is an interface to support dynamic dispatch. -type IUnknownContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsUnknownContext differentiates from other interfaces. - IsUnknownContext() -} - -type UnknownContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyUnknownContext() *UnknownContext { - var p = new(UnknownContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_unknown - return p -} - -func (*UnknownContext) IsUnknownContext() {} - -func NewUnknownContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UnknownContext { - var p = new(UnknownContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_unknown - - return p -} - -func (s *UnknownContext) GetParser() antlr.Parser { return s.parser } -func (s *UnknownContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *UnknownContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *UnknownContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterUnknown(s) - } -} - -func (s *UnknownContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitUnknown(s) - } -} - - - - -func (p *SqlParser) Unknown() (localctx IUnknownContext) { - this := p - _ = this - - localctx = NewUnknownContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 156, SqlParserRULE_unknown) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.EnterOuterAlt(localctx, 1) - p.SetState(1816) - p.GetErrorHandler().Sync(p) - _alt = 1 - for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - switch _alt { - case 1: - p.SetState(1815) - p.MatchWildcard() - - - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - p.SetState(1818) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 258, p.GetParserRuleContext()) - } - - - - return localctx -} - - -// INameContext is an interface to support dynamic dispatch. -type INameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsNameContext differentiates from other interfaces. - IsNameContext() -} - -type NameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyNameContext() *NameContext { - var p = new(NameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_name - return p -} - -func (*NameContext) IsNameContext() {} - -func NewNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NameContext { - var p = new(NameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_name - - return p -} - -func (s *NameContext) GetParser() antlr.Parser { return s.parser } - -func (s *NameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *NameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *NameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *NameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterName(s) - } -} - -func (s *NameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitName(s) - } -} - - - - -func (p *SqlParser) Name() (localctx INameContext) { - this := p - _ = this - - localctx = NewNameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 158, SqlParserRULE_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1820) - p.Any_name() - } - - - - return localctx -} - - -// IFunction_nameContext is an interface to support dynamic dispatch. -type IFunction_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsFunction_nameContext differentiates from other interfaces. - IsFunction_nameContext() -} - -type Function_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyFunction_nameContext() *Function_nameContext { - var p = new(Function_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_function_name - return p -} - -func (*Function_nameContext) IsFunction_nameContext() {} - -func NewFunction_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Function_nameContext { - var p = new(Function_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_function_name - - return p -} - -func (s *Function_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Function_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Function_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Function_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Function_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterFunction_name(s) - } -} - -func (s *Function_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitFunction_name(s) - } -} - - - - -func (p *SqlParser) Function_name() (localctx IFunction_nameContext) { - this := p - _ = this - - localctx = NewFunction_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 160, SqlParserRULE_function_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1822) - p.Any_name() - } - - - - return localctx -} - - -// IDatabase_nameContext is an interface to support dynamic dispatch. -type IDatabase_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsDatabase_nameContext differentiates from other interfaces. - IsDatabase_nameContext() -} - -type Database_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyDatabase_nameContext() *Database_nameContext { - var p = new(Database_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_database_name - return p -} - -func (*Database_nameContext) IsDatabase_nameContext() {} - -func NewDatabase_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Database_nameContext { - var p = new(Database_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_database_name - - return p -} - -func (s *Database_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Database_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Database_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Database_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Database_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterDatabase_name(s) - } -} - -func (s *Database_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitDatabase_name(s) - } -} - - - - -func (p *SqlParser) Database_name() (localctx IDatabase_nameContext) { - this := p - _ = this - - localctx = NewDatabase_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 162, SqlParserRULE_database_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1824) - p.Any_name() - } - - - - return localctx -} - - -// ISource_table_nameContext is an interface to support dynamic dispatch. -type ISource_table_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSource_table_nameContext differentiates from other interfaces. - IsSource_table_nameContext() -} - -type Source_table_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySource_table_nameContext() *Source_table_nameContext { - var p = new(Source_table_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_source_table_name - return p -} - -func (*Source_table_nameContext) IsSource_table_nameContext() {} - -func NewSource_table_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Source_table_nameContext { - var p = new(Source_table_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_source_table_name - - return p -} - -func (s *Source_table_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Source_table_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Source_table_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Source_table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Source_table_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSource_table_name(s) - } -} - -func (s *Source_table_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSource_table_name(s) - } -} - - - - -func (p *SqlParser) Source_table_name() (localctx ISource_table_nameContext) { - this := p - _ = this - - localctx = NewSource_table_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 164, SqlParserRULE_source_table_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1826) - p.Any_name() - } - - - - return localctx -} - - -// ITable_nameContext is an interface to support dynamic dispatch. -type ITable_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTable_nameContext differentiates from other interfaces. - IsTable_nameContext() -} - -type Table_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTable_nameContext() *Table_nameContext { - var p = new(Table_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_table_name - return p -} - -func (*Table_nameContext) IsTable_nameContext() {} - -func NewTable_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_nameContext { - var p = new(Table_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_table_name - - return p -} - -func (s *Table_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Table_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Table_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Table_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTable_name(s) - } -} - -func (s *Table_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTable_name(s) - } -} - - - - -func (p *SqlParser) Table_name() (localctx ITable_nameContext) { - this := p - _ = this - - localctx = NewTable_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 166, SqlParserRULE_table_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1828) - p.Any_name() - } - - - - return localctx -} - - -// ITable_or_index_nameContext is an interface to support dynamic dispatch. -type ITable_or_index_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTable_or_index_nameContext differentiates from other interfaces. - IsTable_or_index_nameContext() -} - -type Table_or_index_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTable_or_index_nameContext() *Table_or_index_nameContext { - var p = new(Table_or_index_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_table_or_index_name - return p -} - -func (*Table_or_index_nameContext) IsTable_or_index_nameContext() {} - -func NewTable_or_index_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_or_index_nameContext { - var p = new(Table_or_index_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_table_or_index_name - - return p -} - -func (s *Table_or_index_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Table_or_index_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Table_or_index_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Table_or_index_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Table_or_index_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTable_or_index_name(s) - } -} - -func (s *Table_or_index_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTable_or_index_name(s) - } -} - - - - -func (p *SqlParser) Table_or_index_name() (localctx ITable_or_index_nameContext) { - this := p - _ = this - - localctx = NewTable_or_index_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 168, SqlParserRULE_table_or_index_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1830) - p.Any_name() - } - - - - return localctx -} - - -// INew_table_nameContext is an interface to support dynamic dispatch. -type INew_table_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsNew_table_nameContext differentiates from other interfaces. - IsNew_table_nameContext() -} - -type New_table_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyNew_table_nameContext() *New_table_nameContext { - var p = new(New_table_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_new_table_name - return p -} - -func (*New_table_nameContext) IsNew_table_nameContext() {} - -func NewNew_table_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *New_table_nameContext { - var p = new(New_table_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_new_table_name - - return p -} - -func (s *New_table_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *New_table_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *New_table_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *New_table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *New_table_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterNew_table_name(s) - } -} - -func (s *New_table_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitNew_table_name(s) - } -} - - - - -func (p *SqlParser) New_table_name() (localctx INew_table_nameContext) { - this := p - _ = this - - localctx = NewNew_table_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 170, SqlParserRULE_new_table_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1832) - p.Any_name() - } - - - - return localctx -} - - -// IColumn_nameContext is an interface to support dynamic dispatch. -type IColumn_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_nameContext differentiates from other interfaces. - IsColumn_nameContext() -} - -type Column_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_nameContext() *Column_nameContext { - var p = new(Column_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_name - return p -} - -func (*Column_nameContext) IsColumn_nameContext() {} - -func NewColumn_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_nameContext { - var p = new(Column_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_name - - return p -} - -func (s *Column_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Column_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_name(s) - } -} - -func (s *Column_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_name(s) - } -} - - - - -func (p *SqlParser) Column_name() (localctx IColumn_nameContext) { - this := p - _ = this - - localctx = NewColumn_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 172, SqlParserRULE_column_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1834) - p.Any_name() - } - - - - return localctx -} - - -// ICollation_nameContext is an interface to support dynamic dispatch. -type ICollation_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCollation_nameContext differentiates from other interfaces. - IsCollation_nameContext() -} - -type Collation_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCollation_nameContext() *Collation_nameContext { - var p = new(Collation_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_collation_name - return p -} - -func (*Collation_nameContext) IsCollation_nameContext() {} - -func NewCollation_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Collation_nameContext { - var p = new(Collation_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_collation_name - - return p -} - -func (s *Collation_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Collation_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Collation_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Collation_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Collation_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCollation_name(s) - } -} - -func (s *Collation_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCollation_name(s) - } -} - - - - -func (p *SqlParser) Collation_name() (localctx ICollation_nameContext) { - this := p - _ = this - - localctx = NewCollation_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 174, SqlParserRULE_collation_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1836) - p.Any_name() - } - - - - return localctx -} - - -// IForeign_tableContext is an interface to support dynamic dispatch. -type IForeign_tableContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsForeign_tableContext differentiates from other interfaces. - IsForeign_tableContext() -} - -type Foreign_tableContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyForeign_tableContext() *Foreign_tableContext { - var p = new(Foreign_tableContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_foreign_table - return p -} - -func (*Foreign_tableContext) IsForeign_tableContext() {} - -func NewForeign_tableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Foreign_tableContext { - var p = new(Foreign_tableContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_foreign_table - - return p -} - -func (s *Foreign_tableContext) GetParser() antlr.Parser { return s.parser } - -func (s *Foreign_tableContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Foreign_tableContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Foreign_tableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Foreign_tableContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterForeign_table(s) - } -} - -func (s *Foreign_tableContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitForeign_table(s) - } -} - - - - -func (p *SqlParser) Foreign_table() (localctx IForeign_tableContext) { - this := p - _ = this - - localctx = NewForeign_tableContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 176, SqlParserRULE_foreign_table) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1838) - p.Any_name() - } - - - - return localctx -} - - -// IIndex_nameContext is an interface to support dynamic dispatch. -type IIndex_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsIndex_nameContext differentiates from other interfaces. - IsIndex_nameContext() -} - -type Index_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyIndex_nameContext() *Index_nameContext { - var p = new(Index_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_index_name - return p -} - -func (*Index_nameContext) IsIndex_nameContext() {} - -func NewIndex_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Index_nameContext { - var p = new(Index_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_index_name - - return p -} - -func (s *Index_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Index_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Index_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Index_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Index_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterIndex_name(s) - } -} - -func (s *Index_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitIndex_name(s) - } -} - - - - -func (p *SqlParser) Index_name() (localctx IIndex_nameContext) { - this := p - _ = this - - localctx = NewIndex_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 178, SqlParserRULE_index_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1840) - p.Any_name() - } - - - - return localctx -} - - -// ITrigger_nameContext is an interface to support dynamic dispatch. -type ITrigger_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTrigger_nameContext differentiates from other interfaces. - IsTrigger_nameContext() -} - -type Trigger_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTrigger_nameContext() *Trigger_nameContext { - var p = new(Trigger_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_trigger_name - return p -} - -func (*Trigger_nameContext) IsTrigger_nameContext() {} - -func NewTrigger_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Trigger_nameContext { - var p = new(Trigger_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_trigger_name - - return p -} - -func (s *Trigger_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Trigger_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Trigger_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Trigger_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Trigger_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTrigger_name(s) - } -} - -func (s *Trigger_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTrigger_name(s) - } -} - - - - -func (p *SqlParser) Trigger_name() (localctx ITrigger_nameContext) { - this := p - _ = this - - localctx = NewTrigger_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 180, SqlParserRULE_trigger_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1842) - p.Any_name() - } - - - - return localctx -} - - -// IView_nameContext is an interface to support dynamic dispatch. -type IView_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsView_nameContext differentiates from other interfaces. - IsView_nameContext() -} - -type View_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyView_nameContext() *View_nameContext { - var p = new(View_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_view_name - return p -} - -func (*View_nameContext) IsView_nameContext() {} - -func NewView_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *View_nameContext { - var p = new(View_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_view_name - - return p -} - -func (s *View_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *View_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *View_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *View_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *View_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterView_name(s) - } -} - -func (s *View_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitView_name(s) - } -} - - - - -func (p *SqlParser) View_name() (localctx IView_nameContext) { - this := p - _ = this - - localctx = NewView_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 182, SqlParserRULE_view_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1844) - p.Any_name() - } - - - - return localctx -} - - -// IModule_nameContext is an interface to support dynamic dispatch. -type IModule_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsModule_nameContext differentiates from other interfaces. - IsModule_nameContext() -} - -type Module_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyModule_nameContext() *Module_nameContext { - var p = new(Module_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_module_name - return p -} - -func (*Module_nameContext) IsModule_nameContext() {} - -func NewModule_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Module_nameContext { - var p = new(Module_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_module_name - - return p -} - -func (s *Module_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Module_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Module_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Module_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Module_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterModule_name(s) - } -} - -func (s *Module_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitModule_name(s) - } -} - - - - -func (p *SqlParser) Module_name() (localctx IModule_nameContext) { - this := p - _ = this - - localctx = NewModule_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 184, SqlParserRULE_module_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1846) - p.Any_name() - } - - - - return localctx -} - - -// IPragma_nameContext is an interface to support dynamic dispatch. -type IPragma_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsPragma_nameContext differentiates from other interfaces. - IsPragma_nameContext() -} - -type Pragma_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyPragma_nameContext() *Pragma_nameContext { - var p = new(Pragma_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_pragma_name - return p -} - -func (*Pragma_nameContext) IsPragma_nameContext() {} - -func NewPragma_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Pragma_nameContext { - var p = new(Pragma_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_pragma_name - - return p -} - -func (s *Pragma_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Pragma_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Pragma_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Pragma_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Pragma_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterPragma_name(s) - } -} - -func (s *Pragma_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitPragma_name(s) - } -} - - - - -func (p *SqlParser) Pragma_name() (localctx IPragma_nameContext) { - this := p - _ = this - - localctx = NewPragma_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 186, SqlParserRULE_pragma_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1848) - p.Any_name() - } - - - - return localctx -} - - -// ISavepoint_nameContext is an interface to support dynamic dispatch. -type ISavepoint_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSavepoint_nameContext differentiates from other interfaces. - IsSavepoint_nameContext() -} - -type Savepoint_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySavepoint_nameContext() *Savepoint_nameContext { - var p = new(Savepoint_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_savepoint_name - return p -} - -func (*Savepoint_nameContext) IsSavepoint_nameContext() {} - -func NewSavepoint_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Savepoint_nameContext { - var p = new(Savepoint_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_savepoint_name - - return p -} - -func (s *Savepoint_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Savepoint_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Savepoint_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Savepoint_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Savepoint_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSavepoint_name(s) - } -} - -func (s *Savepoint_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSavepoint_name(s) - } -} - - - - -func (p *SqlParser) Savepoint_name() (localctx ISavepoint_nameContext) { - this := p - _ = this - - localctx = NewSavepoint_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 188, SqlParserRULE_savepoint_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1850) - p.Any_name() - } - - - - return localctx -} - - -// ITable_aliasContext is an interface to support dynamic dispatch. -type ITable_aliasContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTable_aliasContext differentiates from other interfaces. - IsTable_aliasContext() -} - -type Table_aliasContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTable_aliasContext() *Table_aliasContext { - var p = new(Table_aliasContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_table_alias - return p -} - -func (*Table_aliasContext) IsTable_aliasContext() {} - -func NewTable_aliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_aliasContext { - var p = new(Table_aliasContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_table_alias - - return p -} - -func (s *Table_aliasContext) GetParser() antlr.Parser { return s.parser } - -func (s *Table_aliasContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Table_aliasContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Table_aliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Table_aliasContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTable_alias(s) - } -} - -func (s *Table_aliasContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTable_alias(s) - } -} - - - - -func (p *SqlParser) Table_alias() (localctx ITable_aliasContext) { - this := p - _ = this - - localctx = NewTable_aliasContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 190, SqlParserRULE_table_alias) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1852) - p.Any_name() - } - - - - return localctx -} - - -// ITransaction_nameContext is an interface to support dynamic dispatch. -type ITransaction_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTransaction_nameContext differentiates from other interfaces. - IsTransaction_nameContext() -} - -type Transaction_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTransaction_nameContext() *Transaction_nameContext { - var p = new(Transaction_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_transaction_name - return p -} - -func (*Transaction_nameContext) IsTransaction_nameContext() {} - -func NewTransaction_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Transaction_nameContext { - var p = new(Transaction_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_transaction_name - - return p -} - -func (s *Transaction_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Transaction_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Transaction_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Transaction_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Transaction_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTransaction_name(s) - } -} - -func (s *Transaction_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTransaction_name(s) - } -} - - - - -func (p *SqlParser) Transaction_name() (localctx ITransaction_nameContext) { - this := p - _ = this - - localctx = NewTransaction_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 192, SqlParserRULE_transaction_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1854) - p.Any_name() - } - - - - return localctx -} - - -// IAny_nameContext is an interface to support dynamic dispatch. -type IAny_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsAny_nameContext differentiates from other interfaces. - IsAny_nameContext() -} - -type Any_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyAny_nameContext() *Any_nameContext { - var p = new(Any_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_any_name - return p -} - -func (*Any_nameContext) IsAny_nameContext() {} - -func NewAny_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Any_nameContext { - var p = new(Any_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_any_name - - return p -} - -func (s *Any_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Any_nameContext) IDENTIFIER() antlr.TerminalNode { - return s.GetToken(SqlParserIDENTIFIER, 0) -} - -func (s *Any_nameContext) Keyword() IKeywordContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IKeywordContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IKeywordContext) -} - -func (s *Any_nameContext) STRING_LITERAL() antlr.TerminalNode { - return s.GetToken(SqlParserSTRING_LITERAL, 0) -} - -func (s *Any_nameContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Any_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Any_nameContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Any_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Any_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Any_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterAny_name(s) - } -} - -func (s *Any_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitAny_name(s) - } -} - - - - -func (p *SqlParser) Any_name() (localctx IAny_nameContext) { - this := p - _ = this - - localctx = NewAny_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 194, SqlParserRULE_any_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(1863) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserIDENTIFIER: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1856) - p.Match(SqlParserIDENTIFIER) - } - - - case SqlParserK_ABORT, SqlParserK_ACTION, SqlParserK_ADD, SqlParserK_AFTER, SqlParserK_ALL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_AND, SqlParserK_AS, SqlParserK_ASC, SqlParserK_ATTACH, SqlParserK_AUTOINCREMENT, SqlParserK_BEFORE, SqlParserK_BEGIN, SqlParserK_BETWEEN, SqlParserK_BY, SqlParserK_CASCADE, SqlParserK_CASE, SqlParserK_CAST, SqlParserK_CHECK, SqlParserK_COLLATE, SqlParserK_COLUMN, SqlParserK_COMMIT, SqlParserK_CONFLICT, SqlParserK_CONSTRAINT, SqlParserK_CREATE, SqlParserK_CROSS, SqlParserK_CURRENT_DATE, SqlParserK_CURRENT_TIME, SqlParserK_CURRENT_TIMESTAMP, SqlParserK_DATABASE, SqlParserK_DEFAULT, SqlParserK_DEFERRABLE, SqlParserK_DEFERRED, SqlParserK_DELETE, SqlParserK_DESC, SqlParserK_DETACH, SqlParserK_DISTINCT, SqlParserK_DROP, SqlParserK_EACH, SqlParserK_ELSE, SqlParserK_END, SqlParserK_ENABLE, SqlParserK_ESCAPE, SqlParserK_EXCEPT, SqlParserK_EXCLUSIVE, SqlParserK_EXISTS, SqlParserK_EXPLAIN, SqlParserK_FAIL, SqlParserK_FOR, SqlParserK_FOREIGN, SqlParserK_FROM, SqlParserK_FULL, SqlParserK_GLOB, SqlParserK_GROUP, SqlParserK_HAVING, SqlParserK_IF, SqlParserK_IGNORE, SqlParserK_IMMEDIATE, SqlParserK_IN, SqlParserK_INDEX, SqlParserK_INDEXED, SqlParserK_INITIALLY, SqlParserK_INNER, SqlParserK_INSERT, SqlParserK_INSTEAD, SqlParserK_INTERSECT, SqlParserK_INTO, SqlParserK_IS, SqlParserK_ISNULL, SqlParserK_JOIN, SqlParserK_KEY, SqlParserK_LEFT, SqlParserK_LIKE, SqlParserK_LIMIT, SqlParserK_MATCH, SqlParserK_NATURAL, SqlParserK_NEXTVAL, SqlParserK_NO, SqlParserK_NOT, SqlParserK_NOTNULL, SqlParserK_NULL, SqlParserK_OF, SqlParserK_OFFSET, SqlParserK_ON, SqlParserK_OR, SqlParserK_ORDER, SqlParserK_OUTER, SqlParserK_PLAN, SqlParserK_PRAGMA, SqlParserK_PRIMARY, SqlParserK_QUERY, SqlParserK_RAISE, SqlParserK_RECURSIVE, SqlParserK_REFERENCES, SqlParserK_REGEXP, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_RENAME, SqlParserK_REPLACE, SqlParserK_RESTRICT, SqlParserK_RIGHT, SqlParserK_ROLLBACK, SqlParserK_ROW, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_SET, SqlParserK_TABLE, SqlParserK_TEMP, SqlParserK_TEMPORARY, SqlParserK_THEN, SqlParserK_TO, SqlParserK_TRANSACTION, SqlParserK_TRIGGER, SqlParserK_UNION, SqlParserK_UNIQUE, SqlParserK_UPDATE, SqlParserK_USING, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_VIEW, SqlParserK_VIRTUAL, SqlParserK_WHEN, SqlParserK_WHERE, SqlParserK_WITH, SqlParserK_WITHOUT: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(1857) - p.Keyword() - } - - - case SqlParserSTRING_LITERAL: - p.EnterOuterAlt(localctx, 3) - { - p.SetState(1858) - p.Match(SqlParserSTRING_LITERAL) - } - - - case SqlParserOPEN_PAR: - p.EnterOuterAlt(localctx, 4) - { - p.SetState(1859) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1860) - p.Any_name() - } - { - p.SetState(1861) - p.Match(SqlParserCLOSE_PAR) - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - - return localctx -} - - -func (p *SqlParser) Sempred(localctx antlr.RuleContext, ruleIndex, predIndex int) bool { - switch ruleIndex { - case 47: - var t *ExprContext = nil - if localctx != nil { t = localctx.(*ExprContext) } - return p.Expr_Sempred(t, predIndex) - - - default: - panic("No predicate with index: " + fmt.Sprint(ruleIndex)) - } -} - -func (p *SqlParser) Expr_Sempred(localctx antlr.RuleContext, predIndex int) bool { - this := p - _ = this - - switch predIndex { - case 0: - return p.Precpred(p.GetParserRuleContext(), 20) - - case 1: - return p.Precpred(p.GetParserRuleContext(), 19) - - case 2: - return p.Precpred(p.GetParserRuleContext(), 18) - - case 3: - return p.Precpred(p.GetParserRuleContext(), 17) - - case 4: - return p.Precpred(p.GetParserRuleContext(), 16) - - case 5: - return p.Precpred(p.GetParserRuleContext(), 15) - - case 6: - return p.Precpred(p.GetParserRuleContext(), 14) - - case 7: - return p.Precpred(p.GetParserRuleContext(), 13) - - case 8: - return p.Precpred(p.GetParserRuleContext(), 6) - - case 9: - return p.Precpred(p.GetParserRuleContext(), 5) - - case 10: - return p.Precpred(p.GetParserRuleContext(), 9) - - case 11: - return p.Precpred(p.GetParserRuleContext(), 8) - - case 12: - return p.Precpred(p.GetParserRuleContext(), 7) - - case 13: - return p.Precpred(p.GetParserRuleContext(), 4) - - default: - panic("No predicate with index: " + fmt.Sprint(predIndex)) - } -} - From b2ff6da8c7257188335e1c43f13c5397f239eada Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Fri, 1 Jul 2022 14:45:46 +0300 Subject: [PATCH 03/31] some update --- go.mod | 2 +- go.sum | 2 + processor/stream_processor/{sql.g4 => Sql.g4} | 8 +- processor/stream_processor/parser/Sql.interp | 88 +++ .../parser/{sql.tokens => Sql.tokens} | 0 processor/stream_processor/parser/sql.interp | 87 --- .../parser/sql_base_listener.go | 64 +- .../stream_processor/parser/sql_lexer.go | 84 +-- .../stream_processor/parser/sql_lexer_test.go | 32 +- .../stream_processor/parser/sql_listener.go | 14 +- .../stream_processor/parser/sql_parser.go | 705 +++++++++++------- .../parser/stream_listener.go | 46 ++ 12 files changed, 686 insertions(+), 446 deletions(-) rename processor/stream_processor/{sql.g4 => Sql.g4} (94%) create mode 100644 processor/stream_processor/parser/Sql.interp rename processor/stream_processor/parser/{sql.tokens => Sql.tokens} (100%) delete mode 100644 processor/stream_processor/parser/sql.interp create mode 100644 processor/stream_processor/parser/stream_listener.go diff --git a/go.mod b/go.mod index 87cc8f3371c3..77d835991a92 100644 --- a/go.mod +++ b/go.mod @@ -536,7 +536,7 @@ require ( ) require ( - github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966 + github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220626175859-9abda183db8e github.com/go-kit/kit v0.12.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/shirou/gopsutil v3.21.10+incompatible // indirect diff --git a/go.sum b/go.sum index f6fe624b5c3e..d3c362e3a35c 100644 --- a/go.sum +++ b/go.sum @@ -295,6 +295,8 @@ github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966 h1:mEzJ8SH4M5wDL8C4a17yX2YeD/FIXV5w8FJekByaBi0= github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220626175859-9abda183db8e h1:bt6SW1eSSvdmmsG0KqyxYXorcTnFBTX7hfVR1+68+jg= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220626175859-9abda183db8e/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/antonmedv/expr v1.9.0 h1:j4HI3NHEdgDnN9p6oI6Ndr0G5QryMY0FNxT4ONrFDGU= github.com/antonmedv/expr v1.9.0/go.mod h1:5qsM3oLGDND7sDmQGDXHkYfkjYMUX14qsgqmHhwGEk8= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= diff --git a/processor/stream_processor/sql.g4 b/processor/stream_processor/Sql.g4 similarity index 94% rename from processor/stream_processor/sql.g4 rename to processor/stream_processor/Sql.g4 index a77272f09750..cb343d3d7cad 100644 --- a/processor/stream_processor/sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -1,4 +1,4 @@ -grammar sql; +grammar Sql; @@ -23,9 +23,13 @@ column whereStatement : ( K_WHERE expr )? - | K_WINDOW_TUMBLING NUMERIC_LITERAL( K_WHERE expr )? (groupBy) + | (tumblingWindow) ( K_WHERE expr )? (groupBy) ; +tumblingWindow + : K_WINDOW_TUMBLING NUMERIC_LITERAL( K_WHERE expr )? + ; + groupBy : K_GROUP_BY column ; diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp new file mode 100644 index 000000000000..c71b4dcbc65a --- /dev/null +++ b/processor/stream_processor/parser/Sql.interp @@ -0,0 +1,88 @@ +token literal names: +null +null +',' +'(' +')' +';' +null +null +null +null +null +null +null +null +'=' +'>' +'<' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +'*' + +token symbolic names: +null +SPACE +COMMA +L_BRACKET +R_BRACKET +EOQ +K_SELECT +K_WHERE +K_WINDOW_TUMBLING +K_GROUP_BY +K_AND +K_OR +K_IS +K_LIKE +K_EQUAL +K_GREATER +K_LESS +K_LESS_EQUAL +K_GREATER_EQUAL +K_NOT_EQUAL +K_NULL +K_IS_NULL +K_IS_NOT_NULL +K_NOT +K_NOT_IN +K_IN +K_COUNT +K_MIN +K_MAX +K_AVG +IDENTIFIER +NUMERIC_LITERAL +STRING_LITERAL +STAR + +rule names: +sqlQuery +selectQuery +resultColumns +column +whereStatement +tumblingWindow +groupBy +avg +expr +comparisonOperator +literalValue + + +atn: +[4, 1, 33, 100, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 29, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 4, 2, 36, 8, 2, 11, 2, 12, 2, 37, 1, 2, 1, 2, 1, 2, 4, 2, 43, 8, 2, 11, 2, 12, 2, 44, 1, 2, 3, 2, 48, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 54, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 59, 8, 4, 1, 4, 1, 4, 3, 4, 63, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 69, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 86, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 91, 8, 8, 10, 8, 12, 8, 94, 9, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 0, 1, 16, 11, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 0, 5, 1, 0, 26, 29, 1, 0, 21, 22, 1, 0, 10, 11, 2, 0, 12, 19, 24, 25, 1, 0, 31, 32, 99, 0, 22, 1, 0, 0, 0, 2, 25, 1, 0, 0, 0, 4, 47, 1, 0, 0, 0, 6, 49, 1, 0, 0, 0, 8, 62, 1, 0, 0, 0, 10, 64, 1, 0, 0, 0, 12, 70, 1, 0, 0, 0, 14, 73, 1, 0, 0, 0, 16, 85, 1, 0, 0, 0, 18, 95, 1, 0, 0, 0, 20, 97, 1, 0, 0, 0, 22, 23, 3, 2, 1, 0, 23, 24, 5, 0, 0, 1, 24, 1, 1, 0, 0, 0, 25, 26, 5, 6, 0, 0, 26, 28, 3, 4, 2, 0, 27, 29, 3, 8, 4, 0, 28, 27, 1, 0, 0, 0, 28, 29, 1, 0, 0, 0, 29, 30, 1, 0, 0, 0, 30, 31, 5, 5, 0, 0, 31, 3, 1, 0, 0, 0, 32, 35, 3, 6, 3, 0, 33, 34, 5, 2, 0, 0, 34, 36, 3, 6, 3, 0, 35, 33, 1, 0, 0, 0, 36, 37, 1, 0, 0, 0, 37, 35, 1, 0, 0, 0, 37, 38, 1, 0, 0, 0, 38, 48, 1, 0, 0, 0, 39, 42, 3, 14, 7, 0, 40, 41, 5, 2, 0, 0, 41, 43, 3, 14, 7, 0, 42, 40, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 42, 1, 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 48, 1, 0, 0, 0, 46, 48, 5, 33, 0, 0, 47, 32, 1, 0, 0, 0, 47, 39, 1, 0, 0, 0, 47, 46, 1, 0, 0, 0, 48, 5, 1, 0, 0, 0, 49, 50, 5, 30, 0, 0, 50, 7, 1, 0, 0, 0, 51, 52, 5, 7, 0, 0, 52, 54, 3, 16, 8, 0, 53, 51, 1, 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 63, 1, 0, 0, 0, 55, 58, 3, 10, 5, 0, 56, 57, 5, 7, 0, 0, 57, 59, 3, 16, 8, 0, 58, 56, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 3, 12, 6, 0, 61, 63, 1, 0, 0, 0, 62, 53, 1, 0, 0, 0, 62, 55, 1, 0, 0, 0, 63, 9, 1, 0, 0, 0, 64, 65, 5, 8, 0, 0, 65, 68, 5, 31, 0, 0, 66, 67, 5, 7, 0, 0, 67, 69, 3, 16, 8, 0, 68, 66, 1, 0, 0, 0, 68, 69, 1, 0, 0, 0, 69, 11, 1, 0, 0, 0, 70, 71, 5, 9, 0, 0, 71, 72, 3, 6, 3, 0, 72, 13, 1, 0, 0, 0, 73, 74, 7, 0, 0, 0, 74, 75, 5, 3, 0, 0, 75, 76, 3, 6, 3, 0, 76, 77, 5, 4, 0, 0, 77, 15, 1, 0, 0, 0, 78, 79, 6, 8, -1, 0, 79, 80, 5, 30, 0, 0, 80, 81, 3, 18, 9, 0, 81, 82, 3, 20, 10, 0, 82, 86, 1, 0, 0, 0, 83, 84, 5, 30, 0, 0, 84, 86, 7, 1, 0, 0, 85, 78, 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, 86, 92, 1, 0, 0, 0, 87, 88, 10, 2, 0, 0, 88, 89, 7, 2, 0, 0, 89, 91, 3, 16, 8, 3, 90, 87, 1, 0, 0, 0, 91, 94, 1, 0, 0, 0, 92, 90, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 17, 1, 0, 0, 0, 94, 92, 1, 0, 0, 0, 95, 96, 7, 3, 0, 0, 96, 19, 1, 0, 0, 0, 97, 98, 7, 4, 0, 0, 98, 21, 1, 0, 0, 0, 10, 28, 37, 44, 47, 53, 58, 62, 68, 85, 92] \ No newline at end of file diff --git a/processor/stream_processor/parser/sql.tokens b/processor/stream_processor/parser/Sql.tokens similarity index 100% rename from processor/stream_processor/parser/sql.tokens rename to processor/stream_processor/parser/Sql.tokens diff --git a/processor/stream_processor/parser/sql.interp b/processor/stream_processor/parser/sql.interp deleted file mode 100644 index 5715cebdcc30..000000000000 --- a/processor/stream_processor/parser/sql.interp +++ /dev/null @@ -1,87 +0,0 @@ -token literal names: -null -null -',' -'(' -')' -';' -null -null -null -null -null -null -null -null -'=' -'>' -'<' -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -'*' - -token symbolic names: -null -SPACE -COMMA -L_BRACKET -R_BRACKET -EOQ -K_SELECT -K_WHERE -K_WINDOW_TUMBLING -K_GROUP_BY -K_AND -K_OR -K_IS -K_LIKE -K_EQUAL -K_GREATER -K_LESS -K_LESS_EQUAL -K_GREATER_EQUAL -K_NOT_EQUAL -K_NULL -K_IS_NULL -K_IS_NOT_NULL -K_NOT -K_NOT_IN -K_IN -K_COUNT -K_MIN -K_MAX -K_AVG -IDENTIFIER -NUMERIC_LITERAL -STRING_LITERAL -STAR - -rule names: -sqlQuery -selectQuery -resultColumns -column -whereStatement -groupBy -avg -expr -comparisonOperator -literalValue - - -atn: -[4, 1, 33, 92, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 27, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 4, 2, 34, 8, 2, 11, 2, 12, 2, 35, 1, 2, 1, 2, 1, 2, 4, 2, 41, 8, 2, 11, 2, 12, 2, 42, 1, 2, 3, 2, 46, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 52, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 58, 8, 4, 1, 4, 3, 4, 61, 8, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 78, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 83, 8, 7, 10, 7, 12, 7, 86, 9, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 0, 1, 14, 10, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 0, 5, 1, 0, 26, 29, 1, 0, 21, 22, 1, 0, 10, 11, 2, 0, 12, 19, 24, 25, 1, 0, 31, 32, 91, 0, 20, 1, 0, 0, 0, 2, 23, 1, 0, 0, 0, 4, 45, 1, 0, 0, 0, 6, 47, 1, 0, 0, 0, 8, 60, 1, 0, 0, 0, 10, 62, 1, 0, 0, 0, 12, 65, 1, 0, 0, 0, 14, 77, 1, 0, 0, 0, 16, 87, 1, 0, 0, 0, 18, 89, 1, 0, 0, 0, 20, 21, 3, 2, 1, 0, 21, 22, 5, 0, 0, 1, 22, 1, 1, 0, 0, 0, 23, 24, 5, 6, 0, 0, 24, 26, 3, 4, 2, 0, 25, 27, 3, 8, 4, 0, 26, 25, 1, 0, 0, 0, 26, 27, 1, 0, 0, 0, 27, 28, 1, 0, 0, 0, 28, 29, 5, 5, 0, 0, 29, 3, 1, 0, 0, 0, 30, 33, 3, 6, 3, 0, 31, 32, 5, 2, 0, 0, 32, 34, 3, 6, 3, 0, 33, 31, 1, 0, 0, 0, 34, 35, 1, 0, 0, 0, 35, 33, 1, 0, 0, 0, 35, 36, 1, 0, 0, 0, 36, 46, 1, 0, 0, 0, 37, 40, 3, 12, 6, 0, 38, 39, 5, 2, 0, 0, 39, 41, 3, 12, 6, 0, 40, 38, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 40, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 46, 1, 0, 0, 0, 44, 46, 5, 33, 0, 0, 45, 30, 1, 0, 0, 0, 45, 37, 1, 0, 0, 0, 45, 44, 1, 0, 0, 0, 46, 5, 1, 0, 0, 0, 47, 48, 5, 30, 0, 0, 48, 7, 1, 0, 0, 0, 49, 50, 5, 7, 0, 0, 50, 52, 3, 14, 7, 0, 51, 49, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 61, 1, 0, 0, 0, 53, 54, 5, 8, 0, 0, 54, 57, 5, 31, 0, 0, 55, 56, 5, 7, 0, 0, 56, 58, 3, 14, 7, 0, 57, 55, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 61, 3, 10, 5, 0, 60, 51, 1, 0, 0, 0, 60, 53, 1, 0, 0, 0, 61, 9, 1, 0, 0, 0, 62, 63, 5, 9, 0, 0, 63, 64, 3, 6, 3, 0, 64, 11, 1, 0, 0, 0, 65, 66, 7, 0, 0, 0, 66, 67, 5, 3, 0, 0, 67, 68, 3, 6, 3, 0, 68, 69, 5, 4, 0, 0, 69, 13, 1, 0, 0, 0, 70, 71, 6, 7, -1, 0, 71, 72, 5, 30, 0, 0, 72, 73, 3, 16, 8, 0, 73, 74, 3, 18, 9, 0, 74, 78, 1, 0, 0, 0, 75, 76, 5, 30, 0, 0, 76, 78, 7, 1, 0, 0, 77, 70, 1, 0, 0, 0, 77, 75, 1, 0, 0, 0, 78, 84, 1, 0, 0, 0, 79, 80, 10, 2, 0, 0, 80, 81, 7, 2, 0, 0, 81, 83, 3, 14, 7, 3, 82, 79, 1, 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 15, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 88, 7, 3, 0, 0, 88, 17, 1, 0, 0, 0, 89, 90, 7, 4, 0, 0, 90, 19, 1, 0, 0, 0, 9, 26, 35, 42, 45, 51, 57, 60, 77, 84] \ No newline at end of file diff --git a/processor/stream_processor/parser/sql_base_listener.go b/processor/stream_processor/parser/sql_base_listener.go index eab0cc0960f8..cd534e38bd17 100644 --- a/processor/stream_processor/parser/sql_base_listener.go +++ b/processor/stream_processor/parser/sql_base_listener.go @@ -1,82 +1,88 @@ -// Code generated from sql.g4 by ANTLR 4.10.1. DO NOT EDIT. +// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. -package parser // sql +package parser // Sql import "github.com/antlr/antlr4/runtime/Go/antlr" -// BasesqlListener is a complete listener for a parse tree produced by sqlParser. -type BasesqlListener struct{} +// BaseSqlListener is a complete listener for a parse tree produced by SqlParser. +type BaseSqlListener struct{} -var _ sqlListener = &BasesqlListener{} +var _ SqlListener = &BaseSqlListener{} // VisitTerminal is called when a terminal node is visited. -func (s *BasesqlListener) VisitTerminal(node antlr.TerminalNode) {} +func (s *BaseSqlListener) VisitTerminal(node antlr.TerminalNode) {} // VisitErrorNode is called when an error node is visited. -func (s *BasesqlListener) VisitErrorNode(node antlr.ErrorNode) {} +func (s *BaseSqlListener) VisitErrorNode(node antlr.ErrorNode) {} // EnterEveryRule is called when any rule is entered. -func (s *BasesqlListener) EnterEveryRule(ctx antlr.ParserRuleContext) {} +func (s *BaseSqlListener) EnterEveryRule(ctx antlr.ParserRuleContext) {} // ExitEveryRule is called when any rule is exited. -func (s *BasesqlListener) ExitEveryRule(ctx antlr.ParserRuleContext) {} +func (s *BaseSqlListener) ExitEveryRule(ctx antlr.ParserRuleContext) {} // EnterSqlQuery is called when production sqlQuery is entered. -func (s *BasesqlListener) EnterSqlQuery(ctx *SqlQueryContext) {} +func (s *BaseSqlListener) EnterSqlQuery(ctx *SqlQueryContext) {} // ExitSqlQuery is called when production sqlQuery is exited. -func (s *BasesqlListener) ExitSqlQuery(ctx *SqlQueryContext) {} +func (s *BaseSqlListener) ExitSqlQuery(ctx *SqlQueryContext) {} // EnterSelectQuery is called when production selectQuery is entered. -func (s *BasesqlListener) EnterSelectQuery(ctx *SelectQueryContext) {} +func (s *BaseSqlListener) EnterSelectQuery(ctx *SelectQueryContext) {} // ExitSelectQuery is called when production selectQuery is exited. -func (s *BasesqlListener) ExitSelectQuery(ctx *SelectQueryContext) {} +func (s *BaseSqlListener) ExitSelectQuery(ctx *SelectQueryContext) {} // EnterResultColumns is called when production resultColumns is entered. -func (s *BasesqlListener) EnterResultColumns(ctx *ResultColumnsContext) {} +func (s *BaseSqlListener) EnterResultColumns(ctx *ResultColumnsContext) {} // ExitResultColumns is called when production resultColumns is exited. -func (s *BasesqlListener) ExitResultColumns(ctx *ResultColumnsContext) {} +func (s *BaseSqlListener) ExitResultColumns(ctx *ResultColumnsContext) {} // EnterColumn is called when production column is entered. -func (s *BasesqlListener) EnterColumn(ctx *ColumnContext) {} +func (s *BaseSqlListener) EnterColumn(ctx *ColumnContext) {} // ExitColumn is called when production column is exited. -func (s *BasesqlListener) ExitColumn(ctx *ColumnContext) {} +func (s *BaseSqlListener) ExitColumn(ctx *ColumnContext) {} // EnterWhereStatement is called when production whereStatement is entered. -func (s *BasesqlListener) EnterWhereStatement(ctx *WhereStatementContext) {} +func (s *BaseSqlListener) EnterWhereStatement(ctx *WhereStatementContext) {} // ExitWhereStatement is called when production whereStatement is exited. -func (s *BasesqlListener) ExitWhereStatement(ctx *WhereStatementContext) {} +func (s *BaseSqlListener) ExitWhereStatement(ctx *WhereStatementContext) {} + +// EnterTumblingWindow is called when production tumblingWindow is entered. +func (s *BaseSqlListener) EnterTumblingWindow(ctx *TumblingWindowContext) {} + +// ExitTumblingWindow is called when production tumblingWindow is exited. +func (s *BaseSqlListener) ExitTumblingWindow(ctx *TumblingWindowContext) {} // EnterGroupBy is called when production groupBy is entered. -func (s *BasesqlListener) EnterGroupBy(ctx *GroupByContext) {} +func (s *BaseSqlListener) EnterGroupBy(ctx *GroupByContext) {} // ExitGroupBy is called when production groupBy is exited. -func (s *BasesqlListener) ExitGroupBy(ctx *GroupByContext) {} +func (s *BaseSqlListener) ExitGroupBy(ctx *GroupByContext) {} // EnterAvg is called when production avg is entered. -func (s *BasesqlListener) EnterAvg(ctx *AvgContext) {} +func (s *BaseSqlListener) EnterAvg(ctx *AvgContext) {} // ExitAvg is called when production avg is exited. -func (s *BasesqlListener) ExitAvg(ctx *AvgContext) {} +func (s *BaseSqlListener) ExitAvg(ctx *AvgContext) {} // EnterExpr is called when production expr is entered. -func (s *BasesqlListener) EnterExpr(ctx *ExprContext) {} +func (s *BaseSqlListener) EnterExpr(ctx *ExprContext) {} // ExitExpr is called when production expr is exited. -func (s *BasesqlListener) ExitExpr(ctx *ExprContext) {} +func (s *BaseSqlListener) ExitExpr(ctx *ExprContext) {} // EnterComparisonOperator is called when production comparisonOperator is entered. -func (s *BasesqlListener) EnterComparisonOperator(ctx *ComparisonOperatorContext) {} +func (s *BaseSqlListener) EnterComparisonOperator(ctx *ComparisonOperatorContext) {} // ExitComparisonOperator is called when production comparisonOperator is exited. -func (s *BasesqlListener) ExitComparisonOperator(ctx *ComparisonOperatorContext) {} +func (s *BaseSqlListener) ExitComparisonOperator(ctx *ComparisonOperatorContext) {} // EnterLiteralValue is called when production literalValue is entered. -func (s *BasesqlListener) EnterLiteralValue(ctx *LiteralValueContext) {} +func (s *BaseSqlListener) EnterLiteralValue(ctx *LiteralValueContext) {} // ExitLiteralValue is called when production literalValue is exited. -func (s *BasesqlListener) ExitLiteralValue(ctx *LiteralValueContext) {} +func (s *BaseSqlListener) ExitLiteralValue(ctx *LiteralValueContext) {} diff --git a/processor/stream_processor/parser/sql_lexer.go b/processor/stream_processor/parser/sql_lexer.go index 17f65aaa0567..2db918272171 100644 --- a/processor/stream_processor/parser/sql_lexer.go +++ b/processor/stream_processor/parser/sql_lexer.go @@ -1,4 +1,4 @@ -// Code generated from sql.g4 by ANTLR 4.10.1. DO NOT EDIT. +// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. package parser @@ -15,7 +15,7 @@ var _ = fmt.Printf var _ = sync.Once{} var _ = unicode.IsLetter -type sqlLexer struct { +type SqlLexer struct { *antlr.BaseLexer channelNames []string modeNames []string @@ -256,19 +256,19 @@ func sqllexerLexerInit() { } } -// sqlLexerInit initializes any static state used to implement sqlLexer. By default the +// SqlLexerInit initializes any static state used to implement SqlLexer. By default the // static state used to implement the lexer is lazily initialized during the first call to -// NewsqlLexer(). You can call this function if you wish to initialize the static state ahead +// NewSqlLexer(). You can call this function if you wish to initialize the static state ahead // of time. func SqlLexerInit() { staticData := &sqllexerLexerStaticData staticData.once.Do(sqllexerLexerInit) } -// NewsqlLexer produces a new lexer instance for the optional input antlr.CharStream. -func NewsqlLexer(input antlr.CharStream) *sqlLexer { +// NewSqlLexer produces a new lexer instance for the optional input antlr.CharStream. +func NewSqlLexer(input antlr.CharStream) *SqlLexer { SqlLexerInit() - l := new(sqlLexer) + l := new(SqlLexer) l.BaseLexer = antlr.NewBaseLexer(input) staticData := &sqllexerLexerStaticData l.Interpreter = antlr.NewLexerATNSimulator(l, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) @@ -277,45 +277,45 @@ func NewsqlLexer(input antlr.CharStream) *sqlLexer { l.RuleNames = staticData.ruleNames l.LiteralNames = staticData.literalNames l.SymbolicNames = staticData.symbolicNames - l.GrammarFileName = "sql.g4" + l.GrammarFileName = "Sql.g4" // TODO: l.EOF = antlr.TokenEOF return l } -// sqlLexer tokens. +// SqlLexer tokens. const ( - sqlLexerSPACE = 1 - sqlLexerCOMMA = 2 - sqlLexerL_BRACKET = 3 - sqlLexerR_BRACKET = 4 - sqlLexerEOQ = 5 - sqlLexerK_SELECT = 6 - sqlLexerK_WHERE = 7 - sqlLexerK_WINDOW_TUMBLING = 8 - sqlLexerK_GROUP_BY = 9 - sqlLexerK_AND = 10 - sqlLexerK_OR = 11 - sqlLexerK_IS = 12 - sqlLexerK_LIKE = 13 - sqlLexerK_EQUAL = 14 - sqlLexerK_GREATER = 15 - sqlLexerK_LESS = 16 - sqlLexerK_LESS_EQUAL = 17 - sqlLexerK_GREATER_EQUAL = 18 - sqlLexerK_NOT_EQUAL = 19 - sqlLexerK_NULL = 20 - sqlLexerK_IS_NULL = 21 - sqlLexerK_IS_NOT_NULL = 22 - sqlLexerK_NOT = 23 - sqlLexerK_NOT_IN = 24 - sqlLexerK_IN = 25 - sqlLexerK_COUNT = 26 - sqlLexerK_MIN = 27 - sqlLexerK_MAX = 28 - sqlLexerK_AVG = 29 - sqlLexerIDENTIFIER = 30 - sqlLexerNUMERIC_LITERAL = 31 - sqlLexerSTRING_LITERAL = 32 - sqlLexerSTAR = 33 + SqlLexerSPACE = 1 + SqlLexerCOMMA = 2 + SqlLexerL_BRACKET = 3 + SqlLexerR_BRACKET = 4 + SqlLexerEOQ = 5 + SqlLexerK_SELECT = 6 + SqlLexerK_WHERE = 7 + SqlLexerK_WINDOW_TUMBLING = 8 + SqlLexerK_GROUP_BY = 9 + SqlLexerK_AND = 10 + SqlLexerK_OR = 11 + SqlLexerK_IS = 12 + SqlLexerK_LIKE = 13 + SqlLexerK_EQUAL = 14 + SqlLexerK_GREATER = 15 + SqlLexerK_LESS = 16 + SqlLexerK_LESS_EQUAL = 17 + SqlLexerK_GREATER_EQUAL = 18 + SqlLexerK_NOT_EQUAL = 19 + SqlLexerK_NULL = 20 + SqlLexerK_IS_NULL = 21 + SqlLexerK_IS_NOT_NULL = 22 + SqlLexerK_NOT = 23 + SqlLexerK_NOT_IN = 24 + SqlLexerK_IN = 25 + SqlLexerK_COUNT = 26 + SqlLexerK_MIN = 27 + SqlLexerK_MAX = 28 + SqlLexerK_AVG = 29 + SqlLexerIDENTIFIER = 30 + SqlLexerNUMERIC_LITERAL = 31 + SqlLexerSTRING_LITERAL = 32 + SqlLexerSTAR = 33 ) diff --git a/processor/stream_processor/parser/sql_lexer_test.go b/processor/stream_processor/parser/sql_lexer_test.go index 2330b42b7cfc..1f953e6d0b32 100644 --- a/processor/stream_processor/parser/sql_lexer_test.go +++ b/processor/stream_processor/parser/sql_lexer_test.go @@ -1,14 +1,17 @@ package parser import ( + "context" "fmt" "github.com/antlr/antlr4/runtime/Go/antlr" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/plog" "testing" ) func TestSelectExpr(t *testing.T) { is := antlr.NewInputStream(`SELECT field1, min(field2) WHERE field3 <= 3 and field4 is not null `) - lexer := NewsqlLexer(is) + lexer := NewSqlLexer(is) for { t := lexer.NextToken() @@ -20,3 +23,30 @@ func TestSelectExpr(t *testing.T) { } } + +func TestParser(t *testing.T) { + is := antlr.NewInputStream("SELEct field1, field2 WHERE field3 > 3 and field4 IS 'test';") + + lexer := NewSqlLexer(is) + stream := antlr.NewCommonTokenStream(lexer, antlr.TokenDefaultChannel) + + // Create the Parser + p := NewSqlParser(stream) + in := make(chan plog.LogRecord) + out := make(chan plog.LogRecord) + ctx := context.TODO() + + listener := NewStreamListener(in, out, ctx) + + antlr.ParseTreeWalkerDefault.Walk(&listener, p.SelectQuery()) + +} + +func createSampleLog() plog.LogRecord { + record := plog.NewLogRecord() + record.Attributes().Insert("name", pcommon.NewValueString("kwak")) + record.Attributes().Insert("source", pcommon.NewValueString("some")) + record.Attributes().InsertBool("alive", true) + return record + +} diff --git a/processor/stream_processor/parser/sql_listener.go b/processor/stream_processor/parser/sql_listener.go index 4e8bfde019cc..db0be63157de 100644 --- a/processor/stream_processor/parser/sql_listener.go +++ b/processor/stream_processor/parser/sql_listener.go @@ -1,11 +1,11 @@ -// Code generated from sql.g4 by ANTLR 4.10.1. DO NOT EDIT. +// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. -package parser // sql +package parser // Sql import "github.com/antlr/antlr4/runtime/Go/antlr" -// sqlListener is a complete listener for a parse tree produced by sqlParser. -type sqlListener interface { +// SqlListener is a complete listener for a parse tree produced by SqlParser. +type SqlListener interface { antlr.ParseTreeListener // EnterSqlQuery is called when entering the sqlQuery production. @@ -23,6 +23,9 @@ type sqlListener interface { // EnterWhereStatement is called when entering the whereStatement production. EnterWhereStatement(c *WhereStatementContext) + // EnterTumblingWindow is called when entering the tumblingWindow production. + EnterTumblingWindow(c *TumblingWindowContext) + // EnterGroupBy is called when entering the groupBy production. EnterGroupBy(c *GroupByContext) @@ -53,6 +56,9 @@ type sqlListener interface { // ExitWhereStatement is called when exiting the whereStatement production. ExitWhereStatement(c *WhereStatementContext) + // ExitTumblingWindow is called when exiting the tumblingWindow production. + ExitTumblingWindow(c *TumblingWindowContext) + // ExitGroupBy is called when exiting the groupBy production. ExitGroupBy(c *GroupByContext) diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index aacef8c5d518..995018349bb8 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -1,6 +1,6 @@ -// Code generated from sql.g4 by ANTLR 4.10.1. DO NOT EDIT. +// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. -package parser // sql +package parser // Sql import ( "fmt" @@ -15,7 +15,7 @@ var _ = fmt.Printf var _ = strconv.Itoa var _ = sync.Once{} -type sqlParser struct { +type SqlParser struct { *antlr.BaseParser } @@ -47,47 +47,50 @@ func sqlParserInit() { } staticData.ruleNames = []string{ "sqlQuery", "selectQuery", "resultColumns", "column", "whereStatement", - "groupBy", "avg", "expr", "comparisonOperator", "literalValue", + "tumblingWindow", "groupBy", "avg", "expr", "comparisonOperator", "literalValue", } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 33, 92, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, - 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 1, 0, 1, - 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 27, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, - 4, 2, 34, 8, 2, 11, 2, 12, 2, 35, 1, 2, 1, 2, 1, 2, 4, 2, 41, 8, 2, 11, - 2, 12, 2, 42, 1, 2, 3, 2, 46, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 52, 8, - 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 58, 8, 4, 1, 4, 3, 4, 61, 8, 4, 1, 5, - 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, - 1, 7, 1, 7, 3, 7, 78, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 83, 8, 7, 10, 7, 12, - 7, 86, 9, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 0, 1, 14, 10, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 0, 5, 1, 0, 26, 29, 1, 0, 21, 22, 1, 0, 10, 11, 2, - 0, 12, 19, 24, 25, 1, 0, 31, 32, 91, 0, 20, 1, 0, 0, 0, 2, 23, 1, 0, 0, - 0, 4, 45, 1, 0, 0, 0, 6, 47, 1, 0, 0, 0, 8, 60, 1, 0, 0, 0, 10, 62, 1, - 0, 0, 0, 12, 65, 1, 0, 0, 0, 14, 77, 1, 0, 0, 0, 16, 87, 1, 0, 0, 0, 18, - 89, 1, 0, 0, 0, 20, 21, 3, 2, 1, 0, 21, 22, 5, 0, 0, 1, 22, 1, 1, 0, 0, - 0, 23, 24, 5, 6, 0, 0, 24, 26, 3, 4, 2, 0, 25, 27, 3, 8, 4, 0, 26, 25, - 1, 0, 0, 0, 26, 27, 1, 0, 0, 0, 27, 28, 1, 0, 0, 0, 28, 29, 5, 5, 0, 0, - 29, 3, 1, 0, 0, 0, 30, 33, 3, 6, 3, 0, 31, 32, 5, 2, 0, 0, 32, 34, 3, 6, - 3, 0, 33, 31, 1, 0, 0, 0, 34, 35, 1, 0, 0, 0, 35, 33, 1, 0, 0, 0, 35, 36, - 1, 0, 0, 0, 36, 46, 1, 0, 0, 0, 37, 40, 3, 12, 6, 0, 38, 39, 5, 2, 0, 0, - 39, 41, 3, 12, 6, 0, 40, 38, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 40, 1, - 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 46, 1, 0, 0, 0, 44, 46, 5, 33, 0, 0, 45, - 30, 1, 0, 0, 0, 45, 37, 1, 0, 0, 0, 45, 44, 1, 0, 0, 0, 46, 5, 1, 0, 0, - 0, 47, 48, 5, 30, 0, 0, 48, 7, 1, 0, 0, 0, 49, 50, 5, 7, 0, 0, 50, 52, - 3, 14, 7, 0, 51, 49, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 61, 1, 0, 0, 0, - 53, 54, 5, 8, 0, 0, 54, 57, 5, 31, 0, 0, 55, 56, 5, 7, 0, 0, 56, 58, 3, - 14, 7, 0, 57, 55, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, - 61, 3, 10, 5, 0, 60, 51, 1, 0, 0, 0, 60, 53, 1, 0, 0, 0, 61, 9, 1, 0, 0, - 0, 62, 63, 5, 9, 0, 0, 63, 64, 3, 6, 3, 0, 64, 11, 1, 0, 0, 0, 65, 66, - 7, 0, 0, 0, 66, 67, 5, 3, 0, 0, 67, 68, 3, 6, 3, 0, 68, 69, 5, 4, 0, 0, - 69, 13, 1, 0, 0, 0, 70, 71, 6, 7, -1, 0, 71, 72, 5, 30, 0, 0, 72, 73, 3, - 16, 8, 0, 73, 74, 3, 18, 9, 0, 74, 78, 1, 0, 0, 0, 75, 76, 5, 30, 0, 0, - 76, 78, 7, 1, 0, 0, 77, 70, 1, 0, 0, 0, 77, 75, 1, 0, 0, 0, 78, 84, 1, - 0, 0, 0, 79, 80, 10, 2, 0, 0, 80, 81, 7, 2, 0, 0, 81, 83, 3, 14, 7, 3, - 82, 79, 1, 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, - 0, 0, 0, 85, 15, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 88, 7, 3, 0, 0, 88, - 17, 1, 0, 0, 0, 89, 90, 7, 4, 0, 0, 90, 19, 1, 0, 0, 0, 9, 26, 35, 42, - 45, 51, 57, 60, 77, 84, + 4, 1, 33, 100, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, + 10, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 29, 8, 1, 1, 1, 1, 1, 1, + 2, 1, 2, 1, 2, 4, 2, 36, 8, 2, 11, 2, 12, 2, 37, 1, 2, 1, 2, 1, 2, 4, 2, + 43, 8, 2, 11, 2, 12, 2, 44, 1, 2, 3, 2, 48, 8, 2, 1, 3, 1, 3, 1, 4, 1, + 4, 3, 4, 54, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 59, 8, 4, 1, 4, 1, 4, 3, 4, + 63, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 69, 8, 5, 1, 6, 1, 6, 1, 6, 1, + 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, + 8, 86, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 91, 8, 8, 10, 8, 12, 8, 94, 9, 8, + 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 0, 1, 16, 11, 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 0, 5, 1, 0, 26, 29, 1, 0, 21, 22, 1, 0, 10, 11, 2, 0, 12, 19, + 24, 25, 1, 0, 31, 32, 99, 0, 22, 1, 0, 0, 0, 2, 25, 1, 0, 0, 0, 4, 47, + 1, 0, 0, 0, 6, 49, 1, 0, 0, 0, 8, 62, 1, 0, 0, 0, 10, 64, 1, 0, 0, 0, 12, + 70, 1, 0, 0, 0, 14, 73, 1, 0, 0, 0, 16, 85, 1, 0, 0, 0, 18, 95, 1, 0, 0, + 0, 20, 97, 1, 0, 0, 0, 22, 23, 3, 2, 1, 0, 23, 24, 5, 0, 0, 1, 24, 1, 1, + 0, 0, 0, 25, 26, 5, 6, 0, 0, 26, 28, 3, 4, 2, 0, 27, 29, 3, 8, 4, 0, 28, + 27, 1, 0, 0, 0, 28, 29, 1, 0, 0, 0, 29, 30, 1, 0, 0, 0, 30, 31, 5, 5, 0, + 0, 31, 3, 1, 0, 0, 0, 32, 35, 3, 6, 3, 0, 33, 34, 5, 2, 0, 0, 34, 36, 3, + 6, 3, 0, 35, 33, 1, 0, 0, 0, 36, 37, 1, 0, 0, 0, 37, 35, 1, 0, 0, 0, 37, + 38, 1, 0, 0, 0, 38, 48, 1, 0, 0, 0, 39, 42, 3, 14, 7, 0, 40, 41, 5, 2, + 0, 0, 41, 43, 3, 14, 7, 0, 42, 40, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, + 42, 1, 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 48, 1, 0, 0, 0, 46, 48, 5, 33, + 0, 0, 47, 32, 1, 0, 0, 0, 47, 39, 1, 0, 0, 0, 47, 46, 1, 0, 0, 0, 48, 5, + 1, 0, 0, 0, 49, 50, 5, 30, 0, 0, 50, 7, 1, 0, 0, 0, 51, 52, 5, 7, 0, 0, + 52, 54, 3, 16, 8, 0, 53, 51, 1, 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 63, 1, + 0, 0, 0, 55, 58, 3, 10, 5, 0, 56, 57, 5, 7, 0, 0, 57, 59, 3, 16, 8, 0, + 58, 56, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 3, + 12, 6, 0, 61, 63, 1, 0, 0, 0, 62, 53, 1, 0, 0, 0, 62, 55, 1, 0, 0, 0, 63, + 9, 1, 0, 0, 0, 64, 65, 5, 8, 0, 0, 65, 68, 5, 31, 0, 0, 66, 67, 5, 7, 0, + 0, 67, 69, 3, 16, 8, 0, 68, 66, 1, 0, 0, 0, 68, 69, 1, 0, 0, 0, 69, 11, + 1, 0, 0, 0, 70, 71, 5, 9, 0, 0, 71, 72, 3, 6, 3, 0, 72, 13, 1, 0, 0, 0, + 73, 74, 7, 0, 0, 0, 74, 75, 5, 3, 0, 0, 75, 76, 3, 6, 3, 0, 76, 77, 5, + 4, 0, 0, 77, 15, 1, 0, 0, 0, 78, 79, 6, 8, -1, 0, 79, 80, 5, 30, 0, 0, + 80, 81, 3, 18, 9, 0, 81, 82, 3, 20, 10, 0, 82, 86, 1, 0, 0, 0, 83, 84, + 5, 30, 0, 0, 84, 86, 7, 1, 0, 0, 85, 78, 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, + 86, 92, 1, 0, 0, 0, 87, 88, 10, 2, 0, 0, 88, 89, 7, 2, 0, 0, 89, 91, 3, + 16, 8, 3, 90, 87, 1, 0, 0, 0, 91, 94, 1, 0, 0, 0, 92, 90, 1, 0, 0, 0, 92, + 93, 1, 0, 0, 0, 93, 17, 1, 0, 0, 0, 94, 92, 1, 0, 0, 0, 95, 96, 7, 3, 0, + 0, 96, 19, 1, 0, 0, 0, 97, 98, 7, 4, 0, 0, 98, 21, 1, 0, 0, 0, 10, 28, + 37, 44, 47, 53, 58, 62, 68, 85, 92, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -99,80 +102,81 @@ func sqlParserInit() { } } -// sqlParserInit initializes any static state used to implement sqlParser. By default the +// SqlParserInit initializes any static state used to implement SqlParser. By default the // static state used to implement the parser is lazily initialized during the first call to -// NewsqlParser(). You can call this function if you wish to initialize the static state ahead +// NewSqlParser(). You can call this function if you wish to initialize the static state ahead // of time. func SqlParserInit() { staticData := &sqlParserStaticData staticData.once.Do(sqlParserInit) } -// NewsqlParser produces a new parser instance for the optional input antlr.TokenStream. -func NewsqlParser(input antlr.TokenStream) *sqlParser { +// NewSqlParser produces a new parser instance for the optional input antlr.TokenStream. +func NewSqlParser(input antlr.TokenStream) *SqlParser { SqlParserInit() - this := new(sqlParser) + this := new(SqlParser) this.BaseParser = antlr.NewBaseParser(input) staticData := &sqlParserStaticData this.Interpreter = antlr.NewParserATNSimulator(this, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) this.RuleNames = staticData.ruleNames this.LiteralNames = staticData.literalNames this.SymbolicNames = staticData.symbolicNames - this.GrammarFileName = "sql.g4" + this.GrammarFileName = "Sql.g4" return this } -// sqlParser tokens. +// SqlParser tokens. const ( - sqlParserEOF = antlr.TokenEOF - sqlParserSPACE = 1 - sqlParserCOMMA = 2 - sqlParserL_BRACKET = 3 - sqlParserR_BRACKET = 4 - sqlParserEOQ = 5 - sqlParserK_SELECT = 6 - sqlParserK_WHERE = 7 - sqlParserK_WINDOW_TUMBLING = 8 - sqlParserK_GROUP_BY = 9 - sqlParserK_AND = 10 - sqlParserK_OR = 11 - sqlParserK_IS = 12 - sqlParserK_LIKE = 13 - sqlParserK_EQUAL = 14 - sqlParserK_GREATER = 15 - sqlParserK_LESS = 16 - sqlParserK_LESS_EQUAL = 17 - sqlParserK_GREATER_EQUAL = 18 - sqlParserK_NOT_EQUAL = 19 - sqlParserK_NULL = 20 - sqlParserK_IS_NULL = 21 - sqlParserK_IS_NOT_NULL = 22 - sqlParserK_NOT = 23 - sqlParserK_NOT_IN = 24 - sqlParserK_IN = 25 - sqlParserK_COUNT = 26 - sqlParserK_MIN = 27 - sqlParserK_MAX = 28 - sqlParserK_AVG = 29 - sqlParserIDENTIFIER = 30 - sqlParserNUMERIC_LITERAL = 31 - sqlParserSTRING_LITERAL = 32 - sqlParserSTAR = 33 + SqlParserEOF = antlr.TokenEOF + SqlParserSPACE = 1 + SqlParserCOMMA = 2 + SqlParserL_BRACKET = 3 + SqlParserR_BRACKET = 4 + SqlParserEOQ = 5 + SqlParserK_SELECT = 6 + SqlParserK_WHERE = 7 + SqlParserK_WINDOW_TUMBLING = 8 + SqlParserK_GROUP_BY = 9 + SqlParserK_AND = 10 + SqlParserK_OR = 11 + SqlParserK_IS = 12 + SqlParserK_LIKE = 13 + SqlParserK_EQUAL = 14 + SqlParserK_GREATER = 15 + SqlParserK_LESS = 16 + SqlParserK_LESS_EQUAL = 17 + SqlParserK_GREATER_EQUAL = 18 + SqlParserK_NOT_EQUAL = 19 + SqlParserK_NULL = 20 + SqlParserK_IS_NULL = 21 + SqlParserK_IS_NOT_NULL = 22 + SqlParserK_NOT = 23 + SqlParserK_NOT_IN = 24 + SqlParserK_IN = 25 + SqlParserK_COUNT = 26 + SqlParserK_MIN = 27 + SqlParserK_MAX = 28 + SqlParserK_AVG = 29 + SqlParserIDENTIFIER = 30 + SqlParserNUMERIC_LITERAL = 31 + SqlParserSTRING_LITERAL = 32 + SqlParserSTAR = 33 ) -// sqlParser rules. +// SqlParser rules. const ( - sqlParserRULE_sqlQuery = 0 - sqlParserRULE_selectQuery = 1 - sqlParserRULE_resultColumns = 2 - sqlParserRULE_column = 3 - sqlParserRULE_whereStatement = 4 - sqlParserRULE_groupBy = 5 - sqlParserRULE_avg = 6 - sqlParserRULE_expr = 7 - sqlParserRULE_comparisonOperator = 8 - sqlParserRULE_literalValue = 9 + SqlParserRULE_sqlQuery = 0 + SqlParserRULE_selectQuery = 1 + SqlParserRULE_resultColumns = 2 + SqlParserRULE_column = 3 + SqlParserRULE_whereStatement = 4 + SqlParserRULE_tumblingWindow = 5 + SqlParserRULE_groupBy = 6 + SqlParserRULE_avg = 7 + SqlParserRULE_expr = 8 + SqlParserRULE_comparisonOperator = 9 + SqlParserRULE_literalValue = 10 ) // ISqlQueryContext is an interface to support dynamic dispatch. @@ -194,7 +198,7 @@ type SqlQueryContext struct { func NewEmptySqlQueryContext() *SqlQueryContext { var p = new(SqlQueryContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = sqlParserRULE_sqlQuery + p.RuleIndex = SqlParserRULE_sqlQuery return p } @@ -206,7 +210,7 @@ func NewSqlQueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, inv p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = sqlParserRULE_sqlQuery + p.RuleIndex = SqlParserRULE_sqlQuery return p } @@ -230,7 +234,7 @@ func (s *SqlQueryContext) SelectQuery() ISelectQueryContext { } func (s *SqlQueryContext) EOF() antlr.TerminalNode { - return s.GetToken(sqlParserEOF, 0) + return s.GetToken(SqlParserEOF, 0) } func (s *SqlQueryContext) GetRuleContext() antlr.RuleContext { @@ -242,23 +246,23 @@ func (s *SqlQueryContext) ToStringTree(ruleNames []string, recog antlr.Recognize } func (s *SqlQueryContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.EnterSqlQuery(s) } } func (s *SqlQueryContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.ExitSqlQuery(s) } } -func (p *sqlParser) SqlQuery() (localctx ISqlQueryContext) { +func (p *SqlParser) SqlQuery() (localctx ISqlQueryContext) { this := p _ = this localctx = NewSqlQueryContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 0, sqlParserRULE_sqlQuery) + p.EnterRule(localctx, 0, SqlParserRULE_sqlQuery) defer func() { p.ExitRule() @@ -278,12 +282,12 @@ func (p *sqlParser) SqlQuery() (localctx ISqlQueryContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(20) + p.SetState(22) p.SelectQuery() } { - p.SetState(21) - p.Match(sqlParserEOF) + p.SetState(23) + p.Match(SqlParserEOF) } return localctx @@ -308,7 +312,7 @@ type SelectQueryContext struct { func NewEmptySelectQueryContext() *SelectQueryContext { var p = new(SelectQueryContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = sqlParserRULE_selectQuery + p.RuleIndex = SqlParserRULE_selectQuery return p } @@ -320,7 +324,7 @@ func NewSelectQueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = sqlParserRULE_selectQuery + p.RuleIndex = SqlParserRULE_selectQuery return p } @@ -328,11 +332,11 @@ func NewSelectQueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, func (s *SelectQueryContext) GetParser() antlr.Parser { return s.parser } func (s *SelectQueryContext) K_SELECT() antlr.TerminalNode { - return s.GetToken(sqlParserK_SELECT, 0) + return s.GetToken(SqlParserK_SELECT, 0) } func (s *SelectQueryContext) EOQ() antlr.TerminalNode { - return s.GetToken(sqlParserEOQ, 0) + return s.GetToken(SqlParserEOQ, 0) } func (s *SelectQueryContext) ResultColumns() IResultColumnsContext { @@ -376,23 +380,23 @@ func (s *SelectQueryContext) ToStringTree(ruleNames []string, recog antlr.Recogn } func (s *SelectQueryContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.EnterSelectQuery(s) } } func (s *SelectQueryContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.ExitSelectQuery(s) } } -func (p *sqlParser) SelectQuery() (localctx ISelectQueryContext) { +func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { this := p _ = this localctx = NewSelectQueryContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 2, sqlParserRULE_selectQuery) + p.EnterRule(localctx, 2, SqlParserRULE_selectQuery) defer func() { p.ExitRule() @@ -412,28 +416,28 @@ func (p *sqlParser) SelectQuery() (localctx ISelectQueryContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(23) - p.Match(sqlParserK_SELECT) + p.SetState(25) + p.Match(SqlParserK_SELECT) } { - p.SetState(24) + p.SetState(26) p.ResultColumns() } - p.SetState(26) + p.SetState(28) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 0, p.GetParserRuleContext()) == 1 { { - p.SetState(25) + p.SetState(27) p.WhereStatement() } } { - p.SetState(28) - p.Match(sqlParserEOQ) + p.SetState(30) + p.Match(SqlParserEOQ) } return localctx @@ -458,7 +462,7 @@ type ResultColumnsContext struct { func NewEmptyResultColumnsContext() *ResultColumnsContext { var p = new(ResultColumnsContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = sqlParserRULE_resultColumns + p.RuleIndex = SqlParserRULE_resultColumns return p } @@ -470,7 +474,7 @@ func NewResultColumnsContext(parser antlr.Parser, parent antlr.ParserRuleContext p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = sqlParserRULE_resultColumns + p.RuleIndex = SqlParserRULE_resultColumns return p } @@ -519,11 +523,11 @@ func (s *ResultColumnsContext) Column(i int) IColumnContext { } func (s *ResultColumnsContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(sqlParserCOMMA) + return s.GetTokens(SqlParserCOMMA) } func (s *ResultColumnsContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(sqlParserCOMMA, i) + return s.GetToken(SqlParserCOMMA, i) } func (s *ResultColumnsContext) AllAvg() []IAvgContext { @@ -568,7 +572,7 @@ func (s *ResultColumnsContext) Avg(i int) IAvgContext { } func (s *ResultColumnsContext) STAR() antlr.TerminalNode { - return s.GetToken(sqlParserSTAR, 0) + return s.GetToken(SqlParserSTAR, 0) } func (s *ResultColumnsContext) GetRuleContext() antlr.RuleContext { @@ -580,23 +584,23 @@ func (s *ResultColumnsContext) ToStringTree(ruleNames []string, recog antlr.Reco } func (s *ResultColumnsContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.EnterResultColumns(s) } } func (s *ResultColumnsContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.ExitResultColumns(s) } } -func (p *sqlParser) ResultColumns() (localctx IResultColumnsContext) { +func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { this := p _ = this localctx = NewResultColumnsContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 4, sqlParserRULE_resultColumns) + p.EnterRule(localctx, 4, SqlParserRULE_resultColumns) var _la int defer func() { @@ -615,65 +619,65 @@ func (p *sqlParser) ResultColumns() (localctx IResultColumnsContext) { } }() - p.SetState(45) + p.SetState(47) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { - case sqlParserIDENTIFIER: + case SqlParserIDENTIFIER: p.EnterOuterAlt(localctx, 1) { - p.SetState(30) + p.SetState(32) p.Column() } - p.SetState(33) + p.SetState(35) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - for ok := true; ok; ok = _la == sqlParserCOMMA { + for ok := true; ok; ok = _la == SqlParserCOMMA { { - p.SetState(31) - p.Match(sqlParserCOMMA) + p.SetState(33) + p.Match(SqlParserCOMMA) } { - p.SetState(32) + p.SetState(34) p.Column() } - p.SetState(35) + p.SetState(37) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } - case sqlParserK_COUNT, sqlParserK_MIN, sqlParserK_MAX, sqlParserK_AVG: + case SqlParserK_COUNT, SqlParserK_MIN, SqlParserK_MAX, SqlParserK_AVG: p.EnterOuterAlt(localctx, 2) { - p.SetState(37) + p.SetState(39) p.Avg() } - p.SetState(40) + p.SetState(42) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - for ok := true; ok; ok = _la == sqlParserCOMMA { + for ok := true; ok; ok = _la == SqlParserCOMMA { { - p.SetState(38) - p.Match(sqlParserCOMMA) + p.SetState(40) + p.Match(SqlParserCOMMA) } { - p.SetState(39) + p.SetState(41) p.Avg() } - p.SetState(42) + p.SetState(44) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } - case sqlParserSTAR: + case SqlParserSTAR: p.EnterOuterAlt(localctx, 3) { - p.SetState(44) - p.Match(sqlParserSTAR) + p.SetState(46) + p.Match(SqlParserSTAR) } default: @@ -702,7 +706,7 @@ type ColumnContext struct { func NewEmptyColumnContext() *ColumnContext { var p = new(ColumnContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = sqlParserRULE_column + p.RuleIndex = SqlParserRULE_column return p } @@ -714,7 +718,7 @@ func NewColumnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invok p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = sqlParserRULE_column + p.RuleIndex = SqlParserRULE_column return p } @@ -722,7 +726,7 @@ func NewColumnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invok func (s *ColumnContext) GetParser() antlr.Parser { return s.parser } func (s *ColumnContext) IDENTIFIER() antlr.TerminalNode { - return s.GetToken(sqlParserIDENTIFIER, 0) + return s.GetToken(SqlParserIDENTIFIER, 0) } func (s *ColumnContext) GetRuleContext() antlr.RuleContext { @@ -734,23 +738,23 @@ func (s *ColumnContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) } func (s *ColumnContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.EnterColumn(s) } } func (s *ColumnContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.ExitColumn(s) } } -func (p *sqlParser) Column() (localctx IColumnContext) { +func (p *SqlParser) Column() (localctx IColumnContext) { this := p _ = this localctx = NewColumnContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 6, sqlParserRULE_column) + p.EnterRule(localctx, 6, SqlParserRULE_column) defer func() { p.ExitRule() @@ -770,8 +774,8 @@ func (p *sqlParser) Column() (localctx IColumnContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(47) - p.Match(sqlParserIDENTIFIER) + p.SetState(49) + p.Match(SqlParserIDENTIFIER) } return localctx @@ -796,7 +800,7 @@ type WhereStatementContext struct { func NewEmptyWhereStatementContext() *WhereStatementContext { var p = new(WhereStatementContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = sqlParserRULE_whereStatement + p.RuleIndex = SqlParserRULE_whereStatement return p } @@ -808,7 +812,7 @@ func NewWhereStatementContext(parser antlr.Parser, parent antlr.ParserRuleContex p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = sqlParserRULE_whereStatement + p.RuleIndex = SqlParserRULE_whereStatement return p } @@ -816,7 +820,7 @@ func NewWhereStatementContext(parser antlr.Parser, parent antlr.ParserRuleContex func (s *WhereStatementContext) GetParser() antlr.Parser { return s.parser } func (s *WhereStatementContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(sqlParserK_WHERE, 0) + return s.GetToken(SqlParserK_WHERE, 0) } func (s *WhereStatementContext) Expr() IExprContext { @@ -835,12 +839,20 @@ func (s *WhereStatementContext) Expr() IExprContext { return t.(IExprContext) } -func (s *WhereStatementContext) K_WINDOW_TUMBLING() antlr.TerminalNode { - return s.GetToken(sqlParserK_WINDOW_TUMBLING, 0) -} +func (s *WhereStatementContext) TumblingWindow() ITumblingWindowContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITumblingWindowContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } -func (s *WhereStatementContext) NUMERIC_LITERAL() antlr.TerminalNode { - return s.GetToken(sqlParserNUMERIC_LITERAL, 0) + if t == nil { + return nil + } + + return t.(ITumblingWindowContext) } func (s *WhereStatementContext) GroupBy() IGroupByContext { @@ -868,23 +880,23 @@ func (s *WhereStatementContext) ToStringTree(ruleNames []string, recog antlr.Rec } func (s *WhereStatementContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.EnterWhereStatement(s) } } func (s *WhereStatementContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.ExitWhereStatement(s) } } -func (p *sqlParser) WhereStatement() (localctx IWhereStatementContext) { +func (p *SqlParser) WhereStatement() (localctx IWhereStatementContext) { this := p _ = this localctx = NewWhereStatementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 8, sqlParserRULE_whereStatement) + p.EnterRule(localctx, 8, SqlParserRULE_whereStatement) var _la int defer func() { @@ -903,56 +915,53 @@ func (p *sqlParser) WhereStatement() (localctx IWhereStatementContext) { } }() - p.SetState(60) + p.SetState(62) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { - case sqlParserEOQ, sqlParserK_WHERE: + case SqlParserEOQ, SqlParserK_WHERE: p.EnterOuterAlt(localctx, 1) - p.SetState(51) + p.SetState(53) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - if _la == sqlParserK_WHERE { + if _la == SqlParserK_WHERE { { - p.SetState(49) - p.Match(sqlParserK_WHERE) + p.SetState(51) + p.Match(SqlParserK_WHERE) } { - p.SetState(50) + p.SetState(52) p.expr(0) } } - case sqlParserK_WINDOW_TUMBLING: + case SqlParserK_WINDOW_TUMBLING: p.EnterOuterAlt(localctx, 2) { - p.SetState(53) - p.Match(sqlParserK_WINDOW_TUMBLING) - } - { - p.SetState(54) - p.Match(sqlParserNUMERIC_LITERAL) + p.SetState(55) + p.TumblingWindow() } - p.SetState(57) + + p.SetState(58) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - if _la == sqlParserK_WHERE { + if _la == SqlParserK_WHERE { { - p.SetState(55) - p.Match(sqlParserK_WHERE) + p.SetState(56) + p.Match(SqlParserK_WHERE) } { - p.SetState(56) + p.SetState(57) p.expr(0) } } { - p.SetState(59) + p.SetState(60) p.GroupBy() } @@ -963,6 +972,142 @@ func (p *sqlParser) WhereStatement() (localctx IWhereStatementContext) { return localctx } +// ITumblingWindowContext is an interface to support dynamic dispatch. +type ITumblingWindowContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTumblingWindowContext differentiates from other interfaces. + IsTumblingWindowContext() +} + +type TumblingWindowContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTumblingWindowContext() *TumblingWindowContext { + var p = new(TumblingWindowContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_tumblingWindow + return p +} + +func (*TumblingWindowContext) IsTumblingWindowContext() {} + +func NewTumblingWindowContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TumblingWindowContext { + var p = new(TumblingWindowContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_tumblingWindow + + return p +} + +func (s *TumblingWindowContext) GetParser() antlr.Parser { return s.parser } + +func (s *TumblingWindowContext) K_WINDOW_TUMBLING() antlr.TerminalNode { + return s.GetToken(SqlParserK_WINDOW_TUMBLING, 0) +} + +func (s *TumblingWindowContext) NUMERIC_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserNUMERIC_LITERAL, 0) +} + +func (s *TumblingWindowContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) +} + +func (s *TumblingWindowContext) Expr() IExprContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *TumblingWindowContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TumblingWindowContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TumblingWindowContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTumblingWindow(s) + } +} + +func (s *TumblingWindowContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTumblingWindow(s) + } +} + +func (p *SqlParser) TumblingWindow() (localctx ITumblingWindowContext) { + this := p + _ = this + + localctx = NewTumblingWindowContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 10, SqlParserRULE_tumblingWindow) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(64) + p.Match(SqlParserK_WINDOW_TUMBLING) + } + { + p.SetState(65) + p.Match(SqlParserNUMERIC_LITERAL) + } + p.SetState(68) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 7, p.GetParserRuleContext()) == 1 { + { + p.SetState(66) + p.Match(SqlParserK_WHERE) + } + { + p.SetState(67) + p.expr(0) + } + + } + + return localctx +} + // IGroupByContext is an interface to support dynamic dispatch. type IGroupByContext interface { antlr.ParserRuleContext @@ -982,7 +1127,7 @@ type GroupByContext struct { func NewEmptyGroupByContext() *GroupByContext { var p = new(GroupByContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = sqlParserRULE_groupBy + p.RuleIndex = SqlParserRULE_groupBy return p } @@ -994,7 +1139,7 @@ func NewGroupByContext(parser antlr.Parser, parent antlr.ParserRuleContext, invo p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = sqlParserRULE_groupBy + p.RuleIndex = SqlParserRULE_groupBy return p } @@ -1002,7 +1147,7 @@ func NewGroupByContext(parser antlr.Parser, parent antlr.ParserRuleContext, invo func (s *GroupByContext) GetParser() antlr.Parser { return s.parser } func (s *GroupByContext) K_GROUP_BY() antlr.TerminalNode { - return s.GetToken(sqlParserK_GROUP_BY, 0) + return s.GetToken(SqlParserK_GROUP_BY, 0) } func (s *GroupByContext) Column() IColumnContext { @@ -1030,23 +1175,23 @@ func (s *GroupByContext) ToStringTree(ruleNames []string, recog antlr.Recognizer } func (s *GroupByContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.EnterGroupBy(s) } } func (s *GroupByContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.ExitGroupBy(s) } } -func (p *sqlParser) GroupBy() (localctx IGroupByContext) { +func (p *SqlParser) GroupBy() (localctx IGroupByContext) { this := p _ = this localctx = NewGroupByContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 10, sqlParserRULE_groupBy) + p.EnterRule(localctx, 12, SqlParserRULE_groupBy) defer func() { p.ExitRule() @@ -1066,11 +1211,11 @@ func (p *sqlParser) GroupBy() (localctx IGroupByContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(62) - p.Match(sqlParserK_GROUP_BY) + p.SetState(70) + p.Match(SqlParserK_GROUP_BY) } { - p.SetState(63) + p.SetState(71) p.Column() } @@ -1096,7 +1241,7 @@ type AvgContext struct { func NewEmptyAvgContext() *AvgContext { var p = new(AvgContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = sqlParserRULE_avg + p.RuleIndex = SqlParserRULE_avg return p } @@ -1108,7 +1253,7 @@ func NewAvgContext(parser antlr.Parser, parent antlr.ParserRuleContext, invoking p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = sqlParserRULE_avg + p.RuleIndex = SqlParserRULE_avg return p } @@ -1116,7 +1261,7 @@ func NewAvgContext(parser antlr.Parser, parent antlr.ParserRuleContext, invoking func (s *AvgContext) GetParser() antlr.Parser { return s.parser } func (s *AvgContext) L_BRACKET() antlr.TerminalNode { - return s.GetToken(sqlParserL_BRACKET, 0) + return s.GetToken(SqlParserL_BRACKET, 0) } func (s *AvgContext) Column() IColumnContext { @@ -1136,23 +1281,23 @@ func (s *AvgContext) Column() IColumnContext { } func (s *AvgContext) R_BRACKET() antlr.TerminalNode { - return s.GetToken(sqlParserR_BRACKET, 0) + return s.GetToken(SqlParserR_BRACKET, 0) } func (s *AvgContext) K_MIN() antlr.TerminalNode { - return s.GetToken(sqlParserK_MIN, 0) + return s.GetToken(SqlParserK_MIN, 0) } func (s *AvgContext) K_MAX() antlr.TerminalNode { - return s.GetToken(sqlParserK_MAX, 0) + return s.GetToken(SqlParserK_MAX, 0) } func (s *AvgContext) K_COUNT() antlr.TerminalNode { - return s.GetToken(sqlParserK_COUNT, 0) + return s.GetToken(SqlParserK_COUNT, 0) } func (s *AvgContext) K_AVG() antlr.TerminalNode { - return s.GetToken(sqlParserK_AVG, 0) + return s.GetToken(SqlParserK_AVG, 0) } func (s *AvgContext) GetRuleContext() antlr.RuleContext { @@ -1164,23 +1309,23 @@ func (s *AvgContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) st } func (s *AvgContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.EnterAvg(s) } } func (s *AvgContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.ExitAvg(s) } } -func (p *sqlParser) Avg() (localctx IAvgContext) { +func (p *SqlParser) Avg() (localctx IAvgContext) { this := p _ = this localctx = NewAvgContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 12, sqlParserRULE_avg) + p.EnterRule(localctx, 14, SqlParserRULE_avg) var _la int defer func() { @@ -1201,10 +1346,10 @@ func (p *sqlParser) Avg() (localctx IAvgContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(65) + p.SetState(73) _la = p.GetTokenStream().LA(1) - if !(((_la)&-(0x1f+1)) == 0 && ((1< Date: Tue, 26 Jul 2022 18:48:56 +0300 Subject: [PATCH 04/31] Visitor init --- processor/stream_processor/Sql.g4 | 12 +- processor/stream_processor/parser/Sql.interp | 4 +- processor/stream_processor/parser/Sql.tokens | 81 +-- .../stream_processor/parser/SqlLexer.interp | 146 ++++++ .../stream_processor/parser/SqlLexer.tokens | 42 ++ .../stream_processor/parser/sqlLexer.interp | 143 ----- .../stream_processor/parser/sqlLexer.tokens | 41 -- .../parser/sql_base_listener.go | 88 ---- .../parser/sql_base_visitor.go | 65 +++ .../stream_processor/parser/sql_lexer.go | 417 +++++++-------- .../stream_processor/parser/sql_lexer_test.go | 3 +- .../stream_processor/parser/sql_listener.go | 76 --- .../stream_processor/parser/sql_parser.go | 488 +++++++++++------- .../parser/sql_stream_visitor.go | 102 ++++ .../parser/sql_stream_visitor_test.go | 64 +++ .../stream_processor/parser/sql_visitor.go | 52 ++ .../parser/stream_listener.go | 46 -- 17 files changed, 1049 insertions(+), 821 deletions(-) create mode 100644 processor/stream_processor/parser/SqlLexer.interp create mode 100644 processor/stream_processor/parser/SqlLexer.tokens delete mode 100644 processor/stream_processor/parser/sqlLexer.interp delete mode 100644 processor/stream_processor/parser/sqlLexer.tokens delete mode 100644 processor/stream_processor/parser/sql_base_listener.go create mode 100644 processor/stream_processor/parser/sql_base_visitor.go delete mode 100644 processor/stream_processor/parser/sql_listener.go create mode 100644 processor/stream_processor/parser/sql_stream_visitor.go create mode 100644 processor/stream_processor/parser/sql_stream_visitor_test.go create mode 100644 processor/stream_processor/parser/sql_visitor.go delete mode 100644 processor/stream_processor/parser/stream_listener.go diff --git a/processor/stream_processor/Sql.g4 b/processor/stream_processor/Sql.g4 index cb343d3d7cad..f60e59e13c7b 100644 --- a/processor/stream_processor/Sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -11,9 +11,9 @@ selectQuery resultColumns - : column (COMMA column)+ - | avg (COMMA avg)+ - | STAR + : column (COMMA column)+ # selectColumns + | avg (COMMA avg)+ # selectAVG + | STAR # selectStar ; @@ -22,8 +22,8 @@ column ; whereStatement - : ( K_WHERE expr )? - | (tumblingWindow) ( K_WHERE expr )? (groupBy) + : ( K_WHERE expr )? # whereStmt + | (tumblingWindow) ( K_WHERE expr )? (groupBy) # tumblingStmt ; tumblingWindow @@ -42,6 +42,8 @@ SPACE : [ \u000B\t\r\n] -> channel(HIDDEN) ; +WS : [ \t]+ -> skip ; + COMMA : ',' ; L_BRACKET : '(' ; R_BRACKET : ')' ; diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp index c71b4dcbc65a..51867eac0c1a 100644 --- a/processor/stream_processor/parser/Sql.interp +++ b/processor/stream_processor/parser/Sql.interp @@ -1,6 +1,7 @@ token literal names: null null +null ',' '(' ')' @@ -37,6 +38,7 @@ null token symbolic names: null SPACE +WS COMMA L_BRACKET R_BRACKET @@ -85,4 +87,4 @@ literalValue atn: -[4, 1, 33, 100, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 29, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 4, 2, 36, 8, 2, 11, 2, 12, 2, 37, 1, 2, 1, 2, 1, 2, 4, 2, 43, 8, 2, 11, 2, 12, 2, 44, 1, 2, 3, 2, 48, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 54, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 59, 8, 4, 1, 4, 1, 4, 3, 4, 63, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 69, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 86, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 91, 8, 8, 10, 8, 12, 8, 94, 9, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 0, 1, 16, 11, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 0, 5, 1, 0, 26, 29, 1, 0, 21, 22, 1, 0, 10, 11, 2, 0, 12, 19, 24, 25, 1, 0, 31, 32, 99, 0, 22, 1, 0, 0, 0, 2, 25, 1, 0, 0, 0, 4, 47, 1, 0, 0, 0, 6, 49, 1, 0, 0, 0, 8, 62, 1, 0, 0, 0, 10, 64, 1, 0, 0, 0, 12, 70, 1, 0, 0, 0, 14, 73, 1, 0, 0, 0, 16, 85, 1, 0, 0, 0, 18, 95, 1, 0, 0, 0, 20, 97, 1, 0, 0, 0, 22, 23, 3, 2, 1, 0, 23, 24, 5, 0, 0, 1, 24, 1, 1, 0, 0, 0, 25, 26, 5, 6, 0, 0, 26, 28, 3, 4, 2, 0, 27, 29, 3, 8, 4, 0, 28, 27, 1, 0, 0, 0, 28, 29, 1, 0, 0, 0, 29, 30, 1, 0, 0, 0, 30, 31, 5, 5, 0, 0, 31, 3, 1, 0, 0, 0, 32, 35, 3, 6, 3, 0, 33, 34, 5, 2, 0, 0, 34, 36, 3, 6, 3, 0, 35, 33, 1, 0, 0, 0, 36, 37, 1, 0, 0, 0, 37, 35, 1, 0, 0, 0, 37, 38, 1, 0, 0, 0, 38, 48, 1, 0, 0, 0, 39, 42, 3, 14, 7, 0, 40, 41, 5, 2, 0, 0, 41, 43, 3, 14, 7, 0, 42, 40, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 42, 1, 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 48, 1, 0, 0, 0, 46, 48, 5, 33, 0, 0, 47, 32, 1, 0, 0, 0, 47, 39, 1, 0, 0, 0, 47, 46, 1, 0, 0, 0, 48, 5, 1, 0, 0, 0, 49, 50, 5, 30, 0, 0, 50, 7, 1, 0, 0, 0, 51, 52, 5, 7, 0, 0, 52, 54, 3, 16, 8, 0, 53, 51, 1, 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 63, 1, 0, 0, 0, 55, 58, 3, 10, 5, 0, 56, 57, 5, 7, 0, 0, 57, 59, 3, 16, 8, 0, 58, 56, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 3, 12, 6, 0, 61, 63, 1, 0, 0, 0, 62, 53, 1, 0, 0, 0, 62, 55, 1, 0, 0, 0, 63, 9, 1, 0, 0, 0, 64, 65, 5, 8, 0, 0, 65, 68, 5, 31, 0, 0, 66, 67, 5, 7, 0, 0, 67, 69, 3, 16, 8, 0, 68, 66, 1, 0, 0, 0, 68, 69, 1, 0, 0, 0, 69, 11, 1, 0, 0, 0, 70, 71, 5, 9, 0, 0, 71, 72, 3, 6, 3, 0, 72, 13, 1, 0, 0, 0, 73, 74, 7, 0, 0, 0, 74, 75, 5, 3, 0, 0, 75, 76, 3, 6, 3, 0, 76, 77, 5, 4, 0, 0, 77, 15, 1, 0, 0, 0, 78, 79, 6, 8, -1, 0, 79, 80, 5, 30, 0, 0, 80, 81, 3, 18, 9, 0, 81, 82, 3, 20, 10, 0, 82, 86, 1, 0, 0, 0, 83, 84, 5, 30, 0, 0, 84, 86, 7, 1, 0, 0, 85, 78, 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, 86, 92, 1, 0, 0, 0, 87, 88, 10, 2, 0, 0, 88, 89, 7, 2, 0, 0, 89, 91, 3, 16, 8, 3, 90, 87, 1, 0, 0, 0, 91, 94, 1, 0, 0, 0, 92, 90, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 17, 1, 0, 0, 0, 94, 92, 1, 0, 0, 0, 95, 96, 7, 3, 0, 0, 96, 19, 1, 0, 0, 0, 97, 98, 7, 4, 0, 0, 98, 21, 1, 0, 0, 0, 10, 28, 37, 44, 47, 53, 58, 62, 68, 85, 92] \ No newline at end of file +[4, 1, 34, 100, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 29, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 4, 2, 36, 8, 2, 11, 2, 12, 2, 37, 1, 2, 1, 2, 1, 2, 4, 2, 43, 8, 2, 11, 2, 12, 2, 44, 1, 2, 3, 2, 48, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 54, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 59, 8, 4, 1, 4, 1, 4, 3, 4, 63, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 69, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 86, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 91, 8, 8, 10, 8, 12, 8, 94, 9, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 0, 1, 16, 11, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 0, 5, 1, 0, 27, 30, 1, 0, 22, 23, 1, 0, 11, 12, 2, 0, 13, 20, 25, 26, 1, 0, 32, 33, 99, 0, 22, 1, 0, 0, 0, 2, 25, 1, 0, 0, 0, 4, 47, 1, 0, 0, 0, 6, 49, 1, 0, 0, 0, 8, 62, 1, 0, 0, 0, 10, 64, 1, 0, 0, 0, 12, 70, 1, 0, 0, 0, 14, 73, 1, 0, 0, 0, 16, 85, 1, 0, 0, 0, 18, 95, 1, 0, 0, 0, 20, 97, 1, 0, 0, 0, 22, 23, 3, 2, 1, 0, 23, 24, 5, 0, 0, 1, 24, 1, 1, 0, 0, 0, 25, 26, 5, 7, 0, 0, 26, 28, 3, 4, 2, 0, 27, 29, 3, 8, 4, 0, 28, 27, 1, 0, 0, 0, 28, 29, 1, 0, 0, 0, 29, 30, 1, 0, 0, 0, 30, 31, 5, 6, 0, 0, 31, 3, 1, 0, 0, 0, 32, 35, 3, 6, 3, 0, 33, 34, 5, 3, 0, 0, 34, 36, 3, 6, 3, 0, 35, 33, 1, 0, 0, 0, 36, 37, 1, 0, 0, 0, 37, 35, 1, 0, 0, 0, 37, 38, 1, 0, 0, 0, 38, 48, 1, 0, 0, 0, 39, 42, 3, 14, 7, 0, 40, 41, 5, 3, 0, 0, 41, 43, 3, 14, 7, 0, 42, 40, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 42, 1, 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 48, 1, 0, 0, 0, 46, 48, 5, 34, 0, 0, 47, 32, 1, 0, 0, 0, 47, 39, 1, 0, 0, 0, 47, 46, 1, 0, 0, 0, 48, 5, 1, 0, 0, 0, 49, 50, 5, 31, 0, 0, 50, 7, 1, 0, 0, 0, 51, 52, 5, 8, 0, 0, 52, 54, 3, 16, 8, 0, 53, 51, 1, 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 63, 1, 0, 0, 0, 55, 58, 3, 10, 5, 0, 56, 57, 5, 8, 0, 0, 57, 59, 3, 16, 8, 0, 58, 56, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 3, 12, 6, 0, 61, 63, 1, 0, 0, 0, 62, 53, 1, 0, 0, 0, 62, 55, 1, 0, 0, 0, 63, 9, 1, 0, 0, 0, 64, 65, 5, 9, 0, 0, 65, 68, 5, 32, 0, 0, 66, 67, 5, 8, 0, 0, 67, 69, 3, 16, 8, 0, 68, 66, 1, 0, 0, 0, 68, 69, 1, 0, 0, 0, 69, 11, 1, 0, 0, 0, 70, 71, 5, 10, 0, 0, 71, 72, 3, 6, 3, 0, 72, 13, 1, 0, 0, 0, 73, 74, 7, 0, 0, 0, 74, 75, 5, 4, 0, 0, 75, 76, 3, 6, 3, 0, 76, 77, 5, 5, 0, 0, 77, 15, 1, 0, 0, 0, 78, 79, 6, 8, -1, 0, 79, 80, 5, 31, 0, 0, 80, 81, 3, 18, 9, 0, 81, 82, 3, 20, 10, 0, 82, 86, 1, 0, 0, 0, 83, 84, 5, 31, 0, 0, 84, 86, 7, 1, 0, 0, 85, 78, 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, 86, 92, 1, 0, 0, 0, 87, 88, 10, 2, 0, 0, 88, 89, 7, 2, 0, 0, 89, 91, 3, 16, 8, 3, 90, 87, 1, 0, 0, 0, 91, 94, 1, 0, 0, 0, 92, 90, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 17, 1, 0, 0, 0, 94, 92, 1, 0, 0, 0, 95, 96, 7, 3, 0, 0, 96, 19, 1, 0, 0, 0, 97, 98, 7, 4, 0, 0, 98, 21, 1, 0, 0, 0, 10, 28, 37, 44, 47, 53, 58, 62, 68, 85, 92] \ No newline at end of file diff --git a/processor/stream_processor/parser/Sql.tokens b/processor/stream_processor/parser/Sql.tokens index 5c4b5e8edba0..dc7bcb663240 100644 --- a/processor/stream_processor/parser/Sql.tokens +++ b/processor/stream_processor/parser/Sql.tokens @@ -1,41 +1,42 @@ SPACE=1 -COMMA=2 -L_BRACKET=3 -R_BRACKET=4 -EOQ=5 -K_SELECT=6 -K_WHERE=7 -K_WINDOW_TUMBLING=8 -K_GROUP_BY=9 -K_AND=10 -K_OR=11 -K_IS=12 -K_LIKE=13 -K_EQUAL=14 -K_GREATER=15 -K_LESS=16 -K_LESS_EQUAL=17 -K_GREATER_EQUAL=18 -K_NOT_EQUAL=19 -K_NULL=20 -K_IS_NULL=21 -K_IS_NOT_NULL=22 -K_NOT=23 -K_NOT_IN=24 -K_IN=25 -K_COUNT=26 -K_MIN=27 -K_MAX=28 -K_AVG=29 -IDENTIFIER=30 -NUMERIC_LITERAL=31 -STRING_LITERAL=32 -STAR=33 -','=2 -'('=3 -')'=4 -';'=5 -'='=14 -'>'=15 -'<'=16 -'*'=33 +WS=2 +COMMA=3 +L_BRACKET=4 +R_BRACKET=5 +EOQ=6 +K_SELECT=7 +K_WHERE=8 +K_WINDOW_TUMBLING=9 +K_GROUP_BY=10 +K_AND=11 +K_OR=12 +K_IS=13 +K_LIKE=14 +K_EQUAL=15 +K_GREATER=16 +K_LESS=17 +K_LESS_EQUAL=18 +K_GREATER_EQUAL=19 +K_NOT_EQUAL=20 +K_NULL=21 +K_IS_NULL=22 +K_IS_NOT_NULL=23 +K_NOT=24 +K_NOT_IN=25 +K_IN=26 +K_COUNT=27 +K_MIN=28 +K_MAX=29 +K_AVG=30 +IDENTIFIER=31 +NUMERIC_LITERAL=32 +STRING_LITERAL=33 +STAR=34 +','=3 +'('=4 +')'=5 +';'=6 +'='=15 +'>'=16 +'<'=17 +'*'=34 diff --git a/processor/stream_processor/parser/SqlLexer.interp b/processor/stream_processor/parser/SqlLexer.interp new file mode 100644 index 000000000000..694dc8f06eba --- /dev/null +++ b/processor/stream_processor/parser/SqlLexer.interp @@ -0,0 +1,146 @@ +token literal names: +null +null +null +',' +'(' +')' +';' +null +null +null +null +null +null +null +null +'=' +'>' +'<' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +'*' + +token symbolic names: +null +SPACE +WS +COMMA +L_BRACKET +R_BRACKET +EOQ +K_SELECT +K_WHERE +K_WINDOW_TUMBLING +K_GROUP_BY +K_AND +K_OR +K_IS +K_LIKE +K_EQUAL +K_GREATER +K_LESS +K_LESS_EQUAL +K_GREATER_EQUAL +K_NOT_EQUAL +K_NULL +K_IS_NULL +K_IS_NOT_NULL +K_NOT +K_NOT_IN +K_IN +K_COUNT +K_MIN +K_MAX +K_AVG +IDENTIFIER +NUMERIC_LITERAL +STRING_LITERAL +STAR + +rule names: +SPACE +WS +COMMA +L_BRACKET +R_BRACKET +EOQ +K_SELECT +K_WHERE +K_WINDOW_TUMBLING +K_GROUP_BY +K_AND +K_OR +K_IS +K_LIKE +K_EQUAL +K_GREATER +K_LESS +K_LESS_EQUAL +K_GREATER_EQUAL +K_NOT_EQUAL +K_NULL +K_IS_NULL +K_IS_NOT_NULL +K_NOT +K_NOT_IN +K_IN +K_COUNT +K_MIN +K_MAX +K_AVG +IDENTIFIER +NUMERIC_LITERAL +STRING_LITERAL +STAR +DIGIT +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +X +Y +Z + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[4, 0, 34, 403, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 129, 8, 1, 11, 1, 12, 1, 130, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 260, 8, 30, 10, 30, 12, 30, 263, 9, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 270, 8, 30, 10, 30, 12, 30, 273, 9, 30, 1, 30, 1, 30, 1, 30, 5, 30, 278, 8, 30, 10, 30, 12, 30, 281, 9, 30, 1, 30, 1, 30, 1, 30, 5, 30, 286, 8, 30, 10, 30, 12, 30, 289, 9, 30, 3, 30, 291, 8, 30, 1, 31, 4, 31, 294, 8, 31, 11, 31, 12, 31, 295, 1, 31, 1, 31, 5, 31, 300, 8, 31, 10, 31, 12, 31, 303, 9, 31, 3, 31, 305, 8, 31, 1, 31, 1, 31, 3, 31, 309, 8, 31, 1, 31, 4, 31, 312, 8, 31, 11, 31, 12, 31, 313, 3, 31, 316, 8, 31, 1, 31, 1, 31, 4, 31, 320, 8, 31, 11, 31, 12, 31, 321, 1, 31, 1, 31, 3, 31, 326, 8, 31, 1, 31, 4, 31, 329, 8, 31, 11, 31, 12, 31, 330, 3, 31, 333, 8, 31, 3, 31, 335, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 341, 8, 32, 10, 32, 12, 32, 344, 9, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 0, 0, 61, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 0, 71, 0, 73, 0, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 398, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 1, 123, 1, 0, 0, 0, 3, 128, 1, 0, 0, 0, 5, 134, 1, 0, 0, 0, 7, 136, 1, 0, 0, 0, 9, 138, 1, 0, 0, 0, 11, 140, 1, 0, 0, 0, 13, 142, 1, 0, 0, 0, 15, 149, 1, 0, 0, 0, 17, 155, 1, 0, 0, 0, 19, 171, 1, 0, 0, 0, 21, 180, 1, 0, 0, 0, 23, 184, 1, 0, 0, 0, 25, 187, 1, 0, 0, 0, 27, 190, 1, 0, 0, 0, 29, 195, 1, 0, 0, 0, 31, 197, 1, 0, 0, 0, 33, 199, 1, 0, 0, 0, 35, 201, 1, 0, 0, 0, 37, 204, 1, 0, 0, 0, 39, 207, 1, 0, 0, 0, 41, 210, 1, 0, 0, 0, 43, 215, 1, 0, 0, 0, 45, 219, 1, 0, 0, 0, 47, 225, 1, 0, 0, 0, 49, 229, 1, 0, 0, 0, 51, 234, 1, 0, 0, 0, 53, 237, 1, 0, 0, 0, 55, 243, 1, 0, 0, 0, 57, 247, 1, 0, 0, 0, 59, 251, 1, 0, 0, 0, 61, 290, 1, 0, 0, 0, 63, 334, 1, 0, 0, 0, 65, 336, 1, 0, 0, 0, 67, 347, 1, 0, 0, 0, 69, 349, 1, 0, 0, 0, 71, 351, 1, 0, 0, 0, 73, 353, 1, 0, 0, 0, 75, 355, 1, 0, 0, 0, 77, 357, 1, 0, 0, 0, 79, 359, 1, 0, 0, 0, 81, 361, 1, 0, 0, 0, 83, 363, 1, 0, 0, 0, 85, 365, 1, 0, 0, 0, 87, 367, 1, 0, 0, 0, 89, 369, 1, 0, 0, 0, 91, 371, 1, 0, 0, 0, 93, 373, 1, 0, 0, 0, 95, 375, 1, 0, 0, 0, 97, 377, 1, 0, 0, 0, 99, 379, 1, 0, 0, 0, 101, 381, 1, 0, 0, 0, 103, 383, 1, 0, 0, 0, 105, 385, 1, 0, 0, 0, 107, 387, 1, 0, 0, 0, 109, 389, 1, 0, 0, 0, 111, 391, 1, 0, 0, 0, 113, 393, 1, 0, 0, 0, 115, 395, 1, 0, 0, 0, 117, 397, 1, 0, 0, 0, 119, 399, 1, 0, 0, 0, 121, 401, 1, 0, 0, 0, 123, 124, 7, 0, 0, 0, 124, 125, 1, 0, 0, 0, 125, 126, 6, 0, 0, 0, 126, 2, 1, 0, 0, 0, 127, 129, 7, 1, 0, 0, 128, 127, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 128, 1, 0, 0, 0, 130, 131, 1, 0, 0, 0, 131, 132, 1, 0, 0, 0, 132, 133, 6, 1, 1, 0, 133, 4, 1, 0, 0, 0, 134, 135, 5, 44, 0, 0, 135, 6, 1, 0, 0, 0, 136, 137, 5, 40, 0, 0, 137, 8, 1, 0, 0, 0, 138, 139, 5, 41, 0, 0, 139, 10, 1, 0, 0, 0, 140, 141, 5, 59, 0, 0, 141, 12, 1, 0, 0, 0, 142, 143, 3, 107, 53, 0, 143, 144, 3, 79, 39, 0, 144, 145, 3, 93, 46, 0, 145, 146, 3, 79, 39, 0, 146, 147, 3, 75, 37, 0, 147, 148, 3, 109, 54, 0, 148, 14, 1, 0, 0, 0, 149, 150, 3, 115, 57, 0, 150, 151, 3, 85, 42, 0, 151, 152, 3, 79, 39, 0, 152, 153, 3, 105, 52, 0, 153, 154, 3, 79, 39, 0, 154, 16, 1, 0, 0, 0, 155, 156, 3, 115, 57, 0, 156, 157, 3, 87, 43, 0, 157, 158, 3, 97, 48, 0, 158, 159, 3, 77, 38, 0, 159, 160, 3, 99, 49, 0, 160, 161, 3, 115, 57, 0, 161, 162, 3, 1, 0, 0, 162, 163, 3, 109, 54, 0, 163, 164, 3, 111, 55, 0, 164, 165, 3, 95, 47, 0, 165, 166, 3, 73, 36, 0, 166, 167, 3, 93, 46, 0, 167, 168, 3, 87, 43, 0, 168, 169, 3, 97, 48, 0, 169, 170, 3, 83, 41, 0, 170, 18, 1, 0, 0, 0, 171, 172, 3, 83, 41, 0, 172, 173, 3, 105, 52, 0, 173, 174, 3, 99, 49, 0, 174, 175, 3, 111, 55, 0, 175, 176, 3, 101, 50, 0, 176, 177, 3, 1, 0, 0, 177, 178, 3, 73, 36, 0, 178, 179, 3, 119, 59, 0, 179, 20, 1, 0, 0, 0, 180, 181, 3, 71, 35, 0, 181, 182, 3, 97, 48, 0, 182, 183, 3, 77, 38, 0, 183, 22, 1, 0, 0, 0, 184, 185, 3, 99, 49, 0, 185, 186, 3, 105, 52, 0, 186, 24, 1, 0, 0, 0, 187, 188, 3, 87, 43, 0, 188, 189, 3, 107, 53, 0, 189, 26, 1, 0, 0, 0, 190, 191, 3, 93, 46, 0, 191, 192, 3, 87, 43, 0, 192, 193, 3, 91, 45, 0, 193, 194, 3, 79, 39, 0, 194, 28, 1, 0, 0, 0, 195, 196, 5, 61, 0, 0, 196, 30, 1, 0, 0, 0, 197, 198, 5, 62, 0, 0, 198, 32, 1, 0, 0, 0, 199, 200, 5, 60, 0, 0, 200, 34, 1, 0, 0, 0, 201, 202, 3, 33, 16, 0, 202, 203, 3, 29, 14, 0, 203, 36, 1, 0, 0, 0, 204, 205, 3, 31, 15, 0, 205, 206, 3, 29, 14, 0, 206, 38, 1, 0, 0, 0, 207, 208, 5, 33, 0, 0, 208, 209, 3, 29, 14, 0, 209, 40, 1, 0, 0, 0, 210, 211, 3, 97, 48, 0, 211, 212, 3, 111, 55, 0, 212, 213, 3, 93, 46, 0, 213, 214, 3, 93, 46, 0, 214, 42, 1, 0, 0, 0, 215, 216, 3, 25, 12, 0, 216, 217, 3, 1, 0, 0, 217, 218, 3, 41, 20, 0, 218, 44, 1, 0, 0, 0, 219, 220, 3, 25, 12, 0, 220, 221, 3, 1, 0, 0, 221, 222, 3, 47, 23, 0, 222, 223, 3, 1, 0, 0, 223, 224, 3, 41, 20, 0, 224, 46, 1, 0, 0, 0, 225, 226, 3, 97, 48, 0, 226, 227, 3, 99, 49, 0, 227, 228, 3, 109, 54, 0, 228, 48, 1, 0, 0, 0, 229, 230, 3, 47, 23, 0, 230, 231, 3, 1, 0, 0, 231, 232, 3, 87, 43, 0, 232, 233, 3, 97, 48, 0, 233, 50, 1, 0, 0, 0, 234, 235, 3, 87, 43, 0, 235, 236, 3, 97, 48, 0, 236, 52, 1, 0, 0, 0, 237, 238, 3, 75, 37, 0, 238, 239, 3, 99, 49, 0, 239, 240, 3, 111, 55, 0, 240, 241, 3, 97, 48, 0, 241, 242, 3, 109, 54, 0, 242, 54, 1, 0, 0, 0, 243, 244, 3, 95, 47, 0, 244, 245, 3, 87, 43, 0, 245, 246, 3, 97, 48, 0, 246, 56, 1, 0, 0, 0, 247, 248, 3, 95, 47, 0, 248, 249, 3, 71, 35, 0, 249, 250, 3, 117, 58, 0, 250, 58, 1, 0, 0, 0, 251, 252, 3, 71, 35, 0, 252, 253, 3, 113, 56, 0, 253, 254, 3, 83, 41, 0, 254, 60, 1, 0, 0, 0, 255, 261, 5, 34, 0, 0, 256, 260, 8, 2, 0, 0, 257, 258, 5, 34, 0, 0, 258, 260, 5, 34, 0, 0, 259, 256, 1, 0, 0, 0, 259, 257, 1, 0, 0, 0, 260, 263, 1, 0, 0, 0, 261, 259, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 264, 1, 0, 0, 0, 263, 261, 1, 0, 0, 0, 264, 291, 5, 34, 0, 0, 265, 271, 5, 96, 0, 0, 266, 270, 8, 3, 0, 0, 267, 268, 5, 96, 0, 0, 268, 270, 5, 96, 0, 0, 269, 266, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 270, 273, 1, 0, 0, 0, 271, 269, 1, 0, 0, 0, 271, 272, 1, 0, 0, 0, 272, 274, 1, 0, 0, 0, 273, 271, 1, 0, 0, 0, 274, 291, 5, 96, 0, 0, 275, 279, 5, 91, 0, 0, 276, 278, 8, 4, 0, 0, 277, 276, 1, 0, 0, 0, 278, 281, 1, 0, 0, 0, 279, 277, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 282, 1, 0, 0, 0, 281, 279, 1, 0, 0, 0, 282, 291, 5, 93, 0, 0, 283, 287, 7, 5, 0, 0, 284, 286, 7, 6, 0, 0, 285, 284, 1, 0, 0, 0, 286, 289, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 287, 288, 1, 0, 0, 0, 288, 291, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 290, 255, 1, 0, 0, 0, 290, 265, 1, 0, 0, 0, 290, 275, 1, 0, 0, 0, 290, 283, 1, 0, 0, 0, 291, 62, 1, 0, 0, 0, 292, 294, 3, 69, 34, 0, 293, 292, 1, 0, 0, 0, 294, 295, 1, 0, 0, 0, 295, 293, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 304, 1, 0, 0, 0, 297, 301, 5, 46, 0, 0, 298, 300, 3, 69, 34, 0, 299, 298, 1, 0, 0, 0, 300, 303, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 305, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 304, 297, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 315, 1, 0, 0, 0, 306, 308, 3, 79, 39, 0, 307, 309, 7, 7, 0, 0, 308, 307, 1, 0, 0, 0, 308, 309, 1, 0, 0, 0, 309, 311, 1, 0, 0, 0, 310, 312, 3, 69, 34, 0, 311, 310, 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 316, 1, 0, 0, 0, 315, 306, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 335, 1, 0, 0, 0, 317, 319, 5, 46, 0, 0, 318, 320, 3, 69, 34, 0, 319, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 332, 1, 0, 0, 0, 323, 325, 3, 79, 39, 0, 324, 326, 7, 7, 0, 0, 325, 324, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, 326, 328, 1, 0, 0, 0, 327, 329, 3, 69, 34, 0, 328, 327, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 328, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 333, 1, 0, 0, 0, 332, 323, 1, 0, 0, 0, 332, 333, 1, 0, 0, 0, 333, 335, 1, 0, 0, 0, 334, 293, 1, 0, 0, 0, 334, 317, 1, 0, 0, 0, 335, 64, 1, 0, 0, 0, 336, 342, 5, 39, 0, 0, 337, 341, 8, 8, 0, 0, 338, 339, 5, 39, 0, 0, 339, 341, 5, 39, 0, 0, 340, 337, 1, 0, 0, 0, 340, 338, 1, 0, 0, 0, 341, 344, 1, 0, 0, 0, 342, 340, 1, 0, 0, 0, 342, 343, 1, 0, 0, 0, 343, 345, 1, 0, 0, 0, 344, 342, 1, 0, 0, 0, 345, 346, 5, 39, 0, 0, 346, 66, 1, 0, 0, 0, 347, 348, 5, 42, 0, 0, 348, 68, 1, 0, 0, 0, 349, 350, 7, 9, 0, 0, 350, 70, 1, 0, 0, 0, 351, 352, 7, 10, 0, 0, 352, 72, 1, 0, 0, 0, 353, 354, 7, 11, 0, 0, 354, 74, 1, 0, 0, 0, 355, 356, 7, 12, 0, 0, 356, 76, 1, 0, 0, 0, 357, 358, 7, 13, 0, 0, 358, 78, 1, 0, 0, 0, 359, 360, 7, 14, 0, 0, 360, 80, 1, 0, 0, 0, 361, 362, 7, 15, 0, 0, 362, 82, 1, 0, 0, 0, 363, 364, 7, 16, 0, 0, 364, 84, 1, 0, 0, 0, 365, 366, 7, 17, 0, 0, 366, 86, 1, 0, 0, 0, 367, 368, 7, 18, 0, 0, 368, 88, 1, 0, 0, 0, 369, 370, 7, 19, 0, 0, 370, 90, 1, 0, 0, 0, 371, 372, 7, 20, 0, 0, 372, 92, 1, 0, 0, 0, 373, 374, 7, 21, 0, 0, 374, 94, 1, 0, 0, 0, 375, 376, 7, 22, 0, 0, 376, 96, 1, 0, 0, 0, 377, 378, 7, 23, 0, 0, 378, 98, 1, 0, 0, 0, 379, 380, 7, 24, 0, 0, 380, 100, 1, 0, 0, 0, 381, 382, 7, 25, 0, 0, 382, 102, 1, 0, 0, 0, 383, 384, 7, 26, 0, 0, 384, 104, 1, 0, 0, 0, 385, 386, 7, 27, 0, 0, 386, 106, 1, 0, 0, 0, 387, 388, 7, 28, 0, 0, 388, 108, 1, 0, 0, 0, 389, 390, 7, 29, 0, 0, 390, 110, 1, 0, 0, 0, 391, 392, 7, 30, 0, 0, 392, 112, 1, 0, 0, 0, 393, 394, 7, 31, 0, 0, 394, 114, 1, 0, 0, 0, 395, 396, 7, 32, 0, 0, 396, 116, 1, 0, 0, 0, 397, 398, 7, 33, 0, 0, 398, 118, 1, 0, 0, 0, 399, 400, 7, 34, 0, 0, 400, 120, 1, 0, 0, 0, 401, 402, 7, 35, 0, 0, 402, 122, 1, 0, 0, 0, 22, 0, 130, 259, 261, 269, 271, 279, 287, 290, 295, 301, 304, 308, 313, 315, 321, 325, 330, 332, 334, 340, 342, 2, 0, 1, 0, 6, 0, 0] \ No newline at end of file diff --git a/processor/stream_processor/parser/SqlLexer.tokens b/processor/stream_processor/parser/SqlLexer.tokens new file mode 100644 index 000000000000..dc7bcb663240 --- /dev/null +++ b/processor/stream_processor/parser/SqlLexer.tokens @@ -0,0 +1,42 @@ +SPACE=1 +WS=2 +COMMA=3 +L_BRACKET=4 +R_BRACKET=5 +EOQ=6 +K_SELECT=7 +K_WHERE=8 +K_WINDOW_TUMBLING=9 +K_GROUP_BY=10 +K_AND=11 +K_OR=12 +K_IS=13 +K_LIKE=14 +K_EQUAL=15 +K_GREATER=16 +K_LESS=17 +K_LESS_EQUAL=18 +K_GREATER_EQUAL=19 +K_NOT_EQUAL=20 +K_NULL=21 +K_IS_NULL=22 +K_IS_NOT_NULL=23 +K_NOT=24 +K_NOT_IN=25 +K_IN=26 +K_COUNT=27 +K_MIN=28 +K_MAX=29 +K_AVG=30 +IDENTIFIER=31 +NUMERIC_LITERAL=32 +STRING_LITERAL=33 +STAR=34 +','=3 +'('=4 +')'=5 +';'=6 +'='=15 +'>'=16 +'<'=17 +'*'=34 diff --git a/processor/stream_processor/parser/sqlLexer.interp b/processor/stream_processor/parser/sqlLexer.interp deleted file mode 100644 index 424787f5f654..000000000000 --- a/processor/stream_processor/parser/sqlLexer.interp +++ /dev/null @@ -1,143 +0,0 @@ -token literal names: -null -null -',' -'(' -')' -';' -null -null -null -null -null -null -null -null -'=' -'>' -'<' -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -'*' - -token symbolic names: -null -SPACE -COMMA -L_BRACKET -R_BRACKET -EOQ -K_SELECT -K_WHERE -K_WINDOW_TUMBLING -K_GROUP_BY -K_AND -K_OR -K_IS -K_LIKE -K_EQUAL -K_GREATER -K_LESS -K_LESS_EQUAL -K_GREATER_EQUAL -K_NOT_EQUAL -K_NULL -K_IS_NULL -K_IS_NOT_NULL -K_NOT -K_NOT_IN -K_IN -K_COUNT -K_MIN -K_MAX -K_AVG -IDENTIFIER -NUMERIC_LITERAL -STRING_LITERAL -STAR - -rule names: -SPACE -COMMA -L_BRACKET -R_BRACKET -EOQ -K_SELECT -K_WHERE -K_WINDOW_TUMBLING -K_GROUP_BY -K_AND -K_OR -K_IS -K_LIKE -K_EQUAL -K_GREATER -K_LESS -K_LESS_EQUAL -K_GREATER_EQUAL -K_NOT_EQUAL -K_NULL -K_IS_NULL -K_IS_NOT_NULL -K_NOT -K_NOT_IN -K_IN -K_COUNT -K_MIN -K_MAX -K_AVG -IDENTIFIER -NUMERIC_LITERAL -STRING_LITERAL -STAR -DIGIT -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P -Q -R -S -T -U -V -W -X -Y -Z - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE - -atn: -[4, 0, 33, 394, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 251, 8, 29, 10, 29, 12, 29, 254, 9, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 261, 8, 29, 10, 29, 12, 29, 264, 9, 29, 1, 29, 1, 29, 1, 29, 5, 29, 269, 8, 29, 10, 29, 12, 29, 272, 9, 29, 1, 29, 1, 29, 1, 29, 5, 29, 277, 8, 29, 10, 29, 12, 29, 280, 9, 29, 3, 29, 282, 8, 29, 1, 30, 4, 30, 285, 8, 30, 11, 30, 12, 30, 286, 1, 30, 1, 30, 5, 30, 291, 8, 30, 10, 30, 12, 30, 294, 9, 30, 3, 30, 296, 8, 30, 1, 30, 1, 30, 3, 30, 300, 8, 30, 1, 30, 4, 30, 303, 8, 30, 11, 30, 12, 30, 304, 3, 30, 307, 8, 30, 1, 30, 1, 30, 4, 30, 311, 8, 30, 11, 30, 12, 30, 312, 1, 30, 1, 30, 3, 30, 317, 8, 30, 1, 30, 4, 30, 320, 8, 30, 11, 30, 12, 30, 321, 3, 30, 324, 8, 30, 3, 30, 326, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 332, 8, 31, 10, 31, 12, 31, 335, 9, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 0, 0, 60, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 0, 69, 0, 71, 0, 73, 0, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 1, 0, 35, 3, 0, 9, 11, 13, 13, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 388, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 1, 121, 1, 0, 0, 0, 3, 125, 1, 0, 0, 0, 5, 127, 1, 0, 0, 0, 7, 129, 1, 0, 0, 0, 9, 131, 1, 0, 0, 0, 11, 133, 1, 0, 0, 0, 13, 140, 1, 0, 0, 0, 15, 146, 1, 0, 0, 0, 17, 162, 1, 0, 0, 0, 19, 171, 1, 0, 0, 0, 21, 175, 1, 0, 0, 0, 23, 178, 1, 0, 0, 0, 25, 181, 1, 0, 0, 0, 27, 186, 1, 0, 0, 0, 29, 188, 1, 0, 0, 0, 31, 190, 1, 0, 0, 0, 33, 192, 1, 0, 0, 0, 35, 195, 1, 0, 0, 0, 37, 198, 1, 0, 0, 0, 39, 201, 1, 0, 0, 0, 41, 206, 1, 0, 0, 0, 43, 210, 1, 0, 0, 0, 45, 216, 1, 0, 0, 0, 47, 220, 1, 0, 0, 0, 49, 225, 1, 0, 0, 0, 51, 228, 1, 0, 0, 0, 53, 234, 1, 0, 0, 0, 55, 238, 1, 0, 0, 0, 57, 242, 1, 0, 0, 0, 59, 281, 1, 0, 0, 0, 61, 325, 1, 0, 0, 0, 63, 327, 1, 0, 0, 0, 65, 338, 1, 0, 0, 0, 67, 340, 1, 0, 0, 0, 69, 342, 1, 0, 0, 0, 71, 344, 1, 0, 0, 0, 73, 346, 1, 0, 0, 0, 75, 348, 1, 0, 0, 0, 77, 350, 1, 0, 0, 0, 79, 352, 1, 0, 0, 0, 81, 354, 1, 0, 0, 0, 83, 356, 1, 0, 0, 0, 85, 358, 1, 0, 0, 0, 87, 360, 1, 0, 0, 0, 89, 362, 1, 0, 0, 0, 91, 364, 1, 0, 0, 0, 93, 366, 1, 0, 0, 0, 95, 368, 1, 0, 0, 0, 97, 370, 1, 0, 0, 0, 99, 372, 1, 0, 0, 0, 101, 374, 1, 0, 0, 0, 103, 376, 1, 0, 0, 0, 105, 378, 1, 0, 0, 0, 107, 380, 1, 0, 0, 0, 109, 382, 1, 0, 0, 0, 111, 384, 1, 0, 0, 0, 113, 386, 1, 0, 0, 0, 115, 388, 1, 0, 0, 0, 117, 390, 1, 0, 0, 0, 119, 392, 1, 0, 0, 0, 121, 122, 7, 0, 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 6, 0, 0, 0, 124, 2, 1, 0, 0, 0, 125, 126, 5, 44, 0, 0, 126, 4, 1, 0, 0, 0, 127, 128, 5, 40, 0, 0, 128, 6, 1, 0, 0, 0, 129, 130, 5, 41, 0, 0, 130, 8, 1, 0, 0, 0, 131, 132, 5, 59, 0, 0, 132, 10, 1, 0, 0, 0, 133, 134, 3, 105, 52, 0, 134, 135, 3, 77, 38, 0, 135, 136, 3, 91, 45, 0, 136, 137, 3, 77, 38, 0, 137, 138, 3, 73, 36, 0, 138, 139, 3, 107, 53, 0, 139, 12, 1, 0, 0, 0, 140, 141, 3, 113, 56, 0, 141, 142, 3, 83, 41, 0, 142, 143, 3, 77, 38, 0, 143, 144, 3, 103, 51, 0, 144, 145, 3, 77, 38, 0, 145, 14, 1, 0, 0, 0, 146, 147, 3, 113, 56, 0, 147, 148, 3, 85, 42, 0, 148, 149, 3, 95, 47, 0, 149, 150, 3, 75, 37, 0, 150, 151, 3, 97, 48, 0, 151, 152, 3, 113, 56, 0, 152, 153, 3, 1, 0, 0, 153, 154, 3, 107, 53, 0, 154, 155, 3, 109, 54, 0, 155, 156, 3, 93, 46, 0, 156, 157, 3, 71, 35, 0, 157, 158, 3, 91, 45, 0, 158, 159, 3, 85, 42, 0, 159, 160, 3, 95, 47, 0, 160, 161, 3, 81, 40, 0, 161, 16, 1, 0, 0, 0, 162, 163, 3, 81, 40, 0, 163, 164, 3, 103, 51, 0, 164, 165, 3, 97, 48, 0, 165, 166, 3, 109, 54, 0, 166, 167, 3, 99, 49, 0, 167, 168, 3, 1, 0, 0, 168, 169, 3, 71, 35, 0, 169, 170, 3, 117, 58, 0, 170, 18, 1, 0, 0, 0, 171, 172, 3, 69, 34, 0, 172, 173, 3, 95, 47, 0, 173, 174, 3, 75, 37, 0, 174, 20, 1, 0, 0, 0, 175, 176, 3, 97, 48, 0, 176, 177, 3, 103, 51, 0, 177, 22, 1, 0, 0, 0, 178, 179, 3, 85, 42, 0, 179, 180, 3, 105, 52, 0, 180, 24, 1, 0, 0, 0, 181, 182, 3, 91, 45, 0, 182, 183, 3, 85, 42, 0, 183, 184, 3, 89, 44, 0, 184, 185, 3, 77, 38, 0, 185, 26, 1, 0, 0, 0, 186, 187, 5, 61, 0, 0, 187, 28, 1, 0, 0, 0, 188, 189, 5, 62, 0, 0, 189, 30, 1, 0, 0, 0, 190, 191, 5, 60, 0, 0, 191, 32, 1, 0, 0, 0, 192, 193, 3, 31, 15, 0, 193, 194, 3, 27, 13, 0, 194, 34, 1, 0, 0, 0, 195, 196, 3, 29, 14, 0, 196, 197, 3, 27, 13, 0, 197, 36, 1, 0, 0, 0, 198, 199, 5, 33, 0, 0, 199, 200, 3, 27, 13, 0, 200, 38, 1, 0, 0, 0, 201, 202, 3, 95, 47, 0, 202, 203, 3, 109, 54, 0, 203, 204, 3, 91, 45, 0, 204, 205, 3, 91, 45, 0, 205, 40, 1, 0, 0, 0, 206, 207, 3, 23, 11, 0, 207, 208, 3, 1, 0, 0, 208, 209, 3, 39, 19, 0, 209, 42, 1, 0, 0, 0, 210, 211, 3, 23, 11, 0, 211, 212, 3, 1, 0, 0, 212, 213, 3, 45, 22, 0, 213, 214, 3, 1, 0, 0, 214, 215, 3, 39, 19, 0, 215, 44, 1, 0, 0, 0, 216, 217, 3, 95, 47, 0, 217, 218, 3, 97, 48, 0, 218, 219, 3, 107, 53, 0, 219, 46, 1, 0, 0, 0, 220, 221, 3, 45, 22, 0, 221, 222, 3, 1, 0, 0, 222, 223, 3, 85, 42, 0, 223, 224, 3, 95, 47, 0, 224, 48, 1, 0, 0, 0, 225, 226, 3, 85, 42, 0, 226, 227, 3, 95, 47, 0, 227, 50, 1, 0, 0, 0, 228, 229, 3, 73, 36, 0, 229, 230, 3, 97, 48, 0, 230, 231, 3, 109, 54, 0, 231, 232, 3, 95, 47, 0, 232, 233, 3, 107, 53, 0, 233, 52, 1, 0, 0, 0, 234, 235, 3, 93, 46, 0, 235, 236, 3, 85, 42, 0, 236, 237, 3, 95, 47, 0, 237, 54, 1, 0, 0, 0, 238, 239, 3, 93, 46, 0, 239, 240, 3, 69, 34, 0, 240, 241, 3, 115, 57, 0, 241, 56, 1, 0, 0, 0, 242, 243, 3, 69, 34, 0, 243, 244, 3, 111, 55, 0, 244, 245, 3, 81, 40, 0, 245, 58, 1, 0, 0, 0, 246, 252, 5, 34, 0, 0, 247, 251, 8, 1, 0, 0, 248, 249, 5, 34, 0, 0, 249, 251, 5, 34, 0, 0, 250, 247, 1, 0, 0, 0, 250, 248, 1, 0, 0, 0, 251, 254, 1, 0, 0, 0, 252, 250, 1, 0, 0, 0, 252, 253, 1, 0, 0, 0, 253, 255, 1, 0, 0, 0, 254, 252, 1, 0, 0, 0, 255, 282, 5, 34, 0, 0, 256, 262, 5, 96, 0, 0, 257, 261, 8, 2, 0, 0, 258, 259, 5, 96, 0, 0, 259, 261, 5, 96, 0, 0, 260, 257, 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 261, 264, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 265, 1, 0, 0, 0, 264, 262, 1, 0, 0, 0, 265, 282, 5, 96, 0, 0, 266, 270, 5, 91, 0, 0, 267, 269, 8, 3, 0, 0, 268, 267, 1, 0, 0, 0, 269, 272, 1, 0, 0, 0, 270, 268, 1, 0, 0, 0, 270, 271, 1, 0, 0, 0, 271, 273, 1, 0, 0, 0, 272, 270, 1, 0, 0, 0, 273, 282, 5, 93, 0, 0, 274, 278, 7, 4, 0, 0, 275, 277, 7, 5, 0, 0, 276, 275, 1, 0, 0, 0, 277, 280, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 282, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 246, 1, 0, 0, 0, 281, 256, 1, 0, 0, 0, 281, 266, 1, 0, 0, 0, 281, 274, 1, 0, 0, 0, 282, 60, 1, 0, 0, 0, 283, 285, 3, 67, 33, 0, 284, 283, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286, 284, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 295, 1, 0, 0, 0, 288, 292, 5, 46, 0, 0, 289, 291, 3, 67, 33, 0, 290, 289, 1, 0, 0, 0, 291, 294, 1, 0, 0, 0, 292, 290, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 296, 1, 0, 0, 0, 294, 292, 1, 0, 0, 0, 295, 288, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 306, 1, 0, 0, 0, 297, 299, 3, 77, 38, 0, 298, 300, 7, 6, 0, 0, 299, 298, 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 302, 1, 0, 0, 0, 301, 303, 3, 67, 33, 0, 302, 301, 1, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 307, 1, 0, 0, 0, 306, 297, 1, 0, 0, 0, 306, 307, 1, 0, 0, 0, 307, 326, 1, 0, 0, 0, 308, 310, 5, 46, 0, 0, 309, 311, 3, 67, 33, 0, 310, 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 310, 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 323, 1, 0, 0, 0, 314, 316, 3, 77, 38, 0, 315, 317, 7, 6, 0, 0, 316, 315, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 319, 1, 0, 0, 0, 318, 320, 3, 67, 33, 0, 319, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 324, 1, 0, 0, 0, 323, 314, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, 326, 1, 0, 0, 0, 325, 284, 1, 0, 0, 0, 325, 308, 1, 0, 0, 0, 326, 62, 1, 0, 0, 0, 327, 333, 5, 39, 0, 0, 328, 332, 8, 7, 0, 0, 329, 330, 5, 39, 0, 0, 330, 332, 5, 39, 0, 0, 331, 328, 1, 0, 0, 0, 331, 329, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 336, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 337, 5, 39, 0, 0, 337, 64, 1, 0, 0, 0, 338, 339, 5, 42, 0, 0, 339, 66, 1, 0, 0, 0, 340, 341, 7, 8, 0, 0, 341, 68, 1, 0, 0, 0, 342, 343, 7, 9, 0, 0, 343, 70, 1, 0, 0, 0, 344, 345, 7, 10, 0, 0, 345, 72, 1, 0, 0, 0, 346, 347, 7, 11, 0, 0, 347, 74, 1, 0, 0, 0, 348, 349, 7, 12, 0, 0, 349, 76, 1, 0, 0, 0, 350, 351, 7, 13, 0, 0, 351, 78, 1, 0, 0, 0, 352, 353, 7, 14, 0, 0, 353, 80, 1, 0, 0, 0, 354, 355, 7, 15, 0, 0, 355, 82, 1, 0, 0, 0, 356, 357, 7, 16, 0, 0, 357, 84, 1, 0, 0, 0, 358, 359, 7, 17, 0, 0, 359, 86, 1, 0, 0, 0, 360, 361, 7, 18, 0, 0, 361, 88, 1, 0, 0, 0, 362, 363, 7, 19, 0, 0, 363, 90, 1, 0, 0, 0, 364, 365, 7, 20, 0, 0, 365, 92, 1, 0, 0, 0, 366, 367, 7, 21, 0, 0, 367, 94, 1, 0, 0, 0, 368, 369, 7, 22, 0, 0, 369, 96, 1, 0, 0, 0, 370, 371, 7, 23, 0, 0, 371, 98, 1, 0, 0, 0, 372, 373, 7, 24, 0, 0, 373, 100, 1, 0, 0, 0, 374, 375, 7, 25, 0, 0, 375, 102, 1, 0, 0, 0, 376, 377, 7, 26, 0, 0, 377, 104, 1, 0, 0, 0, 378, 379, 7, 27, 0, 0, 379, 106, 1, 0, 0, 0, 380, 381, 7, 28, 0, 0, 381, 108, 1, 0, 0, 0, 382, 383, 7, 29, 0, 0, 383, 110, 1, 0, 0, 0, 384, 385, 7, 30, 0, 0, 385, 112, 1, 0, 0, 0, 386, 387, 7, 31, 0, 0, 387, 114, 1, 0, 0, 0, 388, 389, 7, 32, 0, 0, 389, 116, 1, 0, 0, 0, 390, 391, 7, 33, 0, 0, 391, 118, 1, 0, 0, 0, 392, 393, 7, 34, 0, 0, 393, 120, 1, 0, 0, 0, 21, 0, 250, 252, 260, 262, 270, 278, 281, 286, 292, 295, 299, 304, 306, 312, 316, 321, 323, 325, 331, 333, 1, 0, 1, 0] \ No newline at end of file diff --git a/processor/stream_processor/parser/sqlLexer.tokens b/processor/stream_processor/parser/sqlLexer.tokens deleted file mode 100644 index 5c4b5e8edba0..000000000000 --- a/processor/stream_processor/parser/sqlLexer.tokens +++ /dev/null @@ -1,41 +0,0 @@ -SPACE=1 -COMMA=2 -L_BRACKET=3 -R_BRACKET=4 -EOQ=5 -K_SELECT=6 -K_WHERE=7 -K_WINDOW_TUMBLING=8 -K_GROUP_BY=9 -K_AND=10 -K_OR=11 -K_IS=12 -K_LIKE=13 -K_EQUAL=14 -K_GREATER=15 -K_LESS=16 -K_LESS_EQUAL=17 -K_GREATER_EQUAL=18 -K_NOT_EQUAL=19 -K_NULL=20 -K_IS_NULL=21 -K_IS_NOT_NULL=22 -K_NOT=23 -K_NOT_IN=24 -K_IN=25 -K_COUNT=26 -K_MIN=27 -K_MAX=28 -K_AVG=29 -IDENTIFIER=30 -NUMERIC_LITERAL=31 -STRING_LITERAL=32 -STAR=33 -','=2 -'('=3 -')'=4 -';'=5 -'='=14 -'>'=15 -'<'=16 -'*'=33 diff --git a/processor/stream_processor/parser/sql_base_listener.go b/processor/stream_processor/parser/sql_base_listener.go deleted file mode 100644 index cd534e38bd17..000000000000 --- a/processor/stream_processor/parser/sql_base_listener.go +++ /dev/null @@ -1,88 +0,0 @@ -// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. - -package parser // Sql - -import "github.com/antlr/antlr4/runtime/Go/antlr" - -// BaseSqlListener is a complete listener for a parse tree produced by SqlParser. -type BaseSqlListener struct{} - -var _ SqlListener = &BaseSqlListener{} - -// VisitTerminal is called when a terminal node is visited. -func (s *BaseSqlListener) VisitTerminal(node antlr.TerminalNode) {} - -// VisitErrorNode is called when an error node is visited. -func (s *BaseSqlListener) VisitErrorNode(node antlr.ErrorNode) {} - -// EnterEveryRule is called when any rule is entered. -func (s *BaseSqlListener) EnterEveryRule(ctx antlr.ParserRuleContext) {} - -// ExitEveryRule is called when any rule is exited. -func (s *BaseSqlListener) ExitEveryRule(ctx antlr.ParserRuleContext) {} - -// EnterSqlQuery is called when production sqlQuery is entered. -func (s *BaseSqlListener) EnterSqlQuery(ctx *SqlQueryContext) {} - -// ExitSqlQuery is called when production sqlQuery is exited. -func (s *BaseSqlListener) ExitSqlQuery(ctx *SqlQueryContext) {} - -// EnterSelectQuery is called when production selectQuery is entered. -func (s *BaseSqlListener) EnterSelectQuery(ctx *SelectQueryContext) {} - -// ExitSelectQuery is called when production selectQuery is exited. -func (s *BaseSqlListener) ExitSelectQuery(ctx *SelectQueryContext) {} - -// EnterResultColumns is called when production resultColumns is entered. -func (s *BaseSqlListener) EnterResultColumns(ctx *ResultColumnsContext) {} - -// ExitResultColumns is called when production resultColumns is exited. -func (s *BaseSqlListener) ExitResultColumns(ctx *ResultColumnsContext) {} - -// EnterColumn is called when production column is entered. -func (s *BaseSqlListener) EnterColumn(ctx *ColumnContext) {} - -// ExitColumn is called when production column is exited. -func (s *BaseSqlListener) ExitColumn(ctx *ColumnContext) {} - -// EnterWhereStatement is called when production whereStatement is entered. -func (s *BaseSqlListener) EnterWhereStatement(ctx *WhereStatementContext) {} - -// ExitWhereStatement is called when production whereStatement is exited. -func (s *BaseSqlListener) ExitWhereStatement(ctx *WhereStatementContext) {} - -// EnterTumblingWindow is called when production tumblingWindow is entered. -func (s *BaseSqlListener) EnterTumblingWindow(ctx *TumblingWindowContext) {} - -// ExitTumblingWindow is called when production tumblingWindow is exited. -func (s *BaseSqlListener) ExitTumblingWindow(ctx *TumblingWindowContext) {} - -// EnterGroupBy is called when production groupBy is entered. -func (s *BaseSqlListener) EnterGroupBy(ctx *GroupByContext) {} - -// ExitGroupBy is called when production groupBy is exited. -func (s *BaseSqlListener) ExitGroupBy(ctx *GroupByContext) {} - -// EnterAvg is called when production avg is entered. -func (s *BaseSqlListener) EnterAvg(ctx *AvgContext) {} - -// ExitAvg is called when production avg is exited. -func (s *BaseSqlListener) ExitAvg(ctx *AvgContext) {} - -// EnterExpr is called when production expr is entered. -func (s *BaseSqlListener) EnterExpr(ctx *ExprContext) {} - -// ExitExpr is called when production expr is exited. -func (s *BaseSqlListener) ExitExpr(ctx *ExprContext) {} - -// EnterComparisonOperator is called when production comparisonOperator is entered. -func (s *BaseSqlListener) EnterComparisonOperator(ctx *ComparisonOperatorContext) {} - -// ExitComparisonOperator is called when production comparisonOperator is exited. -func (s *BaseSqlListener) ExitComparisonOperator(ctx *ComparisonOperatorContext) {} - -// EnterLiteralValue is called when production literalValue is entered. -func (s *BaseSqlListener) EnterLiteralValue(ctx *LiteralValueContext) {} - -// ExitLiteralValue is called when production literalValue is exited. -func (s *BaseSqlListener) ExitLiteralValue(ctx *LiteralValueContext) {} diff --git a/processor/stream_processor/parser/sql_base_visitor.go b/processor/stream_processor/parser/sql_base_visitor.go new file mode 100644 index 000000000000..678648baaf47 --- /dev/null +++ b/processor/stream_processor/parser/sql_base_visitor.go @@ -0,0 +1,65 @@ +// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. + +package parser // Sql + +import "github.com/antlr/antlr4/runtime/Go/antlr" + +type BaseSqlVisitor struct { + *antlr.BaseParseTreeVisitor +} + +func (v *BaseSqlVisitor) VisitSqlQuery(ctx *SqlQueryContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitSelectQuery(ctx *SelectQueryContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitSelectColumns(ctx *SelectColumnsContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitSelectAVG(ctx *SelectAVGContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitSelectStar(ctx *SelectStarContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitColumn(ctx *ColumnContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitTumblingStmt(ctx *TumblingStmtContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitTumblingWindow(ctx *TumblingWindowContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitGroupBy(ctx *GroupByContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitAvg(ctx *AvgContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitExpr(ctx *ExprContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitComparisonOperator(ctx *ComparisonOperatorContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitLiteralValue(ctx *LiteralValueContext) interface{} { + return v.VisitChildren(ctx) +} diff --git a/processor/stream_processor/parser/sql_lexer.go b/processor/stream_processor/parser/sql_lexer.go index 2db918272171..f9c05798adf9 100644 --- a/processor/stream_processor/parser/sql_lexer.go +++ b/processor/stream_processor/parser/sql_lexer.go @@ -44,22 +44,22 @@ func sqllexerLexerInit() { "DEFAULT_MODE", } staticData.literalNames = []string{ - "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", "", - "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "'*'", + "", "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", + "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "'*'", } staticData.symbolicNames = []string{ - "", "SPACE", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", "K_WHERE", - "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", "K_LIKE", - "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", + "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", + "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", + "K_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", "K_IN", "K_COUNT", "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", "NUMERIC_LITERAL", "STRING_LITERAL", "STAR", } staticData.ruleNames = []string{ - "SPACE", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", "K_WHERE", - "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", "K_LIKE", - "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", + "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", + "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", + "K_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", "K_IN", "K_COUNT", "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", "NUMERIC_LITERAL", "STRING_LITERAL", "STAR", "DIGIT", "A", "B", "C", "D", "E", "F", "G", @@ -68,7 +68,7 @@ func sqllexerLexerInit() { } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 0, 33, 394, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, + 4, 0, 34, 403, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, @@ -79,172 +79,176 @@ func sqllexerLexerInit() { 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, - 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, - 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, - 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, - 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, - 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, - 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, - 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, - 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, - 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, - 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, - 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, - 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, - 29, 1, 29, 5, 29, 251, 8, 29, 10, 29, 12, 29, 254, 9, 29, 1, 29, 1, 29, - 1, 29, 1, 29, 1, 29, 5, 29, 261, 8, 29, 10, 29, 12, 29, 264, 9, 29, 1, - 29, 1, 29, 1, 29, 5, 29, 269, 8, 29, 10, 29, 12, 29, 272, 9, 29, 1, 29, - 1, 29, 1, 29, 5, 29, 277, 8, 29, 10, 29, 12, 29, 280, 9, 29, 3, 29, 282, - 8, 29, 1, 30, 4, 30, 285, 8, 30, 11, 30, 12, 30, 286, 1, 30, 1, 30, 5, - 30, 291, 8, 30, 10, 30, 12, 30, 294, 9, 30, 3, 30, 296, 8, 30, 1, 30, 1, - 30, 3, 30, 300, 8, 30, 1, 30, 4, 30, 303, 8, 30, 11, 30, 12, 30, 304, 3, - 30, 307, 8, 30, 1, 30, 1, 30, 4, 30, 311, 8, 30, 11, 30, 12, 30, 312, 1, - 30, 1, 30, 3, 30, 317, 8, 30, 1, 30, 4, 30, 320, 8, 30, 11, 30, 12, 30, - 321, 3, 30, 324, 8, 30, 3, 30, 326, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, - 5, 31, 332, 8, 31, 10, 31, 12, 31, 335, 9, 31, 1, 31, 1, 31, 1, 32, 1, - 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, - 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, - 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, - 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, - 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, - 1, 59, 1, 59, 0, 0, 60, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, - 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, - 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, - 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 0, 69, 0, 71, + 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 1, 0, 1, 0, 1, 0, 1, 0, + 1, 1, 4, 1, 129, 8, 1, 11, 1, 12, 1, 130, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, + 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, + 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, + 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, + 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, + 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, + 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, + 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, + 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, + 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, + 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, + 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, + 1, 30, 5, 30, 260, 8, 30, 10, 30, 12, 30, 263, 9, 30, 1, 30, 1, 30, 1, + 30, 1, 30, 1, 30, 5, 30, 270, 8, 30, 10, 30, 12, 30, 273, 9, 30, 1, 30, + 1, 30, 1, 30, 5, 30, 278, 8, 30, 10, 30, 12, 30, 281, 9, 30, 1, 30, 1, + 30, 1, 30, 5, 30, 286, 8, 30, 10, 30, 12, 30, 289, 9, 30, 3, 30, 291, 8, + 30, 1, 31, 4, 31, 294, 8, 31, 11, 31, 12, 31, 295, 1, 31, 1, 31, 5, 31, + 300, 8, 31, 10, 31, 12, 31, 303, 9, 31, 3, 31, 305, 8, 31, 1, 31, 1, 31, + 3, 31, 309, 8, 31, 1, 31, 4, 31, 312, 8, 31, 11, 31, 12, 31, 313, 3, 31, + 316, 8, 31, 1, 31, 1, 31, 4, 31, 320, 8, 31, 11, 31, 12, 31, 321, 1, 31, + 1, 31, 3, 31, 326, 8, 31, 1, 31, 4, 31, 329, 8, 31, 11, 31, 12, 31, 330, + 3, 31, 333, 8, 31, 3, 31, 335, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, + 341, 8, 32, 10, 32, 12, 32, 344, 9, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, + 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, + 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, + 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, + 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, + 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, + 1, 60, 0, 0, 61, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, + 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, + 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, + 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 0, 71, 0, 73, 0, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, - 0, 113, 0, 115, 0, 117, 0, 119, 0, 1, 0, 35, 3, 0, 9, 11, 13, 13, 32, 32, - 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, - 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, - 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, - 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, - 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, - 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, - 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, - 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, - 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, - 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, - 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 388, 0, 1, 1, - 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, - 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, - 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, - 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, - 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, - 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, - 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, - 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, - 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 1, 121, 1, 0, 0, 0, 3, 125, 1, 0, 0, 0, - 5, 127, 1, 0, 0, 0, 7, 129, 1, 0, 0, 0, 9, 131, 1, 0, 0, 0, 11, 133, 1, - 0, 0, 0, 13, 140, 1, 0, 0, 0, 15, 146, 1, 0, 0, 0, 17, 162, 1, 0, 0, 0, - 19, 171, 1, 0, 0, 0, 21, 175, 1, 0, 0, 0, 23, 178, 1, 0, 0, 0, 25, 181, - 1, 0, 0, 0, 27, 186, 1, 0, 0, 0, 29, 188, 1, 0, 0, 0, 31, 190, 1, 0, 0, - 0, 33, 192, 1, 0, 0, 0, 35, 195, 1, 0, 0, 0, 37, 198, 1, 0, 0, 0, 39, 201, - 1, 0, 0, 0, 41, 206, 1, 0, 0, 0, 43, 210, 1, 0, 0, 0, 45, 216, 1, 0, 0, - 0, 47, 220, 1, 0, 0, 0, 49, 225, 1, 0, 0, 0, 51, 228, 1, 0, 0, 0, 53, 234, - 1, 0, 0, 0, 55, 238, 1, 0, 0, 0, 57, 242, 1, 0, 0, 0, 59, 281, 1, 0, 0, - 0, 61, 325, 1, 0, 0, 0, 63, 327, 1, 0, 0, 0, 65, 338, 1, 0, 0, 0, 67, 340, - 1, 0, 0, 0, 69, 342, 1, 0, 0, 0, 71, 344, 1, 0, 0, 0, 73, 346, 1, 0, 0, - 0, 75, 348, 1, 0, 0, 0, 77, 350, 1, 0, 0, 0, 79, 352, 1, 0, 0, 0, 81, 354, - 1, 0, 0, 0, 83, 356, 1, 0, 0, 0, 85, 358, 1, 0, 0, 0, 87, 360, 1, 0, 0, - 0, 89, 362, 1, 0, 0, 0, 91, 364, 1, 0, 0, 0, 93, 366, 1, 0, 0, 0, 95, 368, - 1, 0, 0, 0, 97, 370, 1, 0, 0, 0, 99, 372, 1, 0, 0, 0, 101, 374, 1, 0, 0, - 0, 103, 376, 1, 0, 0, 0, 105, 378, 1, 0, 0, 0, 107, 380, 1, 0, 0, 0, 109, - 382, 1, 0, 0, 0, 111, 384, 1, 0, 0, 0, 113, 386, 1, 0, 0, 0, 115, 388, - 1, 0, 0, 0, 117, 390, 1, 0, 0, 0, 119, 392, 1, 0, 0, 0, 121, 122, 7, 0, - 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 6, 0, 0, 0, 124, 2, 1, 0, 0, 0, 125, - 126, 5, 44, 0, 0, 126, 4, 1, 0, 0, 0, 127, 128, 5, 40, 0, 0, 128, 6, 1, - 0, 0, 0, 129, 130, 5, 41, 0, 0, 130, 8, 1, 0, 0, 0, 131, 132, 5, 59, 0, - 0, 132, 10, 1, 0, 0, 0, 133, 134, 3, 105, 52, 0, 134, 135, 3, 77, 38, 0, - 135, 136, 3, 91, 45, 0, 136, 137, 3, 77, 38, 0, 137, 138, 3, 73, 36, 0, - 138, 139, 3, 107, 53, 0, 139, 12, 1, 0, 0, 0, 140, 141, 3, 113, 56, 0, - 141, 142, 3, 83, 41, 0, 142, 143, 3, 77, 38, 0, 143, 144, 3, 103, 51, 0, - 144, 145, 3, 77, 38, 0, 145, 14, 1, 0, 0, 0, 146, 147, 3, 113, 56, 0, 147, - 148, 3, 85, 42, 0, 148, 149, 3, 95, 47, 0, 149, 150, 3, 75, 37, 0, 150, - 151, 3, 97, 48, 0, 151, 152, 3, 113, 56, 0, 152, 153, 3, 1, 0, 0, 153, - 154, 3, 107, 53, 0, 154, 155, 3, 109, 54, 0, 155, 156, 3, 93, 46, 0, 156, - 157, 3, 71, 35, 0, 157, 158, 3, 91, 45, 0, 158, 159, 3, 85, 42, 0, 159, - 160, 3, 95, 47, 0, 160, 161, 3, 81, 40, 0, 161, 16, 1, 0, 0, 0, 162, 163, - 3, 81, 40, 0, 163, 164, 3, 103, 51, 0, 164, 165, 3, 97, 48, 0, 165, 166, - 3, 109, 54, 0, 166, 167, 3, 99, 49, 0, 167, 168, 3, 1, 0, 0, 168, 169, - 3, 71, 35, 0, 169, 170, 3, 117, 58, 0, 170, 18, 1, 0, 0, 0, 171, 172, 3, - 69, 34, 0, 172, 173, 3, 95, 47, 0, 173, 174, 3, 75, 37, 0, 174, 20, 1, - 0, 0, 0, 175, 176, 3, 97, 48, 0, 176, 177, 3, 103, 51, 0, 177, 22, 1, 0, - 0, 0, 178, 179, 3, 85, 42, 0, 179, 180, 3, 105, 52, 0, 180, 24, 1, 0, 0, - 0, 181, 182, 3, 91, 45, 0, 182, 183, 3, 85, 42, 0, 183, 184, 3, 89, 44, - 0, 184, 185, 3, 77, 38, 0, 185, 26, 1, 0, 0, 0, 186, 187, 5, 61, 0, 0, - 187, 28, 1, 0, 0, 0, 188, 189, 5, 62, 0, 0, 189, 30, 1, 0, 0, 0, 190, 191, - 5, 60, 0, 0, 191, 32, 1, 0, 0, 0, 192, 193, 3, 31, 15, 0, 193, 194, 3, - 27, 13, 0, 194, 34, 1, 0, 0, 0, 195, 196, 3, 29, 14, 0, 196, 197, 3, 27, - 13, 0, 197, 36, 1, 0, 0, 0, 198, 199, 5, 33, 0, 0, 199, 200, 3, 27, 13, - 0, 200, 38, 1, 0, 0, 0, 201, 202, 3, 95, 47, 0, 202, 203, 3, 109, 54, 0, - 203, 204, 3, 91, 45, 0, 204, 205, 3, 91, 45, 0, 205, 40, 1, 0, 0, 0, 206, - 207, 3, 23, 11, 0, 207, 208, 3, 1, 0, 0, 208, 209, 3, 39, 19, 0, 209, 42, - 1, 0, 0, 0, 210, 211, 3, 23, 11, 0, 211, 212, 3, 1, 0, 0, 212, 213, 3, - 45, 22, 0, 213, 214, 3, 1, 0, 0, 214, 215, 3, 39, 19, 0, 215, 44, 1, 0, - 0, 0, 216, 217, 3, 95, 47, 0, 217, 218, 3, 97, 48, 0, 218, 219, 3, 107, - 53, 0, 219, 46, 1, 0, 0, 0, 220, 221, 3, 45, 22, 0, 221, 222, 3, 1, 0, - 0, 222, 223, 3, 85, 42, 0, 223, 224, 3, 95, 47, 0, 224, 48, 1, 0, 0, 0, - 225, 226, 3, 85, 42, 0, 226, 227, 3, 95, 47, 0, 227, 50, 1, 0, 0, 0, 228, - 229, 3, 73, 36, 0, 229, 230, 3, 97, 48, 0, 230, 231, 3, 109, 54, 0, 231, - 232, 3, 95, 47, 0, 232, 233, 3, 107, 53, 0, 233, 52, 1, 0, 0, 0, 234, 235, - 3, 93, 46, 0, 235, 236, 3, 85, 42, 0, 236, 237, 3, 95, 47, 0, 237, 54, - 1, 0, 0, 0, 238, 239, 3, 93, 46, 0, 239, 240, 3, 69, 34, 0, 240, 241, 3, - 115, 57, 0, 241, 56, 1, 0, 0, 0, 242, 243, 3, 69, 34, 0, 243, 244, 3, 111, - 55, 0, 244, 245, 3, 81, 40, 0, 245, 58, 1, 0, 0, 0, 246, 252, 5, 34, 0, - 0, 247, 251, 8, 1, 0, 0, 248, 249, 5, 34, 0, 0, 249, 251, 5, 34, 0, 0, - 250, 247, 1, 0, 0, 0, 250, 248, 1, 0, 0, 0, 251, 254, 1, 0, 0, 0, 252, - 250, 1, 0, 0, 0, 252, 253, 1, 0, 0, 0, 253, 255, 1, 0, 0, 0, 254, 252, - 1, 0, 0, 0, 255, 282, 5, 34, 0, 0, 256, 262, 5, 96, 0, 0, 257, 261, 8, - 2, 0, 0, 258, 259, 5, 96, 0, 0, 259, 261, 5, 96, 0, 0, 260, 257, 1, 0, - 0, 0, 260, 258, 1, 0, 0, 0, 261, 264, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, - 262, 263, 1, 0, 0, 0, 263, 265, 1, 0, 0, 0, 264, 262, 1, 0, 0, 0, 265, - 282, 5, 96, 0, 0, 266, 270, 5, 91, 0, 0, 267, 269, 8, 3, 0, 0, 268, 267, - 1, 0, 0, 0, 269, 272, 1, 0, 0, 0, 270, 268, 1, 0, 0, 0, 270, 271, 1, 0, - 0, 0, 271, 273, 1, 0, 0, 0, 272, 270, 1, 0, 0, 0, 273, 282, 5, 93, 0, 0, - 274, 278, 7, 4, 0, 0, 275, 277, 7, 5, 0, 0, 276, 275, 1, 0, 0, 0, 277, - 280, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 282, - 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 246, 1, 0, 0, 0, 281, 256, 1, 0, - 0, 0, 281, 266, 1, 0, 0, 0, 281, 274, 1, 0, 0, 0, 282, 60, 1, 0, 0, 0, - 283, 285, 3, 67, 33, 0, 284, 283, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286, - 284, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 295, 1, 0, 0, 0, 288, 292, - 5, 46, 0, 0, 289, 291, 3, 67, 33, 0, 290, 289, 1, 0, 0, 0, 291, 294, 1, - 0, 0, 0, 292, 290, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 296, 1, 0, 0, - 0, 294, 292, 1, 0, 0, 0, 295, 288, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, - 306, 1, 0, 0, 0, 297, 299, 3, 77, 38, 0, 298, 300, 7, 6, 0, 0, 299, 298, - 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 302, 1, 0, 0, 0, 301, 303, 3, 67, - 33, 0, 302, 301, 1, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, - 304, 305, 1, 0, 0, 0, 305, 307, 1, 0, 0, 0, 306, 297, 1, 0, 0, 0, 306, - 307, 1, 0, 0, 0, 307, 326, 1, 0, 0, 0, 308, 310, 5, 46, 0, 0, 309, 311, - 3, 67, 33, 0, 310, 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 310, 1, - 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 323, 1, 0, 0, 0, 314, 316, 3, 77, 38, - 0, 315, 317, 7, 6, 0, 0, 316, 315, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, - 319, 1, 0, 0, 0, 318, 320, 3, 67, 33, 0, 319, 318, 1, 0, 0, 0, 320, 321, - 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 324, 1, 0, - 0, 0, 323, 314, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, 326, 1, 0, 0, 0, - 325, 284, 1, 0, 0, 0, 325, 308, 1, 0, 0, 0, 326, 62, 1, 0, 0, 0, 327, 333, - 5, 39, 0, 0, 328, 332, 8, 7, 0, 0, 329, 330, 5, 39, 0, 0, 330, 332, 5, - 39, 0, 0, 331, 328, 1, 0, 0, 0, 331, 329, 1, 0, 0, 0, 332, 335, 1, 0, 0, - 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 336, 1, 0, 0, 0, 335, - 333, 1, 0, 0, 0, 336, 337, 5, 39, 0, 0, 337, 64, 1, 0, 0, 0, 338, 339, - 5, 42, 0, 0, 339, 66, 1, 0, 0, 0, 340, 341, 7, 8, 0, 0, 341, 68, 1, 0, - 0, 0, 342, 343, 7, 9, 0, 0, 343, 70, 1, 0, 0, 0, 344, 345, 7, 10, 0, 0, - 345, 72, 1, 0, 0, 0, 346, 347, 7, 11, 0, 0, 347, 74, 1, 0, 0, 0, 348, 349, - 7, 12, 0, 0, 349, 76, 1, 0, 0, 0, 350, 351, 7, 13, 0, 0, 351, 78, 1, 0, - 0, 0, 352, 353, 7, 14, 0, 0, 353, 80, 1, 0, 0, 0, 354, 355, 7, 15, 0, 0, - 355, 82, 1, 0, 0, 0, 356, 357, 7, 16, 0, 0, 357, 84, 1, 0, 0, 0, 358, 359, - 7, 17, 0, 0, 359, 86, 1, 0, 0, 0, 360, 361, 7, 18, 0, 0, 361, 88, 1, 0, - 0, 0, 362, 363, 7, 19, 0, 0, 363, 90, 1, 0, 0, 0, 364, 365, 7, 20, 0, 0, - 365, 92, 1, 0, 0, 0, 366, 367, 7, 21, 0, 0, 367, 94, 1, 0, 0, 0, 368, 369, - 7, 22, 0, 0, 369, 96, 1, 0, 0, 0, 370, 371, 7, 23, 0, 0, 371, 98, 1, 0, - 0, 0, 372, 373, 7, 24, 0, 0, 373, 100, 1, 0, 0, 0, 374, 375, 7, 25, 0, - 0, 375, 102, 1, 0, 0, 0, 376, 377, 7, 26, 0, 0, 377, 104, 1, 0, 0, 0, 378, - 379, 7, 27, 0, 0, 379, 106, 1, 0, 0, 0, 380, 381, 7, 28, 0, 0, 381, 108, - 1, 0, 0, 0, 382, 383, 7, 29, 0, 0, 383, 110, 1, 0, 0, 0, 384, 385, 7, 30, - 0, 0, 385, 112, 1, 0, 0, 0, 386, 387, 7, 31, 0, 0, 387, 114, 1, 0, 0, 0, - 388, 389, 7, 32, 0, 0, 389, 116, 1, 0, 0, 0, 390, 391, 7, 33, 0, 0, 391, - 118, 1, 0, 0, 0, 392, 393, 7, 34, 0, 0, 393, 120, 1, 0, 0, 0, 21, 0, 250, - 252, 260, 262, 270, 278, 281, 286, 292, 295, 299, 304, 306, 312, 316, 321, - 323, 325, 331, 333, 1, 0, 1, 0, + 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, + 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, + 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, + 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, + 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, + 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, + 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, + 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, + 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, + 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, + 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, + 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, + 90, 122, 122, 398, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, + 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, + 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, + 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, + 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, + 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, + 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, + 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, + 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, + 0, 0, 1, 123, 1, 0, 0, 0, 3, 128, 1, 0, 0, 0, 5, 134, 1, 0, 0, 0, 7, 136, + 1, 0, 0, 0, 9, 138, 1, 0, 0, 0, 11, 140, 1, 0, 0, 0, 13, 142, 1, 0, 0, + 0, 15, 149, 1, 0, 0, 0, 17, 155, 1, 0, 0, 0, 19, 171, 1, 0, 0, 0, 21, 180, + 1, 0, 0, 0, 23, 184, 1, 0, 0, 0, 25, 187, 1, 0, 0, 0, 27, 190, 1, 0, 0, + 0, 29, 195, 1, 0, 0, 0, 31, 197, 1, 0, 0, 0, 33, 199, 1, 0, 0, 0, 35, 201, + 1, 0, 0, 0, 37, 204, 1, 0, 0, 0, 39, 207, 1, 0, 0, 0, 41, 210, 1, 0, 0, + 0, 43, 215, 1, 0, 0, 0, 45, 219, 1, 0, 0, 0, 47, 225, 1, 0, 0, 0, 49, 229, + 1, 0, 0, 0, 51, 234, 1, 0, 0, 0, 53, 237, 1, 0, 0, 0, 55, 243, 1, 0, 0, + 0, 57, 247, 1, 0, 0, 0, 59, 251, 1, 0, 0, 0, 61, 290, 1, 0, 0, 0, 63, 334, + 1, 0, 0, 0, 65, 336, 1, 0, 0, 0, 67, 347, 1, 0, 0, 0, 69, 349, 1, 0, 0, + 0, 71, 351, 1, 0, 0, 0, 73, 353, 1, 0, 0, 0, 75, 355, 1, 0, 0, 0, 77, 357, + 1, 0, 0, 0, 79, 359, 1, 0, 0, 0, 81, 361, 1, 0, 0, 0, 83, 363, 1, 0, 0, + 0, 85, 365, 1, 0, 0, 0, 87, 367, 1, 0, 0, 0, 89, 369, 1, 0, 0, 0, 91, 371, + 1, 0, 0, 0, 93, 373, 1, 0, 0, 0, 95, 375, 1, 0, 0, 0, 97, 377, 1, 0, 0, + 0, 99, 379, 1, 0, 0, 0, 101, 381, 1, 0, 0, 0, 103, 383, 1, 0, 0, 0, 105, + 385, 1, 0, 0, 0, 107, 387, 1, 0, 0, 0, 109, 389, 1, 0, 0, 0, 111, 391, + 1, 0, 0, 0, 113, 393, 1, 0, 0, 0, 115, 395, 1, 0, 0, 0, 117, 397, 1, 0, + 0, 0, 119, 399, 1, 0, 0, 0, 121, 401, 1, 0, 0, 0, 123, 124, 7, 0, 0, 0, + 124, 125, 1, 0, 0, 0, 125, 126, 6, 0, 0, 0, 126, 2, 1, 0, 0, 0, 127, 129, + 7, 1, 0, 0, 128, 127, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 128, 1, 0, + 0, 0, 130, 131, 1, 0, 0, 0, 131, 132, 1, 0, 0, 0, 132, 133, 6, 1, 1, 0, + 133, 4, 1, 0, 0, 0, 134, 135, 5, 44, 0, 0, 135, 6, 1, 0, 0, 0, 136, 137, + 5, 40, 0, 0, 137, 8, 1, 0, 0, 0, 138, 139, 5, 41, 0, 0, 139, 10, 1, 0, + 0, 0, 140, 141, 5, 59, 0, 0, 141, 12, 1, 0, 0, 0, 142, 143, 3, 107, 53, + 0, 143, 144, 3, 79, 39, 0, 144, 145, 3, 93, 46, 0, 145, 146, 3, 79, 39, + 0, 146, 147, 3, 75, 37, 0, 147, 148, 3, 109, 54, 0, 148, 14, 1, 0, 0, 0, + 149, 150, 3, 115, 57, 0, 150, 151, 3, 85, 42, 0, 151, 152, 3, 79, 39, 0, + 152, 153, 3, 105, 52, 0, 153, 154, 3, 79, 39, 0, 154, 16, 1, 0, 0, 0, 155, + 156, 3, 115, 57, 0, 156, 157, 3, 87, 43, 0, 157, 158, 3, 97, 48, 0, 158, + 159, 3, 77, 38, 0, 159, 160, 3, 99, 49, 0, 160, 161, 3, 115, 57, 0, 161, + 162, 3, 1, 0, 0, 162, 163, 3, 109, 54, 0, 163, 164, 3, 111, 55, 0, 164, + 165, 3, 95, 47, 0, 165, 166, 3, 73, 36, 0, 166, 167, 3, 93, 46, 0, 167, + 168, 3, 87, 43, 0, 168, 169, 3, 97, 48, 0, 169, 170, 3, 83, 41, 0, 170, + 18, 1, 0, 0, 0, 171, 172, 3, 83, 41, 0, 172, 173, 3, 105, 52, 0, 173, 174, + 3, 99, 49, 0, 174, 175, 3, 111, 55, 0, 175, 176, 3, 101, 50, 0, 176, 177, + 3, 1, 0, 0, 177, 178, 3, 73, 36, 0, 178, 179, 3, 119, 59, 0, 179, 20, 1, + 0, 0, 0, 180, 181, 3, 71, 35, 0, 181, 182, 3, 97, 48, 0, 182, 183, 3, 77, + 38, 0, 183, 22, 1, 0, 0, 0, 184, 185, 3, 99, 49, 0, 185, 186, 3, 105, 52, + 0, 186, 24, 1, 0, 0, 0, 187, 188, 3, 87, 43, 0, 188, 189, 3, 107, 53, 0, + 189, 26, 1, 0, 0, 0, 190, 191, 3, 93, 46, 0, 191, 192, 3, 87, 43, 0, 192, + 193, 3, 91, 45, 0, 193, 194, 3, 79, 39, 0, 194, 28, 1, 0, 0, 0, 195, 196, + 5, 61, 0, 0, 196, 30, 1, 0, 0, 0, 197, 198, 5, 62, 0, 0, 198, 32, 1, 0, + 0, 0, 199, 200, 5, 60, 0, 0, 200, 34, 1, 0, 0, 0, 201, 202, 3, 33, 16, + 0, 202, 203, 3, 29, 14, 0, 203, 36, 1, 0, 0, 0, 204, 205, 3, 31, 15, 0, + 205, 206, 3, 29, 14, 0, 206, 38, 1, 0, 0, 0, 207, 208, 5, 33, 0, 0, 208, + 209, 3, 29, 14, 0, 209, 40, 1, 0, 0, 0, 210, 211, 3, 97, 48, 0, 211, 212, + 3, 111, 55, 0, 212, 213, 3, 93, 46, 0, 213, 214, 3, 93, 46, 0, 214, 42, + 1, 0, 0, 0, 215, 216, 3, 25, 12, 0, 216, 217, 3, 1, 0, 0, 217, 218, 3, + 41, 20, 0, 218, 44, 1, 0, 0, 0, 219, 220, 3, 25, 12, 0, 220, 221, 3, 1, + 0, 0, 221, 222, 3, 47, 23, 0, 222, 223, 3, 1, 0, 0, 223, 224, 3, 41, 20, + 0, 224, 46, 1, 0, 0, 0, 225, 226, 3, 97, 48, 0, 226, 227, 3, 99, 49, 0, + 227, 228, 3, 109, 54, 0, 228, 48, 1, 0, 0, 0, 229, 230, 3, 47, 23, 0, 230, + 231, 3, 1, 0, 0, 231, 232, 3, 87, 43, 0, 232, 233, 3, 97, 48, 0, 233, 50, + 1, 0, 0, 0, 234, 235, 3, 87, 43, 0, 235, 236, 3, 97, 48, 0, 236, 52, 1, + 0, 0, 0, 237, 238, 3, 75, 37, 0, 238, 239, 3, 99, 49, 0, 239, 240, 3, 111, + 55, 0, 240, 241, 3, 97, 48, 0, 241, 242, 3, 109, 54, 0, 242, 54, 1, 0, + 0, 0, 243, 244, 3, 95, 47, 0, 244, 245, 3, 87, 43, 0, 245, 246, 3, 97, + 48, 0, 246, 56, 1, 0, 0, 0, 247, 248, 3, 95, 47, 0, 248, 249, 3, 71, 35, + 0, 249, 250, 3, 117, 58, 0, 250, 58, 1, 0, 0, 0, 251, 252, 3, 71, 35, 0, + 252, 253, 3, 113, 56, 0, 253, 254, 3, 83, 41, 0, 254, 60, 1, 0, 0, 0, 255, + 261, 5, 34, 0, 0, 256, 260, 8, 2, 0, 0, 257, 258, 5, 34, 0, 0, 258, 260, + 5, 34, 0, 0, 259, 256, 1, 0, 0, 0, 259, 257, 1, 0, 0, 0, 260, 263, 1, 0, + 0, 0, 261, 259, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 264, 1, 0, 0, 0, + 263, 261, 1, 0, 0, 0, 264, 291, 5, 34, 0, 0, 265, 271, 5, 96, 0, 0, 266, + 270, 8, 3, 0, 0, 267, 268, 5, 96, 0, 0, 268, 270, 5, 96, 0, 0, 269, 266, + 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 270, 273, 1, 0, 0, 0, 271, 269, 1, 0, + 0, 0, 271, 272, 1, 0, 0, 0, 272, 274, 1, 0, 0, 0, 273, 271, 1, 0, 0, 0, + 274, 291, 5, 96, 0, 0, 275, 279, 5, 91, 0, 0, 276, 278, 8, 4, 0, 0, 277, + 276, 1, 0, 0, 0, 278, 281, 1, 0, 0, 0, 279, 277, 1, 0, 0, 0, 279, 280, + 1, 0, 0, 0, 280, 282, 1, 0, 0, 0, 281, 279, 1, 0, 0, 0, 282, 291, 5, 93, + 0, 0, 283, 287, 7, 5, 0, 0, 284, 286, 7, 6, 0, 0, 285, 284, 1, 0, 0, 0, + 286, 289, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 287, 288, 1, 0, 0, 0, 288, + 291, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 290, 255, 1, 0, 0, 0, 290, 265, + 1, 0, 0, 0, 290, 275, 1, 0, 0, 0, 290, 283, 1, 0, 0, 0, 291, 62, 1, 0, + 0, 0, 292, 294, 3, 69, 34, 0, 293, 292, 1, 0, 0, 0, 294, 295, 1, 0, 0, + 0, 295, 293, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 304, 1, 0, 0, 0, 297, + 301, 5, 46, 0, 0, 298, 300, 3, 69, 34, 0, 299, 298, 1, 0, 0, 0, 300, 303, + 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 305, 1, 0, + 0, 0, 303, 301, 1, 0, 0, 0, 304, 297, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, + 305, 315, 1, 0, 0, 0, 306, 308, 3, 79, 39, 0, 307, 309, 7, 7, 0, 0, 308, + 307, 1, 0, 0, 0, 308, 309, 1, 0, 0, 0, 309, 311, 1, 0, 0, 0, 310, 312, + 3, 69, 34, 0, 311, 310, 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 311, 1, + 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 316, 1, 0, 0, 0, 315, 306, 1, 0, 0, + 0, 315, 316, 1, 0, 0, 0, 316, 335, 1, 0, 0, 0, 317, 319, 5, 46, 0, 0, 318, + 320, 3, 69, 34, 0, 319, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 319, + 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 332, 1, 0, 0, 0, 323, 325, 3, 79, + 39, 0, 324, 326, 7, 7, 0, 0, 325, 324, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, + 326, 328, 1, 0, 0, 0, 327, 329, 3, 69, 34, 0, 328, 327, 1, 0, 0, 0, 329, + 330, 1, 0, 0, 0, 330, 328, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 333, + 1, 0, 0, 0, 332, 323, 1, 0, 0, 0, 332, 333, 1, 0, 0, 0, 333, 335, 1, 0, + 0, 0, 334, 293, 1, 0, 0, 0, 334, 317, 1, 0, 0, 0, 335, 64, 1, 0, 0, 0, + 336, 342, 5, 39, 0, 0, 337, 341, 8, 8, 0, 0, 338, 339, 5, 39, 0, 0, 339, + 341, 5, 39, 0, 0, 340, 337, 1, 0, 0, 0, 340, 338, 1, 0, 0, 0, 341, 344, + 1, 0, 0, 0, 342, 340, 1, 0, 0, 0, 342, 343, 1, 0, 0, 0, 343, 345, 1, 0, + 0, 0, 344, 342, 1, 0, 0, 0, 345, 346, 5, 39, 0, 0, 346, 66, 1, 0, 0, 0, + 347, 348, 5, 42, 0, 0, 348, 68, 1, 0, 0, 0, 349, 350, 7, 9, 0, 0, 350, + 70, 1, 0, 0, 0, 351, 352, 7, 10, 0, 0, 352, 72, 1, 0, 0, 0, 353, 354, 7, + 11, 0, 0, 354, 74, 1, 0, 0, 0, 355, 356, 7, 12, 0, 0, 356, 76, 1, 0, 0, + 0, 357, 358, 7, 13, 0, 0, 358, 78, 1, 0, 0, 0, 359, 360, 7, 14, 0, 0, 360, + 80, 1, 0, 0, 0, 361, 362, 7, 15, 0, 0, 362, 82, 1, 0, 0, 0, 363, 364, 7, + 16, 0, 0, 364, 84, 1, 0, 0, 0, 365, 366, 7, 17, 0, 0, 366, 86, 1, 0, 0, + 0, 367, 368, 7, 18, 0, 0, 368, 88, 1, 0, 0, 0, 369, 370, 7, 19, 0, 0, 370, + 90, 1, 0, 0, 0, 371, 372, 7, 20, 0, 0, 372, 92, 1, 0, 0, 0, 373, 374, 7, + 21, 0, 0, 374, 94, 1, 0, 0, 0, 375, 376, 7, 22, 0, 0, 376, 96, 1, 0, 0, + 0, 377, 378, 7, 23, 0, 0, 378, 98, 1, 0, 0, 0, 379, 380, 7, 24, 0, 0, 380, + 100, 1, 0, 0, 0, 381, 382, 7, 25, 0, 0, 382, 102, 1, 0, 0, 0, 383, 384, + 7, 26, 0, 0, 384, 104, 1, 0, 0, 0, 385, 386, 7, 27, 0, 0, 386, 106, 1, + 0, 0, 0, 387, 388, 7, 28, 0, 0, 388, 108, 1, 0, 0, 0, 389, 390, 7, 29, + 0, 0, 390, 110, 1, 0, 0, 0, 391, 392, 7, 30, 0, 0, 392, 112, 1, 0, 0, 0, + 393, 394, 7, 31, 0, 0, 394, 114, 1, 0, 0, 0, 395, 396, 7, 32, 0, 0, 396, + 116, 1, 0, 0, 0, 397, 398, 7, 33, 0, 0, 398, 118, 1, 0, 0, 0, 399, 400, + 7, 34, 0, 0, 400, 120, 1, 0, 0, 0, 401, 402, 7, 35, 0, 0, 402, 122, 1, + 0, 0, 0, 22, 0, 130, 259, 261, 269, 271, 279, 287, 290, 295, 301, 304, + 308, 313, 315, 321, 325, 330, 332, 334, 340, 342, 2, 0, 1, 0, 6, 0, 0, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -286,36 +290,37 @@ func NewSqlLexer(input antlr.CharStream) *SqlLexer { // SqlLexer tokens. const ( SqlLexerSPACE = 1 - SqlLexerCOMMA = 2 - SqlLexerL_BRACKET = 3 - SqlLexerR_BRACKET = 4 - SqlLexerEOQ = 5 - SqlLexerK_SELECT = 6 - SqlLexerK_WHERE = 7 - SqlLexerK_WINDOW_TUMBLING = 8 - SqlLexerK_GROUP_BY = 9 - SqlLexerK_AND = 10 - SqlLexerK_OR = 11 - SqlLexerK_IS = 12 - SqlLexerK_LIKE = 13 - SqlLexerK_EQUAL = 14 - SqlLexerK_GREATER = 15 - SqlLexerK_LESS = 16 - SqlLexerK_LESS_EQUAL = 17 - SqlLexerK_GREATER_EQUAL = 18 - SqlLexerK_NOT_EQUAL = 19 - SqlLexerK_NULL = 20 - SqlLexerK_IS_NULL = 21 - SqlLexerK_IS_NOT_NULL = 22 - SqlLexerK_NOT = 23 - SqlLexerK_NOT_IN = 24 - SqlLexerK_IN = 25 - SqlLexerK_COUNT = 26 - SqlLexerK_MIN = 27 - SqlLexerK_MAX = 28 - SqlLexerK_AVG = 29 - SqlLexerIDENTIFIER = 30 - SqlLexerNUMERIC_LITERAL = 31 - SqlLexerSTRING_LITERAL = 32 - SqlLexerSTAR = 33 + SqlLexerWS = 2 + SqlLexerCOMMA = 3 + SqlLexerL_BRACKET = 4 + SqlLexerR_BRACKET = 5 + SqlLexerEOQ = 6 + SqlLexerK_SELECT = 7 + SqlLexerK_WHERE = 8 + SqlLexerK_WINDOW_TUMBLING = 9 + SqlLexerK_GROUP_BY = 10 + SqlLexerK_AND = 11 + SqlLexerK_OR = 12 + SqlLexerK_IS = 13 + SqlLexerK_LIKE = 14 + SqlLexerK_EQUAL = 15 + SqlLexerK_GREATER = 16 + SqlLexerK_LESS = 17 + SqlLexerK_LESS_EQUAL = 18 + SqlLexerK_GREATER_EQUAL = 19 + SqlLexerK_NOT_EQUAL = 20 + SqlLexerK_NULL = 21 + SqlLexerK_IS_NULL = 22 + SqlLexerK_IS_NOT_NULL = 23 + SqlLexerK_NOT = 24 + SqlLexerK_NOT_IN = 25 + SqlLexerK_IN = 26 + SqlLexerK_COUNT = 27 + SqlLexerK_MIN = 28 + SqlLexerK_MAX = 29 + SqlLexerK_AVG = 30 + SqlLexerIDENTIFIER = 31 + SqlLexerNUMERIC_LITERAL = 32 + SqlLexerSTRING_LITERAL = 33 + SqlLexerSTAR = 34 ) diff --git a/processor/stream_processor/parser/sql_lexer_test.go b/processor/stream_processor/parser/sql_lexer_test.go index 1f953e6d0b32..ee78b3b57842 100644 --- a/processor/stream_processor/parser/sql_lexer_test.go +++ b/processor/stream_processor/parser/sql_lexer_test.go @@ -1,7 +1,6 @@ package parser import ( - "context" "fmt" "github.com/antlr/antlr4/runtime/Go/antlr" "go.opentelemetry.io/collector/pdata/pcommon" @@ -24,6 +23,7 @@ func TestSelectExpr(t *testing.T) { } +/* func TestParser(t *testing.T) { is := antlr.NewInputStream("SELEct field1, field2 WHERE field3 > 3 and field4 IS 'test';") @@ -41,6 +41,7 @@ func TestParser(t *testing.T) { antlr.ParseTreeWalkerDefault.Walk(&listener, p.SelectQuery()) } +*/ func createSampleLog() plog.LogRecord { record := plog.NewLogRecord() diff --git a/processor/stream_processor/parser/sql_listener.go b/processor/stream_processor/parser/sql_listener.go deleted file mode 100644 index db0be63157de..000000000000 --- a/processor/stream_processor/parser/sql_listener.go +++ /dev/null @@ -1,76 +0,0 @@ -// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. - -package parser // Sql - -import "github.com/antlr/antlr4/runtime/Go/antlr" - -// SqlListener is a complete listener for a parse tree produced by SqlParser. -type SqlListener interface { - antlr.ParseTreeListener - - // EnterSqlQuery is called when entering the sqlQuery production. - EnterSqlQuery(c *SqlQueryContext) - - // EnterSelectQuery is called when entering the selectQuery production. - EnterSelectQuery(c *SelectQueryContext) - - // EnterResultColumns is called when entering the resultColumns production. - EnterResultColumns(c *ResultColumnsContext) - - // EnterColumn is called when entering the column production. - EnterColumn(c *ColumnContext) - - // EnterWhereStatement is called when entering the whereStatement production. - EnterWhereStatement(c *WhereStatementContext) - - // EnterTumblingWindow is called when entering the tumblingWindow production. - EnterTumblingWindow(c *TumblingWindowContext) - - // EnterGroupBy is called when entering the groupBy production. - EnterGroupBy(c *GroupByContext) - - // EnterAvg is called when entering the avg production. - EnterAvg(c *AvgContext) - - // EnterExpr is called when entering the expr production. - EnterExpr(c *ExprContext) - - // EnterComparisonOperator is called when entering the comparisonOperator production. - EnterComparisonOperator(c *ComparisonOperatorContext) - - // EnterLiteralValue is called when entering the literalValue production. - EnterLiteralValue(c *LiteralValueContext) - - // ExitSqlQuery is called when exiting the sqlQuery production. - ExitSqlQuery(c *SqlQueryContext) - - // ExitSelectQuery is called when exiting the selectQuery production. - ExitSelectQuery(c *SelectQueryContext) - - // ExitResultColumns is called when exiting the resultColumns production. - ExitResultColumns(c *ResultColumnsContext) - - // ExitColumn is called when exiting the column production. - ExitColumn(c *ColumnContext) - - // ExitWhereStatement is called when exiting the whereStatement production. - ExitWhereStatement(c *WhereStatementContext) - - // ExitTumblingWindow is called when exiting the tumblingWindow production. - ExitTumblingWindow(c *TumblingWindowContext) - - // ExitGroupBy is called when exiting the groupBy production. - ExitGroupBy(c *GroupByContext) - - // ExitAvg is called when exiting the avg production. - ExitAvg(c *AvgContext) - - // ExitExpr is called when exiting the expr production. - ExitExpr(c *ExprContext) - - // ExitComparisonOperator is called when exiting the comparisonOperator production. - ExitComparisonOperator(c *ComparisonOperatorContext) - - // ExitLiteralValue is called when exiting the literalValue production. - ExitLiteralValue(c *LiteralValueContext) -} diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index 995018349bb8..22c6db626ce4 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -33,14 +33,14 @@ var sqlParserStaticData struct { func sqlParserInit() { staticData := &sqlParserStaticData staticData.literalNames = []string{ - "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", "", - "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "'*'", + "", "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", + "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "'*'", } staticData.symbolicNames = []string{ - "", "SPACE", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", "K_WHERE", - "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", "K_LIKE", - "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", + "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", + "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", + "K_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", "K_IN", "K_COUNT", "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", "NUMERIC_LITERAL", "STRING_LITERAL", "STAR", @@ -51,7 +51,7 @@ func sqlParserInit() { } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 33, 100, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 34, 100, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 29, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 4, 2, 36, 8, 2, 11, 2, 12, 2, 37, 1, 2, 1, 2, 1, 2, 4, 2, @@ -61,31 +61,31 @@ func sqlParserInit() { 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 86, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 91, 8, 8, 10, 8, 12, 8, 94, 9, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 0, 1, 16, 11, 0, 2, 4, 6, 8, 10, 12, 14, - 16, 18, 20, 0, 5, 1, 0, 26, 29, 1, 0, 21, 22, 1, 0, 10, 11, 2, 0, 12, 19, - 24, 25, 1, 0, 31, 32, 99, 0, 22, 1, 0, 0, 0, 2, 25, 1, 0, 0, 0, 4, 47, + 16, 18, 20, 0, 5, 1, 0, 27, 30, 1, 0, 22, 23, 1, 0, 11, 12, 2, 0, 13, 20, + 25, 26, 1, 0, 32, 33, 99, 0, 22, 1, 0, 0, 0, 2, 25, 1, 0, 0, 0, 4, 47, 1, 0, 0, 0, 6, 49, 1, 0, 0, 0, 8, 62, 1, 0, 0, 0, 10, 64, 1, 0, 0, 0, 12, 70, 1, 0, 0, 0, 14, 73, 1, 0, 0, 0, 16, 85, 1, 0, 0, 0, 18, 95, 1, 0, 0, 0, 20, 97, 1, 0, 0, 0, 22, 23, 3, 2, 1, 0, 23, 24, 5, 0, 0, 1, 24, 1, 1, - 0, 0, 0, 25, 26, 5, 6, 0, 0, 26, 28, 3, 4, 2, 0, 27, 29, 3, 8, 4, 0, 28, - 27, 1, 0, 0, 0, 28, 29, 1, 0, 0, 0, 29, 30, 1, 0, 0, 0, 30, 31, 5, 5, 0, - 0, 31, 3, 1, 0, 0, 0, 32, 35, 3, 6, 3, 0, 33, 34, 5, 2, 0, 0, 34, 36, 3, + 0, 0, 0, 25, 26, 5, 7, 0, 0, 26, 28, 3, 4, 2, 0, 27, 29, 3, 8, 4, 0, 28, + 27, 1, 0, 0, 0, 28, 29, 1, 0, 0, 0, 29, 30, 1, 0, 0, 0, 30, 31, 5, 6, 0, + 0, 31, 3, 1, 0, 0, 0, 32, 35, 3, 6, 3, 0, 33, 34, 5, 3, 0, 0, 34, 36, 3, 6, 3, 0, 35, 33, 1, 0, 0, 0, 36, 37, 1, 0, 0, 0, 37, 35, 1, 0, 0, 0, 37, - 38, 1, 0, 0, 0, 38, 48, 1, 0, 0, 0, 39, 42, 3, 14, 7, 0, 40, 41, 5, 2, + 38, 1, 0, 0, 0, 38, 48, 1, 0, 0, 0, 39, 42, 3, 14, 7, 0, 40, 41, 5, 3, 0, 0, 41, 43, 3, 14, 7, 0, 42, 40, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, - 42, 1, 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 48, 1, 0, 0, 0, 46, 48, 5, 33, + 42, 1, 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 48, 1, 0, 0, 0, 46, 48, 5, 34, 0, 0, 47, 32, 1, 0, 0, 0, 47, 39, 1, 0, 0, 0, 47, 46, 1, 0, 0, 0, 48, 5, - 1, 0, 0, 0, 49, 50, 5, 30, 0, 0, 50, 7, 1, 0, 0, 0, 51, 52, 5, 7, 0, 0, + 1, 0, 0, 0, 49, 50, 5, 31, 0, 0, 50, 7, 1, 0, 0, 0, 51, 52, 5, 8, 0, 0, 52, 54, 3, 16, 8, 0, 53, 51, 1, 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 63, 1, - 0, 0, 0, 55, 58, 3, 10, 5, 0, 56, 57, 5, 7, 0, 0, 57, 59, 3, 16, 8, 0, + 0, 0, 0, 55, 58, 3, 10, 5, 0, 56, 57, 5, 8, 0, 0, 57, 59, 3, 16, 8, 0, 58, 56, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 3, 12, 6, 0, 61, 63, 1, 0, 0, 0, 62, 53, 1, 0, 0, 0, 62, 55, 1, 0, 0, 0, 63, - 9, 1, 0, 0, 0, 64, 65, 5, 8, 0, 0, 65, 68, 5, 31, 0, 0, 66, 67, 5, 7, 0, + 9, 1, 0, 0, 0, 64, 65, 5, 9, 0, 0, 65, 68, 5, 32, 0, 0, 66, 67, 5, 8, 0, 0, 67, 69, 3, 16, 8, 0, 68, 66, 1, 0, 0, 0, 68, 69, 1, 0, 0, 0, 69, 11, - 1, 0, 0, 0, 70, 71, 5, 9, 0, 0, 71, 72, 3, 6, 3, 0, 72, 13, 1, 0, 0, 0, - 73, 74, 7, 0, 0, 0, 74, 75, 5, 3, 0, 0, 75, 76, 3, 6, 3, 0, 76, 77, 5, - 4, 0, 0, 77, 15, 1, 0, 0, 0, 78, 79, 6, 8, -1, 0, 79, 80, 5, 30, 0, 0, + 1, 0, 0, 0, 70, 71, 5, 10, 0, 0, 71, 72, 3, 6, 3, 0, 72, 13, 1, 0, 0, 0, + 73, 74, 7, 0, 0, 0, 74, 75, 5, 4, 0, 0, 75, 76, 3, 6, 3, 0, 76, 77, 5, + 5, 0, 0, 77, 15, 1, 0, 0, 0, 78, 79, 6, 8, -1, 0, 79, 80, 5, 31, 0, 0, 80, 81, 3, 18, 9, 0, 81, 82, 3, 20, 10, 0, 82, 86, 1, 0, 0, 0, 83, 84, - 5, 30, 0, 0, 84, 86, 7, 1, 0, 0, 85, 78, 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, + 5, 31, 0, 0, 84, 86, 7, 1, 0, 0, 85, 78, 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, 86, 92, 1, 0, 0, 0, 87, 88, 10, 2, 0, 0, 88, 89, 7, 2, 0, 0, 89, 91, 3, 16, 8, 3, 90, 87, 1, 0, 0, 0, 91, 94, 1, 0, 0, 0, 92, 90, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 17, 1, 0, 0, 0, 94, 92, 1, 0, 0, 0, 95, 96, 7, 3, 0, @@ -130,38 +130,39 @@ func NewSqlParser(input antlr.TokenStream) *SqlParser { const ( SqlParserEOF = antlr.TokenEOF SqlParserSPACE = 1 - SqlParserCOMMA = 2 - SqlParserL_BRACKET = 3 - SqlParserR_BRACKET = 4 - SqlParserEOQ = 5 - SqlParserK_SELECT = 6 - SqlParserK_WHERE = 7 - SqlParserK_WINDOW_TUMBLING = 8 - SqlParserK_GROUP_BY = 9 - SqlParserK_AND = 10 - SqlParserK_OR = 11 - SqlParserK_IS = 12 - SqlParserK_LIKE = 13 - SqlParserK_EQUAL = 14 - SqlParserK_GREATER = 15 - SqlParserK_LESS = 16 - SqlParserK_LESS_EQUAL = 17 - SqlParserK_GREATER_EQUAL = 18 - SqlParserK_NOT_EQUAL = 19 - SqlParserK_NULL = 20 - SqlParserK_IS_NULL = 21 - SqlParserK_IS_NOT_NULL = 22 - SqlParserK_NOT = 23 - SqlParserK_NOT_IN = 24 - SqlParserK_IN = 25 - SqlParserK_COUNT = 26 - SqlParserK_MIN = 27 - SqlParserK_MAX = 28 - SqlParserK_AVG = 29 - SqlParserIDENTIFIER = 30 - SqlParserNUMERIC_LITERAL = 31 - SqlParserSTRING_LITERAL = 32 - SqlParserSTAR = 33 + SqlParserWS = 2 + SqlParserCOMMA = 3 + SqlParserL_BRACKET = 4 + SqlParserR_BRACKET = 5 + SqlParserEOQ = 6 + SqlParserK_SELECT = 7 + SqlParserK_WHERE = 8 + SqlParserK_WINDOW_TUMBLING = 9 + SqlParserK_GROUP_BY = 10 + SqlParserK_AND = 11 + SqlParserK_OR = 12 + SqlParserK_IS = 13 + SqlParserK_LIKE = 14 + SqlParserK_EQUAL = 15 + SqlParserK_GREATER = 16 + SqlParserK_LESS = 17 + SqlParserK_LESS_EQUAL = 18 + SqlParserK_GREATER_EQUAL = 19 + SqlParserK_NOT_EQUAL = 20 + SqlParserK_NULL = 21 + SqlParserK_IS_NULL = 22 + SqlParserK_IS_NOT_NULL = 23 + SqlParserK_NOT = 24 + SqlParserK_NOT_IN = 25 + SqlParserK_IN = 26 + SqlParserK_COUNT = 27 + SqlParserK_MIN = 28 + SqlParserK_MAX = 29 + SqlParserK_AVG = 30 + SqlParserIDENTIFIER = 31 + SqlParserNUMERIC_LITERAL = 32 + SqlParserSTRING_LITERAL = 33 + SqlParserSTAR = 34 ) // SqlParser rules. @@ -245,15 +246,13 @@ func (s *SqlQueryContext) ToStringTree(ruleNames []string, recog antlr.Recognize return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *SqlQueryContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSqlQuery(s) - } -} +func (s *SqlQueryContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitSqlQuery(s) -func (s *SqlQueryContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSqlQuery(s) + default: + return t.VisitChildren(s) } } @@ -379,15 +378,13 @@ func (s *SelectQueryContext) ToStringTree(ruleNames []string, recog antlr.Recogn return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *SelectQueryContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSelectQuery(s) - } -} +func (s *SelectQueryContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitSelectQuery(s) -func (s *SelectQueryContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSelectQuery(s) + default: + return t.VisitChildren(s) } } @@ -481,20 +478,50 @@ func NewResultColumnsContext(parser antlr.Parser, parent antlr.ParserRuleContext func (s *ResultColumnsContext) GetParser() antlr.Parser { return s.parser } -func (s *ResultColumnsContext) AllColumn() []IColumnContext { +func (s *ResultColumnsContext) CopyFrom(ctx *ResultColumnsContext) { + s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext) +} + +func (s *ResultColumnsContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ResultColumnsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +type SelectAVGContext struct { + *ResultColumnsContext +} + +func NewSelectAVGContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectAVGContext { + var p = new(SelectAVGContext) + + p.ResultColumnsContext = NewEmptyResultColumnsContext() + p.parser = parser + p.CopyFrom(ctx.(*ResultColumnsContext)) + + return p +} + +func (s *SelectAVGContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SelectAVGContext) AllAvg() []IAvgContext { children := s.GetChildren() len := 0 for _, ctx := range children { - if _, ok := ctx.(IColumnContext); ok { + if _, ok := ctx.(IAvgContext); ok { len++ } } - tst := make([]IColumnContext, len) + tst := make([]IAvgContext, len) i := 0 for _, ctx := range children { - if t, ok := ctx.(IColumnContext); ok { - tst[i] = t.(IColumnContext) + if t, ok := ctx.(IAvgContext); ok { + tst[i] = t.(IAvgContext) i++ } } @@ -502,11 +529,11 @@ func (s *ResultColumnsContext) AllColumn() []IColumnContext { return tst } -func (s *ResultColumnsContext) Column(i int) IColumnContext { +func (s *SelectAVGContext) Avg(i int) IAvgContext { var t antlr.RuleContext j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumnContext); ok { + if _, ok := ctx.(IAvgContext); ok { if j == i { t = ctx.(antlr.RuleContext) break @@ -519,31 +546,91 @@ func (s *ResultColumnsContext) Column(i int) IColumnContext { return nil } - return t.(IColumnContext) + return t.(IAvgContext) } -func (s *ResultColumnsContext) AllCOMMA() []antlr.TerminalNode { +func (s *SelectAVGContext) AllCOMMA() []antlr.TerminalNode { return s.GetTokens(SqlParserCOMMA) } -func (s *ResultColumnsContext) COMMA(i int) antlr.TerminalNode { +func (s *SelectAVGContext) COMMA(i int) antlr.TerminalNode { return s.GetToken(SqlParserCOMMA, i) } -func (s *ResultColumnsContext) AllAvg() []IAvgContext { +func (s *SelectAVGContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitSelectAVG(s) + + default: + return t.VisitChildren(s) + } +} + +type SelectStarContext struct { + *ResultColumnsContext +} + +func NewSelectStarContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectStarContext { + var p = new(SelectStarContext) + + p.ResultColumnsContext = NewEmptyResultColumnsContext() + p.parser = parser + p.CopyFrom(ctx.(*ResultColumnsContext)) + + return p +} + +func (s *SelectStarContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SelectStarContext) STAR() antlr.TerminalNode { + return s.GetToken(SqlParserSTAR, 0) +} + +func (s *SelectStarContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitSelectStar(s) + + default: + return t.VisitChildren(s) + } +} + +type SelectColumnsContext struct { + *ResultColumnsContext +} + +func NewSelectColumnsContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectColumnsContext { + var p = new(SelectColumnsContext) + + p.ResultColumnsContext = NewEmptyResultColumnsContext() + p.parser = parser + p.CopyFrom(ctx.(*ResultColumnsContext)) + + return p +} + +func (s *SelectColumnsContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SelectColumnsContext) AllColumn() []IColumnContext { children := s.GetChildren() len := 0 for _, ctx := range children { - if _, ok := ctx.(IAvgContext); ok { + if _, ok := ctx.(IColumnContext); ok { len++ } } - tst := make([]IAvgContext, len) + tst := make([]IColumnContext, len) i := 0 for _, ctx := range children { - if t, ok := ctx.(IAvgContext); ok { - tst[i] = t.(IAvgContext) + if t, ok := ctx.(IColumnContext); ok { + tst[i] = t.(IColumnContext) i++ } } @@ -551,11 +638,11 @@ func (s *ResultColumnsContext) AllAvg() []IAvgContext { return tst } -func (s *ResultColumnsContext) Avg(i int) IAvgContext { +func (s *SelectColumnsContext) Column(i int) IColumnContext { var t antlr.RuleContext j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAvgContext); ok { + if _, ok := ctx.(IColumnContext); ok { if j == i { t = ctx.(antlr.RuleContext) break @@ -568,30 +655,24 @@ func (s *ResultColumnsContext) Avg(i int) IAvgContext { return nil } - return t.(IAvgContext) -} - -func (s *ResultColumnsContext) STAR() antlr.TerminalNode { - return s.GetToken(SqlParserSTAR, 0) + return t.(IColumnContext) } -func (s *ResultColumnsContext) GetRuleContext() antlr.RuleContext { - return s +func (s *SelectColumnsContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) } -func (s *ResultColumnsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) +func (s *SelectColumnsContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) } -func (s *ResultColumnsContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterResultColumns(s) - } -} +func (s *SelectColumnsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitSelectColumns(s) -func (s *ResultColumnsContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitResultColumns(s) + default: + return t.VisitChildren(s) } } @@ -624,6 +705,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { switch p.GetTokenStream().LA(1) { case SqlParserIDENTIFIER: + localctx = NewSelectColumnsContext(p, localctx) p.EnterOuterAlt(localctx, 1) { p.SetState(32) @@ -649,6 +731,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { } case SqlParserK_COUNT, SqlParserK_MIN, SqlParserK_MAX, SqlParserK_AVG: + localctx = NewSelectAVGContext(p, localctx) p.EnterOuterAlt(localctx, 2) { p.SetState(39) @@ -674,6 +757,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { } case SqlParserSTAR: + localctx = NewSelectStarContext(p, localctx) p.EnterOuterAlt(localctx, 3) { p.SetState(46) @@ -737,15 +821,13 @@ func (s *ColumnContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *ColumnContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn(s) - } -} +func (s *ColumnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitColumn(s) -func (s *ColumnContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn(s) + default: + return t.VisitChildren(s) } } @@ -819,11 +901,41 @@ func NewWhereStatementContext(parser antlr.Parser, parent antlr.ParserRuleContex func (s *WhereStatementContext) GetParser() antlr.Parser { return s.parser } -func (s *WhereStatementContext) K_WHERE() antlr.TerminalNode { +func (s *WhereStatementContext) CopyFrom(ctx *WhereStatementContext) { + s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext) +} + +func (s *WhereStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *WhereStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +type WhereStmtContext struct { + *WhereStatementContext +} + +func NewWhereStmtContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *WhereStmtContext { + var p = new(WhereStmtContext) + + p.WhereStatementContext = NewEmptyWhereStatementContext() + p.parser = parser + p.CopyFrom(ctx.(*WhereStatementContext)) + + return p +} + +func (s *WhereStmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *WhereStmtContext) K_WHERE() antlr.TerminalNode { return s.GetToken(SqlParserK_WHERE, 0) } -func (s *WhereStatementContext) Expr() IExprContext { +func (s *WhereStmtContext) Expr() IExprContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { if _, ok := ctx.(IExprContext); ok { @@ -839,7 +951,35 @@ func (s *WhereStatementContext) Expr() IExprContext { return t.(IExprContext) } -func (s *WhereStatementContext) TumblingWindow() ITumblingWindowContext { +func (s *WhereStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitWhereStmt(s) + + default: + return t.VisitChildren(s) + } +} + +type TumblingStmtContext struct { + *WhereStatementContext +} + +func NewTumblingStmtContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TumblingStmtContext { + var p = new(TumblingStmtContext) + + p.WhereStatementContext = NewEmptyWhereStatementContext() + p.parser = parser + p.CopyFrom(ctx.(*WhereStatementContext)) + + return p +} + +func (s *TumblingStmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TumblingStmtContext) TumblingWindow() ITumblingWindowContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { if _, ok := ctx.(ITumblingWindowContext); ok { @@ -855,7 +995,7 @@ func (s *WhereStatementContext) TumblingWindow() ITumblingWindowContext { return t.(ITumblingWindowContext) } -func (s *WhereStatementContext) GroupBy() IGroupByContext { +func (s *TumblingStmtContext) GroupBy() IGroupByContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { if _, ok := ctx.(IGroupByContext); ok { @@ -871,23 +1011,33 @@ func (s *WhereStatementContext) GroupBy() IGroupByContext { return t.(IGroupByContext) } -func (s *WhereStatementContext) GetRuleContext() antlr.RuleContext { - return s +func (s *TumblingStmtContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) } -func (s *WhereStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} +func (s *TumblingStmtContext) Expr() IExprContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } -func (s *WhereStatementContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterWhereStatement(s) + if t == nil { + return nil } + + return t.(IExprContext) } -func (s *WhereStatementContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitWhereStatement(s) +func (s *TumblingStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitTumblingStmt(s) + + default: + return t.VisitChildren(s) } } @@ -920,6 +1070,7 @@ func (p *SqlParser) WhereStatement() (localctx IWhereStatementContext) { switch p.GetTokenStream().LA(1) { case SqlParserEOQ, SqlParserK_WHERE: + localctx = NewWhereStmtContext(p, localctx) p.EnterOuterAlt(localctx, 1) p.SetState(53) p.GetErrorHandler().Sync(p) @@ -938,6 +1089,7 @@ func (p *SqlParser) WhereStatement() (localctx IWhereStatementContext) { } case SqlParserK_WINDOW_TUMBLING: + localctx = NewTumblingStmtContext(p, localctx) p.EnterOuterAlt(localctx, 2) { p.SetState(55) @@ -1046,15 +1198,13 @@ func (s *TumblingWindowContext) ToStringTree(ruleNames []string, recog antlr.Rec return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *TumblingWindowContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTumblingWindow(s) - } -} +func (s *TumblingWindowContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitTumblingWindow(s) -func (s *TumblingWindowContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTumblingWindow(s) + default: + return t.VisitChildren(s) } } @@ -1174,15 +1324,13 @@ func (s *GroupByContext) ToStringTree(ruleNames []string, recog antlr.Recognizer return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *GroupByContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterGroupBy(s) - } -} +func (s *GroupByContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitGroupBy(s) -func (s *GroupByContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitGroupBy(s) + default: + return t.VisitChildren(s) } } @@ -1308,15 +1456,13 @@ func (s *AvgContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) st return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *AvgContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterAvg(s) - } -} +func (s *AvgContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitAvg(s) -func (s *AvgContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitAvg(s) + default: + return t.VisitChildren(s) } } @@ -1511,15 +1657,13 @@ func (s *ExprContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) s return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *ExprContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterExpr(s) - } -} +func (s *ExprContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitExpr(s) -func (s *ExprContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitExpr(s) + default: + return t.VisitChildren(s) } } @@ -1723,15 +1867,13 @@ func (s *ComparisonOperatorContext) ToStringTree(ruleNames []string, recog antlr return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *ComparisonOperatorContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterComparisonOperator(s) - } -} +func (s *ComparisonOperatorContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitComparisonOperator(s) -func (s *ComparisonOperatorContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitComparisonOperator(s) + default: + return t.VisitChildren(s) } } @@ -1829,15 +1971,13 @@ func (s *LiteralValueContext) ToStringTree(ruleNames []string, recog antlr.Recog return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *LiteralValueContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterLiteralValue(s) - } -} +func (s *LiteralValueContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitLiteralValue(s) -func (s *LiteralValueContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitLiteralValue(s) + default: + return t.VisitChildren(s) } } diff --git a/processor/stream_processor/parser/sql_stream_visitor.go b/processor/stream_processor/parser/sql_stream_visitor.go new file mode 100644 index 000000000000..294a7cdaec0f --- /dev/null +++ b/processor/stream_processor/parser/sql_stream_visitor.go @@ -0,0 +1,102 @@ +package parser + +import ( + "github.com/antlr/antlr4/runtime/Go/antlr" + "go.opentelemetry.io/collector/pdata/plog" +) + +type SqlStreamVisitor struct { + antlr.ParseTreeVisitor + logRecords plog.LogRecordSlice +} + +func NewSqlStreamVisitor(logs plog.LogRecordSlice) *SqlStreamVisitor { + return &SqlStreamVisitor{ + ParseTreeVisitor: BaseSqlVisitor{}, + logRecords: logs, + } +} + +func (v *SqlStreamVisitor) GetResult() (plog.LogRecordSlice, error) { + return v.logRecords, nil +} + +func (v *SqlStreamVisitor) Visit(tree antlr.ParseTree) interface{} { + + switch t := tree.(type) { + case *antlr.ErrorNodeImpl: + return nil + case *SqlQueryContext: + t.Accept(v) + + } + + return nil +} + +func (v *SqlStreamVisitor) VisitSqlQuery(ctx *SqlQueryContext) interface{} { + + return ctx.SelectQuery().Accept(v) +} + +func (v *SqlStreamVisitor) VisitSelectQuery(ctx *SelectQueryContext) interface{} { + return ctx.ResultColumns().Accept(v) +} + +func (v *SqlStreamVisitor) VisitSelectColumns(ctx *SelectColumnsContext) interface{} { + for _, column := range ctx.AllColumn() { + v.logRecords.RemoveIf(func(record plog.LogRecord) bool { + _, ok := record.Attributes().Get(column.GetText()) + if ok { + return false + } + return true + }) + + } + return v.VisitChildren(ctx) +} + +func (v *SqlStreamVisitor) VisitSelectAVG(ctx *SelectAVGContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *SqlStreamVisitor) VisitSelectStar(ctx *SelectStarContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *SqlStreamVisitor) VisitColumn(ctx *ColumnContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *SqlStreamVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *SqlStreamVisitor) VisitTumblingStmt(ctx *TumblingStmtContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *SqlStreamVisitor) VisitTumblingWindow(ctx *TumblingWindowContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *SqlStreamVisitor) VisitGroupBy(ctx *GroupByContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *SqlStreamVisitor) VisitAvg(ctx *AvgContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *SqlStreamVisitor) VisitExpr(ctx *ExprContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *SqlStreamVisitor) VisitComparisonOperator(ctx *ComparisonOperatorContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *SqlStreamVisitor) VisitLiteralValue(ctx *LiteralValueContext) interface{} { + return v.VisitChildren(ctx) +} diff --git a/processor/stream_processor/parser/sql_stream_visitor_test.go b/processor/stream_processor/parser/sql_stream_visitor_test.go new file mode 100644 index 000000000000..f6e27a2381d7 --- /dev/null +++ b/processor/stream_processor/parser/sql_stream_visitor_test.go @@ -0,0 +1,64 @@ +package parser + +import ( + "fmt" + "github.com/antlr/antlr4/runtime/Go/antlr" + "github.com/stretchr/testify/assert" + "go.opentelemetry.io/collector/pdata/plog" + "testing" +) + +func TestNewResultColumnsContext(t *testing.T) { + + tests := []struct { + name string + query string + expected int + }{ + { + name: "correct result columns", + query: `SELECT name, price, IsAlive WHERE name = 'test' and isAlive = 'true';`, + expected: 100, + }, + { + name: "incorrect result columns", + query: `SELECT field, isAlive WHERE name = 'test' and isAlive = 'true';`, + expected: 0, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + is := antlr.NewInputStream(tt.query) + + lexer := NewSqlLexer(is) + stream := antlr.NewCommonTokenStream(lexer, antlr.TokenDefaultChannel) + + parser := NewSqlParser(stream) + + logs := generateTestLogs() + visitor := NewSqlStreamVisitor(logs) + visitor.Visit(parser.SqlQuery()) + + logs, _ = visitor.GetResult() + + assert.Equal(t, tt.expected, logs.Len()) + }) + } + +} + +func generateTestLogs() plog.LogRecordSlice { + + ld := plog.NewLogs() + sc := ld.ResourceLogs().AppendEmpty().ScopeLogs().AppendEmpty() + + for i := 0; i < 100; i++ { + record := sc.LogRecords().AppendEmpty() + record.Attributes().InsertString("name", fmt.Sprintf("Test log # %q", i)) + record.Attributes().InsertBool("IsAlive", i%2 == 0) + record.Attributes().InsertInt("price", int64(i)) + } + + return ld.ResourceLogs().At(0).ScopeLogs().At(0).LogRecords() +} diff --git a/processor/stream_processor/parser/sql_visitor.go b/processor/stream_processor/parser/sql_visitor.go new file mode 100644 index 000000000000..668f5f2f4b59 --- /dev/null +++ b/processor/stream_processor/parser/sql_visitor.go @@ -0,0 +1,52 @@ +// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. + +package parser // Sql + +import "github.com/antlr/antlr4/runtime/Go/antlr" + +// A complete Visitor for a parse tree produced by SqlParser. +type SqlVisitor interface { + antlr.ParseTreeVisitor + + // Visit a parse tree produced by SqlParser#sqlQuery. + VisitSqlQuery(ctx *SqlQueryContext) interface{} + + // Visit a parse tree produced by SqlParser#selectQuery. + VisitSelectQuery(ctx *SelectQueryContext) interface{} + + // Visit a parse tree produced by SqlParser#selectColumns. + VisitSelectColumns(ctx *SelectColumnsContext) interface{} + + // Visit a parse tree produced by SqlParser#selectAVG. + VisitSelectAVG(ctx *SelectAVGContext) interface{} + + // Visit a parse tree produced by SqlParser#selectStar. + VisitSelectStar(ctx *SelectStarContext) interface{} + + // Visit a parse tree produced by SqlParser#column. + VisitColumn(ctx *ColumnContext) interface{} + + // Visit a parse tree produced by SqlParser#whereStmt. + VisitWhereStmt(ctx *WhereStmtContext) interface{} + + // Visit a parse tree produced by SqlParser#tumblingStmt. + VisitTumblingStmt(ctx *TumblingStmtContext) interface{} + + // Visit a parse tree produced by SqlParser#tumblingWindow. + VisitTumblingWindow(ctx *TumblingWindowContext) interface{} + + // Visit a parse tree produced by SqlParser#groupBy. + VisitGroupBy(ctx *GroupByContext) interface{} + + // Visit a parse tree produced by SqlParser#avg. + VisitAvg(ctx *AvgContext) interface{} + + // Visit a parse tree produced by SqlParser#expr. + VisitExpr(ctx *ExprContext) interface{} + + // Visit a parse tree produced by SqlParser#comparisonOperator. + VisitComparisonOperator(ctx *ComparisonOperatorContext) interface{} + + // Visit a parse tree produced by SqlParser#literalValue. + VisitLiteralValue(ctx *LiteralValueContext) interface{} +} diff --git a/processor/stream_processor/parser/stream_listener.go b/processor/stream_processor/parser/stream_listener.go deleted file mode 100644 index c01e43c34af0..000000000000 --- a/processor/stream_processor/parser/stream_listener.go +++ /dev/null @@ -1,46 +0,0 @@ -package parser - -import ( - "context" - "fmt" - "go.opentelemetry.io/collector/pdata/plog" -) - -type StreamListener struct { - *BaseSqlListener - in, out chan plog.LogRecord - ctx context.Context - log plog.LogRecord -} - -func NewStreamListener(in chan plog.LogRecord, out chan plog.LogRecord, ctx context.Context) StreamListener { - return StreamListener{ - in: in, - out: out, - ctx: ctx, - } -} - -func (s *StreamListener) EnterResultColumns(ctx *ResultColumnsContext) { - fmt.Println(ctx.Column(0).GetText()) - //for col := ctx.get -} - -func (s *StreamListener) EnterSqlQuery(ctx *SqlQueryContext) { - //fmt.Println(ctx.GetPayload()) -} - -func (s *StreamListener) EnterSelectQuery(ctx *SelectQueryContext) { - //fmt.Println(ctx.GetParser().GetCurrentToken().GetText()) - fmt.Println(ctx.GetToken(SqlParserK_SELECT, 0).GetText()) - -} - -func (s *StreamListener) EnterWhereStatement(ctx *WhereStatementContext) { - fmt.Println(ctx.GetParser().GetCurrentToken().GetText()) -} - -func (s *StreamListener) EnterExpr(ctx *ExprContext) { - fmt.Println(ctx.GetRuleContext().GetText()) - fmt.Println(ctx.GetRuleIndex()) -} From 8828c3b423bc6d29f93988a5ecc6e74461af6f63 Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Wed, 27 Jul 2022 14:45:16 +0300 Subject: [PATCH 05/31] visitor update/tests --- processor/stream_processor/Sql.g4 | 3 +- processor/stream_processor/parser/Sql.interp | 2 +- .../stream_processor/parser/sql_parser.go | 164 +++++++++--------- .../parser/sql_stream_visitor.go | 16 ++ .../parser/sql_stream_visitor_test.go | 87 ++++++++-- 5 files changed, 176 insertions(+), 96 deletions(-) diff --git a/processor/stream_processor/Sql.g4 b/processor/stream_processor/Sql.g4 index f60e59e13c7b..ef96647e3ae5 100644 --- a/processor/stream_processor/Sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -1,6 +1,7 @@ grammar Sql; +//java -jar antlr-4.10.1-complete.jar -Dlanguage=Go -o parser Sql.g4 -no-listener -visitor sqlQuery : selectQuery EOF; @@ -11,7 +12,7 @@ selectQuery resultColumns - : column (COMMA column)+ # selectColumns + : column (COMMA column)* # selectColumns | avg (COMMA avg)+ # selectAVG | STAR # selectStar ; diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp index 51867eac0c1a..cd9d51c079d5 100644 --- a/processor/stream_processor/parser/Sql.interp +++ b/processor/stream_processor/parser/Sql.interp @@ -87,4 +87,4 @@ literalValue atn: -[4, 1, 34, 100, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 29, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 4, 2, 36, 8, 2, 11, 2, 12, 2, 37, 1, 2, 1, 2, 1, 2, 4, 2, 43, 8, 2, 11, 2, 12, 2, 44, 1, 2, 3, 2, 48, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 54, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 59, 8, 4, 1, 4, 1, 4, 3, 4, 63, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 69, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 86, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 91, 8, 8, 10, 8, 12, 8, 94, 9, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 0, 1, 16, 11, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 0, 5, 1, 0, 27, 30, 1, 0, 22, 23, 1, 0, 11, 12, 2, 0, 13, 20, 25, 26, 1, 0, 32, 33, 99, 0, 22, 1, 0, 0, 0, 2, 25, 1, 0, 0, 0, 4, 47, 1, 0, 0, 0, 6, 49, 1, 0, 0, 0, 8, 62, 1, 0, 0, 0, 10, 64, 1, 0, 0, 0, 12, 70, 1, 0, 0, 0, 14, 73, 1, 0, 0, 0, 16, 85, 1, 0, 0, 0, 18, 95, 1, 0, 0, 0, 20, 97, 1, 0, 0, 0, 22, 23, 3, 2, 1, 0, 23, 24, 5, 0, 0, 1, 24, 1, 1, 0, 0, 0, 25, 26, 5, 7, 0, 0, 26, 28, 3, 4, 2, 0, 27, 29, 3, 8, 4, 0, 28, 27, 1, 0, 0, 0, 28, 29, 1, 0, 0, 0, 29, 30, 1, 0, 0, 0, 30, 31, 5, 6, 0, 0, 31, 3, 1, 0, 0, 0, 32, 35, 3, 6, 3, 0, 33, 34, 5, 3, 0, 0, 34, 36, 3, 6, 3, 0, 35, 33, 1, 0, 0, 0, 36, 37, 1, 0, 0, 0, 37, 35, 1, 0, 0, 0, 37, 38, 1, 0, 0, 0, 38, 48, 1, 0, 0, 0, 39, 42, 3, 14, 7, 0, 40, 41, 5, 3, 0, 0, 41, 43, 3, 14, 7, 0, 42, 40, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 42, 1, 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 48, 1, 0, 0, 0, 46, 48, 5, 34, 0, 0, 47, 32, 1, 0, 0, 0, 47, 39, 1, 0, 0, 0, 47, 46, 1, 0, 0, 0, 48, 5, 1, 0, 0, 0, 49, 50, 5, 31, 0, 0, 50, 7, 1, 0, 0, 0, 51, 52, 5, 8, 0, 0, 52, 54, 3, 16, 8, 0, 53, 51, 1, 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 63, 1, 0, 0, 0, 55, 58, 3, 10, 5, 0, 56, 57, 5, 8, 0, 0, 57, 59, 3, 16, 8, 0, 58, 56, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 3, 12, 6, 0, 61, 63, 1, 0, 0, 0, 62, 53, 1, 0, 0, 0, 62, 55, 1, 0, 0, 0, 63, 9, 1, 0, 0, 0, 64, 65, 5, 9, 0, 0, 65, 68, 5, 32, 0, 0, 66, 67, 5, 8, 0, 0, 67, 69, 3, 16, 8, 0, 68, 66, 1, 0, 0, 0, 68, 69, 1, 0, 0, 0, 69, 11, 1, 0, 0, 0, 70, 71, 5, 10, 0, 0, 71, 72, 3, 6, 3, 0, 72, 13, 1, 0, 0, 0, 73, 74, 7, 0, 0, 0, 74, 75, 5, 4, 0, 0, 75, 76, 3, 6, 3, 0, 76, 77, 5, 5, 0, 0, 77, 15, 1, 0, 0, 0, 78, 79, 6, 8, -1, 0, 79, 80, 5, 31, 0, 0, 80, 81, 3, 18, 9, 0, 81, 82, 3, 20, 10, 0, 82, 86, 1, 0, 0, 0, 83, 84, 5, 31, 0, 0, 84, 86, 7, 1, 0, 0, 85, 78, 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, 86, 92, 1, 0, 0, 0, 87, 88, 10, 2, 0, 0, 88, 89, 7, 2, 0, 0, 89, 91, 3, 16, 8, 3, 90, 87, 1, 0, 0, 0, 91, 94, 1, 0, 0, 0, 92, 90, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 17, 1, 0, 0, 0, 94, 92, 1, 0, 0, 0, 95, 96, 7, 3, 0, 0, 96, 19, 1, 0, 0, 0, 97, 98, 7, 4, 0, 0, 98, 21, 1, 0, 0, 0, 10, 28, 37, 44, 47, 53, 58, 62, 68, 85, 92] \ No newline at end of file +[4, 1, 34, 101, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 29, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 5, 2, 36, 8, 2, 10, 2, 12, 2, 39, 9, 2, 1, 2, 1, 2, 1, 2, 4, 2, 44, 8, 2, 11, 2, 12, 2, 45, 1, 2, 3, 2, 49, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 55, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 60, 8, 4, 1, 4, 1, 4, 3, 4, 64, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 70, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 87, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 92, 8, 8, 10, 8, 12, 8, 95, 9, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 0, 1, 16, 11, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 0, 5, 1, 0, 27, 30, 1, 0, 22, 23, 1, 0, 11, 12, 2, 0, 13, 20, 25, 26, 1, 0, 32, 33, 100, 0, 22, 1, 0, 0, 0, 2, 25, 1, 0, 0, 0, 4, 48, 1, 0, 0, 0, 6, 50, 1, 0, 0, 0, 8, 63, 1, 0, 0, 0, 10, 65, 1, 0, 0, 0, 12, 71, 1, 0, 0, 0, 14, 74, 1, 0, 0, 0, 16, 86, 1, 0, 0, 0, 18, 96, 1, 0, 0, 0, 20, 98, 1, 0, 0, 0, 22, 23, 3, 2, 1, 0, 23, 24, 5, 0, 0, 1, 24, 1, 1, 0, 0, 0, 25, 26, 5, 7, 0, 0, 26, 28, 3, 4, 2, 0, 27, 29, 3, 8, 4, 0, 28, 27, 1, 0, 0, 0, 28, 29, 1, 0, 0, 0, 29, 30, 1, 0, 0, 0, 30, 31, 5, 6, 0, 0, 31, 3, 1, 0, 0, 0, 32, 37, 3, 6, 3, 0, 33, 34, 5, 3, 0, 0, 34, 36, 3, 6, 3, 0, 35, 33, 1, 0, 0, 0, 36, 39, 1, 0, 0, 0, 37, 35, 1, 0, 0, 0, 37, 38, 1, 0, 0, 0, 38, 49, 1, 0, 0, 0, 39, 37, 1, 0, 0, 0, 40, 43, 3, 14, 7, 0, 41, 42, 5, 3, 0, 0, 42, 44, 3, 14, 7, 0, 43, 41, 1, 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 43, 1, 0, 0, 0, 45, 46, 1, 0, 0, 0, 46, 49, 1, 0, 0, 0, 47, 49, 5, 34, 0, 0, 48, 32, 1, 0, 0, 0, 48, 40, 1, 0, 0, 0, 48, 47, 1, 0, 0, 0, 49, 5, 1, 0, 0, 0, 50, 51, 5, 31, 0, 0, 51, 7, 1, 0, 0, 0, 52, 53, 5, 8, 0, 0, 53, 55, 3, 16, 8, 0, 54, 52, 1, 0, 0, 0, 54, 55, 1, 0, 0, 0, 55, 64, 1, 0, 0, 0, 56, 59, 3, 10, 5, 0, 57, 58, 5, 8, 0, 0, 58, 60, 3, 16, 8, 0, 59, 57, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 1, 0, 0, 0, 61, 62, 3, 12, 6, 0, 62, 64, 1, 0, 0, 0, 63, 54, 1, 0, 0, 0, 63, 56, 1, 0, 0, 0, 64, 9, 1, 0, 0, 0, 65, 66, 5, 9, 0, 0, 66, 69, 5, 32, 0, 0, 67, 68, 5, 8, 0, 0, 68, 70, 3, 16, 8, 0, 69, 67, 1, 0, 0, 0, 69, 70, 1, 0, 0, 0, 70, 11, 1, 0, 0, 0, 71, 72, 5, 10, 0, 0, 72, 73, 3, 6, 3, 0, 73, 13, 1, 0, 0, 0, 74, 75, 7, 0, 0, 0, 75, 76, 5, 4, 0, 0, 76, 77, 3, 6, 3, 0, 77, 78, 5, 5, 0, 0, 78, 15, 1, 0, 0, 0, 79, 80, 6, 8, -1, 0, 80, 81, 5, 31, 0, 0, 81, 82, 3, 18, 9, 0, 82, 83, 3, 20, 10, 0, 83, 87, 1, 0, 0, 0, 84, 85, 5, 31, 0, 0, 85, 87, 7, 1, 0, 0, 86, 79, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 93, 1, 0, 0, 0, 88, 89, 10, 2, 0, 0, 89, 90, 7, 2, 0, 0, 90, 92, 3, 16, 8, 3, 91, 88, 1, 0, 0, 0, 92, 95, 1, 0, 0, 0, 93, 91, 1, 0, 0, 0, 93, 94, 1, 0, 0, 0, 94, 17, 1, 0, 0, 0, 95, 93, 1, 0, 0, 0, 96, 97, 7, 3, 0, 0, 97, 19, 1, 0, 0, 0, 98, 99, 7, 4, 0, 0, 99, 21, 1, 0, 0, 0, 10, 28, 37, 45, 48, 54, 59, 63, 69, 86, 93] \ No newline at end of file diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index 22c6db626ce4..5bb324e64b9b 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -51,46 +51,46 @@ func sqlParserInit() { } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 34, 100, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 34, 101, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 29, 8, 1, 1, 1, 1, 1, 1, - 2, 1, 2, 1, 2, 4, 2, 36, 8, 2, 11, 2, 12, 2, 37, 1, 2, 1, 2, 1, 2, 4, 2, - 43, 8, 2, 11, 2, 12, 2, 44, 1, 2, 3, 2, 48, 8, 2, 1, 3, 1, 3, 1, 4, 1, - 4, 3, 4, 54, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 59, 8, 4, 1, 4, 1, 4, 3, 4, - 63, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 69, 8, 5, 1, 6, 1, 6, 1, 6, 1, - 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, - 8, 86, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 91, 8, 8, 10, 8, 12, 8, 94, 9, 8, - 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 0, 1, 16, 11, 0, 2, 4, 6, 8, 10, 12, 14, - 16, 18, 20, 0, 5, 1, 0, 27, 30, 1, 0, 22, 23, 1, 0, 11, 12, 2, 0, 13, 20, - 25, 26, 1, 0, 32, 33, 99, 0, 22, 1, 0, 0, 0, 2, 25, 1, 0, 0, 0, 4, 47, - 1, 0, 0, 0, 6, 49, 1, 0, 0, 0, 8, 62, 1, 0, 0, 0, 10, 64, 1, 0, 0, 0, 12, - 70, 1, 0, 0, 0, 14, 73, 1, 0, 0, 0, 16, 85, 1, 0, 0, 0, 18, 95, 1, 0, 0, - 0, 20, 97, 1, 0, 0, 0, 22, 23, 3, 2, 1, 0, 23, 24, 5, 0, 0, 1, 24, 1, 1, - 0, 0, 0, 25, 26, 5, 7, 0, 0, 26, 28, 3, 4, 2, 0, 27, 29, 3, 8, 4, 0, 28, - 27, 1, 0, 0, 0, 28, 29, 1, 0, 0, 0, 29, 30, 1, 0, 0, 0, 30, 31, 5, 6, 0, - 0, 31, 3, 1, 0, 0, 0, 32, 35, 3, 6, 3, 0, 33, 34, 5, 3, 0, 0, 34, 36, 3, - 6, 3, 0, 35, 33, 1, 0, 0, 0, 36, 37, 1, 0, 0, 0, 37, 35, 1, 0, 0, 0, 37, - 38, 1, 0, 0, 0, 38, 48, 1, 0, 0, 0, 39, 42, 3, 14, 7, 0, 40, 41, 5, 3, - 0, 0, 41, 43, 3, 14, 7, 0, 42, 40, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, - 42, 1, 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 48, 1, 0, 0, 0, 46, 48, 5, 34, - 0, 0, 47, 32, 1, 0, 0, 0, 47, 39, 1, 0, 0, 0, 47, 46, 1, 0, 0, 0, 48, 5, - 1, 0, 0, 0, 49, 50, 5, 31, 0, 0, 50, 7, 1, 0, 0, 0, 51, 52, 5, 8, 0, 0, - 52, 54, 3, 16, 8, 0, 53, 51, 1, 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 63, 1, - 0, 0, 0, 55, 58, 3, 10, 5, 0, 56, 57, 5, 8, 0, 0, 57, 59, 3, 16, 8, 0, - 58, 56, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 3, - 12, 6, 0, 61, 63, 1, 0, 0, 0, 62, 53, 1, 0, 0, 0, 62, 55, 1, 0, 0, 0, 63, - 9, 1, 0, 0, 0, 64, 65, 5, 9, 0, 0, 65, 68, 5, 32, 0, 0, 66, 67, 5, 8, 0, - 0, 67, 69, 3, 16, 8, 0, 68, 66, 1, 0, 0, 0, 68, 69, 1, 0, 0, 0, 69, 11, - 1, 0, 0, 0, 70, 71, 5, 10, 0, 0, 71, 72, 3, 6, 3, 0, 72, 13, 1, 0, 0, 0, - 73, 74, 7, 0, 0, 0, 74, 75, 5, 4, 0, 0, 75, 76, 3, 6, 3, 0, 76, 77, 5, - 5, 0, 0, 77, 15, 1, 0, 0, 0, 78, 79, 6, 8, -1, 0, 79, 80, 5, 31, 0, 0, - 80, 81, 3, 18, 9, 0, 81, 82, 3, 20, 10, 0, 82, 86, 1, 0, 0, 0, 83, 84, - 5, 31, 0, 0, 84, 86, 7, 1, 0, 0, 85, 78, 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, - 86, 92, 1, 0, 0, 0, 87, 88, 10, 2, 0, 0, 88, 89, 7, 2, 0, 0, 89, 91, 3, - 16, 8, 3, 90, 87, 1, 0, 0, 0, 91, 94, 1, 0, 0, 0, 92, 90, 1, 0, 0, 0, 92, - 93, 1, 0, 0, 0, 93, 17, 1, 0, 0, 0, 94, 92, 1, 0, 0, 0, 95, 96, 7, 3, 0, - 0, 96, 19, 1, 0, 0, 0, 97, 98, 7, 4, 0, 0, 98, 21, 1, 0, 0, 0, 10, 28, - 37, 44, 47, 53, 58, 62, 68, 85, 92, + 2, 1, 2, 1, 2, 5, 2, 36, 8, 2, 10, 2, 12, 2, 39, 9, 2, 1, 2, 1, 2, 1, 2, + 4, 2, 44, 8, 2, 11, 2, 12, 2, 45, 1, 2, 3, 2, 49, 8, 2, 1, 3, 1, 3, 1, + 4, 1, 4, 3, 4, 55, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 60, 8, 4, 1, 4, 1, 4, + 3, 4, 64, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 70, 8, 5, 1, 6, 1, 6, 1, + 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, + 8, 3, 8, 87, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 92, 8, 8, 10, 8, 12, 8, 95, + 9, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 0, 1, 16, 11, 0, 2, 4, 6, 8, 10, + 12, 14, 16, 18, 20, 0, 5, 1, 0, 27, 30, 1, 0, 22, 23, 1, 0, 11, 12, 2, + 0, 13, 20, 25, 26, 1, 0, 32, 33, 100, 0, 22, 1, 0, 0, 0, 2, 25, 1, 0, 0, + 0, 4, 48, 1, 0, 0, 0, 6, 50, 1, 0, 0, 0, 8, 63, 1, 0, 0, 0, 10, 65, 1, + 0, 0, 0, 12, 71, 1, 0, 0, 0, 14, 74, 1, 0, 0, 0, 16, 86, 1, 0, 0, 0, 18, + 96, 1, 0, 0, 0, 20, 98, 1, 0, 0, 0, 22, 23, 3, 2, 1, 0, 23, 24, 5, 0, 0, + 1, 24, 1, 1, 0, 0, 0, 25, 26, 5, 7, 0, 0, 26, 28, 3, 4, 2, 0, 27, 29, 3, + 8, 4, 0, 28, 27, 1, 0, 0, 0, 28, 29, 1, 0, 0, 0, 29, 30, 1, 0, 0, 0, 30, + 31, 5, 6, 0, 0, 31, 3, 1, 0, 0, 0, 32, 37, 3, 6, 3, 0, 33, 34, 5, 3, 0, + 0, 34, 36, 3, 6, 3, 0, 35, 33, 1, 0, 0, 0, 36, 39, 1, 0, 0, 0, 37, 35, + 1, 0, 0, 0, 37, 38, 1, 0, 0, 0, 38, 49, 1, 0, 0, 0, 39, 37, 1, 0, 0, 0, + 40, 43, 3, 14, 7, 0, 41, 42, 5, 3, 0, 0, 42, 44, 3, 14, 7, 0, 43, 41, 1, + 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 43, 1, 0, 0, 0, 45, 46, 1, 0, 0, 0, 46, + 49, 1, 0, 0, 0, 47, 49, 5, 34, 0, 0, 48, 32, 1, 0, 0, 0, 48, 40, 1, 0, + 0, 0, 48, 47, 1, 0, 0, 0, 49, 5, 1, 0, 0, 0, 50, 51, 5, 31, 0, 0, 51, 7, + 1, 0, 0, 0, 52, 53, 5, 8, 0, 0, 53, 55, 3, 16, 8, 0, 54, 52, 1, 0, 0, 0, + 54, 55, 1, 0, 0, 0, 55, 64, 1, 0, 0, 0, 56, 59, 3, 10, 5, 0, 57, 58, 5, + 8, 0, 0, 58, 60, 3, 16, 8, 0, 59, 57, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, + 61, 1, 0, 0, 0, 61, 62, 3, 12, 6, 0, 62, 64, 1, 0, 0, 0, 63, 54, 1, 0, + 0, 0, 63, 56, 1, 0, 0, 0, 64, 9, 1, 0, 0, 0, 65, 66, 5, 9, 0, 0, 66, 69, + 5, 32, 0, 0, 67, 68, 5, 8, 0, 0, 68, 70, 3, 16, 8, 0, 69, 67, 1, 0, 0, + 0, 69, 70, 1, 0, 0, 0, 70, 11, 1, 0, 0, 0, 71, 72, 5, 10, 0, 0, 72, 73, + 3, 6, 3, 0, 73, 13, 1, 0, 0, 0, 74, 75, 7, 0, 0, 0, 75, 76, 5, 4, 0, 0, + 76, 77, 3, 6, 3, 0, 77, 78, 5, 5, 0, 0, 78, 15, 1, 0, 0, 0, 79, 80, 6, + 8, -1, 0, 80, 81, 5, 31, 0, 0, 81, 82, 3, 18, 9, 0, 82, 83, 3, 20, 10, + 0, 83, 87, 1, 0, 0, 0, 84, 85, 5, 31, 0, 0, 85, 87, 7, 1, 0, 0, 86, 79, + 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 93, 1, 0, 0, 0, 88, 89, 10, 2, 0, 0, + 89, 90, 7, 2, 0, 0, 90, 92, 3, 16, 8, 3, 91, 88, 1, 0, 0, 0, 92, 95, 1, + 0, 0, 0, 93, 91, 1, 0, 0, 0, 93, 94, 1, 0, 0, 0, 94, 17, 1, 0, 0, 0, 95, + 93, 1, 0, 0, 0, 96, 97, 7, 3, 0, 0, 97, 19, 1, 0, 0, 0, 98, 99, 7, 4, 0, + 0, 99, 21, 1, 0, 0, 0, 10, 28, 37, 45, 48, 54, 59, 63, 69, 86, 93, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -700,7 +700,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { } }() - p.SetState(47) + p.SetState(48) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { @@ -711,11 +711,11 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { p.SetState(32) p.Column() } - p.SetState(35) + p.SetState(37) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - for ok := true; ok; ok = _la == SqlParserCOMMA { + for _la == SqlParserCOMMA { { p.SetState(33) p.Match(SqlParserCOMMA) @@ -725,7 +725,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { p.Column() } - p.SetState(37) + p.SetState(39) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } @@ -734,24 +734,24 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectAVGContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(39) + p.SetState(40) p.Avg() } - p.SetState(42) + p.SetState(43) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for ok := true; ok; ok = _la == SqlParserCOMMA { { - p.SetState(40) + p.SetState(41) p.Match(SqlParserCOMMA) } { - p.SetState(41) + p.SetState(42) p.Avg() } - p.SetState(44) + p.SetState(45) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } @@ -760,7 +760,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectStarContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(46) + p.SetState(47) p.Match(SqlParserSTAR) } @@ -856,7 +856,7 @@ func (p *SqlParser) Column() (localctx IColumnContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(49) + p.SetState(50) p.Match(SqlParserIDENTIFIER) } @@ -1065,24 +1065,24 @@ func (p *SqlParser) WhereStatement() (localctx IWhereStatementContext) { } }() - p.SetState(62) + p.SetState(63) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { case SqlParserEOQ, SqlParserK_WHERE: localctx = NewWhereStmtContext(p, localctx) p.EnterOuterAlt(localctx, 1) - p.SetState(53) + p.SetState(54) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(51) + p.SetState(52) p.Match(SqlParserK_WHERE) } { - p.SetState(52) + p.SetState(53) p.expr(0) } @@ -1092,28 +1092,28 @@ func (p *SqlParser) WhereStatement() (localctx IWhereStatementContext) { localctx = NewTumblingStmtContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(55) + p.SetState(56) p.TumblingWindow() } - p.SetState(58) + p.SetState(59) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(56) + p.SetState(57) p.Match(SqlParserK_WHERE) } { - p.SetState(57) + p.SetState(58) p.expr(0) } } { - p.SetState(60) + p.SetState(61) p.GroupBy() } @@ -1233,23 +1233,23 @@ func (p *SqlParser) TumblingWindow() (localctx ITumblingWindowContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(64) + p.SetState(65) p.Match(SqlParserK_WINDOW_TUMBLING) } { - p.SetState(65) + p.SetState(66) p.Match(SqlParserNUMERIC_LITERAL) } - p.SetState(68) + p.SetState(69) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 7, p.GetParserRuleContext()) == 1 { { - p.SetState(66) + p.SetState(67) p.Match(SqlParserK_WHERE) } { - p.SetState(67) + p.SetState(68) p.expr(0) } @@ -1359,11 +1359,11 @@ func (p *SqlParser) GroupBy() (localctx IGroupByContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(70) + p.SetState(71) p.Match(SqlParserK_GROUP_BY) } { - p.SetState(71) + p.SetState(72) p.Column() } @@ -1492,7 +1492,7 @@ func (p *SqlParser) Avg() (localctx IAvgContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(73) + p.SetState(74) _la = p.GetTokenStream().LA(1) if !(((_la)&-(0x1f+1)) == 0 && ((1< Date: Thu, 28 Jul 2022 20:19:43 +0300 Subject: [PATCH 06/31] update recursive conditions/tests --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c55af97cdace..d3d18a872252 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ integration-coverage.html # Wix *.wixobj *.wixpdb +/config.yaml From fb90a1417540d3b35cfb45f6234042738c2d3180 Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Thu, 28 Jul 2022 20:19:43 +0300 Subject: [PATCH 07/31] update recursive conditions/tests --- config.yaml | 33 + go.mod | 2 +- processor/stream_processor/Sql.g4 | 45 +- processor/stream_processor/parser/Sql.interp | 13 +- processor/stream_processor/parser/Sql.tokens | 21 +- .../stream_processor/parser/SqlLexer.interp | 11 +- .../stream_processor/parser/SqlLexer.tokens | 21 +- .../parser/sql_base_visitor.go | 22 +- .../stream_processor/parser/sql_lexer.go | 385 +++--- .../stream_processor/parser/sql_parser.go | 1122 +++++++++++------ .../parser/sql_stream_visitor.go | 109 +- .../parser/sql_stream_visitor_test.go | 153 ++- .../stream_processor/parser/sql_visitor.go | 24 +- 13 files changed, 1309 insertions(+), 652 deletions(-) create mode 100644 config.yaml diff --git a/config.yaml b/config.yaml new file mode 100644 index 000000000000..1b132733be8e --- /dev/null +++ b/config.yaml @@ -0,0 +1,33 @@ +receivers: + filelog: + include: [ ./test/test2.log ] + # include: + # - C:\Users\Anton\AppData\Local\Docker\*.txt + start_at: beginning + resource: + Test: TestValue + + +processors: + batchmemorylimit: + batch_mem_limit: 500 + +exporters: + opsrampotlp: + endpoint: https://asura.opsramp.net:443 + # endpoint: localhost:8086 + compression: none + tls: + insecure: true + security: + oauth_service_url: "https://asura.opsramp.net/auth/oauth/token?agent=true" + client_id: "6ek9Pb57rehBg5Md8BcmG5eHS4sdYpsn" + client_secret: "tUKTynGZgutUWj9QyFXNN36JyTfZ3uEJFjPRUEzuJ8Dx9jzccWpzbAkv8vzw5zny" + + +service: + pipelines: + logs: + receivers: [filelog] + processors: [batchmemorylimit] + exporters: [opsrampotlp] \ No newline at end of file diff --git a/go.mod b/go.mod index 77d835991a92..5804f043e48b 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/open-telemetry/opentelemetry-collector-contrib -go 1.17 +go 1.18 require ( github.com/open-telemetry/opentelemetry-collector-contrib/exporter/alibabacloudlogserviceexporter v0.53.0 diff --git a/processor/stream_processor/Sql.g4 b/processor/stream_processor/Sql.g4 index ef96647e3ae5..ef5fdc1ead38 100644 --- a/processor/stream_processor/Sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -31,6 +31,30 @@ tumblingWindow : K_WINDOW_TUMBLING NUMERIC_LITERAL( K_WHERE expr )? ; + +expr + : IDENTIFIER comparisonOperator literalValue #simpleCondition + | compoundExpr ( K_AND | K_OR ) compoundExpr #compoundRecursiveCondition + | IDENTIFIER (K_IS_NULL | K_IS_NOT_NULL) #nullCondition + | expr (K_AND| K_OR) expr #simpleRecursiveCondition + ; + +compoundExpr + : L_BRACKET expr R_BRACKET + ; + +comparisonOperator + : K_EQUAL | K_GREATER | K_LESS | K_LESS_EQUAL | K_GREATER_EQUAL | K_NOT_EQUAL | K_LIKE | K_IN | K_IS | K_NOT_IN + ; + + +literalValue + : NUMERIC_LITERAL + | STRING_LITERAL + | BOOLEAN_LITERAL + ; + + groupBy : K_GROUP_BY column ; @@ -71,7 +95,8 @@ K_IS_NOT_NULL : (K_IS SPACE K_NOT SPACE K_NULL); K_NOT : N O T; K_NOT_IN : (K_NOT SPACE I N); K_IN : I N; - +K_TRUE : T R U E; +K_FALSE : F A L S E; K_COUNT : C O U N T; K_MIN : M I N; K_MAX : M A X; @@ -84,25 +109,11 @@ IDENTIFIER | [a-zA-Z_] [a-zA-Z_0-9]* ; -expr - : IDENTIFIER comparisonOperator literalValue - | expr ( K_AND | K_OR ) expr - | IDENTIFIER (K_IS_NULL | K_IS_NOT_NULL) - ; - - -comparisonOperator - : K_EQUAL | K_GREATER | K_LESS | K_LESS_EQUAL | K_GREATER_EQUAL | K_NOT_EQUAL | K_LIKE | K_IN | K_IS | K_NOT_IN - ; - - -literalValue - : NUMERIC_LITERAL - | STRING_LITERAL +BOOLEAN_LITERAL + : (K_TRUE | K_FALSE) ; - NUMERIC_LITERAL : DIGIT+ ( '.' DIGIT* )? ( E [-+]? DIGIT+ )? | '.' DIGIT+ ( E [-+]? DIGIT+ )? diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp index cd9d51c079d5..e05859146ce2 100644 --- a/processor/stream_processor/parser/Sql.interp +++ b/processor/stream_processor/parser/Sql.interp @@ -33,6 +33,9 @@ null null null null +null +null +null '*' token symbolic names: @@ -63,11 +66,14 @@ K_IS_NOT_NULL K_NOT K_NOT_IN K_IN +K_TRUE +K_FALSE K_COUNT K_MIN K_MAX K_AVG IDENTIFIER +BOOLEAN_LITERAL NUMERIC_LITERAL STRING_LITERAL STAR @@ -79,12 +85,13 @@ resultColumns column whereStatement tumblingWindow -groupBy -avg expr +compoundExpr comparisonOperator literalValue +groupBy +avg atn: -[4, 1, 34, 101, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 29, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 5, 2, 36, 8, 2, 10, 2, 12, 2, 39, 9, 2, 1, 2, 1, 2, 1, 2, 4, 2, 44, 8, 2, 11, 2, 12, 2, 45, 1, 2, 3, 2, 49, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 55, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 60, 8, 4, 1, 4, 1, 4, 3, 4, 64, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 70, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 87, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 92, 8, 8, 10, 8, 12, 8, 95, 9, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 0, 1, 16, 11, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 0, 5, 1, 0, 27, 30, 1, 0, 22, 23, 1, 0, 11, 12, 2, 0, 13, 20, 25, 26, 1, 0, 32, 33, 100, 0, 22, 1, 0, 0, 0, 2, 25, 1, 0, 0, 0, 4, 48, 1, 0, 0, 0, 6, 50, 1, 0, 0, 0, 8, 63, 1, 0, 0, 0, 10, 65, 1, 0, 0, 0, 12, 71, 1, 0, 0, 0, 14, 74, 1, 0, 0, 0, 16, 86, 1, 0, 0, 0, 18, 96, 1, 0, 0, 0, 20, 98, 1, 0, 0, 0, 22, 23, 3, 2, 1, 0, 23, 24, 5, 0, 0, 1, 24, 1, 1, 0, 0, 0, 25, 26, 5, 7, 0, 0, 26, 28, 3, 4, 2, 0, 27, 29, 3, 8, 4, 0, 28, 27, 1, 0, 0, 0, 28, 29, 1, 0, 0, 0, 29, 30, 1, 0, 0, 0, 30, 31, 5, 6, 0, 0, 31, 3, 1, 0, 0, 0, 32, 37, 3, 6, 3, 0, 33, 34, 5, 3, 0, 0, 34, 36, 3, 6, 3, 0, 35, 33, 1, 0, 0, 0, 36, 39, 1, 0, 0, 0, 37, 35, 1, 0, 0, 0, 37, 38, 1, 0, 0, 0, 38, 49, 1, 0, 0, 0, 39, 37, 1, 0, 0, 0, 40, 43, 3, 14, 7, 0, 41, 42, 5, 3, 0, 0, 42, 44, 3, 14, 7, 0, 43, 41, 1, 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 43, 1, 0, 0, 0, 45, 46, 1, 0, 0, 0, 46, 49, 1, 0, 0, 0, 47, 49, 5, 34, 0, 0, 48, 32, 1, 0, 0, 0, 48, 40, 1, 0, 0, 0, 48, 47, 1, 0, 0, 0, 49, 5, 1, 0, 0, 0, 50, 51, 5, 31, 0, 0, 51, 7, 1, 0, 0, 0, 52, 53, 5, 8, 0, 0, 53, 55, 3, 16, 8, 0, 54, 52, 1, 0, 0, 0, 54, 55, 1, 0, 0, 0, 55, 64, 1, 0, 0, 0, 56, 59, 3, 10, 5, 0, 57, 58, 5, 8, 0, 0, 58, 60, 3, 16, 8, 0, 59, 57, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 1, 0, 0, 0, 61, 62, 3, 12, 6, 0, 62, 64, 1, 0, 0, 0, 63, 54, 1, 0, 0, 0, 63, 56, 1, 0, 0, 0, 64, 9, 1, 0, 0, 0, 65, 66, 5, 9, 0, 0, 66, 69, 5, 32, 0, 0, 67, 68, 5, 8, 0, 0, 68, 70, 3, 16, 8, 0, 69, 67, 1, 0, 0, 0, 69, 70, 1, 0, 0, 0, 70, 11, 1, 0, 0, 0, 71, 72, 5, 10, 0, 0, 72, 73, 3, 6, 3, 0, 73, 13, 1, 0, 0, 0, 74, 75, 7, 0, 0, 0, 75, 76, 5, 4, 0, 0, 76, 77, 3, 6, 3, 0, 77, 78, 5, 5, 0, 0, 78, 15, 1, 0, 0, 0, 79, 80, 6, 8, -1, 0, 80, 81, 5, 31, 0, 0, 81, 82, 3, 18, 9, 0, 82, 83, 3, 20, 10, 0, 83, 87, 1, 0, 0, 0, 84, 85, 5, 31, 0, 0, 85, 87, 7, 1, 0, 0, 86, 79, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 93, 1, 0, 0, 0, 88, 89, 10, 2, 0, 0, 89, 90, 7, 2, 0, 0, 90, 92, 3, 16, 8, 3, 91, 88, 1, 0, 0, 0, 92, 95, 1, 0, 0, 0, 93, 91, 1, 0, 0, 0, 93, 94, 1, 0, 0, 0, 94, 17, 1, 0, 0, 0, 95, 93, 1, 0, 0, 0, 96, 97, 7, 3, 0, 0, 97, 19, 1, 0, 0, 0, 98, 99, 7, 4, 0, 0, 99, 21, 1, 0, 0, 0, 10, 28, 37, 45, 48, 54, 59, 63, 69, 86, 93] \ No newline at end of file +[4, 1, 37, 111, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 31, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 5, 2, 38, 8, 2, 10, 2, 12, 2, 41, 9, 2, 1, 2, 1, 2, 1, 2, 4, 2, 46, 8, 2, 11, 2, 12, 2, 47, 1, 2, 3, 2, 51, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 57, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 62, 8, 4, 1, 4, 1, 4, 3, 4, 66, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 72, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 85, 8, 6, 1, 6, 1, 6, 1, 6, 5, 6, 90, 8, 6, 10, 6, 12, 6, 93, 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 0, 1, 12, 12, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 0, 5, 1, 0, 11, 12, 1, 0, 22, 23, 2, 0, 13, 20, 25, 26, 1, 0, 34, 36, 1, 0, 29, 32, 110, 0, 24, 1, 0, 0, 0, 2, 27, 1, 0, 0, 0, 4, 50, 1, 0, 0, 0, 6, 52, 1, 0, 0, 0, 8, 65, 1, 0, 0, 0, 10, 67, 1, 0, 0, 0, 12, 84, 1, 0, 0, 0, 14, 94, 1, 0, 0, 0, 16, 98, 1, 0, 0, 0, 18, 100, 1, 0, 0, 0, 20, 102, 1, 0, 0, 0, 22, 105, 1, 0, 0, 0, 24, 25, 3, 2, 1, 0, 25, 26, 5, 0, 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 5, 7, 0, 0, 28, 30, 3, 4, 2, 0, 29, 31, 3, 8, 4, 0, 30, 29, 1, 0, 0, 0, 30, 31, 1, 0, 0, 0, 31, 32, 1, 0, 0, 0, 32, 33, 5, 6, 0, 0, 33, 3, 1, 0, 0, 0, 34, 39, 3, 6, 3, 0, 35, 36, 5, 3, 0, 0, 36, 38, 3, 6, 3, 0, 37, 35, 1, 0, 0, 0, 38, 41, 1, 0, 0, 0, 39, 37, 1, 0, 0, 0, 39, 40, 1, 0, 0, 0, 40, 51, 1, 0, 0, 0, 41, 39, 1, 0, 0, 0, 42, 45, 3, 22, 11, 0, 43, 44, 5, 3, 0, 0, 44, 46, 3, 22, 11, 0, 45, 43, 1, 0, 0, 0, 46, 47, 1, 0, 0, 0, 47, 45, 1, 0, 0, 0, 47, 48, 1, 0, 0, 0, 48, 51, 1, 0, 0, 0, 49, 51, 5, 37, 0, 0, 50, 34, 1, 0, 0, 0, 50, 42, 1, 0, 0, 0, 50, 49, 1, 0, 0, 0, 51, 5, 1, 0, 0, 0, 52, 53, 5, 33, 0, 0, 53, 7, 1, 0, 0, 0, 54, 55, 5, 8, 0, 0, 55, 57, 3, 12, 6, 0, 56, 54, 1, 0, 0, 0, 56, 57, 1, 0, 0, 0, 57, 66, 1, 0, 0, 0, 58, 61, 3, 10, 5, 0, 59, 60, 5, 8, 0, 0, 60, 62, 3, 12, 6, 0, 61, 59, 1, 0, 0, 0, 61, 62, 1, 0, 0, 0, 62, 63, 1, 0, 0, 0, 63, 64, 3, 20, 10, 0, 64, 66, 1, 0, 0, 0, 65, 56, 1, 0, 0, 0, 65, 58, 1, 0, 0, 0, 66, 9, 1, 0, 0, 0, 67, 68, 5, 9, 0, 0, 68, 71, 5, 35, 0, 0, 69, 70, 5, 8, 0, 0, 70, 72, 3, 12, 6, 0, 71, 69, 1, 0, 0, 0, 71, 72, 1, 0, 0, 0, 72, 11, 1, 0, 0, 0, 73, 74, 6, 6, -1, 0, 74, 75, 5, 33, 0, 0, 75, 76, 3, 16, 8, 0, 76, 77, 3, 18, 9, 0, 77, 85, 1, 0, 0, 0, 78, 79, 3, 14, 7, 0, 79, 80, 7, 0, 0, 0, 80, 81, 3, 14, 7, 0, 81, 85, 1, 0, 0, 0, 82, 83, 5, 33, 0, 0, 83, 85, 7, 1, 0, 0, 84, 73, 1, 0, 0, 0, 84, 78, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 85, 91, 1, 0, 0, 0, 86, 87, 10, 1, 0, 0, 87, 88, 7, 0, 0, 0, 88, 90, 3, 12, 6, 2, 89, 86, 1, 0, 0, 0, 90, 93, 1, 0, 0, 0, 91, 89, 1, 0, 0, 0, 91, 92, 1, 0, 0, 0, 92, 13, 1, 0, 0, 0, 93, 91, 1, 0, 0, 0, 94, 95, 5, 4, 0, 0, 95, 96, 3, 12, 6, 0, 96, 97, 5, 5, 0, 0, 97, 15, 1, 0, 0, 0, 98, 99, 7, 2, 0, 0, 99, 17, 1, 0, 0, 0, 100, 101, 7, 3, 0, 0, 101, 19, 1, 0, 0, 0, 102, 103, 5, 10, 0, 0, 103, 104, 3, 6, 3, 0, 104, 21, 1, 0, 0, 0, 105, 106, 7, 4, 0, 0, 106, 107, 5, 4, 0, 0, 107, 108, 3, 6, 3, 0, 108, 109, 5, 5, 0, 0, 109, 23, 1, 0, 0, 0, 10, 30, 39, 47, 50, 56, 61, 65, 71, 84, 91] \ No newline at end of file diff --git a/processor/stream_processor/parser/Sql.tokens b/processor/stream_processor/parser/Sql.tokens index dc7bcb663240..23c7b10dbb8a 100644 --- a/processor/stream_processor/parser/Sql.tokens +++ b/processor/stream_processor/parser/Sql.tokens @@ -24,14 +24,17 @@ K_IS_NOT_NULL=23 K_NOT=24 K_NOT_IN=25 K_IN=26 -K_COUNT=27 -K_MIN=28 -K_MAX=29 -K_AVG=30 -IDENTIFIER=31 -NUMERIC_LITERAL=32 -STRING_LITERAL=33 -STAR=34 +K_TRUE=27 +K_FALSE=28 +K_COUNT=29 +K_MIN=30 +K_MAX=31 +K_AVG=32 +IDENTIFIER=33 +BOOLEAN_LITERAL=34 +NUMERIC_LITERAL=35 +STRING_LITERAL=36 +STAR=37 ','=3 '('=4 ')'=5 @@ -39,4 +42,4 @@ STAR=34 '='=15 '>'=16 '<'=17 -'*'=34 +'*'=37 diff --git a/processor/stream_processor/parser/SqlLexer.interp b/processor/stream_processor/parser/SqlLexer.interp index 694dc8f06eba..3dc2ef55c28e 100644 --- a/processor/stream_processor/parser/SqlLexer.interp +++ b/processor/stream_processor/parser/SqlLexer.interp @@ -33,6 +33,9 @@ null null null null +null +null +null '*' token symbolic names: @@ -63,11 +66,14 @@ K_IS_NOT_NULL K_NOT K_NOT_IN K_IN +K_TRUE +K_FALSE K_COUNT K_MIN K_MAX K_AVG IDENTIFIER +BOOLEAN_LITERAL NUMERIC_LITERAL STRING_LITERAL STAR @@ -99,11 +105,14 @@ K_IS_NOT_NULL K_NOT K_NOT_IN K_IN +K_TRUE +K_FALSE K_COUNT K_MIN K_MAX K_AVG IDENTIFIER +BOOLEAN_LITERAL NUMERIC_LITERAL STRING_LITERAL STAR @@ -143,4 +152,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 34, 403, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 129, 8, 1, 11, 1, 12, 1, 130, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 260, 8, 30, 10, 30, 12, 30, 263, 9, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 270, 8, 30, 10, 30, 12, 30, 273, 9, 30, 1, 30, 1, 30, 1, 30, 5, 30, 278, 8, 30, 10, 30, 12, 30, 281, 9, 30, 1, 30, 1, 30, 1, 30, 5, 30, 286, 8, 30, 10, 30, 12, 30, 289, 9, 30, 3, 30, 291, 8, 30, 1, 31, 4, 31, 294, 8, 31, 11, 31, 12, 31, 295, 1, 31, 1, 31, 5, 31, 300, 8, 31, 10, 31, 12, 31, 303, 9, 31, 3, 31, 305, 8, 31, 1, 31, 1, 31, 3, 31, 309, 8, 31, 1, 31, 4, 31, 312, 8, 31, 11, 31, 12, 31, 313, 3, 31, 316, 8, 31, 1, 31, 1, 31, 4, 31, 320, 8, 31, 11, 31, 12, 31, 321, 1, 31, 1, 31, 3, 31, 326, 8, 31, 1, 31, 4, 31, 329, 8, 31, 11, 31, 12, 31, 330, 3, 31, 333, 8, 31, 3, 31, 335, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 341, 8, 32, 10, 32, 12, 32, 344, 9, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 0, 0, 61, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 0, 71, 0, 73, 0, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 398, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 1, 123, 1, 0, 0, 0, 3, 128, 1, 0, 0, 0, 5, 134, 1, 0, 0, 0, 7, 136, 1, 0, 0, 0, 9, 138, 1, 0, 0, 0, 11, 140, 1, 0, 0, 0, 13, 142, 1, 0, 0, 0, 15, 149, 1, 0, 0, 0, 17, 155, 1, 0, 0, 0, 19, 171, 1, 0, 0, 0, 21, 180, 1, 0, 0, 0, 23, 184, 1, 0, 0, 0, 25, 187, 1, 0, 0, 0, 27, 190, 1, 0, 0, 0, 29, 195, 1, 0, 0, 0, 31, 197, 1, 0, 0, 0, 33, 199, 1, 0, 0, 0, 35, 201, 1, 0, 0, 0, 37, 204, 1, 0, 0, 0, 39, 207, 1, 0, 0, 0, 41, 210, 1, 0, 0, 0, 43, 215, 1, 0, 0, 0, 45, 219, 1, 0, 0, 0, 47, 225, 1, 0, 0, 0, 49, 229, 1, 0, 0, 0, 51, 234, 1, 0, 0, 0, 53, 237, 1, 0, 0, 0, 55, 243, 1, 0, 0, 0, 57, 247, 1, 0, 0, 0, 59, 251, 1, 0, 0, 0, 61, 290, 1, 0, 0, 0, 63, 334, 1, 0, 0, 0, 65, 336, 1, 0, 0, 0, 67, 347, 1, 0, 0, 0, 69, 349, 1, 0, 0, 0, 71, 351, 1, 0, 0, 0, 73, 353, 1, 0, 0, 0, 75, 355, 1, 0, 0, 0, 77, 357, 1, 0, 0, 0, 79, 359, 1, 0, 0, 0, 81, 361, 1, 0, 0, 0, 83, 363, 1, 0, 0, 0, 85, 365, 1, 0, 0, 0, 87, 367, 1, 0, 0, 0, 89, 369, 1, 0, 0, 0, 91, 371, 1, 0, 0, 0, 93, 373, 1, 0, 0, 0, 95, 375, 1, 0, 0, 0, 97, 377, 1, 0, 0, 0, 99, 379, 1, 0, 0, 0, 101, 381, 1, 0, 0, 0, 103, 383, 1, 0, 0, 0, 105, 385, 1, 0, 0, 0, 107, 387, 1, 0, 0, 0, 109, 389, 1, 0, 0, 0, 111, 391, 1, 0, 0, 0, 113, 393, 1, 0, 0, 0, 115, 395, 1, 0, 0, 0, 117, 397, 1, 0, 0, 0, 119, 399, 1, 0, 0, 0, 121, 401, 1, 0, 0, 0, 123, 124, 7, 0, 0, 0, 124, 125, 1, 0, 0, 0, 125, 126, 6, 0, 0, 0, 126, 2, 1, 0, 0, 0, 127, 129, 7, 1, 0, 0, 128, 127, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 128, 1, 0, 0, 0, 130, 131, 1, 0, 0, 0, 131, 132, 1, 0, 0, 0, 132, 133, 6, 1, 1, 0, 133, 4, 1, 0, 0, 0, 134, 135, 5, 44, 0, 0, 135, 6, 1, 0, 0, 0, 136, 137, 5, 40, 0, 0, 137, 8, 1, 0, 0, 0, 138, 139, 5, 41, 0, 0, 139, 10, 1, 0, 0, 0, 140, 141, 5, 59, 0, 0, 141, 12, 1, 0, 0, 0, 142, 143, 3, 107, 53, 0, 143, 144, 3, 79, 39, 0, 144, 145, 3, 93, 46, 0, 145, 146, 3, 79, 39, 0, 146, 147, 3, 75, 37, 0, 147, 148, 3, 109, 54, 0, 148, 14, 1, 0, 0, 0, 149, 150, 3, 115, 57, 0, 150, 151, 3, 85, 42, 0, 151, 152, 3, 79, 39, 0, 152, 153, 3, 105, 52, 0, 153, 154, 3, 79, 39, 0, 154, 16, 1, 0, 0, 0, 155, 156, 3, 115, 57, 0, 156, 157, 3, 87, 43, 0, 157, 158, 3, 97, 48, 0, 158, 159, 3, 77, 38, 0, 159, 160, 3, 99, 49, 0, 160, 161, 3, 115, 57, 0, 161, 162, 3, 1, 0, 0, 162, 163, 3, 109, 54, 0, 163, 164, 3, 111, 55, 0, 164, 165, 3, 95, 47, 0, 165, 166, 3, 73, 36, 0, 166, 167, 3, 93, 46, 0, 167, 168, 3, 87, 43, 0, 168, 169, 3, 97, 48, 0, 169, 170, 3, 83, 41, 0, 170, 18, 1, 0, 0, 0, 171, 172, 3, 83, 41, 0, 172, 173, 3, 105, 52, 0, 173, 174, 3, 99, 49, 0, 174, 175, 3, 111, 55, 0, 175, 176, 3, 101, 50, 0, 176, 177, 3, 1, 0, 0, 177, 178, 3, 73, 36, 0, 178, 179, 3, 119, 59, 0, 179, 20, 1, 0, 0, 0, 180, 181, 3, 71, 35, 0, 181, 182, 3, 97, 48, 0, 182, 183, 3, 77, 38, 0, 183, 22, 1, 0, 0, 0, 184, 185, 3, 99, 49, 0, 185, 186, 3, 105, 52, 0, 186, 24, 1, 0, 0, 0, 187, 188, 3, 87, 43, 0, 188, 189, 3, 107, 53, 0, 189, 26, 1, 0, 0, 0, 190, 191, 3, 93, 46, 0, 191, 192, 3, 87, 43, 0, 192, 193, 3, 91, 45, 0, 193, 194, 3, 79, 39, 0, 194, 28, 1, 0, 0, 0, 195, 196, 5, 61, 0, 0, 196, 30, 1, 0, 0, 0, 197, 198, 5, 62, 0, 0, 198, 32, 1, 0, 0, 0, 199, 200, 5, 60, 0, 0, 200, 34, 1, 0, 0, 0, 201, 202, 3, 33, 16, 0, 202, 203, 3, 29, 14, 0, 203, 36, 1, 0, 0, 0, 204, 205, 3, 31, 15, 0, 205, 206, 3, 29, 14, 0, 206, 38, 1, 0, 0, 0, 207, 208, 5, 33, 0, 0, 208, 209, 3, 29, 14, 0, 209, 40, 1, 0, 0, 0, 210, 211, 3, 97, 48, 0, 211, 212, 3, 111, 55, 0, 212, 213, 3, 93, 46, 0, 213, 214, 3, 93, 46, 0, 214, 42, 1, 0, 0, 0, 215, 216, 3, 25, 12, 0, 216, 217, 3, 1, 0, 0, 217, 218, 3, 41, 20, 0, 218, 44, 1, 0, 0, 0, 219, 220, 3, 25, 12, 0, 220, 221, 3, 1, 0, 0, 221, 222, 3, 47, 23, 0, 222, 223, 3, 1, 0, 0, 223, 224, 3, 41, 20, 0, 224, 46, 1, 0, 0, 0, 225, 226, 3, 97, 48, 0, 226, 227, 3, 99, 49, 0, 227, 228, 3, 109, 54, 0, 228, 48, 1, 0, 0, 0, 229, 230, 3, 47, 23, 0, 230, 231, 3, 1, 0, 0, 231, 232, 3, 87, 43, 0, 232, 233, 3, 97, 48, 0, 233, 50, 1, 0, 0, 0, 234, 235, 3, 87, 43, 0, 235, 236, 3, 97, 48, 0, 236, 52, 1, 0, 0, 0, 237, 238, 3, 75, 37, 0, 238, 239, 3, 99, 49, 0, 239, 240, 3, 111, 55, 0, 240, 241, 3, 97, 48, 0, 241, 242, 3, 109, 54, 0, 242, 54, 1, 0, 0, 0, 243, 244, 3, 95, 47, 0, 244, 245, 3, 87, 43, 0, 245, 246, 3, 97, 48, 0, 246, 56, 1, 0, 0, 0, 247, 248, 3, 95, 47, 0, 248, 249, 3, 71, 35, 0, 249, 250, 3, 117, 58, 0, 250, 58, 1, 0, 0, 0, 251, 252, 3, 71, 35, 0, 252, 253, 3, 113, 56, 0, 253, 254, 3, 83, 41, 0, 254, 60, 1, 0, 0, 0, 255, 261, 5, 34, 0, 0, 256, 260, 8, 2, 0, 0, 257, 258, 5, 34, 0, 0, 258, 260, 5, 34, 0, 0, 259, 256, 1, 0, 0, 0, 259, 257, 1, 0, 0, 0, 260, 263, 1, 0, 0, 0, 261, 259, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 264, 1, 0, 0, 0, 263, 261, 1, 0, 0, 0, 264, 291, 5, 34, 0, 0, 265, 271, 5, 96, 0, 0, 266, 270, 8, 3, 0, 0, 267, 268, 5, 96, 0, 0, 268, 270, 5, 96, 0, 0, 269, 266, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 270, 273, 1, 0, 0, 0, 271, 269, 1, 0, 0, 0, 271, 272, 1, 0, 0, 0, 272, 274, 1, 0, 0, 0, 273, 271, 1, 0, 0, 0, 274, 291, 5, 96, 0, 0, 275, 279, 5, 91, 0, 0, 276, 278, 8, 4, 0, 0, 277, 276, 1, 0, 0, 0, 278, 281, 1, 0, 0, 0, 279, 277, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 282, 1, 0, 0, 0, 281, 279, 1, 0, 0, 0, 282, 291, 5, 93, 0, 0, 283, 287, 7, 5, 0, 0, 284, 286, 7, 6, 0, 0, 285, 284, 1, 0, 0, 0, 286, 289, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 287, 288, 1, 0, 0, 0, 288, 291, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 290, 255, 1, 0, 0, 0, 290, 265, 1, 0, 0, 0, 290, 275, 1, 0, 0, 0, 290, 283, 1, 0, 0, 0, 291, 62, 1, 0, 0, 0, 292, 294, 3, 69, 34, 0, 293, 292, 1, 0, 0, 0, 294, 295, 1, 0, 0, 0, 295, 293, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 304, 1, 0, 0, 0, 297, 301, 5, 46, 0, 0, 298, 300, 3, 69, 34, 0, 299, 298, 1, 0, 0, 0, 300, 303, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 305, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 304, 297, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 315, 1, 0, 0, 0, 306, 308, 3, 79, 39, 0, 307, 309, 7, 7, 0, 0, 308, 307, 1, 0, 0, 0, 308, 309, 1, 0, 0, 0, 309, 311, 1, 0, 0, 0, 310, 312, 3, 69, 34, 0, 311, 310, 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 316, 1, 0, 0, 0, 315, 306, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 335, 1, 0, 0, 0, 317, 319, 5, 46, 0, 0, 318, 320, 3, 69, 34, 0, 319, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 332, 1, 0, 0, 0, 323, 325, 3, 79, 39, 0, 324, 326, 7, 7, 0, 0, 325, 324, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, 326, 328, 1, 0, 0, 0, 327, 329, 3, 69, 34, 0, 328, 327, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 328, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 333, 1, 0, 0, 0, 332, 323, 1, 0, 0, 0, 332, 333, 1, 0, 0, 0, 333, 335, 1, 0, 0, 0, 334, 293, 1, 0, 0, 0, 334, 317, 1, 0, 0, 0, 335, 64, 1, 0, 0, 0, 336, 342, 5, 39, 0, 0, 337, 341, 8, 8, 0, 0, 338, 339, 5, 39, 0, 0, 339, 341, 5, 39, 0, 0, 340, 337, 1, 0, 0, 0, 340, 338, 1, 0, 0, 0, 341, 344, 1, 0, 0, 0, 342, 340, 1, 0, 0, 0, 342, 343, 1, 0, 0, 0, 343, 345, 1, 0, 0, 0, 344, 342, 1, 0, 0, 0, 345, 346, 5, 39, 0, 0, 346, 66, 1, 0, 0, 0, 347, 348, 5, 42, 0, 0, 348, 68, 1, 0, 0, 0, 349, 350, 7, 9, 0, 0, 350, 70, 1, 0, 0, 0, 351, 352, 7, 10, 0, 0, 352, 72, 1, 0, 0, 0, 353, 354, 7, 11, 0, 0, 354, 74, 1, 0, 0, 0, 355, 356, 7, 12, 0, 0, 356, 76, 1, 0, 0, 0, 357, 358, 7, 13, 0, 0, 358, 78, 1, 0, 0, 0, 359, 360, 7, 14, 0, 0, 360, 80, 1, 0, 0, 0, 361, 362, 7, 15, 0, 0, 362, 82, 1, 0, 0, 0, 363, 364, 7, 16, 0, 0, 364, 84, 1, 0, 0, 0, 365, 366, 7, 17, 0, 0, 366, 86, 1, 0, 0, 0, 367, 368, 7, 18, 0, 0, 368, 88, 1, 0, 0, 0, 369, 370, 7, 19, 0, 0, 370, 90, 1, 0, 0, 0, 371, 372, 7, 20, 0, 0, 372, 92, 1, 0, 0, 0, 373, 374, 7, 21, 0, 0, 374, 94, 1, 0, 0, 0, 375, 376, 7, 22, 0, 0, 376, 96, 1, 0, 0, 0, 377, 378, 7, 23, 0, 0, 378, 98, 1, 0, 0, 0, 379, 380, 7, 24, 0, 0, 380, 100, 1, 0, 0, 0, 381, 382, 7, 25, 0, 0, 382, 102, 1, 0, 0, 0, 383, 384, 7, 26, 0, 0, 384, 104, 1, 0, 0, 0, 385, 386, 7, 27, 0, 0, 386, 106, 1, 0, 0, 0, 387, 388, 7, 28, 0, 0, 388, 108, 1, 0, 0, 0, 389, 390, 7, 29, 0, 0, 390, 110, 1, 0, 0, 0, 391, 392, 7, 30, 0, 0, 392, 112, 1, 0, 0, 0, 393, 394, 7, 31, 0, 0, 394, 114, 1, 0, 0, 0, 395, 396, 7, 32, 0, 0, 396, 116, 1, 0, 0, 0, 397, 398, 7, 33, 0, 0, 398, 118, 1, 0, 0, 0, 399, 400, 7, 34, 0, 0, 400, 120, 1, 0, 0, 0, 401, 402, 7, 35, 0, 0, 402, 122, 1, 0, 0, 0, 22, 0, 130, 259, 261, 269, 271, 279, 287, 290, 295, 301, 304, 308, 313, 315, 321, 325, 330, 332, 334, 340, 342, 2, 0, 1, 0, 6, 0, 0] \ No newline at end of file +[4, 0, 37, 424, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 135, 8, 1, 11, 1, 12, 1, 136, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 277, 8, 32, 10, 32, 12, 32, 280, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 287, 8, 32, 10, 32, 12, 32, 290, 9, 32, 1, 32, 1, 32, 1, 32, 5, 32, 295, 8, 32, 10, 32, 12, 32, 298, 9, 32, 1, 32, 1, 32, 1, 32, 5, 32, 303, 8, 32, 10, 32, 12, 32, 306, 9, 32, 3, 32, 308, 8, 32, 1, 33, 1, 33, 3, 33, 312, 8, 33, 1, 34, 4, 34, 315, 8, 34, 11, 34, 12, 34, 316, 1, 34, 1, 34, 5, 34, 321, 8, 34, 10, 34, 12, 34, 324, 9, 34, 3, 34, 326, 8, 34, 1, 34, 1, 34, 3, 34, 330, 8, 34, 1, 34, 4, 34, 333, 8, 34, 11, 34, 12, 34, 334, 3, 34, 337, 8, 34, 1, 34, 1, 34, 4, 34, 341, 8, 34, 11, 34, 12, 34, 342, 1, 34, 1, 34, 3, 34, 347, 8, 34, 1, 34, 4, 34, 350, 8, 34, 11, 34, 12, 34, 351, 3, 34, 354, 8, 34, 3, 34, 356, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 362, 8, 35, 10, 35, 12, 35, 365, 9, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 0, 0, 64, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 420, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 1, 129, 1, 0, 0, 0, 3, 134, 1, 0, 0, 0, 5, 140, 1, 0, 0, 0, 7, 142, 1, 0, 0, 0, 9, 144, 1, 0, 0, 0, 11, 146, 1, 0, 0, 0, 13, 148, 1, 0, 0, 0, 15, 155, 1, 0, 0, 0, 17, 161, 1, 0, 0, 0, 19, 177, 1, 0, 0, 0, 21, 186, 1, 0, 0, 0, 23, 190, 1, 0, 0, 0, 25, 193, 1, 0, 0, 0, 27, 196, 1, 0, 0, 0, 29, 201, 1, 0, 0, 0, 31, 203, 1, 0, 0, 0, 33, 205, 1, 0, 0, 0, 35, 207, 1, 0, 0, 0, 37, 210, 1, 0, 0, 0, 39, 213, 1, 0, 0, 0, 41, 216, 1, 0, 0, 0, 43, 221, 1, 0, 0, 0, 45, 225, 1, 0, 0, 0, 47, 231, 1, 0, 0, 0, 49, 235, 1, 0, 0, 0, 51, 240, 1, 0, 0, 0, 53, 243, 1, 0, 0, 0, 55, 248, 1, 0, 0, 0, 57, 254, 1, 0, 0, 0, 59, 260, 1, 0, 0, 0, 61, 264, 1, 0, 0, 0, 63, 268, 1, 0, 0, 0, 65, 307, 1, 0, 0, 0, 67, 311, 1, 0, 0, 0, 69, 355, 1, 0, 0, 0, 71, 357, 1, 0, 0, 0, 73, 368, 1, 0, 0, 0, 75, 370, 1, 0, 0, 0, 77, 372, 1, 0, 0, 0, 79, 374, 1, 0, 0, 0, 81, 376, 1, 0, 0, 0, 83, 378, 1, 0, 0, 0, 85, 380, 1, 0, 0, 0, 87, 382, 1, 0, 0, 0, 89, 384, 1, 0, 0, 0, 91, 386, 1, 0, 0, 0, 93, 388, 1, 0, 0, 0, 95, 390, 1, 0, 0, 0, 97, 392, 1, 0, 0, 0, 99, 394, 1, 0, 0, 0, 101, 396, 1, 0, 0, 0, 103, 398, 1, 0, 0, 0, 105, 400, 1, 0, 0, 0, 107, 402, 1, 0, 0, 0, 109, 404, 1, 0, 0, 0, 111, 406, 1, 0, 0, 0, 113, 408, 1, 0, 0, 0, 115, 410, 1, 0, 0, 0, 117, 412, 1, 0, 0, 0, 119, 414, 1, 0, 0, 0, 121, 416, 1, 0, 0, 0, 123, 418, 1, 0, 0, 0, 125, 420, 1, 0, 0, 0, 127, 422, 1, 0, 0, 0, 129, 130, 7, 0, 0, 0, 130, 131, 1, 0, 0, 0, 131, 132, 6, 0, 0, 0, 132, 2, 1, 0, 0, 0, 133, 135, 7, 1, 0, 0, 134, 133, 1, 0, 0, 0, 135, 136, 1, 0, 0, 0, 136, 134, 1, 0, 0, 0, 136, 137, 1, 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, 139, 6, 1, 1, 0, 139, 4, 1, 0, 0, 0, 140, 141, 5, 44, 0, 0, 141, 6, 1, 0, 0, 0, 142, 143, 5, 40, 0, 0, 143, 8, 1, 0, 0, 0, 144, 145, 5, 41, 0, 0, 145, 10, 1, 0, 0, 0, 146, 147, 5, 59, 0, 0, 147, 12, 1, 0, 0, 0, 148, 149, 3, 113, 56, 0, 149, 150, 3, 85, 42, 0, 150, 151, 3, 99, 49, 0, 151, 152, 3, 85, 42, 0, 152, 153, 3, 81, 40, 0, 153, 154, 3, 115, 57, 0, 154, 14, 1, 0, 0, 0, 155, 156, 3, 121, 60, 0, 156, 157, 3, 91, 45, 0, 157, 158, 3, 85, 42, 0, 158, 159, 3, 111, 55, 0, 159, 160, 3, 85, 42, 0, 160, 16, 1, 0, 0, 0, 161, 162, 3, 121, 60, 0, 162, 163, 3, 93, 46, 0, 163, 164, 3, 103, 51, 0, 164, 165, 3, 83, 41, 0, 165, 166, 3, 105, 52, 0, 166, 167, 3, 121, 60, 0, 167, 168, 3, 1, 0, 0, 168, 169, 3, 115, 57, 0, 169, 170, 3, 117, 58, 0, 170, 171, 3, 101, 50, 0, 171, 172, 3, 79, 39, 0, 172, 173, 3, 99, 49, 0, 173, 174, 3, 93, 46, 0, 174, 175, 3, 103, 51, 0, 175, 176, 3, 89, 44, 0, 176, 18, 1, 0, 0, 0, 177, 178, 3, 89, 44, 0, 178, 179, 3, 111, 55, 0, 179, 180, 3, 105, 52, 0, 180, 181, 3, 117, 58, 0, 181, 182, 3, 107, 53, 0, 182, 183, 3, 1, 0, 0, 183, 184, 3, 79, 39, 0, 184, 185, 3, 125, 62, 0, 185, 20, 1, 0, 0, 0, 186, 187, 3, 77, 38, 0, 187, 188, 3, 103, 51, 0, 188, 189, 3, 83, 41, 0, 189, 22, 1, 0, 0, 0, 190, 191, 3, 105, 52, 0, 191, 192, 3, 111, 55, 0, 192, 24, 1, 0, 0, 0, 193, 194, 3, 93, 46, 0, 194, 195, 3, 113, 56, 0, 195, 26, 1, 0, 0, 0, 196, 197, 3, 99, 49, 0, 197, 198, 3, 93, 46, 0, 198, 199, 3, 97, 48, 0, 199, 200, 3, 85, 42, 0, 200, 28, 1, 0, 0, 0, 201, 202, 5, 61, 0, 0, 202, 30, 1, 0, 0, 0, 203, 204, 5, 62, 0, 0, 204, 32, 1, 0, 0, 0, 205, 206, 5, 60, 0, 0, 206, 34, 1, 0, 0, 0, 207, 208, 3, 33, 16, 0, 208, 209, 3, 29, 14, 0, 209, 36, 1, 0, 0, 0, 210, 211, 3, 31, 15, 0, 211, 212, 3, 29, 14, 0, 212, 38, 1, 0, 0, 0, 213, 214, 5, 33, 0, 0, 214, 215, 3, 29, 14, 0, 215, 40, 1, 0, 0, 0, 216, 217, 3, 103, 51, 0, 217, 218, 3, 117, 58, 0, 218, 219, 3, 99, 49, 0, 219, 220, 3, 99, 49, 0, 220, 42, 1, 0, 0, 0, 221, 222, 3, 25, 12, 0, 222, 223, 3, 1, 0, 0, 223, 224, 3, 41, 20, 0, 224, 44, 1, 0, 0, 0, 225, 226, 3, 25, 12, 0, 226, 227, 3, 1, 0, 0, 227, 228, 3, 47, 23, 0, 228, 229, 3, 1, 0, 0, 229, 230, 3, 41, 20, 0, 230, 46, 1, 0, 0, 0, 231, 232, 3, 103, 51, 0, 232, 233, 3, 105, 52, 0, 233, 234, 3, 115, 57, 0, 234, 48, 1, 0, 0, 0, 235, 236, 3, 47, 23, 0, 236, 237, 3, 1, 0, 0, 237, 238, 3, 93, 46, 0, 238, 239, 3, 103, 51, 0, 239, 50, 1, 0, 0, 0, 240, 241, 3, 93, 46, 0, 241, 242, 3, 103, 51, 0, 242, 52, 1, 0, 0, 0, 243, 244, 3, 115, 57, 0, 244, 245, 3, 111, 55, 0, 245, 246, 3, 117, 58, 0, 246, 247, 3, 85, 42, 0, 247, 54, 1, 0, 0, 0, 248, 249, 3, 87, 43, 0, 249, 250, 3, 77, 38, 0, 250, 251, 3, 99, 49, 0, 251, 252, 3, 113, 56, 0, 252, 253, 3, 85, 42, 0, 253, 56, 1, 0, 0, 0, 254, 255, 3, 81, 40, 0, 255, 256, 3, 105, 52, 0, 256, 257, 3, 117, 58, 0, 257, 258, 3, 103, 51, 0, 258, 259, 3, 115, 57, 0, 259, 58, 1, 0, 0, 0, 260, 261, 3, 101, 50, 0, 261, 262, 3, 93, 46, 0, 262, 263, 3, 103, 51, 0, 263, 60, 1, 0, 0, 0, 264, 265, 3, 101, 50, 0, 265, 266, 3, 77, 38, 0, 266, 267, 3, 123, 61, 0, 267, 62, 1, 0, 0, 0, 268, 269, 3, 77, 38, 0, 269, 270, 3, 119, 59, 0, 270, 271, 3, 89, 44, 0, 271, 64, 1, 0, 0, 0, 272, 278, 5, 34, 0, 0, 273, 277, 8, 2, 0, 0, 274, 275, 5, 34, 0, 0, 275, 277, 5, 34, 0, 0, 276, 273, 1, 0, 0, 0, 276, 274, 1, 0, 0, 0, 277, 280, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 281, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 308, 5, 34, 0, 0, 282, 288, 5, 96, 0, 0, 283, 287, 8, 3, 0, 0, 284, 285, 5, 96, 0, 0, 285, 287, 5, 96, 0, 0, 286, 283, 1, 0, 0, 0, 286, 284, 1, 0, 0, 0, 287, 290, 1, 0, 0, 0, 288, 286, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0, 289, 291, 1, 0, 0, 0, 290, 288, 1, 0, 0, 0, 291, 308, 5, 96, 0, 0, 292, 296, 5, 91, 0, 0, 293, 295, 8, 4, 0, 0, 294, 293, 1, 0, 0, 0, 295, 298, 1, 0, 0, 0, 296, 294, 1, 0, 0, 0, 296, 297, 1, 0, 0, 0, 297, 299, 1, 0, 0, 0, 298, 296, 1, 0, 0, 0, 299, 308, 5, 93, 0, 0, 300, 304, 7, 5, 0, 0, 301, 303, 7, 6, 0, 0, 302, 301, 1, 0, 0, 0, 303, 306, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 308, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 307, 272, 1, 0, 0, 0, 307, 282, 1, 0, 0, 0, 307, 292, 1, 0, 0, 0, 307, 300, 1, 0, 0, 0, 308, 66, 1, 0, 0, 0, 309, 312, 3, 53, 26, 0, 310, 312, 3, 55, 27, 0, 311, 309, 1, 0, 0, 0, 311, 310, 1, 0, 0, 0, 312, 68, 1, 0, 0, 0, 313, 315, 3, 75, 37, 0, 314, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 314, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 325, 1, 0, 0, 0, 318, 322, 5, 46, 0, 0, 319, 321, 3, 75, 37, 0, 320, 319, 1, 0, 0, 0, 321, 324, 1, 0, 0, 0, 322, 320, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 323, 326, 1, 0, 0, 0, 324, 322, 1, 0, 0, 0, 325, 318, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, 326, 336, 1, 0, 0, 0, 327, 329, 3, 85, 42, 0, 328, 330, 7, 7, 0, 0, 329, 328, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 332, 1, 0, 0, 0, 331, 333, 3, 75, 37, 0, 332, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 334, 335, 1, 0, 0, 0, 335, 337, 1, 0, 0, 0, 336, 327, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 356, 1, 0, 0, 0, 338, 340, 5, 46, 0, 0, 339, 341, 3, 75, 37, 0, 340, 339, 1, 0, 0, 0, 341, 342, 1, 0, 0, 0, 342, 340, 1, 0, 0, 0, 342, 343, 1, 0, 0, 0, 343, 353, 1, 0, 0, 0, 344, 346, 3, 85, 42, 0, 345, 347, 7, 7, 0, 0, 346, 345, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347, 349, 1, 0, 0, 0, 348, 350, 3, 75, 37, 0, 349, 348, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 344, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 356, 1, 0, 0, 0, 355, 314, 1, 0, 0, 0, 355, 338, 1, 0, 0, 0, 356, 70, 1, 0, 0, 0, 357, 363, 5, 39, 0, 0, 358, 362, 8, 8, 0, 0, 359, 360, 5, 39, 0, 0, 360, 362, 5, 39, 0, 0, 361, 358, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 362, 365, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 366, 1, 0, 0, 0, 365, 363, 1, 0, 0, 0, 366, 367, 5, 39, 0, 0, 367, 72, 1, 0, 0, 0, 368, 369, 5, 42, 0, 0, 369, 74, 1, 0, 0, 0, 370, 371, 7, 9, 0, 0, 371, 76, 1, 0, 0, 0, 372, 373, 7, 10, 0, 0, 373, 78, 1, 0, 0, 0, 374, 375, 7, 11, 0, 0, 375, 80, 1, 0, 0, 0, 376, 377, 7, 12, 0, 0, 377, 82, 1, 0, 0, 0, 378, 379, 7, 13, 0, 0, 379, 84, 1, 0, 0, 0, 380, 381, 7, 14, 0, 0, 381, 86, 1, 0, 0, 0, 382, 383, 7, 15, 0, 0, 383, 88, 1, 0, 0, 0, 384, 385, 7, 16, 0, 0, 385, 90, 1, 0, 0, 0, 386, 387, 7, 17, 0, 0, 387, 92, 1, 0, 0, 0, 388, 389, 7, 18, 0, 0, 389, 94, 1, 0, 0, 0, 390, 391, 7, 19, 0, 0, 391, 96, 1, 0, 0, 0, 392, 393, 7, 20, 0, 0, 393, 98, 1, 0, 0, 0, 394, 395, 7, 21, 0, 0, 395, 100, 1, 0, 0, 0, 396, 397, 7, 22, 0, 0, 397, 102, 1, 0, 0, 0, 398, 399, 7, 23, 0, 0, 399, 104, 1, 0, 0, 0, 400, 401, 7, 24, 0, 0, 401, 106, 1, 0, 0, 0, 402, 403, 7, 25, 0, 0, 403, 108, 1, 0, 0, 0, 404, 405, 7, 26, 0, 0, 405, 110, 1, 0, 0, 0, 406, 407, 7, 27, 0, 0, 407, 112, 1, 0, 0, 0, 408, 409, 7, 28, 0, 0, 409, 114, 1, 0, 0, 0, 410, 411, 7, 29, 0, 0, 411, 116, 1, 0, 0, 0, 412, 413, 7, 30, 0, 0, 413, 118, 1, 0, 0, 0, 414, 415, 7, 31, 0, 0, 415, 120, 1, 0, 0, 0, 416, 417, 7, 32, 0, 0, 417, 122, 1, 0, 0, 0, 418, 419, 7, 33, 0, 0, 419, 124, 1, 0, 0, 0, 420, 421, 7, 34, 0, 0, 421, 126, 1, 0, 0, 0, 422, 423, 7, 35, 0, 0, 423, 128, 1, 0, 0, 0, 23, 0, 136, 276, 278, 286, 288, 296, 304, 307, 311, 316, 322, 325, 329, 334, 336, 342, 346, 351, 353, 355, 361, 363, 2, 0, 1, 0, 6, 0, 0] \ No newline at end of file diff --git a/processor/stream_processor/parser/SqlLexer.tokens b/processor/stream_processor/parser/SqlLexer.tokens index dc7bcb663240..23c7b10dbb8a 100644 --- a/processor/stream_processor/parser/SqlLexer.tokens +++ b/processor/stream_processor/parser/SqlLexer.tokens @@ -24,14 +24,17 @@ K_IS_NOT_NULL=23 K_NOT=24 K_NOT_IN=25 K_IN=26 -K_COUNT=27 -K_MIN=28 -K_MAX=29 -K_AVG=30 -IDENTIFIER=31 -NUMERIC_LITERAL=32 -STRING_LITERAL=33 -STAR=34 +K_TRUE=27 +K_FALSE=28 +K_COUNT=29 +K_MIN=30 +K_MAX=31 +K_AVG=32 +IDENTIFIER=33 +BOOLEAN_LITERAL=34 +NUMERIC_LITERAL=35 +STRING_LITERAL=36 +STAR=37 ','=3 '('=4 ')'=5 @@ -39,4 +42,4 @@ STAR=34 '='=15 '>'=16 '<'=17 -'*'=34 +'*'=37 diff --git a/processor/stream_processor/parser/sql_base_visitor.go b/processor/stream_processor/parser/sql_base_visitor.go index 678648baaf47..fd0688738720 100644 --- a/processor/stream_processor/parser/sql_base_visitor.go +++ b/processor/stream_processor/parser/sql_base_visitor.go @@ -44,15 +44,23 @@ func (v *BaseSqlVisitor) VisitTumblingWindow(ctx *TumblingWindowContext) interfa return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitGroupBy(ctx *GroupByContext) interface{} { +func (v *BaseSqlVisitor) VisitSimpleCondition(ctx *SimpleConditionContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitAvg(ctx *AvgContext) interface{} { +func (v *BaseSqlVisitor) VisitNullCondition(ctx *NullConditionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitCompoundRecursiveCondition(ctx *CompoundRecursiveConditionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitSimpleRecursiveCondition(ctx *SimpleRecursiveConditionContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitExpr(ctx *ExprContext) interface{} { +func (v *BaseSqlVisitor) VisitCompoundExpr(ctx *CompoundExprContext) interface{} { return v.VisitChildren(ctx) } @@ -63,3 +71,11 @@ func (v *BaseSqlVisitor) VisitComparisonOperator(ctx *ComparisonOperatorContext) func (v *BaseSqlVisitor) VisitLiteralValue(ctx *LiteralValueContext) interface{} { return v.VisitChildren(ctx) } + +func (v *BaseSqlVisitor) VisitGroupBy(ctx *GroupByContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitAvg(ctx *AvgContext) interface{} { + return v.VisitChildren(ctx) +} diff --git a/processor/stream_processor/parser/sql_lexer.go b/processor/stream_processor/parser/sql_lexer.go index f9c05798adf9..7d83da33d8b4 100644 --- a/processor/stream_processor/parser/sql_lexer.go +++ b/processor/stream_processor/parser/sql_lexer.go @@ -46,29 +46,29 @@ func sqllexerLexerInit() { staticData.literalNames = []string{ "", "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "'*'", + "", "", "", "", "", "", "", "", "'*'", } staticData.symbolicNames = []string{ "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", "K_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", - "K_IN", "K_COUNT", "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", "NUMERIC_LITERAL", - "STRING_LITERAL", "STAR", + "K_IN", "K_TRUE", "K_FALSE", "K_COUNT", "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", + "BOOLEAN_LITERAL", "NUMERIC_LITERAL", "STRING_LITERAL", "STAR", } staticData.ruleNames = []string{ "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", "K_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", - "K_IN", "K_COUNT", "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", "NUMERIC_LITERAL", - "STRING_LITERAL", "STAR", "DIGIT", "A", "B", "C", "D", "E", "F", "G", - "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", - "V", "W", "X", "Y", "Z", + "K_IN", "K_TRUE", "K_FALSE", "K_COUNT", "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", + "BOOLEAN_LITERAL", "NUMERIC_LITERAL", "STRING_LITERAL", "STAR", "DIGIT", + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", + "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 0, 34, 403, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, + 4, 0, 37, 424, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, @@ -79,176 +79,186 @@ func sqllexerLexerInit() { 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, - 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 1, 0, 1, 0, 1, 0, 1, 0, - 1, 1, 4, 1, 129, 8, 1, 11, 1, 12, 1, 130, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, - 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, - 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, - 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, - 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, - 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, - 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, - 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, - 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, - 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, - 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, - 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, - 1, 30, 5, 30, 260, 8, 30, 10, 30, 12, 30, 263, 9, 30, 1, 30, 1, 30, 1, - 30, 1, 30, 1, 30, 5, 30, 270, 8, 30, 10, 30, 12, 30, 273, 9, 30, 1, 30, - 1, 30, 1, 30, 5, 30, 278, 8, 30, 10, 30, 12, 30, 281, 9, 30, 1, 30, 1, - 30, 1, 30, 5, 30, 286, 8, 30, 10, 30, 12, 30, 289, 9, 30, 3, 30, 291, 8, - 30, 1, 31, 4, 31, 294, 8, 31, 11, 31, 12, 31, 295, 1, 31, 1, 31, 5, 31, - 300, 8, 31, 10, 31, 12, 31, 303, 9, 31, 3, 31, 305, 8, 31, 1, 31, 1, 31, - 3, 31, 309, 8, 31, 1, 31, 4, 31, 312, 8, 31, 11, 31, 12, 31, 313, 3, 31, - 316, 8, 31, 1, 31, 1, 31, 4, 31, 320, 8, 31, 11, 31, 12, 31, 321, 1, 31, - 1, 31, 3, 31, 326, 8, 31, 1, 31, 4, 31, 329, 8, 31, 11, 31, 12, 31, 330, - 3, 31, 333, 8, 31, 3, 31, 335, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, - 341, 8, 32, 10, 32, 12, 32, 344, 9, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, - 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, - 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, - 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, - 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, - 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, - 1, 60, 0, 0, 61, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, - 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, - 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, - 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 0, 71, - 0, 73, 0, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, - 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, - 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, - 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, - 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, - 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, - 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, - 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, - 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, - 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, - 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, - 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, - 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, - 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, - 90, 122, 122, 398, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, - 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, - 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, - 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, - 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, - 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, - 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, - 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, - 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, - 0, 0, 1, 123, 1, 0, 0, 0, 3, 128, 1, 0, 0, 0, 5, 134, 1, 0, 0, 0, 7, 136, - 1, 0, 0, 0, 9, 138, 1, 0, 0, 0, 11, 140, 1, 0, 0, 0, 13, 142, 1, 0, 0, - 0, 15, 149, 1, 0, 0, 0, 17, 155, 1, 0, 0, 0, 19, 171, 1, 0, 0, 0, 21, 180, - 1, 0, 0, 0, 23, 184, 1, 0, 0, 0, 25, 187, 1, 0, 0, 0, 27, 190, 1, 0, 0, - 0, 29, 195, 1, 0, 0, 0, 31, 197, 1, 0, 0, 0, 33, 199, 1, 0, 0, 0, 35, 201, - 1, 0, 0, 0, 37, 204, 1, 0, 0, 0, 39, 207, 1, 0, 0, 0, 41, 210, 1, 0, 0, - 0, 43, 215, 1, 0, 0, 0, 45, 219, 1, 0, 0, 0, 47, 225, 1, 0, 0, 0, 49, 229, - 1, 0, 0, 0, 51, 234, 1, 0, 0, 0, 53, 237, 1, 0, 0, 0, 55, 243, 1, 0, 0, - 0, 57, 247, 1, 0, 0, 0, 59, 251, 1, 0, 0, 0, 61, 290, 1, 0, 0, 0, 63, 334, - 1, 0, 0, 0, 65, 336, 1, 0, 0, 0, 67, 347, 1, 0, 0, 0, 69, 349, 1, 0, 0, - 0, 71, 351, 1, 0, 0, 0, 73, 353, 1, 0, 0, 0, 75, 355, 1, 0, 0, 0, 77, 357, - 1, 0, 0, 0, 79, 359, 1, 0, 0, 0, 81, 361, 1, 0, 0, 0, 83, 363, 1, 0, 0, - 0, 85, 365, 1, 0, 0, 0, 87, 367, 1, 0, 0, 0, 89, 369, 1, 0, 0, 0, 91, 371, - 1, 0, 0, 0, 93, 373, 1, 0, 0, 0, 95, 375, 1, 0, 0, 0, 97, 377, 1, 0, 0, - 0, 99, 379, 1, 0, 0, 0, 101, 381, 1, 0, 0, 0, 103, 383, 1, 0, 0, 0, 105, - 385, 1, 0, 0, 0, 107, 387, 1, 0, 0, 0, 109, 389, 1, 0, 0, 0, 111, 391, - 1, 0, 0, 0, 113, 393, 1, 0, 0, 0, 115, 395, 1, 0, 0, 0, 117, 397, 1, 0, - 0, 0, 119, 399, 1, 0, 0, 0, 121, 401, 1, 0, 0, 0, 123, 124, 7, 0, 0, 0, - 124, 125, 1, 0, 0, 0, 125, 126, 6, 0, 0, 0, 126, 2, 1, 0, 0, 0, 127, 129, - 7, 1, 0, 0, 128, 127, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 128, 1, 0, - 0, 0, 130, 131, 1, 0, 0, 0, 131, 132, 1, 0, 0, 0, 132, 133, 6, 1, 1, 0, - 133, 4, 1, 0, 0, 0, 134, 135, 5, 44, 0, 0, 135, 6, 1, 0, 0, 0, 136, 137, - 5, 40, 0, 0, 137, 8, 1, 0, 0, 0, 138, 139, 5, 41, 0, 0, 139, 10, 1, 0, - 0, 0, 140, 141, 5, 59, 0, 0, 141, 12, 1, 0, 0, 0, 142, 143, 3, 107, 53, - 0, 143, 144, 3, 79, 39, 0, 144, 145, 3, 93, 46, 0, 145, 146, 3, 79, 39, - 0, 146, 147, 3, 75, 37, 0, 147, 148, 3, 109, 54, 0, 148, 14, 1, 0, 0, 0, - 149, 150, 3, 115, 57, 0, 150, 151, 3, 85, 42, 0, 151, 152, 3, 79, 39, 0, - 152, 153, 3, 105, 52, 0, 153, 154, 3, 79, 39, 0, 154, 16, 1, 0, 0, 0, 155, - 156, 3, 115, 57, 0, 156, 157, 3, 87, 43, 0, 157, 158, 3, 97, 48, 0, 158, - 159, 3, 77, 38, 0, 159, 160, 3, 99, 49, 0, 160, 161, 3, 115, 57, 0, 161, - 162, 3, 1, 0, 0, 162, 163, 3, 109, 54, 0, 163, 164, 3, 111, 55, 0, 164, - 165, 3, 95, 47, 0, 165, 166, 3, 73, 36, 0, 166, 167, 3, 93, 46, 0, 167, - 168, 3, 87, 43, 0, 168, 169, 3, 97, 48, 0, 169, 170, 3, 83, 41, 0, 170, - 18, 1, 0, 0, 0, 171, 172, 3, 83, 41, 0, 172, 173, 3, 105, 52, 0, 173, 174, - 3, 99, 49, 0, 174, 175, 3, 111, 55, 0, 175, 176, 3, 101, 50, 0, 176, 177, - 3, 1, 0, 0, 177, 178, 3, 73, 36, 0, 178, 179, 3, 119, 59, 0, 179, 20, 1, - 0, 0, 0, 180, 181, 3, 71, 35, 0, 181, 182, 3, 97, 48, 0, 182, 183, 3, 77, - 38, 0, 183, 22, 1, 0, 0, 0, 184, 185, 3, 99, 49, 0, 185, 186, 3, 105, 52, - 0, 186, 24, 1, 0, 0, 0, 187, 188, 3, 87, 43, 0, 188, 189, 3, 107, 53, 0, - 189, 26, 1, 0, 0, 0, 190, 191, 3, 93, 46, 0, 191, 192, 3, 87, 43, 0, 192, - 193, 3, 91, 45, 0, 193, 194, 3, 79, 39, 0, 194, 28, 1, 0, 0, 0, 195, 196, - 5, 61, 0, 0, 196, 30, 1, 0, 0, 0, 197, 198, 5, 62, 0, 0, 198, 32, 1, 0, - 0, 0, 199, 200, 5, 60, 0, 0, 200, 34, 1, 0, 0, 0, 201, 202, 3, 33, 16, - 0, 202, 203, 3, 29, 14, 0, 203, 36, 1, 0, 0, 0, 204, 205, 3, 31, 15, 0, - 205, 206, 3, 29, 14, 0, 206, 38, 1, 0, 0, 0, 207, 208, 5, 33, 0, 0, 208, - 209, 3, 29, 14, 0, 209, 40, 1, 0, 0, 0, 210, 211, 3, 97, 48, 0, 211, 212, - 3, 111, 55, 0, 212, 213, 3, 93, 46, 0, 213, 214, 3, 93, 46, 0, 214, 42, - 1, 0, 0, 0, 215, 216, 3, 25, 12, 0, 216, 217, 3, 1, 0, 0, 217, 218, 3, - 41, 20, 0, 218, 44, 1, 0, 0, 0, 219, 220, 3, 25, 12, 0, 220, 221, 3, 1, - 0, 0, 221, 222, 3, 47, 23, 0, 222, 223, 3, 1, 0, 0, 223, 224, 3, 41, 20, - 0, 224, 46, 1, 0, 0, 0, 225, 226, 3, 97, 48, 0, 226, 227, 3, 99, 49, 0, - 227, 228, 3, 109, 54, 0, 228, 48, 1, 0, 0, 0, 229, 230, 3, 47, 23, 0, 230, - 231, 3, 1, 0, 0, 231, 232, 3, 87, 43, 0, 232, 233, 3, 97, 48, 0, 233, 50, - 1, 0, 0, 0, 234, 235, 3, 87, 43, 0, 235, 236, 3, 97, 48, 0, 236, 52, 1, - 0, 0, 0, 237, 238, 3, 75, 37, 0, 238, 239, 3, 99, 49, 0, 239, 240, 3, 111, - 55, 0, 240, 241, 3, 97, 48, 0, 241, 242, 3, 109, 54, 0, 242, 54, 1, 0, - 0, 0, 243, 244, 3, 95, 47, 0, 244, 245, 3, 87, 43, 0, 245, 246, 3, 97, - 48, 0, 246, 56, 1, 0, 0, 0, 247, 248, 3, 95, 47, 0, 248, 249, 3, 71, 35, - 0, 249, 250, 3, 117, 58, 0, 250, 58, 1, 0, 0, 0, 251, 252, 3, 71, 35, 0, - 252, 253, 3, 113, 56, 0, 253, 254, 3, 83, 41, 0, 254, 60, 1, 0, 0, 0, 255, - 261, 5, 34, 0, 0, 256, 260, 8, 2, 0, 0, 257, 258, 5, 34, 0, 0, 258, 260, - 5, 34, 0, 0, 259, 256, 1, 0, 0, 0, 259, 257, 1, 0, 0, 0, 260, 263, 1, 0, - 0, 0, 261, 259, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 264, 1, 0, 0, 0, - 263, 261, 1, 0, 0, 0, 264, 291, 5, 34, 0, 0, 265, 271, 5, 96, 0, 0, 266, - 270, 8, 3, 0, 0, 267, 268, 5, 96, 0, 0, 268, 270, 5, 96, 0, 0, 269, 266, - 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 270, 273, 1, 0, 0, 0, 271, 269, 1, 0, - 0, 0, 271, 272, 1, 0, 0, 0, 272, 274, 1, 0, 0, 0, 273, 271, 1, 0, 0, 0, - 274, 291, 5, 96, 0, 0, 275, 279, 5, 91, 0, 0, 276, 278, 8, 4, 0, 0, 277, - 276, 1, 0, 0, 0, 278, 281, 1, 0, 0, 0, 279, 277, 1, 0, 0, 0, 279, 280, - 1, 0, 0, 0, 280, 282, 1, 0, 0, 0, 281, 279, 1, 0, 0, 0, 282, 291, 5, 93, - 0, 0, 283, 287, 7, 5, 0, 0, 284, 286, 7, 6, 0, 0, 285, 284, 1, 0, 0, 0, - 286, 289, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 287, 288, 1, 0, 0, 0, 288, - 291, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 290, 255, 1, 0, 0, 0, 290, 265, - 1, 0, 0, 0, 290, 275, 1, 0, 0, 0, 290, 283, 1, 0, 0, 0, 291, 62, 1, 0, - 0, 0, 292, 294, 3, 69, 34, 0, 293, 292, 1, 0, 0, 0, 294, 295, 1, 0, 0, - 0, 295, 293, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 304, 1, 0, 0, 0, 297, - 301, 5, 46, 0, 0, 298, 300, 3, 69, 34, 0, 299, 298, 1, 0, 0, 0, 300, 303, - 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 305, 1, 0, - 0, 0, 303, 301, 1, 0, 0, 0, 304, 297, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, - 305, 315, 1, 0, 0, 0, 306, 308, 3, 79, 39, 0, 307, 309, 7, 7, 0, 0, 308, - 307, 1, 0, 0, 0, 308, 309, 1, 0, 0, 0, 309, 311, 1, 0, 0, 0, 310, 312, - 3, 69, 34, 0, 311, 310, 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 311, 1, - 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 316, 1, 0, 0, 0, 315, 306, 1, 0, 0, - 0, 315, 316, 1, 0, 0, 0, 316, 335, 1, 0, 0, 0, 317, 319, 5, 46, 0, 0, 318, - 320, 3, 69, 34, 0, 319, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 319, - 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 332, 1, 0, 0, 0, 323, 325, 3, 79, - 39, 0, 324, 326, 7, 7, 0, 0, 325, 324, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, - 326, 328, 1, 0, 0, 0, 327, 329, 3, 69, 34, 0, 328, 327, 1, 0, 0, 0, 329, - 330, 1, 0, 0, 0, 330, 328, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 333, - 1, 0, 0, 0, 332, 323, 1, 0, 0, 0, 332, 333, 1, 0, 0, 0, 333, 335, 1, 0, - 0, 0, 334, 293, 1, 0, 0, 0, 334, 317, 1, 0, 0, 0, 335, 64, 1, 0, 0, 0, - 336, 342, 5, 39, 0, 0, 337, 341, 8, 8, 0, 0, 338, 339, 5, 39, 0, 0, 339, - 341, 5, 39, 0, 0, 340, 337, 1, 0, 0, 0, 340, 338, 1, 0, 0, 0, 341, 344, - 1, 0, 0, 0, 342, 340, 1, 0, 0, 0, 342, 343, 1, 0, 0, 0, 343, 345, 1, 0, - 0, 0, 344, 342, 1, 0, 0, 0, 345, 346, 5, 39, 0, 0, 346, 66, 1, 0, 0, 0, - 347, 348, 5, 42, 0, 0, 348, 68, 1, 0, 0, 0, 349, 350, 7, 9, 0, 0, 350, - 70, 1, 0, 0, 0, 351, 352, 7, 10, 0, 0, 352, 72, 1, 0, 0, 0, 353, 354, 7, - 11, 0, 0, 354, 74, 1, 0, 0, 0, 355, 356, 7, 12, 0, 0, 356, 76, 1, 0, 0, - 0, 357, 358, 7, 13, 0, 0, 358, 78, 1, 0, 0, 0, 359, 360, 7, 14, 0, 0, 360, - 80, 1, 0, 0, 0, 361, 362, 7, 15, 0, 0, 362, 82, 1, 0, 0, 0, 363, 364, 7, - 16, 0, 0, 364, 84, 1, 0, 0, 0, 365, 366, 7, 17, 0, 0, 366, 86, 1, 0, 0, - 0, 367, 368, 7, 18, 0, 0, 368, 88, 1, 0, 0, 0, 369, 370, 7, 19, 0, 0, 370, - 90, 1, 0, 0, 0, 371, 372, 7, 20, 0, 0, 372, 92, 1, 0, 0, 0, 373, 374, 7, - 21, 0, 0, 374, 94, 1, 0, 0, 0, 375, 376, 7, 22, 0, 0, 376, 96, 1, 0, 0, - 0, 377, 378, 7, 23, 0, 0, 378, 98, 1, 0, 0, 0, 379, 380, 7, 24, 0, 0, 380, - 100, 1, 0, 0, 0, 381, 382, 7, 25, 0, 0, 382, 102, 1, 0, 0, 0, 383, 384, - 7, 26, 0, 0, 384, 104, 1, 0, 0, 0, 385, 386, 7, 27, 0, 0, 386, 106, 1, - 0, 0, 0, 387, 388, 7, 28, 0, 0, 388, 108, 1, 0, 0, 0, 389, 390, 7, 29, - 0, 0, 390, 110, 1, 0, 0, 0, 391, 392, 7, 30, 0, 0, 392, 112, 1, 0, 0, 0, - 393, 394, 7, 31, 0, 0, 394, 114, 1, 0, 0, 0, 395, 396, 7, 32, 0, 0, 396, - 116, 1, 0, 0, 0, 397, 398, 7, 33, 0, 0, 398, 118, 1, 0, 0, 0, 399, 400, - 7, 34, 0, 0, 400, 120, 1, 0, 0, 0, 401, 402, 7, 35, 0, 0, 402, 122, 1, - 0, 0, 0, 22, 0, 130, 259, 261, 269, 271, 279, 287, 290, 295, 301, 304, - 308, 313, 315, 321, 325, 330, 332, 334, 340, 342, 2, 0, 1, 0, 6, 0, 0, + 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, + 62, 2, 63, 7, 63, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 135, 8, 1, 11, 1, + 12, 1, 136, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, + 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, + 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, + 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, + 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, + 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, + 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, + 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, + 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, + 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, + 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, + 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, + 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 277, 8, + 32, 10, 32, 12, 32, 280, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, + 287, 8, 32, 10, 32, 12, 32, 290, 9, 32, 1, 32, 1, 32, 1, 32, 5, 32, 295, + 8, 32, 10, 32, 12, 32, 298, 9, 32, 1, 32, 1, 32, 1, 32, 5, 32, 303, 8, + 32, 10, 32, 12, 32, 306, 9, 32, 3, 32, 308, 8, 32, 1, 33, 1, 33, 3, 33, + 312, 8, 33, 1, 34, 4, 34, 315, 8, 34, 11, 34, 12, 34, 316, 1, 34, 1, 34, + 5, 34, 321, 8, 34, 10, 34, 12, 34, 324, 9, 34, 3, 34, 326, 8, 34, 1, 34, + 1, 34, 3, 34, 330, 8, 34, 1, 34, 4, 34, 333, 8, 34, 11, 34, 12, 34, 334, + 3, 34, 337, 8, 34, 1, 34, 1, 34, 4, 34, 341, 8, 34, 11, 34, 12, 34, 342, + 1, 34, 1, 34, 3, 34, 347, 8, 34, 1, 34, 4, 34, 350, 8, 34, 11, 34, 12, + 34, 351, 3, 34, 354, 8, 34, 3, 34, 356, 8, 34, 1, 35, 1, 35, 1, 35, 1, + 35, 5, 35, 362, 8, 35, 10, 35, 12, 35, 365, 9, 35, 1, 35, 1, 35, 1, 36, + 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, + 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, + 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, + 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, + 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, + 62, 1, 63, 1, 63, 0, 0, 64, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, + 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, + 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, + 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, + 35, 71, 36, 73, 37, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, + 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, + 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, + 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, + 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, + 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, + 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, + 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, + 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, + 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, + 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, + 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, + 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, + 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, + 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 420, 0, 1, 1, 0, 0, 0, + 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, + 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, + 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, + 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, + 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, + 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, + 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, + 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, + 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, + 0, 0, 0, 73, 1, 0, 0, 0, 1, 129, 1, 0, 0, 0, 3, 134, 1, 0, 0, 0, 5, 140, + 1, 0, 0, 0, 7, 142, 1, 0, 0, 0, 9, 144, 1, 0, 0, 0, 11, 146, 1, 0, 0, 0, + 13, 148, 1, 0, 0, 0, 15, 155, 1, 0, 0, 0, 17, 161, 1, 0, 0, 0, 19, 177, + 1, 0, 0, 0, 21, 186, 1, 0, 0, 0, 23, 190, 1, 0, 0, 0, 25, 193, 1, 0, 0, + 0, 27, 196, 1, 0, 0, 0, 29, 201, 1, 0, 0, 0, 31, 203, 1, 0, 0, 0, 33, 205, + 1, 0, 0, 0, 35, 207, 1, 0, 0, 0, 37, 210, 1, 0, 0, 0, 39, 213, 1, 0, 0, + 0, 41, 216, 1, 0, 0, 0, 43, 221, 1, 0, 0, 0, 45, 225, 1, 0, 0, 0, 47, 231, + 1, 0, 0, 0, 49, 235, 1, 0, 0, 0, 51, 240, 1, 0, 0, 0, 53, 243, 1, 0, 0, + 0, 55, 248, 1, 0, 0, 0, 57, 254, 1, 0, 0, 0, 59, 260, 1, 0, 0, 0, 61, 264, + 1, 0, 0, 0, 63, 268, 1, 0, 0, 0, 65, 307, 1, 0, 0, 0, 67, 311, 1, 0, 0, + 0, 69, 355, 1, 0, 0, 0, 71, 357, 1, 0, 0, 0, 73, 368, 1, 0, 0, 0, 75, 370, + 1, 0, 0, 0, 77, 372, 1, 0, 0, 0, 79, 374, 1, 0, 0, 0, 81, 376, 1, 0, 0, + 0, 83, 378, 1, 0, 0, 0, 85, 380, 1, 0, 0, 0, 87, 382, 1, 0, 0, 0, 89, 384, + 1, 0, 0, 0, 91, 386, 1, 0, 0, 0, 93, 388, 1, 0, 0, 0, 95, 390, 1, 0, 0, + 0, 97, 392, 1, 0, 0, 0, 99, 394, 1, 0, 0, 0, 101, 396, 1, 0, 0, 0, 103, + 398, 1, 0, 0, 0, 105, 400, 1, 0, 0, 0, 107, 402, 1, 0, 0, 0, 109, 404, + 1, 0, 0, 0, 111, 406, 1, 0, 0, 0, 113, 408, 1, 0, 0, 0, 115, 410, 1, 0, + 0, 0, 117, 412, 1, 0, 0, 0, 119, 414, 1, 0, 0, 0, 121, 416, 1, 0, 0, 0, + 123, 418, 1, 0, 0, 0, 125, 420, 1, 0, 0, 0, 127, 422, 1, 0, 0, 0, 129, + 130, 7, 0, 0, 0, 130, 131, 1, 0, 0, 0, 131, 132, 6, 0, 0, 0, 132, 2, 1, + 0, 0, 0, 133, 135, 7, 1, 0, 0, 134, 133, 1, 0, 0, 0, 135, 136, 1, 0, 0, + 0, 136, 134, 1, 0, 0, 0, 136, 137, 1, 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, + 139, 6, 1, 1, 0, 139, 4, 1, 0, 0, 0, 140, 141, 5, 44, 0, 0, 141, 6, 1, + 0, 0, 0, 142, 143, 5, 40, 0, 0, 143, 8, 1, 0, 0, 0, 144, 145, 5, 41, 0, + 0, 145, 10, 1, 0, 0, 0, 146, 147, 5, 59, 0, 0, 147, 12, 1, 0, 0, 0, 148, + 149, 3, 113, 56, 0, 149, 150, 3, 85, 42, 0, 150, 151, 3, 99, 49, 0, 151, + 152, 3, 85, 42, 0, 152, 153, 3, 81, 40, 0, 153, 154, 3, 115, 57, 0, 154, + 14, 1, 0, 0, 0, 155, 156, 3, 121, 60, 0, 156, 157, 3, 91, 45, 0, 157, 158, + 3, 85, 42, 0, 158, 159, 3, 111, 55, 0, 159, 160, 3, 85, 42, 0, 160, 16, + 1, 0, 0, 0, 161, 162, 3, 121, 60, 0, 162, 163, 3, 93, 46, 0, 163, 164, + 3, 103, 51, 0, 164, 165, 3, 83, 41, 0, 165, 166, 3, 105, 52, 0, 166, 167, + 3, 121, 60, 0, 167, 168, 3, 1, 0, 0, 168, 169, 3, 115, 57, 0, 169, 170, + 3, 117, 58, 0, 170, 171, 3, 101, 50, 0, 171, 172, 3, 79, 39, 0, 172, 173, + 3, 99, 49, 0, 173, 174, 3, 93, 46, 0, 174, 175, 3, 103, 51, 0, 175, 176, + 3, 89, 44, 0, 176, 18, 1, 0, 0, 0, 177, 178, 3, 89, 44, 0, 178, 179, 3, + 111, 55, 0, 179, 180, 3, 105, 52, 0, 180, 181, 3, 117, 58, 0, 181, 182, + 3, 107, 53, 0, 182, 183, 3, 1, 0, 0, 183, 184, 3, 79, 39, 0, 184, 185, + 3, 125, 62, 0, 185, 20, 1, 0, 0, 0, 186, 187, 3, 77, 38, 0, 187, 188, 3, + 103, 51, 0, 188, 189, 3, 83, 41, 0, 189, 22, 1, 0, 0, 0, 190, 191, 3, 105, + 52, 0, 191, 192, 3, 111, 55, 0, 192, 24, 1, 0, 0, 0, 193, 194, 3, 93, 46, + 0, 194, 195, 3, 113, 56, 0, 195, 26, 1, 0, 0, 0, 196, 197, 3, 99, 49, 0, + 197, 198, 3, 93, 46, 0, 198, 199, 3, 97, 48, 0, 199, 200, 3, 85, 42, 0, + 200, 28, 1, 0, 0, 0, 201, 202, 5, 61, 0, 0, 202, 30, 1, 0, 0, 0, 203, 204, + 5, 62, 0, 0, 204, 32, 1, 0, 0, 0, 205, 206, 5, 60, 0, 0, 206, 34, 1, 0, + 0, 0, 207, 208, 3, 33, 16, 0, 208, 209, 3, 29, 14, 0, 209, 36, 1, 0, 0, + 0, 210, 211, 3, 31, 15, 0, 211, 212, 3, 29, 14, 0, 212, 38, 1, 0, 0, 0, + 213, 214, 5, 33, 0, 0, 214, 215, 3, 29, 14, 0, 215, 40, 1, 0, 0, 0, 216, + 217, 3, 103, 51, 0, 217, 218, 3, 117, 58, 0, 218, 219, 3, 99, 49, 0, 219, + 220, 3, 99, 49, 0, 220, 42, 1, 0, 0, 0, 221, 222, 3, 25, 12, 0, 222, 223, + 3, 1, 0, 0, 223, 224, 3, 41, 20, 0, 224, 44, 1, 0, 0, 0, 225, 226, 3, 25, + 12, 0, 226, 227, 3, 1, 0, 0, 227, 228, 3, 47, 23, 0, 228, 229, 3, 1, 0, + 0, 229, 230, 3, 41, 20, 0, 230, 46, 1, 0, 0, 0, 231, 232, 3, 103, 51, 0, + 232, 233, 3, 105, 52, 0, 233, 234, 3, 115, 57, 0, 234, 48, 1, 0, 0, 0, + 235, 236, 3, 47, 23, 0, 236, 237, 3, 1, 0, 0, 237, 238, 3, 93, 46, 0, 238, + 239, 3, 103, 51, 0, 239, 50, 1, 0, 0, 0, 240, 241, 3, 93, 46, 0, 241, 242, + 3, 103, 51, 0, 242, 52, 1, 0, 0, 0, 243, 244, 3, 115, 57, 0, 244, 245, + 3, 111, 55, 0, 245, 246, 3, 117, 58, 0, 246, 247, 3, 85, 42, 0, 247, 54, + 1, 0, 0, 0, 248, 249, 3, 87, 43, 0, 249, 250, 3, 77, 38, 0, 250, 251, 3, + 99, 49, 0, 251, 252, 3, 113, 56, 0, 252, 253, 3, 85, 42, 0, 253, 56, 1, + 0, 0, 0, 254, 255, 3, 81, 40, 0, 255, 256, 3, 105, 52, 0, 256, 257, 3, + 117, 58, 0, 257, 258, 3, 103, 51, 0, 258, 259, 3, 115, 57, 0, 259, 58, + 1, 0, 0, 0, 260, 261, 3, 101, 50, 0, 261, 262, 3, 93, 46, 0, 262, 263, + 3, 103, 51, 0, 263, 60, 1, 0, 0, 0, 264, 265, 3, 101, 50, 0, 265, 266, + 3, 77, 38, 0, 266, 267, 3, 123, 61, 0, 267, 62, 1, 0, 0, 0, 268, 269, 3, + 77, 38, 0, 269, 270, 3, 119, 59, 0, 270, 271, 3, 89, 44, 0, 271, 64, 1, + 0, 0, 0, 272, 278, 5, 34, 0, 0, 273, 277, 8, 2, 0, 0, 274, 275, 5, 34, + 0, 0, 275, 277, 5, 34, 0, 0, 276, 273, 1, 0, 0, 0, 276, 274, 1, 0, 0, 0, + 277, 280, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, + 281, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 308, 5, 34, 0, 0, 282, 288, + 5, 96, 0, 0, 283, 287, 8, 3, 0, 0, 284, 285, 5, 96, 0, 0, 285, 287, 5, + 96, 0, 0, 286, 283, 1, 0, 0, 0, 286, 284, 1, 0, 0, 0, 287, 290, 1, 0, 0, + 0, 288, 286, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0, 289, 291, 1, 0, 0, 0, 290, + 288, 1, 0, 0, 0, 291, 308, 5, 96, 0, 0, 292, 296, 5, 91, 0, 0, 293, 295, + 8, 4, 0, 0, 294, 293, 1, 0, 0, 0, 295, 298, 1, 0, 0, 0, 296, 294, 1, 0, + 0, 0, 296, 297, 1, 0, 0, 0, 297, 299, 1, 0, 0, 0, 298, 296, 1, 0, 0, 0, + 299, 308, 5, 93, 0, 0, 300, 304, 7, 5, 0, 0, 301, 303, 7, 6, 0, 0, 302, + 301, 1, 0, 0, 0, 303, 306, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, 304, 305, + 1, 0, 0, 0, 305, 308, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 307, 272, 1, 0, + 0, 0, 307, 282, 1, 0, 0, 0, 307, 292, 1, 0, 0, 0, 307, 300, 1, 0, 0, 0, + 308, 66, 1, 0, 0, 0, 309, 312, 3, 53, 26, 0, 310, 312, 3, 55, 27, 0, 311, + 309, 1, 0, 0, 0, 311, 310, 1, 0, 0, 0, 312, 68, 1, 0, 0, 0, 313, 315, 3, + 75, 37, 0, 314, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 314, 1, 0, + 0, 0, 316, 317, 1, 0, 0, 0, 317, 325, 1, 0, 0, 0, 318, 322, 5, 46, 0, 0, + 319, 321, 3, 75, 37, 0, 320, 319, 1, 0, 0, 0, 321, 324, 1, 0, 0, 0, 322, + 320, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 323, 326, 1, 0, 0, 0, 324, 322, + 1, 0, 0, 0, 325, 318, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, 326, 336, 1, 0, + 0, 0, 327, 329, 3, 85, 42, 0, 328, 330, 7, 7, 0, 0, 329, 328, 1, 0, 0, + 0, 329, 330, 1, 0, 0, 0, 330, 332, 1, 0, 0, 0, 331, 333, 3, 75, 37, 0, + 332, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 334, + 335, 1, 0, 0, 0, 335, 337, 1, 0, 0, 0, 336, 327, 1, 0, 0, 0, 336, 337, + 1, 0, 0, 0, 337, 356, 1, 0, 0, 0, 338, 340, 5, 46, 0, 0, 339, 341, 3, 75, + 37, 0, 340, 339, 1, 0, 0, 0, 341, 342, 1, 0, 0, 0, 342, 340, 1, 0, 0, 0, + 342, 343, 1, 0, 0, 0, 343, 353, 1, 0, 0, 0, 344, 346, 3, 85, 42, 0, 345, + 347, 7, 7, 0, 0, 346, 345, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347, 349, + 1, 0, 0, 0, 348, 350, 3, 75, 37, 0, 349, 348, 1, 0, 0, 0, 350, 351, 1, + 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, + 0, 353, 344, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 356, 1, 0, 0, 0, 355, + 314, 1, 0, 0, 0, 355, 338, 1, 0, 0, 0, 356, 70, 1, 0, 0, 0, 357, 363, 5, + 39, 0, 0, 358, 362, 8, 8, 0, 0, 359, 360, 5, 39, 0, 0, 360, 362, 5, 39, + 0, 0, 361, 358, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 362, 365, 1, 0, 0, 0, + 363, 361, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 366, 1, 0, 0, 0, 365, + 363, 1, 0, 0, 0, 366, 367, 5, 39, 0, 0, 367, 72, 1, 0, 0, 0, 368, 369, + 5, 42, 0, 0, 369, 74, 1, 0, 0, 0, 370, 371, 7, 9, 0, 0, 371, 76, 1, 0, + 0, 0, 372, 373, 7, 10, 0, 0, 373, 78, 1, 0, 0, 0, 374, 375, 7, 11, 0, 0, + 375, 80, 1, 0, 0, 0, 376, 377, 7, 12, 0, 0, 377, 82, 1, 0, 0, 0, 378, 379, + 7, 13, 0, 0, 379, 84, 1, 0, 0, 0, 380, 381, 7, 14, 0, 0, 381, 86, 1, 0, + 0, 0, 382, 383, 7, 15, 0, 0, 383, 88, 1, 0, 0, 0, 384, 385, 7, 16, 0, 0, + 385, 90, 1, 0, 0, 0, 386, 387, 7, 17, 0, 0, 387, 92, 1, 0, 0, 0, 388, 389, + 7, 18, 0, 0, 389, 94, 1, 0, 0, 0, 390, 391, 7, 19, 0, 0, 391, 96, 1, 0, + 0, 0, 392, 393, 7, 20, 0, 0, 393, 98, 1, 0, 0, 0, 394, 395, 7, 21, 0, 0, + 395, 100, 1, 0, 0, 0, 396, 397, 7, 22, 0, 0, 397, 102, 1, 0, 0, 0, 398, + 399, 7, 23, 0, 0, 399, 104, 1, 0, 0, 0, 400, 401, 7, 24, 0, 0, 401, 106, + 1, 0, 0, 0, 402, 403, 7, 25, 0, 0, 403, 108, 1, 0, 0, 0, 404, 405, 7, 26, + 0, 0, 405, 110, 1, 0, 0, 0, 406, 407, 7, 27, 0, 0, 407, 112, 1, 0, 0, 0, + 408, 409, 7, 28, 0, 0, 409, 114, 1, 0, 0, 0, 410, 411, 7, 29, 0, 0, 411, + 116, 1, 0, 0, 0, 412, 413, 7, 30, 0, 0, 413, 118, 1, 0, 0, 0, 414, 415, + 7, 31, 0, 0, 415, 120, 1, 0, 0, 0, 416, 417, 7, 32, 0, 0, 417, 122, 1, + 0, 0, 0, 418, 419, 7, 33, 0, 0, 419, 124, 1, 0, 0, 0, 420, 421, 7, 34, + 0, 0, 421, 126, 1, 0, 0, 0, 422, 423, 7, 35, 0, 0, 423, 128, 1, 0, 0, 0, + 23, 0, 136, 276, 278, 286, 288, 296, 304, 307, 311, 316, 322, 325, 329, + 334, 336, 342, 346, 351, 353, 355, 361, 363, 2, 0, 1, 0, 6, 0, 0, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -315,12 +325,15 @@ const ( SqlLexerK_NOT = 24 SqlLexerK_NOT_IN = 25 SqlLexerK_IN = 26 - SqlLexerK_COUNT = 27 - SqlLexerK_MIN = 28 - SqlLexerK_MAX = 29 - SqlLexerK_AVG = 30 - SqlLexerIDENTIFIER = 31 - SqlLexerNUMERIC_LITERAL = 32 - SqlLexerSTRING_LITERAL = 33 - SqlLexerSTAR = 34 + SqlLexerK_TRUE = 27 + SqlLexerK_FALSE = 28 + SqlLexerK_COUNT = 29 + SqlLexerK_MIN = 30 + SqlLexerK_MAX = 31 + SqlLexerK_AVG = 32 + SqlLexerIDENTIFIER = 33 + SqlLexerBOOLEAN_LITERAL = 34 + SqlLexerNUMERIC_LITERAL = 35 + SqlLexerSTRING_LITERAL = 36 + SqlLexerSTAR = 37 ) diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index 5bb324e64b9b..7b980d15d057 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -35,62 +35,68 @@ func sqlParserInit() { staticData.literalNames = []string{ "", "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "'*'", + "", "", "", "", "", "", "", "", "'*'", } staticData.symbolicNames = []string{ "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", "K_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", - "K_IN", "K_COUNT", "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", "NUMERIC_LITERAL", - "STRING_LITERAL", "STAR", + "K_IN", "K_TRUE", "K_FALSE", "K_COUNT", "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", + "BOOLEAN_LITERAL", "NUMERIC_LITERAL", "STRING_LITERAL", "STAR", } staticData.ruleNames = []string{ "sqlQuery", "selectQuery", "resultColumns", "column", "whereStatement", - "tumblingWindow", "groupBy", "avg", "expr", "comparisonOperator", "literalValue", + "tumblingWindow", "expr", "compoundExpr", "comparisonOperator", "literalValue", + "groupBy", "avg", } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 34, 101, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 37, 111, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, - 10, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 29, 8, 1, 1, 1, 1, 1, 1, - 2, 1, 2, 1, 2, 5, 2, 36, 8, 2, 10, 2, 12, 2, 39, 9, 2, 1, 2, 1, 2, 1, 2, - 4, 2, 44, 8, 2, 11, 2, 12, 2, 45, 1, 2, 3, 2, 49, 8, 2, 1, 3, 1, 3, 1, - 4, 1, 4, 3, 4, 55, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 60, 8, 4, 1, 4, 1, 4, - 3, 4, 64, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 70, 8, 5, 1, 6, 1, 6, 1, - 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, - 8, 3, 8, 87, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 92, 8, 8, 10, 8, 12, 8, 95, - 9, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 0, 1, 16, 11, 0, 2, 4, 6, 8, 10, - 12, 14, 16, 18, 20, 0, 5, 1, 0, 27, 30, 1, 0, 22, 23, 1, 0, 11, 12, 2, - 0, 13, 20, 25, 26, 1, 0, 32, 33, 100, 0, 22, 1, 0, 0, 0, 2, 25, 1, 0, 0, - 0, 4, 48, 1, 0, 0, 0, 6, 50, 1, 0, 0, 0, 8, 63, 1, 0, 0, 0, 10, 65, 1, - 0, 0, 0, 12, 71, 1, 0, 0, 0, 14, 74, 1, 0, 0, 0, 16, 86, 1, 0, 0, 0, 18, - 96, 1, 0, 0, 0, 20, 98, 1, 0, 0, 0, 22, 23, 3, 2, 1, 0, 23, 24, 5, 0, 0, - 1, 24, 1, 1, 0, 0, 0, 25, 26, 5, 7, 0, 0, 26, 28, 3, 4, 2, 0, 27, 29, 3, - 8, 4, 0, 28, 27, 1, 0, 0, 0, 28, 29, 1, 0, 0, 0, 29, 30, 1, 0, 0, 0, 30, - 31, 5, 6, 0, 0, 31, 3, 1, 0, 0, 0, 32, 37, 3, 6, 3, 0, 33, 34, 5, 3, 0, - 0, 34, 36, 3, 6, 3, 0, 35, 33, 1, 0, 0, 0, 36, 39, 1, 0, 0, 0, 37, 35, - 1, 0, 0, 0, 37, 38, 1, 0, 0, 0, 38, 49, 1, 0, 0, 0, 39, 37, 1, 0, 0, 0, - 40, 43, 3, 14, 7, 0, 41, 42, 5, 3, 0, 0, 42, 44, 3, 14, 7, 0, 43, 41, 1, - 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 43, 1, 0, 0, 0, 45, 46, 1, 0, 0, 0, 46, - 49, 1, 0, 0, 0, 47, 49, 5, 34, 0, 0, 48, 32, 1, 0, 0, 0, 48, 40, 1, 0, - 0, 0, 48, 47, 1, 0, 0, 0, 49, 5, 1, 0, 0, 0, 50, 51, 5, 31, 0, 0, 51, 7, - 1, 0, 0, 0, 52, 53, 5, 8, 0, 0, 53, 55, 3, 16, 8, 0, 54, 52, 1, 0, 0, 0, - 54, 55, 1, 0, 0, 0, 55, 64, 1, 0, 0, 0, 56, 59, 3, 10, 5, 0, 57, 58, 5, - 8, 0, 0, 58, 60, 3, 16, 8, 0, 59, 57, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, - 61, 1, 0, 0, 0, 61, 62, 3, 12, 6, 0, 62, 64, 1, 0, 0, 0, 63, 54, 1, 0, - 0, 0, 63, 56, 1, 0, 0, 0, 64, 9, 1, 0, 0, 0, 65, 66, 5, 9, 0, 0, 66, 69, - 5, 32, 0, 0, 67, 68, 5, 8, 0, 0, 68, 70, 3, 16, 8, 0, 69, 67, 1, 0, 0, - 0, 69, 70, 1, 0, 0, 0, 70, 11, 1, 0, 0, 0, 71, 72, 5, 10, 0, 0, 72, 73, - 3, 6, 3, 0, 73, 13, 1, 0, 0, 0, 74, 75, 7, 0, 0, 0, 75, 76, 5, 4, 0, 0, - 76, 77, 3, 6, 3, 0, 77, 78, 5, 5, 0, 0, 78, 15, 1, 0, 0, 0, 79, 80, 6, - 8, -1, 0, 80, 81, 5, 31, 0, 0, 81, 82, 3, 18, 9, 0, 82, 83, 3, 20, 10, - 0, 83, 87, 1, 0, 0, 0, 84, 85, 5, 31, 0, 0, 85, 87, 7, 1, 0, 0, 86, 79, - 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 93, 1, 0, 0, 0, 88, 89, 10, 2, 0, 0, - 89, 90, 7, 2, 0, 0, 90, 92, 3, 16, 8, 3, 91, 88, 1, 0, 0, 0, 92, 95, 1, - 0, 0, 0, 93, 91, 1, 0, 0, 0, 93, 94, 1, 0, 0, 0, 94, 17, 1, 0, 0, 0, 95, - 93, 1, 0, 0, 0, 96, 97, 7, 3, 0, 0, 97, 19, 1, 0, 0, 0, 98, 99, 7, 4, 0, - 0, 99, 21, 1, 0, 0, 0, 10, 28, 37, 45, 48, 54, 59, 63, 69, 86, 93, + 10, 2, 11, 7, 11, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 31, 8, 1, 1, + 1, 1, 1, 1, 2, 1, 2, 1, 2, 5, 2, 38, 8, 2, 10, 2, 12, 2, 41, 9, 2, 1, 2, + 1, 2, 1, 2, 4, 2, 46, 8, 2, 11, 2, 12, 2, 47, 1, 2, 3, 2, 51, 8, 2, 1, + 3, 1, 3, 1, 4, 1, 4, 3, 4, 57, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 62, 8, 4, + 1, 4, 1, 4, 3, 4, 66, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 72, 8, 5, 1, + 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 85, + 8, 6, 1, 6, 1, 6, 1, 6, 5, 6, 90, 8, 6, 10, 6, 12, 6, 93, 9, 6, 1, 7, 1, + 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, + 1, 11, 1, 11, 1, 11, 1, 11, 0, 1, 12, 12, 0, 2, 4, 6, 8, 10, 12, 14, 16, + 18, 20, 22, 0, 5, 1, 0, 11, 12, 1, 0, 22, 23, 2, 0, 13, 20, 25, 26, 1, + 0, 34, 36, 1, 0, 29, 32, 110, 0, 24, 1, 0, 0, 0, 2, 27, 1, 0, 0, 0, 4, + 50, 1, 0, 0, 0, 6, 52, 1, 0, 0, 0, 8, 65, 1, 0, 0, 0, 10, 67, 1, 0, 0, + 0, 12, 84, 1, 0, 0, 0, 14, 94, 1, 0, 0, 0, 16, 98, 1, 0, 0, 0, 18, 100, + 1, 0, 0, 0, 20, 102, 1, 0, 0, 0, 22, 105, 1, 0, 0, 0, 24, 25, 3, 2, 1, + 0, 25, 26, 5, 0, 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 5, 7, 0, 0, 28, 30, 3, + 4, 2, 0, 29, 31, 3, 8, 4, 0, 30, 29, 1, 0, 0, 0, 30, 31, 1, 0, 0, 0, 31, + 32, 1, 0, 0, 0, 32, 33, 5, 6, 0, 0, 33, 3, 1, 0, 0, 0, 34, 39, 3, 6, 3, + 0, 35, 36, 5, 3, 0, 0, 36, 38, 3, 6, 3, 0, 37, 35, 1, 0, 0, 0, 38, 41, + 1, 0, 0, 0, 39, 37, 1, 0, 0, 0, 39, 40, 1, 0, 0, 0, 40, 51, 1, 0, 0, 0, + 41, 39, 1, 0, 0, 0, 42, 45, 3, 22, 11, 0, 43, 44, 5, 3, 0, 0, 44, 46, 3, + 22, 11, 0, 45, 43, 1, 0, 0, 0, 46, 47, 1, 0, 0, 0, 47, 45, 1, 0, 0, 0, + 47, 48, 1, 0, 0, 0, 48, 51, 1, 0, 0, 0, 49, 51, 5, 37, 0, 0, 50, 34, 1, + 0, 0, 0, 50, 42, 1, 0, 0, 0, 50, 49, 1, 0, 0, 0, 51, 5, 1, 0, 0, 0, 52, + 53, 5, 33, 0, 0, 53, 7, 1, 0, 0, 0, 54, 55, 5, 8, 0, 0, 55, 57, 3, 12, + 6, 0, 56, 54, 1, 0, 0, 0, 56, 57, 1, 0, 0, 0, 57, 66, 1, 0, 0, 0, 58, 61, + 3, 10, 5, 0, 59, 60, 5, 8, 0, 0, 60, 62, 3, 12, 6, 0, 61, 59, 1, 0, 0, + 0, 61, 62, 1, 0, 0, 0, 62, 63, 1, 0, 0, 0, 63, 64, 3, 20, 10, 0, 64, 66, + 1, 0, 0, 0, 65, 56, 1, 0, 0, 0, 65, 58, 1, 0, 0, 0, 66, 9, 1, 0, 0, 0, + 67, 68, 5, 9, 0, 0, 68, 71, 5, 35, 0, 0, 69, 70, 5, 8, 0, 0, 70, 72, 3, + 12, 6, 0, 71, 69, 1, 0, 0, 0, 71, 72, 1, 0, 0, 0, 72, 11, 1, 0, 0, 0, 73, + 74, 6, 6, -1, 0, 74, 75, 5, 33, 0, 0, 75, 76, 3, 16, 8, 0, 76, 77, 3, 18, + 9, 0, 77, 85, 1, 0, 0, 0, 78, 79, 3, 14, 7, 0, 79, 80, 7, 0, 0, 0, 80, + 81, 3, 14, 7, 0, 81, 85, 1, 0, 0, 0, 82, 83, 5, 33, 0, 0, 83, 85, 7, 1, + 0, 0, 84, 73, 1, 0, 0, 0, 84, 78, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 85, 91, + 1, 0, 0, 0, 86, 87, 10, 1, 0, 0, 87, 88, 7, 0, 0, 0, 88, 90, 3, 12, 6, + 2, 89, 86, 1, 0, 0, 0, 90, 93, 1, 0, 0, 0, 91, 89, 1, 0, 0, 0, 91, 92, + 1, 0, 0, 0, 92, 13, 1, 0, 0, 0, 93, 91, 1, 0, 0, 0, 94, 95, 5, 4, 0, 0, + 95, 96, 3, 12, 6, 0, 96, 97, 5, 5, 0, 0, 97, 15, 1, 0, 0, 0, 98, 99, 7, + 2, 0, 0, 99, 17, 1, 0, 0, 0, 100, 101, 7, 3, 0, 0, 101, 19, 1, 0, 0, 0, + 102, 103, 5, 10, 0, 0, 103, 104, 3, 6, 3, 0, 104, 21, 1, 0, 0, 0, 105, + 106, 7, 4, 0, 0, 106, 107, 5, 4, 0, 0, 107, 108, 3, 6, 3, 0, 108, 109, + 5, 5, 0, 0, 109, 23, 1, 0, 0, 0, 10, 30, 39, 47, 50, 56, 61, 65, 71, 84, + 91, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -155,14 +161,17 @@ const ( SqlParserK_NOT = 24 SqlParserK_NOT_IN = 25 SqlParserK_IN = 26 - SqlParserK_COUNT = 27 - SqlParserK_MIN = 28 - SqlParserK_MAX = 29 - SqlParserK_AVG = 30 - SqlParserIDENTIFIER = 31 - SqlParserNUMERIC_LITERAL = 32 - SqlParserSTRING_LITERAL = 33 - SqlParserSTAR = 34 + SqlParserK_TRUE = 27 + SqlParserK_FALSE = 28 + SqlParserK_COUNT = 29 + SqlParserK_MIN = 30 + SqlParserK_MAX = 31 + SqlParserK_AVG = 32 + SqlParserIDENTIFIER = 33 + SqlParserBOOLEAN_LITERAL = 34 + SqlParserNUMERIC_LITERAL = 35 + SqlParserSTRING_LITERAL = 36 + SqlParserSTAR = 37 ) // SqlParser rules. @@ -173,11 +182,12 @@ const ( SqlParserRULE_column = 3 SqlParserRULE_whereStatement = 4 SqlParserRULE_tumblingWindow = 5 - SqlParserRULE_groupBy = 6 - SqlParserRULE_avg = 7 - SqlParserRULE_expr = 8 - SqlParserRULE_comparisonOperator = 9 - SqlParserRULE_literalValue = 10 + SqlParserRULE_expr = 6 + SqlParserRULE_compoundExpr = 7 + SqlParserRULE_comparisonOperator = 8 + SqlParserRULE_literalValue = 9 + SqlParserRULE_groupBy = 10 + SqlParserRULE_avg = 11 ) // ISqlQueryContext is an interface to support dynamic dispatch. @@ -281,11 +291,11 @@ func (p *SqlParser) SqlQuery() (localctx ISqlQueryContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(22) + p.SetState(24) p.SelectQuery() } { - p.SetState(23) + p.SetState(25) p.Match(SqlParserEOF) } @@ -413,27 +423,27 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(25) + p.SetState(27) p.Match(SqlParserK_SELECT) } { - p.SetState(26) + p.SetState(28) p.ResultColumns() } - p.SetState(28) + p.SetState(30) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 0, p.GetParserRuleContext()) == 1 { { - p.SetState(27) + p.SetState(29) p.WhereStatement() } } { - p.SetState(30) + p.SetState(32) p.Match(SqlParserEOQ) } @@ -700,7 +710,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { } }() - p.SetState(48) + p.SetState(50) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { @@ -708,24 +718,24 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectColumnsContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(32) + p.SetState(34) p.Column() } - p.SetState(37) + p.SetState(39) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for _la == SqlParserCOMMA { { - p.SetState(33) + p.SetState(35) p.Match(SqlParserCOMMA) } { - p.SetState(34) + p.SetState(36) p.Column() } - p.SetState(39) + p.SetState(41) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } @@ -734,24 +744,24 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectAVGContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(40) + p.SetState(42) p.Avg() } - p.SetState(43) + p.SetState(45) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for ok := true; ok; ok = _la == SqlParserCOMMA { { - p.SetState(41) + p.SetState(43) p.Match(SqlParserCOMMA) } { - p.SetState(42) + p.SetState(44) p.Avg() } - p.SetState(45) + p.SetState(47) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } @@ -760,7 +770,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectStarContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(47) + p.SetState(49) p.Match(SqlParserSTAR) } @@ -856,7 +866,7 @@ func (p *SqlParser) Column() (localctx IColumnContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(50) + p.SetState(52) p.Match(SqlParserIDENTIFIER) } @@ -1065,24 +1075,24 @@ func (p *SqlParser) WhereStatement() (localctx IWhereStatementContext) { } }() - p.SetState(63) + p.SetState(65) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { case SqlParserEOQ, SqlParserK_WHERE: localctx = NewWhereStmtContext(p, localctx) p.EnterOuterAlt(localctx, 1) - p.SetState(54) + p.SetState(56) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(52) + p.SetState(54) p.Match(SqlParserK_WHERE) } { - p.SetState(53) + p.SetState(55) p.expr(0) } @@ -1092,28 +1102,28 @@ func (p *SqlParser) WhereStatement() (localctx IWhereStatementContext) { localctx = NewTumblingStmtContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(56) + p.SetState(58) p.TumblingWindow() } - p.SetState(59) + p.SetState(61) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(57) + p.SetState(59) p.Match(SqlParserK_WHERE) } { - p.SetState(58) + p.SetState(60) p.expr(0) } } { - p.SetState(61) + p.SetState(63) p.GroupBy() } @@ -1233,23 +1243,23 @@ func (p *SqlParser) TumblingWindow() (localctx ITumblingWindowContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(65) + p.SetState(67) p.Match(SqlParserK_WINDOW_TUMBLING) } { - p.SetState(66) + p.SetState(68) p.Match(SqlParserNUMERIC_LITERAL) } - p.SetState(69) + p.SetState(71) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 7, p.GetParserRuleContext()) == 1 { { - p.SetState(67) + p.SetState(69) p.Match(SqlParserK_WHERE) } { - p.SetState(68) + p.SetState(70) p.expr(0) } @@ -1258,52 +1268,82 @@ func (p *SqlParser) TumblingWindow() (localctx ITumblingWindowContext) { return localctx } -// IGroupByContext is an interface to support dynamic dispatch. -type IGroupByContext interface { +// IExprContext is an interface to support dynamic dispatch. +type IExprContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser - // IsGroupByContext differentiates from other interfaces. - IsGroupByContext() + // IsExprContext differentiates from other interfaces. + IsExprContext() } -type GroupByContext struct { +type ExprContext struct { *antlr.BaseParserRuleContext parser antlr.Parser } -func NewEmptyGroupByContext() *GroupByContext { - var p = new(GroupByContext) +func NewEmptyExprContext() *ExprContext { + var p = new(ExprContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_groupBy + p.RuleIndex = SqlParserRULE_expr return p } -func (*GroupByContext) IsGroupByContext() {} +func (*ExprContext) IsExprContext() {} -func NewGroupByContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GroupByContext { - var p = new(GroupByContext) +func NewExprContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExprContext { + var p = new(ExprContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = SqlParserRULE_groupBy + p.RuleIndex = SqlParserRULE_expr return p } -func (s *GroupByContext) GetParser() antlr.Parser { return s.parser } +func (s *ExprContext) GetParser() antlr.Parser { return s.parser } -func (s *GroupByContext) K_GROUP_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_GROUP_BY, 0) +func (s *ExprContext) CopyFrom(ctx *ExprContext) { + s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext) } -func (s *GroupByContext) Column() IColumnContext { +func (s *ExprContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ExprContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +type SimpleConditionContext struct { + *ExprContext +} + +func NewSimpleConditionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SimpleConditionContext { + var p = new(SimpleConditionContext) + + p.ExprContext = NewEmptyExprContext() + p.parser = parser + p.CopyFrom(ctx.(*ExprContext)) + + return p +} + +func (s *SimpleConditionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimpleConditionContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(SqlParserIDENTIFIER, 0) +} + +func (s *SimpleConditionContext) ComparisonOperator() IComparisonOperatorContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumnContext); ok { + if _, ok := ctx.(IComparisonOperatorContext); ok { t = ctx.(antlr.RuleContext) break } @@ -1313,111 +1353,124 @@ func (s *GroupByContext) Column() IColumnContext { return nil } - return t.(IColumnContext) + return t.(IComparisonOperatorContext) } -func (s *GroupByContext) GetRuleContext() antlr.RuleContext { - return s -} +func (s *SimpleConditionContext) LiteralValue() ILiteralValueContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILiteralValueContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } -func (s *GroupByContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) + if t == nil { + return nil + } + + return t.(ILiteralValueContext) } -func (s *GroupByContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *SimpleConditionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case SqlVisitor: - return t.VisitGroupBy(s) + return t.VisitSimpleCondition(s) default: return t.VisitChildren(s) } } -func (p *SqlParser) GroupBy() (localctx IGroupByContext) { - this := p - _ = this - - localctx = NewGroupByContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 12, SqlParserRULE_groupBy) - - defer func() { - p.ExitRule() - }() +type NullConditionContext struct { + *ExprContext +} - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() +func NewNullConditionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *NullConditionContext { + var p = new(NullConditionContext) - p.EnterOuterAlt(localctx, 1) - { - p.SetState(71) - p.Match(SqlParserK_GROUP_BY) - } - { - p.SetState(72) - p.Column() - } + p.ExprContext = NewEmptyExprContext() + p.parser = parser + p.CopyFrom(ctx.(*ExprContext)) - return localctx + return p } -// IAvgContext is an interface to support dynamic dispatch. -type IAvgContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser +func (s *NullConditionContext) GetRuleContext() antlr.RuleContext { + return s +} - // IsAvgContext differentiates from other interfaces. - IsAvgContext() +func (s *NullConditionContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(SqlParserIDENTIFIER, 0) } -type AvgContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser +func (s *NullConditionContext) K_IS_NULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_IS_NULL, 0) } -func NewEmptyAvgContext() *AvgContext { - var p = new(AvgContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_avg - return p +func (s *NullConditionContext) K_IS_NOT_NULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_IS_NOT_NULL, 0) } -func (*AvgContext) IsAvgContext() {} +func (s *NullConditionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitNullCondition(s) -func NewAvgContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AvgContext { - var p = new(AvgContext) + default: + return t.VisitChildren(s) + } +} - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) +type CompoundRecursiveConditionContext struct { + *ExprContext +} +func NewCompoundRecursiveConditionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *CompoundRecursiveConditionContext { + var p = new(CompoundRecursiveConditionContext) + + p.ExprContext = NewEmptyExprContext() p.parser = parser - p.RuleIndex = SqlParserRULE_avg + p.CopyFrom(ctx.(*ExprContext)) return p } -func (s *AvgContext) GetParser() antlr.Parser { return s.parser } +func (s *CompoundRecursiveConditionContext) GetRuleContext() antlr.RuleContext { + return s +} -func (s *AvgContext) L_BRACKET() antlr.TerminalNode { - return s.GetToken(SqlParserL_BRACKET, 0) +func (s *CompoundRecursiveConditionContext) AllCompoundExpr() []ICompoundExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ICompoundExprContext); ok { + len++ + } + } + + tst := make([]ICompoundExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ICompoundExprContext); ok { + tst[i] = t.(ICompoundExprContext) + i++ + } + } + + return tst } -func (s *AvgContext) Column() IColumnContext { +func (s *CompoundRecursiveConditionContext) CompoundExpr(i int) ICompoundExprContext { var t antlr.RuleContext + j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumnContext); ok { - t = ctx.(antlr.RuleContext) - break + if _, ok := ctx.(ICompoundExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ } } @@ -1425,57 +1478,123 @@ func (s *AvgContext) Column() IColumnContext { return nil } - return t.(IColumnContext) + return t.(ICompoundExprContext) } -func (s *AvgContext) R_BRACKET() antlr.TerminalNode { - return s.GetToken(SqlParserR_BRACKET, 0) +func (s *CompoundRecursiveConditionContext) K_AND() antlr.TerminalNode { + return s.GetToken(SqlParserK_AND, 0) } -func (s *AvgContext) K_MIN() antlr.TerminalNode { - return s.GetToken(SqlParserK_MIN, 0) +func (s *CompoundRecursiveConditionContext) K_OR() antlr.TerminalNode { + return s.GetToken(SqlParserK_OR, 0) } -func (s *AvgContext) K_MAX() antlr.TerminalNode { - return s.GetToken(SqlParserK_MAX, 0) +func (s *CompoundRecursiveConditionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitCompoundRecursiveCondition(s) + + default: + return t.VisitChildren(s) + } } -func (s *AvgContext) K_COUNT() antlr.TerminalNode { - return s.GetToken(SqlParserK_COUNT, 0) +type SimpleRecursiveConditionContext struct { + *ExprContext } -func (s *AvgContext) K_AVG() antlr.TerminalNode { - return s.GetToken(SqlParserK_AVG, 0) +func NewSimpleRecursiveConditionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SimpleRecursiveConditionContext { + var p = new(SimpleRecursiveConditionContext) + + p.ExprContext = NewEmptyExprContext() + p.parser = parser + p.CopyFrom(ctx.(*ExprContext)) + + return p } -func (s *AvgContext) GetRuleContext() antlr.RuleContext { +func (s *SimpleRecursiveConditionContext) GetRuleContext() antlr.RuleContext { return s } -func (s *AvgContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) +func (s *SimpleRecursiveConditionContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst } -func (s *AvgContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *SimpleRecursiveConditionContext) Expr(i int) IExprContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *SimpleRecursiveConditionContext) K_AND() antlr.TerminalNode { + return s.GetToken(SqlParserK_AND, 0) +} + +func (s *SimpleRecursiveConditionContext) K_OR() antlr.TerminalNode { + return s.GetToken(SqlParserK_OR, 0) +} + +func (s *SimpleRecursiveConditionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case SqlVisitor: - return t.VisitAvg(s) + return t.VisitSimpleRecursiveCondition(s) default: return t.VisitChildren(s) } } -func (p *SqlParser) Avg() (localctx IAvgContext) { +func (p *SqlParser) Expr() (localctx IExprContext) { + return p.expr(0) +} + +func (p *SqlParser) expr(_p int) (localctx IExprContext) { this := p _ = this - localctx = NewAvgContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 14, SqlParserRULE_avg) + var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext() + _parentState := p.GetState() + localctx = NewExprContext(p, p.GetParserRuleContext(), _parentState) + var _prevctx IExprContext = localctx + var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. + _startState := 12 + p.EnterRecursionRule(localctx, 12, SqlParserRULE_expr, _p) var _la int defer func() { - p.ExitRule() + p.UnrollRecursionContexts(_parentctx) }() defer func() { @@ -1490,96 +1609,164 @@ func (p *SqlParser) Avg() (localctx IAvgContext) { } }() + var _alt int + p.EnterOuterAlt(localctx, 1) - { - p.SetState(74) - _la = p.GetTokenStream().LA(1) + p.SetState(84) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 8, p.GetParserRuleContext()) { + case 1: + localctx = NewSimpleConditionContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx - if !(((_la)&-(0x1f+1)) == 0 && ((1< 'Test name 50';`, + expectedAttr: []string{"name"}, + expectedCount: 53, + }, + { + name: "not equal condition ", + query: `SELECT name WHERE name != 'Test name 50';`, + expectedAttr: []string{"name"}, + expectedCount: 99, + }, + { + name: "greater numeric ", + query: `SELECT name, price WHERE price > 20;`, + expectedAttr: []string{"name"}, + expectedCount: 79, + }, + { + name: "greater equal numeric ", + query: `SELECT name, price WHERE price >= 20;`, + expectedAttr: []string{"name"}, + expectedCount: 80, + }, + { + name: "less numeric ", + query: `SELECT name, price WHERE price < 20;`, + expectedAttr: []string{"name", "price"}, + expectedCount: 20, + }, + { + name: "less equal numeric ", + query: `SELECT name, price WHERE price <= 20;`, + expectedAttr: []string{"name"}, + expectedCount: 21, + }, + { + name: "equal true ", + query: `SELECT name, IsAlive WHERE IsAlive = true;`, + expectedAttr: []string{"name, price"}, + expectedCount: 50, + }, + { + name: "not equal true ", + query: `SELECT name, IsAlive WHERE IsAlive != true;`, + expectedAttr: []string{"name, IsAlive"}, + expectedCount: 50, + }, + { + name: "equal false ", + query: `SELECT name, IsAlive WHERE IsAlive = false;`, + expectedAttr: []string{"name, IsAlive"}, + expectedCount: 50, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + is := antlr.NewInputStream(tt.query) + + lexer := NewSqlLexer(is) + stream := antlr.NewCommonTokenStream(lexer, antlr.TokenDefaultChannel) + + parser := NewSqlParser(stream) + + logs := generateTestLogs() + visitor := NewSqlStreamVisitor(logs) + visitor.Visit(parser.SqlQuery()) + + logs, _ = visitor.GetResult() + assert.Equal(t, tt.expectedCount, logs.Len()) + + }) + } + +} + +func TestRecursiveCondition(t *testing.T) { + tests := []struct { + name string + query string + expectedAttr []string + expectedCount int + }{ + + { + name: "two where condition ", + query: `SELECT name, IsAlive WHERE name = 'test' and IsAlive = 'true';`, + expectedAttr: []string{"name, IsAlive"}, + expectedCount: 100, + }, + { + name: "two where condition ", + query: `SELECT name WHERE name IS NULL and IsAlive = 'true';`, + expectedAttr: []string{"name"}, + expectedCount: 100, + }, + { + name: "compound condition ", + query: `SELECT name WHERE (price > 3 ) OR (name = 'test');`, + expectedAttr: []string{"name"}, + expectedCount: 100, + }, + /* + { + name: "compound condition 2 ", + query: `SELECT name WHERE (name IS NULL and IsAlive = 'true') OR (name = 'test' AND IsAlive = 'false');`, + expectedAttr: []string{"name"}, + expectedCount: 100, + },*/ + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + is := antlr.NewInputStream(tt.query) + + lexer := NewSqlLexer(is) + stream := antlr.NewCommonTokenStream(lexer, antlr.TokenDefaultChannel) + + parser := NewSqlParser(stream) + + logs := generateTestLogs() + visitor := NewSqlStreamVisitor(logs) + visitor.Visit(parser.SqlQuery()) + + logs, _ = visitor.GetResult() + assert.Equal(t, tt.expectedCount, logs.Len()) + + }) + } + +} + func generateTestLogs() plog.LogRecordSlice { ld := plog.NewLogs() @@ -118,10 +263,14 @@ func generateTestLogs() plog.LogRecordSlice { for i := 0; i < 100; i++ { record := sc.LogRecords().AppendEmpty() - record.Attributes().InsertString("name", fmt.Sprintf("Test log # %q", i)) + record.Attributes().InsertString("name", "Test name "+strconv.Itoa(i)) record.Attributes().InsertBool("IsAlive", i%2 == 0) record.Attributes().InsertInt("price", int64(i)) } return ld.ResourceLogs().At(0).ScopeLogs().At(0).LogRecords() } + +func TestSmt(t *testing.T) { + fmt.Println("Test name 50" > "Test name 6") +} diff --git a/processor/stream_processor/parser/sql_visitor.go b/processor/stream_processor/parser/sql_visitor.go index 668f5f2f4b59..ae8290b84b96 100644 --- a/processor/stream_processor/parser/sql_visitor.go +++ b/processor/stream_processor/parser/sql_visitor.go @@ -35,18 +35,30 @@ type SqlVisitor interface { // Visit a parse tree produced by SqlParser#tumblingWindow. VisitTumblingWindow(ctx *TumblingWindowContext) interface{} - // Visit a parse tree produced by SqlParser#groupBy. - VisitGroupBy(ctx *GroupByContext) interface{} + // Visit a parse tree produced by SqlParser#simpleCondition. + VisitSimpleCondition(ctx *SimpleConditionContext) interface{} - // Visit a parse tree produced by SqlParser#avg. - VisitAvg(ctx *AvgContext) interface{} + // Visit a parse tree produced by SqlParser#nullCondition. + VisitNullCondition(ctx *NullConditionContext) interface{} + + // Visit a parse tree produced by SqlParser#compoundRecursiveCondition. + VisitCompoundRecursiveCondition(ctx *CompoundRecursiveConditionContext) interface{} + + // Visit a parse tree produced by SqlParser#simpleRecursiveCondition. + VisitSimpleRecursiveCondition(ctx *SimpleRecursiveConditionContext) interface{} - // Visit a parse tree produced by SqlParser#expr. - VisitExpr(ctx *ExprContext) interface{} + // Visit a parse tree produced by SqlParser#compoundExpr. + VisitCompoundExpr(ctx *CompoundExprContext) interface{} // Visit a parse tree produced by SqlParser#comparisonOperator. VisitComparisonOperator(ctx *ComparisonOperatorContext) interface{} // Visit a parse tree produced by SqlParser#literalValue. VisitLiteralValue(ctx *LiteralValueContext) interface{} + + // Visit a parse tree produced by SqlParser#groupBy. + VisitGroupBy(ctx *GroupByContext) interface{} + + // Visit a parse tree produced by SqlParser#avg. + VisitAvg(ctx *AvgContext) interface{} } From a4eac081b2db9a8c8dccce806a9c0b2b26f231d7 Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Fri, 29 Jul 2022 18:33:41 +0300 Subject: [PATCH 08/31] SQL Streaming update --- processor/stream_processor/Sql.g4 | 2 +- .../parser/sql_stream_visitor.go | 92 +++++++-- .../parser/sql_stream_visitor_test.go | 176 +++++++++++++++--- 3 files changed, 228 insertions(+), 42 deletions(-) diff --git a/processor/stream_processor/Sql.g4 b/processor/stream_processor/Sql.g4 index ef5fdc1ead38..d8965012d20b 100644 --- a/processor/stream_processor/Sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -35,7 +35,7 @@ tumblingWindow expr : IDENTIFIER comparisonOperator literalValue #simpleCondition | compoundExpr ( K_AND | K_OR ) compoundExpr #compoundRecursiveCondition - | IDENTIFIER (K_IS_NULL | K_IS_NOT_NULL) #nullCondition + // IDENTIFIER (K_IS_NULL | K_IS_NOT_NULL) #nullCondition | expr (K_AND| K_OR) expr #simpleRecursiveCondition ; diff --git a/processor/stream_processor/parser/sql_stream_visitor.go b/processor/stream_processor/parser/sql_stream_visitor.go index 9000399b786c..15f780b856ab 100644 --- a/processor/stream_processor/parser/sql_stream_visitor.go +++ b/processor/stream_processor/parser/sql_stream_visitor.go @@ -5,6 +5,7 @@ import ( "github.com/antlr/antlr4/runtime/Go/antlr" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/plog" + "go.uber.org/zap" "strconv" "strings" ) @@ -14,11 +15,12 @@ var _ SqlVisitor = (*SqlStreamVisitor)(nil) type SqlStreamVisitor struct { antlr.ParseTreeVisitor + *zap.Logger logRecords plog.LogRecordSlice currentRecord plog.LogRecord } -func NewSqlStreamVisitor(logs plog.LogRecordSlice) *SqlStreamVisitor { +func NewSqlStreamVisitor(logs plog.LogRecordSlice, logger *zap.Logger) *SqlStreamVisitor { return &SqlStreamVisitor{ ParseTreeVisitor: &SqlStreamVisitor{}, logRecords: logs, @@ -35,7 +37,7 @@ func (v *SqlStreamVisitor) Visit(tree antlr.ParseTree) interface{} { case *antlr.ErrorNodeImpl: return nil case *SqlQueryContext: - t.Accept(v) + return t.Accept(v) } return nil @@ -46,8 +48,14 @@ func (v *SqlStreamVisitor) VisitSqlQuery(ctx *SqlQueryContext) interface{} { } func (v *SqlStreamVisitor) VisitSelectQuery(ctx *SelectQueryContext) interface{} { - ctx.ResultColumns().Accept(v) - return ctx.WhereStatement().Accept(v) + switch res := ctx.WhereStatement().Accept(v).(type) { + case error: + return res + case nil: + + } + return ctx.ResultColumns().Accept(v) + } func (v *SqlStreamVisitor) VisitSelectColumns(ctx *SelectColumnsContext) interface{} { @@ -81,6 +89,7 @@ func (v *SqlStreamVisitor) VisitSelectColumns(ctx *SelectColumnsContext) interfa } func (v *SqlStreamVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { + var err error //if WHERE statement missed if ctx.Expr() == nil { return nil @@ -88,12 +97,19 @@ func (v *SqlStreamVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { v.logRecords.RemoveIf(func(record plog.LogRecord) bool { v.currentRecord = record - res := ctx.Expr().Accept(v).(bool) - return !res + switch res := ctx.Expr().Accept(v).(type) { + case error: + err = res + return false + + case bool: + return !res + } + return false }) - return nil + return err } func (v *SqlStreamVisitor) VisitSelectAVG(ctx *SelectAVGContext) interface{} { @@ -117,7 +133,6 @@ func (v *SqlStreamVisitor) VisitTumblingWindow(ctx *TumblingWindowContext) inter } func (v *SqlStreamVisitor) VisitSimpleCondition(ctx *SimpleConditionContext) interface{} { - //println(ctx.IDENTIFIER().GetText(), ctx.ComparisonOperator().GetText(), ctx.LiteralValue().GetText(), ctx.GetText()) fieldNameValue, ok := v.currentRecord.Attributes().Get(ctx.IDENTIFIER().GetText()) if !ok { @@ -134,11 +149,11 @@ func (v *SqlStreamVisitor) VisitSimpleCondition(ctx *SimpleConditionContext) int if err != nil { return fmt.Errorf("can't convert comparison value %q to numeric; %w", ctx.LiteralValue().GetText(), err) } - return compare(ctx, fieldValue, comparisonValue) + return compareNumeric(ctx, fieldValue, comparisonValue) case SqlParserSTRING_LITERAL: // we need to remove quotes value := strings.TrimSuffix(strings.TrimPrefix(ctx.LiteralValue().GetText(), `'`), `'`) - return compare(ctx, fieldNameValue.AsString(), value) + return compareString(ctx, fieldNameValue.AsString(), value) case SqlParserK_TRUE, SqlParserK_FALSE: fieldValue, err := strconv.ParseBool(fieldNameValue.AsString()) if err != nil { @@ -162,16 +177,59 @@ func (v *SqlStreamVisitor) VisitNullCondition(ctx *NullConditionContext) interfa } func (v *SqlStreamVisitor) VisitSimpleRecursiveCondition(ctx *SimpleRecursiveConditionContext) interface{} { - var res bool - for _, expr := range ctx.AllExpr() { - res = expr.Accept(v).(bool) + + left := ctx.Expr(0).Accept(v) + switch left := ctx.Expr(0).Accept(v).(type) { + case error: + return left + case bool: + } + + right := ctx.Expr(1).Accept(v) + switch right.(type) { + case error: + return right + case bool: + } + + if ctx.K_OR() != nil { + if left == true || right == true { + return true + } + return false } - return res + if left == true && right == true { + return true + } + return false } func (v *SqlStreamVisitor) VisitCompoundRecursiveCondition(ctx *CompoundRecursiveConditionContext) interface{} { - ctx.Accept(v) - return nil + + left := ctx.CompoundExpr(0).Accept(v) + switch left := ctx.CompoundExpr(0).Accept(v).(type) { + case error: + return left + case bool: + } + + right := ctx.CompoundExpr(1).Accept(v) + switch right.(type) { + case error: + return right + case bool: + } + + if ctx.K_OR() != nil { + if left == true || right == true { + return true + } + return false + } + if left == true && right == true { + return true + } + return false } func (v *SqlStreamVisitor) VisitComparisonOperator(ctx *ComparisonOperatorContext) interface{} { @@ -179,7 +237,7 @@ func (v *SqlStreamVisitor) VisitComparisonOperator(ctx *ComparisonOperatorContex } func (v *SqlStreamVisitor) VisitCompoundExpr(ctx *CompoundExprContext) interface{} { - return v.VisitChildren(ctx) + return ctx.Expr().Accept(v) } func (v *SqlStreamVisitor) VisitLiteralValue(ctx *LiteralValueContext) interface{} { diff --git a/processor/stream_processor/parser/sql_stream_visitor_test.go b/processor/stream_processor/parser/sql_stream_visitor_test.go index d75ea64c38ca..de64b9c6c9e5 100644 --- a/processor/stream_processor/parser/sql_stream_visitor_test.go +++ b/processor/stream_processor/parser/sql_stream_visitor_test.go @@ -1,7 +1,9 @@ package parser import ( + "errors" "fmt" + "go.uber.org/zap" "strconv" "testing" @@ -49,7 +51,7 @@ func TestResultColumnsSelectColumns(t *testing.T) { parser := NewSqlParser(stream) logs := generateTestLogs() - visitor := NewSqlStreamVisitor(logs) + visitor := NewSqlStreamVisitor(logs, zap.NewNop()) visitor.Visit(parser.SqlQuery()) logs, _ = visitor.GetResult() @@ -95,7 +97,7 @@ func TestResultColumnsSelectColumnsAttributes(t *testing.T) { parser := NewSqlParser(stream) logs := generateTestLogs() - visitor := NewSqlStreamVisitor(logs) + visitor := NewSqlStreamVisitor(logs, zap.NewNop()) visitor.Visit(parser.SqlQuery()) logs, _ = visitor.GetResult() @@ -112,6 +114,46 @@ func TestResultColumnsSelectColumnsAttributes(t *testing.T) { } } +func TestWhereCondition(t *testing.T) { + tests := []struct { + name string + query string + expectedAttr []string + expected error + }{ + + { + name: "where fields exists ", + query: `SELECT name, IsAlive WHERE name = 'test' and IsAlive = 'true';`, + expected: nil, + }, + + { + name: "where fields missed ", + query: `SELECT name, IsAlive WHERE name = 'test' and non_exists = 'true';`, + expected: errors.New(`field "non_exists" missed in log record`), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + is := antlr.NewInputStream(tt.query) + + lexer := NewSqlLexer(is) + stream := antlr.NewCommonTokenStream(lexer, antlr.TokenDefaultChannel) + + parser := NewSqlParser(stream) + + logs := generateTestLogs() + visitor := NewSqlStreamVisitor(logs, zap.NewNop()) + res := visitor.Visit(parser.SqlQuery()) + + assert.Equal(t, tt.expected, res) + + }) + } + +} + func TestSimpleCondition(t *testing.T) { tests := []struct { name string @@ -190,7 +232,7 @@ func TestSimpleCondition(t *testing.T) { parser := NewSqlParser(stream) logs := generateTestLogs() - visitor := NewSqlStreamVisitor(logs) + visitor := NewSqlStreamVisitor(logs, zap.NewNop()) visitor.Visit(parser.SqlQuery()) logs, _ = visitor.GetResult() @@ -205,35 +247,121 @@ func TestRecursiveCondition(t *testing.T) { tests := []struct { name string query string - expectedAttr []string expectedCount int }{ - { - name: "two where condition ", - query: `SELECT name, IsAlive WHERE name = 'test' and IsAlive = 'true';`, - expectedAttr: []string{"name, IsAlive"}, - expectedCount: 100, + name: "where and condition ", + query: `SELECT name, IsAlive WHERE name != 'test' and IsAlive = 'true';`, + expectedCount: 50, }, { - name: "two where condition ", - query: `SELECT name WHERE name IS NULL and IsAlive = 'true';`, - expectedAttr: []string{"name"}, + name: "where or 1 ", + query: `SELECT name, IsAlive WHERE name != 'test' or IsAlive = 'true';`, expectedCount: 100, }, { - name: "compound condition ", - query: `SELECT name WHERE (price > 3 ) OR (name = 'test');`, - expectedAttr: []string{"name"}, - expectedCount: 100, + name: "test or 2", + query: `SELECT name WHERE name = 'Test name 10' or IsAlive = 'false';`, + expectedCount: 51, + }, + { + name: "test and 1", + query: `SELECT name WHERE name = 'Test name 10' and IsAlive = 'false';`, + expectedCount: 0, + }, + { + name: "test and 2", + query: `SELECT name WHERE name = 'Test name 10' and IsAlive = 'true';`, + expectedCount: 1, + }, + { + name: "test and 3", + query: `SELECT name WHERE name = 'Test name 10' and price = 10;`, + expectedCount: 1, + }, + { + name: "test and 4", + query: `SELECT name WHERE name = 'Test name 10' and price = 9;`, + expectedCount: 0, + }, + { + name: "like 1", + query: `SELECT name WHERE name like 'Test name 1' and IsAlive = 'false';`, + expectedCount: 6, + }, + { + name: "like 2", + query: `SELECT name WHERE name like 'Test name' and price > 70';`, + expectedCount: 29, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + is := antlr.NewInputStream(tt.query) + + lexer := NewSqlLexer(is) + stream := antlr.NewCommonTokenStream(lexer, antlr.TokenDefaultChannel) + + parser := NewSqlParser(stream) + + logs := generateTestLogs() + visitor := NewSqlStreamVisitor(logs, zap.NewNop()) + visitor.Visit(parser.SqlQuery()) + + logs, _ = visitor.GetResult() + assert.Equal(t, tt.expectedCount, logs.Len()) + + }) + } + +} + +func TestCompoundCondition(t *testing.T) { + tests := []struct { + name string + query string + expectedCount int + }{ + { + name: "and 1 ", + query: `SELECT name, IsAlive WHERE (name != 'test' and IsAlive = 'true') and (IsAlive = 'true' and price > 50);`, + expectedCount: 24, + }, + { + name: "and 2 ", + query: `SELECT name, IsAlive WHERE (name = 'Test name 10' and price > 5) and (IsAlive = 'true' and price > 5);`, + expectedCount: 1, + }, + { + name: "and 3 ", + query: `SELECT name, IsAlive WHERE (name = 'Test name 10' and price > 5) and (IsAlive = 'false' and price > 5);`, + expectedCount: 0, + }, + { + name: "or 1 ", + query: `SELECT name, IsAlive WHERE (name != 'test' and IsAlive = 'true') or (IsAlive = 'true' and price > 50);`, + expectedCount: 50, + }, + { + name: "or 2 ", + query: `SELECT name, IsAlive WHERE (name = 'Test name 10' and price > 5 ) or (IsAlive = 'true');`, + expectedCount: 50, + }, + { + name: "or 2 ", + query: `SELECT name, IsAlive WHERE (name = 'Test name 10' and price > 5 ) or (IsAlive = 'false');`, + expectedCount: 51, + }, + { + name: "like 1 ", + query: `SELECT name, IsAlive WHERE (name like '2' and price > 5 ) or (IsAlive = 'false');`, + expectedCount: 63, + }, + { + name: "like 2 ", + query: `SELECT name, IsAlive WHERE (name like '2' and price > 5 ) or (price < 30 or IsAlive = 'false');`, + expectedCount: 72, }, - /* - { - name: "compound condition 2 ", - query: `SELECT name WHERE (name IS NULL and IsAlive = 'true') OR (name = 'test' AND IsAlive = 'false');`, - expectedAttr: []string{"name"}, - expectedCount: 100, - },*/ } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -245,7 +373,7 @@ func TestRecursiveCondition(t *testing.T) { parser := NewSqlParser(stream) logs := generateTestLogs() - visitor := NewSqlStreamVisitor(logs) + visitor := NewSqlStreamVisitor(logs, zap.NewNop()) visitor.Visit(parser.SqlQuery()) logs, _ = visitor.GetResult() From ceddc46a6f3e8b494f899354ceb5cdbd8953f759 Mon Sep 17 00:00:00 2001 From: antonchirikalov Date: Thu, 28 Jul 2022 20:22:01 +0300 Subject: [PATCH 09/31] Delete config.yaml --- config.yaml | 33 --------------------------------- 1 file changed, 33 deletions(-) delete mode 100644 config.yaml diff --git a/config.yaml b/config.yaml deleted file mode 100644 index 1b132733be8e..000000000000 --- a/config.yaml +++ /dev/null @@ -1,33 +0,0 @@ -receivers: - filelog: - include: [ ./test/test2.log ] - # include: - # - C:\Users\Anton\AppData\Local\Docker\*.txt - start_at: beginning - resource: - Test: TestValue - - -processors: - batchmemorylimit: - batch_mem_limit: 500 - -exporters: - opsrampotlp: - endpoint: https://asura.opsramp.net:443 - # endpoint: localhost:8086 - compression: none - tls: - insecure: true - security: - oauth_service_url: "https://asura.opsramp.net/auth/oauth/token?agent=true" - client_id: "6ek9Pb57rehBg5Md8BcmG5eHS4sdYpsn" - client_secret: "tUKTynGZgutUWj9QyFXNN36JyTfZ3uEJFjPRUEzuJ8Dx9jzccWpzbAkv8vzw5zny" - - -service: - pipelines: - logs: - receivers: [filelog] - processors: [batchmemorylimit] - exporters: [opsrampotlp] \ No newline at end of file From 14d9723d9935967ee3dfebef3101f6cc248b558b Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Fri, 29 Jul 2022 18:45:30 +0300 Subject: [PATCH 10/31] small fix --- .../parser/sql_stream_visitor_test.go | 8 +- .../stream_processor/parser/visitor_utils.go | 74 +++++++++++++++++++ 2 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 processor/stream_processor/parser/visitor_utils.go diff --git a/processor/stream_processor/parser/sql_stream_visitor_test.go b/processor/stream_processor/parser/sql_stream_visitor_test.go index de64b9c6c9e5..50208c0444f5 100644 --- a/processor/stream_processor/parser/sql_stream_visitor_test.go +++ b/processor/stream_processor/parser/sql_stream_visitor_test.go @@ -2,11 +2,11 @@ package parser import ( "errors" - "fmt" - "go.uber.org/zap" "strconv" "testing" + "go.uber.org/zap" + "github.com/antlr/antlr4/runtime/Go/antlr" "github.com/stretchr/testify/assert" "go.opentelemetry.io/collector/pdata/plog" @@ -398,7 +398,3 @@ func generateTestLogs() plog.LogRecordSlice { return ld.ResourceLogs().At(0).ScopeLogs().At(0).LogRecords() } - -func TestSmt(t *testing.T) { - fmt.Println("Test name 50" > "Test name 6") -} diff --git a/processor/stream_processor/parser/visitor_utils.go b/processor/stream_processor/parser/visitor_utils.go new file mode 100644 index 000000000000..900fdc80cfd8 --- /dev/null +++ b/processor/stream_processor/parser/visitor_utils.go @@ -0,0 +1,74 @@ +package parser + +import ( + "fmt" + "strings" +) + +func KeyExists(key string, resultColumns []IColumnContext) bool { + for _, col := range resultColumns { + if key == col.GetText() { + return true + } + } + return false +} + +func compareString(ctx *SimpleConditionContext, fieldVal, comparisonVal string) bool { + switch ctx.ComparisonOperator().GetStart().GetTokenType() { + case SqlParserK_EQUAL: + return fieldVal == comparisonVal + case SqlParserK_NOT_EQUAL: + return fieldVal != comparisonVal + case SqlParserK_GREATER: + fmt.Println(fieldVal, " ", comparisonVal, " ", fieldVal > comparisonVal) + return fieldVal > comparisonVal + case SqlParserK_GREATER_EQUAL: + return fieldVal >= comparisonVal + case SqlParserK_LESS: + return fieldVal < comparisonVal + case SqlParserK_LESS_EQUAL: + return fieldVal <= comparisonVal + case SqlParserK_LIKE: + return strings.Contains(fmt.Sprint(fieldVal), fmt.Sprint(comparisonVal)) + case SqlParserK_IS_NULL: + return len(fmt.Sprint(fieldVal)) == 0 + case SqlParserK_IS_NOT_NULL: + return len(fmt.Sprint(fieldVal)) != 0 + default: + return false + } +} + +func compareNumeric(ctx *SimpleConditionContext, fieldVal, comparisonVal int) bool { + switch ctx.ComparisonOperator().GetStart().GetTokenType() { + case SqlParserK_EQUAL: + return fieldVal == comparisonVal + case SqlParserK_NOT_EQUAL: + return fieldVal != comparisonVal + case SqlParserK_GREATER: + return fieldVal > comparisonVal + case SqlParserK_GREATER_EQUAL: + return fieldVal >= comparisonVal + case SqlParserK_LESS: + return fieldVal < comparisonVal + case SqlParserK_LESS_EQUAL: + return fieldVal <= comparisonVal + case SqlParserK_IS_NULL: + return fieldVal == 0 + case SqlParserK_IS_NOT_NULL: + return fieldVal != 0 + default: + return false + } +} + +func compareBool(ctx *SimpleConditionContext, fieldVal, comparisonVal bool) bool { + switch ctx.ComparisonOperator().GetStart().GetTokenType() { + case SqlParserK_EQUAL: + return fieldVal == comparisonVal + case SqlParserK_NOT_EQUAL: + return fieldVal != comparisonVal + } + return false +} From 13b9d40b487326aea54b32c097ea3644b29ce286 Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Thu, 4 Aug 2022 19:45:59 +0300 Subject: [PATCH 11/31] Intermediate updates --- go.mod | 4 +- go.sum | 277 ------ processor/stream_processor/Sql.g4 | 15 +- processor/stream_processor/cmd/main.go | 73 ++ processor/stream_processor/parser/Sql.interp | 6 +- processor/stream_processor/parser/Sql.tokens | 55 +- .../stream_processor/parser/SqlLexer.interp | 5 +- .../stream_processor/parser/SqlLexer.tokens | 55 +- .../parser/sql_base_visitor.go | 16 +- .../stream_processor/parser/sql_lexer.go | 428 +++++----- .../stream_processor/parser/sql_parser.go | 800 ++++++++---------- .../parser/sql_stream_visitor.go | 123 ++- .../parser/sql_stream_visitor_test.go | 73 +- .../stream_processor/parser/sql_visitor.go | 17 +- processor/stream_processor/parser/test.csv | 100 +++ .../stream_processor/parser/visitor_utils.go | 2 + 16 files changed, 990 insertions(+), 1059 deletions(-) create mode 100644 processor/stream_processor/cmd/main.go create mode 100644 processor/stream_processor/parser/test.csv diff --git a/go.mod b/go.mod index 5804f043e48b..2a7012bc7be9 100644 --- a/go.mod +++ b/go.mod @@ -144,7 +144,9 @@ require ( github.com/prometheus/prometheus v0.36.0 github.com/stretchr/testify v1.7.2 go.opentelemetry.io/collector v0.53.0 + go.opentelemetry.io/collector/pdata v0.53.0 go.uber.org/multierr v1.8.0 + go.uber.org/zap v1.21.0 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a ) @@ -482,7 +484,6 @@ require ( go.mongodb.org/atlas v0.16.0 // indirect go.mongodb.org/mongo-driver v1.9.1 // indirect go.opencensus.io v0.23.0 // indirect - go.opentelemetry.io/collector/pdata v0.53.0 // indirect go.opentelemetry.io/collector/semconv v0.53.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0 // indirect @@ -495,7 +496,6 @@ require ( go.opentelemetry.io/otel/trace v1.7.0 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/goleak v1.1.12 // indirect - go.uber.org/zap v1.21.0 // indirect golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122 // indirect golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect golang.org/x/net v0.0.0-20220526153639-5463443f8c37 // indirect diff --git a/go.sum b/go.sum index d3c362e3a35c..300985d6554a 100644 --- a/go.sum +++ b/go.sum @@ -53,7 +53,6 @@ cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLq cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= cloud.google.com/go/iam v0.3.0 h1:exkAomrVUuzx9kWFI1wm3KI0uoDeUFPB4kKGzx6x+Gc= @@ -61,8 +60,6 @@ cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= cloud.google.com/go/logging v1.4.2 h1:Mu2Q75VBDQlW1HlBMjTX4X84UFR73G1TiLlRYc/b7tA= cloud.google.com/go/logging v1.4.2/go.mod h1:jco9QZSx8HiVVqLJReq7z7bVdj0P1Jb9PDFs63T+axo= -cloud.google.com/go/monitoring v1.1.0/go.mod h1:L81pzz7HKn14QCMaCs6NTQkdBnE87TElyanS95vIcl4= -cloud.google.com/go/monitoring v1.4.0/go.mod h1:y6xnxfwI3hTFWOdkOaD7nfJVlwuC3/mS/5kvtT131p4= cloud.google.com/go/monitoring v1.5.0 h1:ZltYv8e69fJVga7RTthUBGdx4+Pwz6GRF1V3zylERl4= cloud.google.com/go/monitoring v1.5.0/go.mod h1:/o9y8NYX5j91JjD/JvGLYbi86kL11OjyJXq2XziLJu4= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= @@ -82,7 +79,6 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= cloud.google.com/go/storage v1.22.0/go.mod h1:GbaLEoMqbVm6sx3Z0R++gSiBlgMv6yUi2q1DeGFKQgE= cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/trace v1.0.0/go.mod h1:4iErSByzxkyHWzzlAj63/Gmjz0NH1ASqhJguHpGcr6A= cloud.google.com/go/trace v1.2.0 h1:oIaB4KahkIUOpLSAAjEJ8y2desbjY/x/RfP4O3KAtTI= cloud.google.com/go/trace v1.2.0/go.mod h1:Wc8y/uYyOhPy12KEnXG9XGrvfMz5F5SrYecQlbW1rwM= code.cloudfoundry.org/bytefmt v0.0.0-20190710193110-1eb035ffe2b6/go.mod h1:wN/zk7mhREp/oviagqUXY3EwuHhWyOvAdsn5Y4CzOrc= @@ -100,12 +96,8 @@ contrib.go.opencensus.io/exporter/prometheus v0.4.1/go.mod h1:t9wvfitlUjGXG2IXAZ contrib.go.opencensus.io/exporter/stackdriver v0.13.13 h1:3KLhsPyyFp1pfZPicg8e1VMSeztIyWm+aE+iZQ8b9Kg= contrib.go.opencensus.io/exporter/stackdriver v0.13.13/go.mod h1:5pSSGY0Bhuk7waTHuDf4aQ8D2DrhgETRo9fy6k3Xlzc= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= -git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= -github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v63.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v65.0.0+incompatible h1:HzKLt3kIwMm4KeJYTdx9EbjRYTySD/t8i1Ee/W5EGXw= github.com/Azure/azure-sdk-for-go v65.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= @@ -119,7 +111,6 @@ github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+B github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= github.com/Azure/go-autorest/autorest v0.11.12/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest v0.11.25/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U= github.com/Azure/go-autorest/autorest v0.11.27 h1:F3R3q42aWytozkV8ihzcgMO4OA4cuqr3bNlsEuF6//A= github.com/Azure/go-autorest/autorest v0.11.27/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= @@ -154,8 +145,6 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0= github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= -github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= -github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/agent-payload/v5 v5.0.22 h1:XaMYtdvdjRWLwvoQhZM3Se0YmOeMYgEvdKVLwPsxEaU= github.com/DataDog/agent-payload/v5 v5.0.22/go.mod h1:2gapp8p4Vd548JI+axD8kCExklNvVI6AMF5/+IfN/4g= @@ -174,16 +163,13 @@ github.com/DataDog/datadog-go v4.8.2+incompatible h1:qbcKSx29aBLD+5QLvlQZlGmRMF/ github.com/DataDog/datadog-go v4.8.2+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/datadog-go/v5 v5.0.2/go.mod h1:ZI9JFB4ewXbw1sBnF4sxsR2k1H3xjV+PUAOUsHvKpcU= github.com/DataDog/gostackparse v0.5.0/go.mod h1:lTfqcJKqS9KnXQGnyQMCugq3u1FP6UZMfWR0aitKFMM= -github.com/DataDog/mmh3 v0.0.0-20200805151601-30884ca2197a/go.mod h1:SvsjzyJlSg0rKsqYgdcFxeEVflx3ZNAyFfkUHP0TxXg= github.com/DataDog/sketches-go v1.0.0/go.mod h1:O+XkJHWk9w4hDwY2ZUDU31ZC9sNYlYo8DiFsxjYeo1k= github.com/DataDog/sketches-go v1.4.1 h1:j5G6as+9FASM2qC36lvpvQAj9qsv/jUs3FtO8CwZNAY= github.com/DataDog/sketches-go v1.4.1/go.mod h1:xJIXldczJyyjnbDop7ZZcLxJdV3+7Kra7H1KMgpgkLk= github.com/DataDog/zstd v1.3.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/DataDog/zstd v1.4.8/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f/go.mod h1:oXfOhM/Kr8OvqS6tVqJwxPBornV0yrx3bc+l0BDr7PQ= github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962 h1:KeNholpO2xKjgaaSyd+DyQRrsQjhbSeS7qe4nEw8aQw= github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962/go.mod h1:kC29dT1vFpj7py2OvG1khBdQpo3kInWP+6QipLbdngo= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.32.1 h1:v2ey6AUQFjj6vPMdXNL9K1R1/4V20qPBuL3os831jvw= @@ -196,10 +182,7 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapp github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.30.1/go.mod h1:j+FS9VBW3mwtHBmm9KOJEy5Tq68fCp7fE/R9bV/flIM= github.com/HdrHistogram/hdrhistogram-go v0.9.0/go.mod h1:nxrse8/Tzg2tg3DZcZjm6qEclQKK70g0KxO61gFFZD4= github.com/HdrHistogram/hdrhistogram-go v1.0.1/go.mod h1:BWJ+nMSHY3L41Zj7CA3uXnloDp7xxV0YvstAE7nKTaM= -github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= -github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= -github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= @@ -245,7 +228,6 @@ github.com/SAP/go-hdb v0.105.5 h1:mop9KOZU1ro9PjJLgqseHUZzwoOJh4d7f8Nrvf1a2Uo= github.com/SAP/go-hdb v0.105.5/go.mod h1:xbtJDvjqm9MQhIAnalynGNAbqxolS9W02qQo/vBqyaU= github.com/SermoDigital/jose v0.9.2-0.20161205224733-f6df55f235c2 h1:koK7z0nSsRiRiBWwa+E714Puh+DO+ZRdIyAXiXzL+lg= github.com/SermoDigital/jose v0.9.2-0.20161205224733-f6df55f235c2/go.mod h1:ARgCUhI1MHQH+ONky/PAtmVHQrP5JlGY0F3poXOp/fA= -github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/sarama v1.22.0/go.mod h1:lm3THZ8reqBDBQKQyb5HB3sY1lKp3grEbQ81aWSgPp4= @@ -267,14 +249,8 @@ github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDO github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/a8m/tree v0.0.0-20210115125333-10a5fd5b637d/go.mod h1:FSdwKX97koS5efgm8WevNf7XS3PqtyFkKDDXrz778cg= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= -github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= -github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= -github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= -github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= github.com/alecthomas/participle/v2 v2.0.0-alpha9 h1:TnflwDbtf5/aG6JMbmdiA+YB3bLg0sc6yRtmAfedfN4= github.com/alecthomas/participle/v2 v2.0.0-alpha9/go.mod h1:NumScqsC42o9x+dGj8/YqsIfhrIQjFEOFovxotbBirA= github.com/alecthomas/repr v0.0.0-20181024024818-d37bc2a10ba1 h1:GDQdwm/gAcJcLAKQQZGOJ4knlw+7rfEQQcmwTbt4p5E= @@ -293,8 +269,6 @@ github.com/aliyun/aliyun-log-go-sdk v0.1.36/go.mod h1:1QQ59pEJiVVXqKgbHcU6FWIgxT github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966 h1:mEzJ8SH4M5wDL8C4a17yX2YeD/FIXV5w8FJekByaBi0= -github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220626175859-9abda183db8e h1:bt6SW1eSSvdmmsG0KqyxYXorcTnFBTX7hfVR1+68+jg= github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220626175859-9abda183db8e/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/antonmedv/expr v1.9.0 h1:j4HI3NHEdgDnN9p6oI6Ndr0G5QryMY0FNxT4ONrFDGU= @@ -309,8 +283,6 @@ github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hC github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.3.0/go.mod h1:zXjbSimjXTd7vOpY8B0/2LpvNvDoXBuplAD+gJD3GYs= -github.com/armon/go-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= -github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-metrics v0.3.10 h1:FR+drcQStOe+32sYyJYyZ7FIdgoGGBnwLl+flodp8Uo= github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= @@ -334,16 +306,11 @@ github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/ github.com/aws/aws-sdk-go v1.35.24/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.38.68/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= -github.com/aws/aws-sdk-go v1.43.11/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.43.31/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.44.20/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.28 h1:h/OAqEqY18wq//v6h4GNPMmCkxuzSDrWuGyrvSiRqf4= github.com/aws/aws-sdk-go v1.44.28/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.0.0/go.mod h1:smfAbmpW+tcRVuNUjo3MOArSZmW72t62rkCzc2i0TWM= github.com/aws/aws-sdk-go-v2 v1.7.0/go.mod h1:tb9wi5s61kTDA5qCkcDbt3KRVV74GGslQkl/DRdX/P4= -github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2 v1.9.2 h1:dUFQcMNZMLON4BOe273pl0filK9RqyQMhCK/6xssL6s= github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2/config v1.0.0/go.mod h1:WysE/OpUgE37tjtmtJd8GXgT8s1euilE5XtUkRNUQ1w= @@ -359,7 +326,6 @@ github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4 h1:leSJ6vCqtPpTmBIgE7044B1wql1E github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4/go.mod h1:ZcBrrI3zBKlhGFNYWvju0I3TR93I7YIgAfy82Fh4lcQ= github.com/aws/aws-sdk-go-v2/service/appconfig v1.4.2/go.mod h1:FZ3HkCe+b10uFZZkFdvf98LHW21k49W8o8J366lqVKY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.5.0/go.mod h1:acH3+MQoiMzozT/ivU+DbRg7Ooo2298RdRaWcOv+4vM= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.0/go.mod h1:3jExOmpbjgPnz2FJaMOfbSk1heTkZ66aD3yNtVhnjvI= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2 h1:r7jel2aa4d9Duys7wEmWqDd5ebpC9w6Kxu6wIjjp18E= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72HRZDLMtmVQiLG2tLfQcaWLCssELvGl+Zf2WVxMmR8= @@ -374,9 +340,7 @@ github.com/aws/smithy-go v1.5.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAm github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= github.com/aws/smithy-go v1.11.0 h1:nOfSDwiiH232f90OuevPnAEQO5ZqH+xnn8uGVsvBCw4= github.com/aws/smithy-go v1.11.0/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM= -github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/basgys/goxml2json v1.1.0 h1:4ln5i4rseYfXNd86lGEB+Vi652IsIXIvggKM/BhUKVw= -github.com/basgys/goxml2json v1.1.0/go.mod h1:wH7a5Np/Q4QoECFIU8zTQlZwZkrilY0itPfecMw41Dw= github.com/beeker1121/goque v2.1.0+incompatible h1:m5pZ5b8nqzojS2DF2ioZphFYQUqGYsDORq6uefUItPM= github.com/beeker1121/goque v2.1.0+incompatible/go.mod h1:L6dOWBhDOnxUVQsb0wkLve0VCnt2xJW/MI8pdRX4ANw= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= @@ -403,8 +367,6 @@ github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2y github.com/bmatcuk/doublestar/v3 v3.0.0 h1:TQtVPlDnAYwcrVNB2JiGuMc++H5qzWZd9PhkNo5WyHI= github.com/bmatcuk/doublestar/v3 v3.0.0/go.mod h1:6PcTVMw80pCY1RVuoqu3V++99uQB3vsSYKPTd8AWA0k= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= -github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/bradfitz/gomemcache v0.0.0-20220106215444-fb4bf637b56d/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= github.com/bsm/sarama-cluster v2.1.13+incompatible/go.mod h1:r7ao+4tTNXvWm+VRpRJchr2kQhqxgmAp2iEX5W96gMM= @@ -417,7 +379,6 @@ github.com/caio/go-tdigest v3.1.0+incompatible h1:uoVMJ3Q5lXmVLCCqaMGHLBWnbGoN6L github.com/caio/go-tdigest v3.1.0+incompatible/go.mod h1:sHQM/ubZStBUmF1WbB8FAm8q9GjDajLC5T7ydxE3JHI= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/casbin/casbin/v2 v2.31.6/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= -github.com/casbin/casbin/v2 v2.37.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= @@ -429,7 +390,6 @@ github.com/census-instrumentation/opencensus-proto v0.3.0 h1:t/LhUZLVitR1Ow2YOnd github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= @@ -439,11 +399,8 @@ github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d8 github.com/checkpoint-restore/go-criu/v5 v5.3.0 h1:wpFFOoomK3389ue2lAb0Boag6XPht5QYpipxmSNL4d8= github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 h1:kHaBemcxl8o/pQ5VM1c8PVE1PubbNx3mjUr09OqWGCs= github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575/go.mod h1:9d6lWj8KzO/fd/NrVaLscBKmPigpZpn5YawRPw+e3Yo= github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= @@ -455,7 +412,6 @@ github.com/cilium/ebpf v0.7.0 h1:1k/q3ATgxSXRdrmPfH8d7YK0GfqVsEKZAX9dQZvs56k= github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 h1:F1EaeKL/ta07PY/k9Os/UFtwERei2/XzGemhpGnBKNg= @@ -481,7 +437,6 @@ github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/confluentinc/confluent-kafka-go v1.4.0/go.mod h1:u2zNLny2xq+5rWeTQjFHbDzzNuba4P1vo31r9r4uAdg= github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= @@ -523,7 +478,6 @@ github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoT github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= github.com/containerd/containerd v1.5.8/go.mod h1:YdFSv5bTFLpG2HIYmfqDpSYYTDX+mc5qtSuYx1YUb/s= -github.com/containerd/containerd v1.5.9/go.mod h1:fvQqCfadDGga5HZyn3j4+dx56qj2I9YwBrlSdalvJYQ= github.com/containerd/containerd v1.6.1 h1:oa2uY0/0G+JX4X7hpGCYvkp9FjUancz56kSNnb1sG3o= github.com/containerd/containerd v1.6.1/go.mod h1:1nJz5xCZPusx6jJU8Frfct988y0NpumIq9ODB0kLtoE= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= @@ -603,7 +557,6 @@ github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= @@ -636,7 +589,6 @@ github.com/denisenkom/go-mssqldb v0.11.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27 github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE= github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= -github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= github.com/dgraph-io/badger/v3 v3.2103.0/go.mod h1:GHMCYxuDWyzbHkh4k3yyg4PM61tJPFfEGSMbE3Vd5QE= github.com/dgraph-io/badger/v3 v3.2103.2/go.mod h1:RHo4/GmYcKKh5Lxu63wLEMHJ70Pac2JqZRYGhlyAo2M= github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= @@ -650,26 +602,18 @@ github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WA github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/digitalocean/godo v1.78.0/go.mod h1:GBmu8MkjZmNARE7IXRPmkbbnocNN8+uBm0xbEVw2LCs= github.com/digitalocean/godo v1.80.0 h1:ZULJ/fWDM97YtO7Fa+K6hzJLd7+smCu4N+0n+B/xtj4= github.com/digitalocean/godo v1.80.0/go.mod h1:BPCqvwbjbGqxuUnIKB4EvS/AX7IDnNmt5fwvIkWo+ew= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= -github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= -github.com/dnephin/pflag v1.0.7/go.mod h1:uxE91IoWURlOiTUIA8Mq5ZZkAv3dPUfZNaT80Zm7OQE= github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/distribution v2.8.0-beta.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68= github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.11+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.12+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.14+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.15+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.16+incompatible h1:2Db6ZR/+FUR3hqPMwnogOPHFn405crbpxvWzKovETOQ= github.com/docker/docker v20.10.16+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= @@ -686,7 +630,6 @@ github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dougm/pretty v0.0.0-20171025230240-2ee9d7453c02/go.mod h1:7NQ3kWOx2cZOSjtcveTa5nqupVr2s6/83sG+rTlI7uA= github.com/dropbox/godropbox v0.0.0-20180512210157-31879d3884b9 h1:NAvZb7gqQfLSNBPzVsvI7eZMosXtg2g2kxXrei90CtU= github.com/dropbox/godropbox v0.0.0-20180512210157-31879d3884b9/go.mod h1:glr97hP/JuXb+WMYCizc4PIFuzw1lCR97mwbe1VVXhQ= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= @@ -702,8 +645,6 @@ github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1 github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= -github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= github.com/elastic/go-elasticsearch/v6 v6.8.5/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI= github.com/elastic/go-elasticsearch/v7 v7.17.1 h1:49mHcHx7lpCL8cW1aioEwSEVKQF3s+Igi4Ye/QTWwmk= github.com/elastic/go-elasticsearch/v7 v7.17.1/go.mod h1:OJ4wdbtDNk5g503kvlHLyErCgQwwzmDtaFC4XyOxXA4= @@ -737,7 +678,6 @@ github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E github.com/envoyproxy/protoc-gen-validate v0.6.7 h1:qcZcULcd/abmQg6dwigimCNEyi4gg31M/xaciQlDml8= github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= -github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= github.com/euank/go-kmsg-parser v2.0.0+incompatible h1:cHD53+PLQuuQyLZeriD1V/esuG4MuU0Pjs5y6iknohY= github.com/euank/go-kmsg-parser v2.0.0+incompatible/go.mod h1:MhmAMZ8V4CYH4ybgdRwPr2TU5ThnS43puaKEMpja1uw= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= @@ -761,8 +701,6 @@ github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpm github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= @@ -770,14 +708,11 @@ github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goblin v0.0.0-20210519012713-85d372ac71e2/go.mod h1:VzmDKDJVZI3aJmnRI9VjAn9nJ8qPPsN1fqzr9dqInIo= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.4.0/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= github.com/frankban/quicktest v1.10.2/go.mod h1:K+q6oSqb0W0Ininfk863uOk1lMy69l/P6txr3mVT54s= @@ -797,7 +732,6 @@ github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmV github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/garyburd/redigo v1.6.3/go.mod h1:rTb6epsqigu3kYKBnaF028A7Tf/Aw5s0cqA47doKKqw= -github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= github.com/gdamore/tcell v1.3.0/go.mod h1:Hjvr+Ofd+gLglo7RYKxxnzCBmev3BzsS67MebKS4zMM= github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= @@ -809,20 +743,12 @@ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeME github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= -github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= -github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= github.com/go-chi/chi v1.5.0/go.mod h1:REp24E+25iKvxgeTfHmdUoL5x15kBiDBlnIl5bCwe2k= github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= -github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= -github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= -github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= -github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= -github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -837,8 +763,6 @@ github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vb github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= -github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= github.com/go-ldap/ldap/v3 v3.1.3/go.mod h1:3rbOH3jRS2u6jg2rJnKAMLE/xQyCKIveG2Sa/Cohzb8= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= @@ -858,7 +782,6 @@ github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jT github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= -github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= @@ -920,9 +843,7 @@ github.com/go-openapi/runtime v0.19.15/go.mod h1:dhGWCTKRXlAfGnQG0ONViOZpjfg0m2g github.com/go-openapi/runtime v0.19.16/go.mod h1:5P9104EJgYcizotuXhEuUrzVc+j1RiSjahULvYmlv98= github.com/go-openapi/runtime v0.19.24/go.mod h1:Lm9YGCeecBnUUkFTxPC4s1+lwrkJ0pthx8YvyjCfkgk= github.com/go-openapi/runtime v0.19.28/go.mod h1:BvrQtn6iVb2QmiVXRsFAm6ZCAZBpbVKFfN6QWCp582M= -github.com/go-openapi/runtime v0.21.0/go.mod h1:aQg+kaIQEn+A2CRSY1TxbM8+sT9g2V3aLc1FbIAnbbs= github.com/go-openapi/runtime v0.22.0/go.mod h1:aQg+kaIQEn+A2CRSY1TxbM8+sT9g2V3aLc1FbIAnbbs= -github.com/go-openapi/runtime v0.23.1/go.mod h1:AKurw9fNre+h3ELZfk6ILsfvPN+bvvlaU/M9q/r9hpk= github.com/go-openapi/runtime v0.23.3/go.mod h1:AKurw9fNre+h3ELZfk6ILsfvPN+bvvlaU/M9q/r9hpk= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= @@ -975,8 +896,6 @@ github.com/go-openapi/validate v0.20.1/go.mod h1:b60iJT+xNNLfaQJUqLI7946tYiFEOuE github.com/go-openapi/validate v0.20.2/go.mod h1:e7OJoKNgd0twXZwIn0A43tHbvIcr/rZIVCbJBpTUoY0= github.com/go-openapi/validate v0.20.3/go.mod h1:goDdqVGiigM3jChcrYJxD2joalke3ZXeftD16byIjA4= github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= -github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= -github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pg/pg/v10 v10.0.0/go.mod h1:XHU1AkQW534GFuUdSiQ46+Xw6Ah+9+b8DlT4YwhiXL8= github.com/go-pg/zerochecker v0.2.0/go.mod h1:NJZ4wKL0NmTtz0GKCoJ8kym6Xn/EQzXRl2OnAe7MmDo= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= @@ -985,7 +904,6 @@ github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTM github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= -github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg= github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-redis/redis/v7 v7.1.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= github.com/go-redis/redis/v7 v7.4.1 h1:PASvf36gyUpr2zdOUS/9Zqc80GbM+9BDyiJSJDDOrTI= @@ -1033,16 +951,11 @@ github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/V github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/goccy/go-yaml v1.9.5/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA= github.com/gocql/gocql v0.0.0-20200228163523-cd4b606dd2fb/go.mod h1:DL0ekTmBSTdlNF25Orwt/JMzqIq3EJ4MVa/J/uK64OY= github.com/gocql/gocql v0.0.0-20211222173705-d73e6b1002a7/go.mod h1:3gM2c4D3AnkISwBxGnMMsS8Oy4y2lhbPRsH4xnJrHG8= github.com/gocql/gocql v0.0.0-20220224095938-0eacd3183625/go.mod h1:3gM2c4D3AnkISwBxGnMMsS8Oy4y2lhbPRsH4xnJrHG8= github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= -github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e h1:BWhy2j3IXJhjCbC68FptL43tDKIq8FladmaTs3Xs7Z8= github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -1060,7 +973,6 @@ github.com/gogo/googleapis v1.3.1/go.mod h1:d+q1s/xVJxZGKWwC/6UfPIF33J+G1Tq4GYv9 github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= -github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= @@ -1069,13 +981,10 @@ github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXP github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= -github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= @@ -1121,7 +1030,6 @@ github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomodule/redigo v1.7.0/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= -github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/addlicense v0.0.0-20190510175307-22550fa7c1b0/go.mod h1:QtPG26W17m+OIQgE6gQ24gC1M6pUaMBAbFrTIDtwG/E= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -1149,7 +1057,6 @@ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8 github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= @@ -1178,10 +1085,7 @@ github.com/google/pprof v0.0.0-20210423192551-a2663126120b/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= -github.com/google/pprof v0.0.0-20220520215854-d04f2422c8a1/go.mod h1:gSuNB+gJaOiQKLEZ+q+PK9Mq3SOzhRcw2GsGS/FhYDk= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -1203,7 +1107,6 @@ github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97Dwqy github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/googleinterns/cloud-operations-api-mock v0.0.0-20200709193332-a1e58c29bdd3 h1:eHv/jVY/JNop1xg2J9cBb4EzyMpWZoNCP1BslSAIkOI= -github.com/googleinterns/cloud-operations-api-mock v0.0.0-20200709193332-a1e58c29bdd3/go.mod h1:h/KNeRx7oYU4SpA4SoY7W2/NxDKEEVuwA6j9A27L4OI= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gophercloud/gophercloud v0.24.0 h1:jDsIMGJ1KZpAjYfQgGI2coNQj5Q83oPzuiGJRFWgMzw= github.com/gophercloud/gophercloud v0.24.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c= @@ -1223,7 +1126,6 @@ github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+ github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2 h1:uirlL/j72L93RhV4+mkWhjv0cov2I0MIgPOG9rMDr1k= github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= @@ -1240,15 +1142,12 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.2/go.mod h1:chrfS3YoLAlKTRE5cFWvCbt8uGAjshktT4PveTUpsFQ= github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= github.com/hashicorp/consul/api v1.0.0/go.mod h1:mbFwfRxOTDHZpT3iUsMAFcLNoVm6Xbe1xZ6KiSm8FY0= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/api v1.8.1/go.mod h1:sDjTOq0yUyv5G4h+BqSea7Fn6BU+XbolEz1952UB+mk= -github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/api v1.12.0 h1:k3y1FYv6nuKyNTqj6w9gXOx5r5CfLj/k/euUeBXj1OY= github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= @@ -1270,7 +1169,6 @@ github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9 github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.12.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.16.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= @@ -1280,13 +1178,11 @@ github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39E github.com/hashicorp/go-hclog v1.2.1 h1:YQsLlGDJgwhXFpucSPyVbCBviQtjlHv3jLTlp8YmtEw= github.com/hashicorp/go-hclog v1.2.1/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.2.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-kms-wrapping/entropy v0.1.0/go.mod h1:d1g9WGtAunDNpek8jUIEJnBlbgKS1N2Q61QkHiZyR1g= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-msgpack v0.5.5 h1:i9R9JSrqIz0QVLz3sz+i3YJdT7TTSLcfLLzJi9aZTuI= -github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= @@ -1347,32 +1243,26 @@ github.com/hashicorp/vault/sdk v0.1.14-0.20200519221838-e0cfd64bc267/go.mod h1:W github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20190923154419-df201c70410d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/hetznercloud/hcloud-go v1.33.1/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME= github.com/hetznercloud/hcloud-go v1.33.2 h1:ptWKVYLW7YtjXzsqTFKFxwpVo3iM9UMkVPBYQE4teLU= github.com/hetznercloud/hcloud-go v1.33.2/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME= github.com/honeycombio/libhoney-go v1.15.8 h1:TECEltZ48K6J4NG1JVYqmi0vCJNnHYooFor83fgKesA= github.com/honeycombio/libhoney-go v1.15.8/go.mod h1:+tnL2etFnJmVx30yqmoUkVyQjp7uRJw0a2QGu48lSyY= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= -github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/go-syslog/v3 v3.0.1-0.20210608084020-ac565dc76ba6 h1:s9ZL6ZhFF8y6ebnm1FLvobkzoIu5xwDQUcRPk/IEhpM= github.com/influxdata/go-syslog/v3 v3.0.1-0.20210608084020-ac565dc76ba6/go.mod h1:aXdIdfn2OcGnMhOTojXmwZqXKgC3MU5riiNvzwwG9OY= -github.com/influxdata/influxdb-observability/common v0.2.20/go.mod h1:9t4MDkYRImBa4Wuatb3URr6tlimGT1JUYv9O8y5L/C8= github.com/influxdata/influxdb-observability/common v0.2.21-0.20220517160208-05f925d616de h1:f9p3iKS31+/p6cvqdmTJ45lrTlH+GDj2sK4EdVbuMI4= github.com/influxdata/influxdb-observability/common v0.2.21-0.20220517160208-05f925d616de/go.mod h1:9t4MDkYRImBa4Wuatb3URr6tlimGT1JUYv9O8y5L/C8= github.com/influxdata/influxdb-observability/influx2otel v0.2.21-0.20220517160208-05f925d616de h1:Ycgp+v47g/qaK70x54GuOBUkZinVmztEIg3dHdinKpo= @@ -1391,14 +1281,8 @@ github.com/influxdata/line-protocol/v2 v2.2.1/go.mod h1:DmB3Cnh+3oxmG6LOBIxce4oa github.com/intel/goresctrl v0.2.0/go.mod h1:+CZdzouYFn5EsxgqAQTEzMfwKwuc0fVdMrT9FCCAVRQ= github.com/ionos-cloud/sdk-go/v6 v6.0.5851 h1:Xjdta3uR5SDLXXl0oahgVIJ+AQNFCyOCuAwxPAXFUCM= github.com/ionos-cloud/sdk-go/v6 v6.0.5851/go.mod h1:UE3V/2DjnqD5doOqtjYqzJRMpI1RiwrvuuSEPX1pdnk= -github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= -github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= -github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= -github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= -github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= github.com/j-keck/arping v1.0.2/go.mod h1:aJbELhR92bSk7tp79AWM/ftfc90EfEi2bQJrbBFOsPw= -github.com/jackc/chunkreader v1.0.0 h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0= github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= @@ -1424,7 +1308,6 @@ github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5W github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= -github.com/jackc/pgproto3 v1.1.0 h1:FYYE4yRw+AgI8wXIinMlNjBbp/UitDJwfj5LqqewP1A= github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= @@ -1471,7 +1354,6 @@ github.com/jackc/puddle v1.2.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dv github.com/jackc/puddle v1.2.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jaegertracing/jaeger v1.15.1/go.mod h1:LUWPSnzNPGRubM8pk0inANGitpiMOOxihXx0+53llXI= github.com/jaegertracing/jaeger v1.24.0/go.mod h1:mqdtFDA447va5j0UewDaAWyNlGreGQyhGxXVhbF58gQ= -github.com/jaegertracing/jaeger v1.28.0/go.mod h1:CfqVll05gkdPxNc5xrCnR44UmeVYZoYJtO4Ub8qn2wI= github.com/jaegertracing/jaeger v1.31.0/go.mod h1:KukZMhuamI3NVbzWmngcmXbcnxiB3WyaNf0nxio+sUw= github.com/jaegertracing/jaeger v1.35.1 h1:Jb7/5anKF70V4FQSJRJ3AYBcA/hJDfWy45kE/9nFSe8= github.com/jaegertracing/jaeger v1.35.1/go.mod h1:e7FBVZ14ptsRjwiHEnLyxvOa4bSnZA0BDFE1OcvNiHs= @@ -1490,7 +1372,6 @@ github.com/jcmturner/gokrb5/v8 v8.4.2/go.mod h1:sb+Xq/fTY5yktf/VxLsE3wlfPqQjp0aW github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY= github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= github.com/jinzhu/gorm v1.9.1/go.mod h1:Vla75njaFJ8clLU1W44h34PjIkijhjHIYnZxMqCdxqo= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= @@ -1535,26 +1416,17 @@ github.com/juju/testing v0.0.0-20191001232224-ce9dec17d28b/go.mod h1:63prj8cnj0t github.com/julienschmidt/httprouter v1.1.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= -github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= -github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= -github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= -github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= -github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.12/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= @@ -1569,7 +1441,6 @@ github.com/klauspost/compress v1.15.0/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47e github.com/klauspost/compress v1.15.4/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.15.6 h1:6D9PcO8QWu0JyaQ2zUMmu16T1T+zjjEpP91guRsvDfY= github.com/klauspost/compress v1.15.6/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/knadh/koanf v1.4.1 h1:Z0VGW/uo8NJmjd+L1Dc3S5frq6c62w5xQ9Yf4Mg3wFQ= github.com/knadh/koanf v1.4.1/go.mod h1:1cfH5223ZeZUOs8FU2UdTmaNfHpqgtjV0+NHjRO43gs= github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b h1:iNjcivnc6lhbvJA3LD622NPrUponluJrBWPIwGG/3Bg= @@ -1590,14 +1461,11 @@ github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/labstack/echo v3.3.10+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s= github.com/labstack/echo/v4 v4.2.0/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= -github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= github.com/leesper/go_rng v0.0.0-20190531154944-a612b043e353 h1:X/79QL0b4YJVO5+OsPH9rF2u428CIrGL/jLmPsoOQQ4= -github.com/leesper/go_rng v0.0.0-20190531154944-a612b043e353/go.mod h1:N0SVk0uhy+E1PZ3C9ctsPRlvOPAFPkCNlcPBDkt0N3U= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/ragel-machinery v0.0.0-20181214104525-299bdde78165/go.mod h1:WZxr2/6a/Ar9bMDc2rN/LJrE/hF6bXE4LPyDSIxwAfg= @@ -1612,7 +1480,6 @@ github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linode/linodego v1.4.0/go.mod h1:PVsRxSlOiJyvG4/scTszpmZDTdgS+to3X6eS8pRrWI8= github.com/linode/linodego v1.5.0 h1:p1TgkDsz0ubaIPLNviZBTIjlsX3PdvqZQ4eO2r0L1Hk= github.com/linode/linodego v1.5.0/go.mod h1:9lmhBsOupR6ke7D9Ioj1bq/ny9pfgFkCLiX7ubq0r08= github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= @@ -1652,7 +1519,6 @@ github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVc github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= @@ -1678,28 +1544,22 @@ github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOq github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U= github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= -github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= -github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= github.com/microsoft/ApplicationInsights-Go v0.4.4 h1:G4+H9WNs6ygSCe6sUyxRc2U81TI5Es90b2t/MwX5KqY= github.com/microsoft/ApplicationInsights-Go v0.4.4/go.mod h1:fKRUseBqkw6bDiXTs3ESTiU/4YTIHsQS4W3fP2ieF4U= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.25/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= -github.com/miekg/dns v1.1.48/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= github.com/miekg/dns v1.1.49 h1:qe0mQU3Z/XpFeE+AEBo2rqaS1IPBJ3anmqZ4XiZJVG8= github.com/miekg/dns v1.1.49/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989 h1:PS1dLCGtD8bb9RPKJrc8bS7qHL6JnW1CZvwzH9dPoUs= github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989/go.mod h1:2eu9pRWp8mo84xCg6KswZ+USQHjwgRhNp06sozOdsTY= github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible h1:aKW/4cBs+yK6gpqU3K/oIwk9Q/XICqd3zOX/UFuvqmk= github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= @@ -1738,7 +1598,6 @@ github.com/mjibson/esc v0.2.0/go.mod h1:9Hw9gxxfHulMF5OJKCyhYD7PzlSdhzXyaGEBRPH1 github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/sys/mount v0.2.0 h1:WhCW5B355jtxndN5ovugJlMFJawbUODuW8fSnEH6SSM= -github.com/moby/sys/mount v0.2.0/go.mod h1:aAivFE2LB3W4bACsUXChRHQ0qKWsetY4Y9V7sxOougM= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.5.0 h1:2Ks8/r6lopsxWi9m58nlwjaeSzUX9iiL1vj5qB/9ObI= @@ -1758,16 +1617,13 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= github.com/mongodb-forks/digest v1.0.4 h1:9FrGTc7MGAchgaQBcXBnEwUM/Oo8obW7OGWxnsSvZ64= github.com/mongodb-forks/digest v1.0.4/go.mod h1:eHRfgovT+dvSFfltrOa27hy1oR/rcwyDdp5H1ZQxEMA= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= -github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mostynb/go-grpc-compression v1.1.16 h1:D9tGUINmcII049pxOj9dl32Fzhp26TrDVQXECoKJqQg= github.com/mostynb/go-grpc-compression v1.1.16/go.mod h1:xxa6UoYynYS2h+5HB/Hglu81iYAp87ARaNmhhwi0s1s= -github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= github.com/mrunalp/fileutils v0.5.0 h1:NKzVxiH7eSk+OQ4M+ZYW1K6h27RUV3MI6NUTsHhU6Z4= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= @@ -1782,13 +1638,10 @@ github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5Vgl github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= github.com/nats-io/jwt v1.2.2/go.mod h1:/xX356yQA6LuXI9xWW7mZNpxgF2mBmGecH+Fj34sP5Q= github.com/nats-io/jwt/v2 v2.0.2/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= -github.com/nats-io/jwt/v2 v2.0.3/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= github.com/nats-io/nats-server/v2 v2.2.6/go.mod h1:sEnFaxqe09cDmfMgACxZbziXnhQFhwk+aKkZjBBRYrI= -github.com/nats-io/nats-server/v2 v2.5.0/go.mod h1:Kj86UtrXAL6LwYRA6H4RqzkHhK0Vcv2ZnKD5WbQ1t3g= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= github.com/nats-io/nats.go v1.11.0/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= -github.com/nats-io/nats.go v1.12.1/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.2.0/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= @@ -1807,7 +1660,6 @@ github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+ github.com/observiq/ctimefmt v1.0.0 h1:r7vTJ+Slkrt9fZ67mkf+mA6zAdR5nGIJRMTzkUyvilk= github.com/observiq/ctimefmt v1.0.0/go.mod h1:mxi62//WbSpG/roCO1c6MqZ7zQTvjVtYheqHN3eOjvc= github.com/observiq/nanojack v0.0.0-20201106172433-343928847ebc h1:49ewVBwLcy+eYqI4R0ICilCI4dPjddpFXWv3liXzUxM= -github.com/observiq/nanojack v0.0.0-20201106172433-343928847ebc/go.mod h1:WXIHwGy+c7/IK2PiJ4oxuTHkpnkSut7TNFpKnI5llPU= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= @@ -1849,7 +1701,6 @@ github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je4 github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.17.0 h1:9Luw4uT5HTjHTN8+aNcSThgH1vdXnmdJ8xIfZ4wyTRE= -github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -1868,7 +1719,6 @@ github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= -github.com/opencontainers/runc v1.0.3/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= github.com/opencontainers/runc v1.1.0 h1:O9+X96OcDjkmmZyfaG996kV7yq8HsoU2h1XRRQcefG8= github.com/opencontainers/runc v1.1.0/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= @@ -1925,14 +1775,10 @@ github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCko github.com/pelletier/go-toml/v2 v2.0.0-beta.8 h1:dy81yyLYJDwMTifq24Oi/IslOslRrDSb3jwDggjz3Z0= github.com/pelletier/go-toml/v2 v2.0.0-beta.8/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/philhofer/fwd v1.1.1 h1:GdGcTjf5RNAxwS4QLsiMzJYj5KEvPJD3Abr261yRQXQ= github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= -github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= -github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= -github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/pierrec/cmdflag v0.0.2/go.mod h1:a3zKGZ3cdQUfxjd0RGMLZr8xI3nvpJOB+m6o/1X5BmU= github.com/pierrec/lz4 v0.0.0-20190327172049-315a67e90e41/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= @@ -1945,8 +1791,6 @@ github.com/pierrec/lz4/v3 v3.3.4/go.mod h1:280XNCGS8jAcG++AHdd6SeWnzyJ1w9oow2vbO github.com/pierrec/lz4/v4 v4.1.14 h1:+fL8AQEZtz/ijeNnpduH0bROTu0O3NZAlPjQxGn8LwE= github.com/pierrec/lz4/v4 v4.1.14/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= -github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -1966,7 +1810,6 @@ github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prY github.com/pquerna/cachecontrol v0.1.0 h1:yJMy84ti9h/+OEWa752kBTKv4XC30OtVVHYv/8cTqKc= github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= -github.com/prometheus/alertmanager v0.24.0/go.mod h1:r6fy/D7FRuZh5YbnX6J3MBY0eI4Pb5yPYS7/bPSXXqI= github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= @@ -2008,10 +1851,8 @@ github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+ github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.34.0 h1:RBmGO9d/FVjqHT0yUGQwBJhkwKV+wPCn7KGpvfab0uE= github.com/prometheus/common v0.34.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= -github.com/prometheus/common/assets v0.1.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4= github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= -github.com/prometheus/exporter-toolkit v0.7.1/go.mod h1:ZUBIj498ePooX9t/2xtDjeQYwvRpiPP2lh5u4iblj2g= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -2029,15 +1870,12 @@ github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/prometheus v0.35.0/go.mod h1:7HaLx5kEPKJ0GDgbODG0fZgXbQ8K/XjZNJXQmbmgQlY= github.com/prometheus/prometheus v0.36.0 h1:d1OWo3gTs5apWUMP5luhZTmXKmwrUUz9DqWlGCQJBAE= github.com/prometheus/prometheus v0.36.0/go.mod h1:g5VjDTKGDiTs249GQVBbbWdHLkkIOgme3HxyUwIzlwY= github.com/prometheus/statsd_exporter v0.21.0 h1:hA05Q5RFeIjgwKIYEdFd59xu5Wwaznf33yKI+pyX6T8= github.com/prometheus/statsd_exporter v0.21.0/go.mod h1:rbT83sZq2V+p73lHhPZfMc3MLCHmSHelCh9hSGYNLTQ= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rabbitmq/amqp091-go v1.1.0/go.mod h1:ogQDLSOACsLPsIq0NpbtiifNZi2YOz0VTJ0kHRghqbM= -github.com/rakyll/embedmd v0.0.0-20171029212350-c8060a0752a2/go.mod h1:7jOTMgqac46PZcF54q6l2hkLEG8op93fZu61KmxWDV4= -github.com/rasky/go-xdr v0.0.0-20170217172119-4930550ba2e2/go.mod h1:Nfe4efndBz4TibWycNE+lqyJZiMX4ycx+QKV8Ta0f/o= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= @@ -2052,9 +1890,7 @@ github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= -github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rs/cors v1.8.0/go.mod h1:EBwu+T5AvHOcXwvZIkQFjUN6s8Czyqw12GL/Y0tUyRM= github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= @@ -2064,14 +1900,11 @@ github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThC github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= -github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= -github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig= github.com/sagikazarmark/crypt v0.4.0/go.mod h1:ALv2SRj7GxYV4HO9elxH9nS6M9gW+xDNxqmyJ6RfDFM= github.com/sagikazarmark/crypt v0.5.0/go.mod h1:l+nzl7KWh51rpzp2h7t4MZWyiEWdhNpOAnclKvg+mdA= @@ -2083,7 +1916,6 @@ github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHi github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9 h1:0roa6gXKgyta64uqh52AQG3wzZXH21unn+ltzQSXML0= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= -github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/schollz/progressbar/v2 v2.13.2/go.mod h1:6YZjqdthH6SCZKv2rqGryrxPtfmRB/DWZxSMfCXPyD8= github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= @@ -2108,9 +1940,7 @@ github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9Nz github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= -github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= github.com/signalfx/com_signalfx_metrics_protobuf v0.0.1/go.mod h1:QkslgLDW0N9qRi9qkxcNDaf812gg0kWcf3ZZORE5/FI= github.com/signalfx/com_signalfx_metrics_protobuf v0.0.3 h1:32k2QLgsKhcEs55q4REPKyIadvid5FPy2+VMgvbmKJ0= github.com/signalfx/com_signalfx_metrics_protobuf v0.0.3/go.mod h1:gJrXWi7wSGXfiC7+VheQaz+ypdCt5SmZNL+BRxUe7y4= @@ -2164,7 +1994,6 @@ github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tL github.com/spf13/cobra v0.0.7/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4= github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= @@ -2181,7 +2010,6 @@ github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DM github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= -github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM= github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8qy1rU= github.com/spf13/viper v1.11.0 h1:7OX/1FS6n7jHD1zGrZTM7WtY13ZELRyosK4k93oPr44= @@ -2224,7 +2052,6 @@ github.com/tedsuo/ifrit v0.0.0-20180802180643-bea94bb476cc/go.mod h1:eyZnKCc955u github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.413 h1:DvydszksqriOr0Zze9OREt8OrIrtMSFcVD8lz3xNAQA= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.413/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/testcontainers/testcontainers-go v0.13.0 h1:OUujSlEGsXVo/ykPVZk3KanBNGN0TYb/7oKIPVn15JA= -github.com/testcontainers/testcontainers-go v0.13.0/go.mod h1:z1abufU633Eb/FmSBTzV6ntZAC1eZBYPtaFsn4nPuDk= github.com/tg123/go-htpasswd v1.2.0 h1:UKp34m9H467/xklxUxU15wKRru7fwXoTojtxg25ITF0= github.com/tg123/go-htpasswd v1.2.0/go.mod h1:h7IzlfpvIWnVJhNZ0nQ9HaFxHb7pn5uFJYLlEUJa2sM= github.com/tidwall/btree v0.3.0/go.mod h1:huei1BkDWJ3/sLXmO+bsCNELL+Bp2Kks9OLyQFkzvA8= @@ -2280,12 +2107,10 @@ github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= github.com/valyala/fasthttp v1.26.0/go.mod h1:cmWIqlu99AO/RKcp1HWaViTqc57FswJOfYYdPJBl8BA= github.com/valyala/fasthttp v1.32.0/go.mod h1:2rsYD01CKFrjjsvFxx75KlEUNpWNBY9JWD3K/7o2Cus= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= github.com/vaughan0/go-ini v0.0.0-20130923145212-a98ad7ee00ec/go.mod h1:owBmyHYMLkxyrugmfwE/DLJyW8Ro9mkphwuVErQ0iUw= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= @@ -2319,7 +2144,6 @@ github.com/vmware/go-vmware-nsxt v0.0.0-20220328155605-f49a14c1ef5f h1:NbC9yOr5A github.com/vmware/go-vmware-nsxt v0.0.0-20220328155605-f49a14c1ef5f/go.mod h1:VEqcmf4Sp7gPB7z05QGyKVmn6xWppr7Nz8cVNvyC80o= github.com/vmware/govmomi v0.28.0 h1:VgeQ/Rvz79U9G8QIKLdgpsN9AndHJL+5iMJLgYIrBGI= github.com/vmware/govmomi v0.28.0/go.mod h1:F7adsVewLNHsW/IIm7ziFURaXDaHEwcc+ym4r3INMdY= -github.com/vmware/vmw-guestinfo v0.0.0-20170707015358-25eff159a728/go.mod h1:x9oS4Wk2s2u4tS29nEaDLdzvuHdB19CvSGJjPgkZJNk= github.com/vultr/govultr/v2 v2.17.0 h1:BHa6MQvQn4YNOw+ecfrbISOf4+3cvgofEQHKBSXt6t0= github.com/vultr/govultr/v2 v2.17.0/go.mod h1:ZFOKGWmgjytfyjeyAdhQlSWwTjh2ig+X49cAp50dzXI= github.com/wadey/gocovmerge v0.0.0-20160331181800-b5bfa59ec0ad/go.mod h1:Hy8o65+MXnS6EwGElrSRjUzQDLXreJlzYLlWiHtt8hM= @@ -2344,15 +2168,10 @@ github.com/xdg/stringprep v1.0.3/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0 github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= -github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= -github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -2367,7 +2186,6 @@ github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/zenazn/goji v1.0.1/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/zorkian/go-datadog-api v2.30.0+incompatible h1:R4ryGocppDqZZbnNc5EDR8xGWF/z/MxzWnqTUijDQes= -github.com/zorkian/go-datadog-api v2.30.0+incompatible/go.mod h1:PkXwHX9CUQa/FpB9ZwAD45N1uhCW4MT/Wj7m36PbKss= go.elastic.co/apm v1.15.0 h1:uPk2g/whK7c7XiZyz/YCUnAUBNPiyNeE3ARX3G6Gx7Q= go.elastic.co/apm v1.15.0/go.mod h1:dylGv2HKR0tiCV+wliJz1KHtDyuD8SPe69oV7VyK6WY= go.elastic.co/fastjson v1.1.0 h1:3MrGBWWVIxe/xvsbpghtkFoPciPhOCmjsR/HfwEeQR4= @@ -2423,18 +2241,14 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/collector v0.52.0/go.mod h1:a9GvaOhyc0nVOUzqvdv5mxyWghCSso/WRO2GgRl4I1g= go.opentelemetry.io/collector v0.53.0 h1:p4XwnAltBnw/gCRTk+DHTJVGYLzD5cPHp+0XK/KKE/s= go.opentelemetry.io/collector v0.53.0/go.mod h1:MMSqz2ImXjLrZB26cC8vrtgnjsza3hpc760NNjsmjwE= -go.opentelemetry.io/collector/model v0.38.0/go.mod h1:gS8A27wi+8gM3hrXL+dEjTbrbLxktjHjAwwqI31ELgQ= go.opentelemetry.io/collector/model v0.44.0/go.mod h1:4jo1R8uBDspLCxUGhQ0k3v/EFXFbW7s0AIy3LuGLbcU= go.opentelemetry.io/collector/model v0.45.0/go.mod h1:uyiyyq8lV45zrJ94MnLip26sorfNLP6J9XmOvaEmy7w= -go.opentelemetry.io/collector/pdata v0.51.0/go.mod h1:FsowYKNmf8CgsHgOfJv8V3KjALmy6FYQRHtXAOY3fho= go.opentelemetry.io/collector/pdata v0.52.0/go.mod h1:GJUTfTv8mlYpHRjcmHXVbvJr48EW/q/P/HuBvpXAE58= go.opentelemetry.io/collector/pdata v0.53.0 h1:jezCyHu/LXs4P/GzKObCabU2/OUTivNBlQHGPAo/dZo= go.opentelemetry.io/collector/pdata v0.53.0/go.mod h1:25b+xH0uJwp8H3f0a1V+OQfxbhYVds6Rf1Ul+HFCGo4= -go.opentelemetry.io/collector/semconv v0.51.0/go.mod h1:SxK0rUnUP7YeDakexzbE/vhimTOHwE6m/4aKKd9e27Q= go.opentelemetry.io/collector/semconv v0.52.0/go.mod h1:SxK0rUnUP7YeDakexzbE/vhimTOHwE6m/4aKKd9e27Q= go.opentelemetry.io/collector/semconv v0.53.0 h1:J1lVnFp1VyNKU63rc7csY9/54Tjm9BlLylXLjPimf7s= go.opentelemetry.io/collector/semconv v0.53.0/go.mod h1:SxK0rUnUP7YeDakexzbE/vhimTOHwE6m/4aKKd9e27Q= -go.opentelemetry.io/contrib v0.20.0 h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9p0= go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.28.0/go.mod h1:vEhqr0m4eTc+DWxfsXoXue2GBgV2uUwVznkGIHW/e5w= @@ -2442,7 +2256,6 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.3 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0/go.mod h1:J0dBVrt7dPS/lKJyQoW0xzQiUr4r2Ik1VwPjAUWnofI= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.29.0/go.mod h1:tLYsuf2v8fZreBVwp9gVMhefZlLFZaUiNVSq8QxXRII= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.31.0/go.mod h1:PFmBsWbldL1kiWZk9+0LBZz2brhByaGsvp6pRICMlPE= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0 h1:mac9BKRqwaX6zxHPDe3pvmWpwuuIM0vuXv2juCnQevE= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0/go.mod h1:5eCOqeGphOyz6TsY3ZDNjE33SM/TFAK3RGuCL2naTgY= go.opentelemetry.io/contrib/zpages v0.32.0 h1:AVKTx5ppWDaem7A61HFsO1T3CK/t6kFRQoZQMj0/TW4= @@ -2452,38 +2265,23 @@ go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzox go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= go.opentelemetry.io/otel v1.4.0/go.mod h1:jeAqMFKy2uLIxCtKxoFj0FAL5zAPKQagc3+GtBWakzk= go.opentelemetry.io/otel v1.4.1/go.mod h1:StM6F/0fSwpd8dKWDCdRr7uRvEPYdW0hBSlbdTiUde4= -go.opentelemetry.io/otel v1.6.0/go.mod h1:bfJD2DZVw0LBxghOTlgnlI0CV3hLDu9XF/QKOUXMTQQ= -go.opentelemetry.io/otel v1.6.1/go.mod h1:blzUabWHkX6LJewxvadmzafgh/wnvBSDBdOuwkAtrWQ= -go.opentelemetry.io/otel v1.6.2/go.mod h1:MUBZHaB2cm6CahEBHQPq9Anos7IXynP/noVpjsxQTSc= -go.opentelemetry.io/otel v1.6.3/go.mod h1:7BgNga5fNlF/iZjG06hM3yofffp0ofKCDwSXx1GC4dI= go.opentelemetry.io/otel v1.7.0 h1:Z2lA3Tdch0iDcrhJXDIlC94XE+bxok1F9B+4Lz/lGsM= go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.6.1/go.mod h1:NEu79Xo32iVb+0gVNV8PMd7GoWqnyDXRlj04yFjqz40= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.7.0/go.mod h1:M1hVZHNxcbkAlcvrOMlpQ4YOO3Awf+4N2dxkZL3xm04= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.3.0/go.mod h1:hO1KLR7jcKaDDKDkvI9dP/FIhpmna5lkqPUQdEjFAM8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.6.1/go.mod h1:YJ/JbY5ag/tSQFXzH3mtDmHqzF3aFn3DI/aB1n7pt4w= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.7.0/go.mod h1:ceUgdyfNv4h4gLxHR0WNfDiiVmZFodZhZSbOLhpxqXE= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.3.0/go.mod h1:keUU7UfnwWTWpJ+FWnyqmogPa82nuU5VUANFq49hlMY= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.6.1/go.mod h1:UJJXJj0rltNIemDMwkOJyggsvyMG9QHfJeFH0HS5JjM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.7.0/go.mod h1:E+/KKhwOSw8yoPxSSuUHG6vKppkvhN+S1Jc7Nib3k3o= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.3.0/go.mod h1:QNX1aly8ehqqX1LEa6YniTU7VY9I6R3X/oPxhGdTceE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.6.1/go.mod h1:DAKwdo06hFLc0U88O10x4xnb5sc7dDRDqRuiN+io8JE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.7.0/go.mod h1:aFXT9Ng2seM9eizF+LfKiyPBGy8xIZKwhusC1gIu3hA= go.opentelemetry.io/otel/exporters/prometheus v0.30.0 h1:YXo5ZY5nofaEYMCMTTMaRH2cLDZB8+0UGuk5RwMfIo0= go.opentelemetry.io/otel/exporters/prometheus v0.30.0/go.mod h1:qN5feW+0/d661KDtJuATEmHtw5bKBK7NSvNEP927zSs= go.opentelemetry.io/otel/internal/metric v0.27.0/go.mod h1:n1CVxRqKqYZtqyTh9U/onvKapPGv7y/rpyOTI+LFNzw= go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= go.opentelemetry.io/otel/metric v0.27.0/go.mod h1:raXDJ7uP2/Jc0nVZWQjJtzoyssOYWu/+pjZqRzfvZ7g= -go.opentelemetry.io/otel/metric v0.28.0/go.mod h1:TrzsfQAmQaB1PDcdhBauLMk7nyyg9hm+GoQq/ekE9Iw= go.opentelemetry.io/otel/metric v0.30.0 h1:Hs8eQZ8aQgs0U49diZoaS6Uaxw3+bBE3lcMUKBFIk3c= go.opentelemetry.io/otel/metric v0.30.0/go.mod h1:/ShZ7+TS4dHzDFmfi1kSXMhMVubNoP0oIaBp70J6UXU= go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= -go.opentelemetry.io/otel/sdk v1.6.1/go.mod h1:IVYrddmFZ+eJqu2k38qD3WezFR2pymCzm8tdxyh3R4E= -go.opentelemetry.io/otel/sdk v1.6.2/go.mod h1:M2r4VCm1Yurk4E+fWtP2p+QzFDHMFEqhGdbtQ7zRf+k= go.opentelemetry.io/otel/sdk v1.7.0 h1:4OmStpcKVOfvDOgCt7UriAPtKolwIhxpnSNI/yK+1B0= go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU= go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= @@ -2494,17 +2292,11 @@ go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16g go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk= go.opentelemetry.io/otel/trace v1.4.0/go.mod h1:uc3eRsqDfWs9R7b92xbQbU42/eTNz4N+gLP8qJCi4aE= go.opentelemetry.io/otel/trace v1.4.1/go.mod h1:iYEVbroFCNut9QkwEczV9vMRPHNKSSwYZjulEtsmhFc= -go.opentelemetry.io/otel/trace v1.6.0/go.mod h1:qs7BrU5cZ8dXQHBGxHMOxwME/27YH2qEp4/+tZLLwJE= -go.opentelemetry.io/otel/trace v1.6.1/go.mod h1:RkFRM1m0puWIq10oxImnGEduNBzxiN7TXluRBtE+5j0= -go.opentelemetry.io/otel/trace v1.6.2/go.mod h1:RMqfw8Mclba1p7sXDmEDBvrB8jw65F6GOoN1fyyXTzk= -go.opentelemetry.io/otel/trace v1.6.3/go.mod h1:GNJQusJlUgZl9/TQBPKU/Y/ty+0iVB5fjhKeJGZPGFs= go.opentelemetry.io/otel/trace v1.7.0 h1:O37Iogk1lEkMRXewVtZ1BBTVn5JEp8GrJvP92bJqC6o= go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg3NAKnUGl9YpQ= go.opentelemetry.io/proto/otlp v0.12.0/go.mod h1:TsIjwGWIx5VFYv9KGVlOpxoBl5Dy+63SUguV7GGvlSQ= -go.opentelemetry.io/proto/otlp v0.12.1/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.opentelemetry.io/proto/otlp v0.16.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -2516,7 +2308,6 @@ go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/automaxprocs v1.4.0/go.mod h1:/mTEdr7LvHhs0v7mjdxDreTz1OG5zdZGqgOnhWiR/+Q= go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= @@ -2534,7 +2325,6 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= go.uber.org/zap v1.20.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= @@ -2564,7 +2354,6 @@ golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -2582,7 +2371,6 @@ golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5 golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210915214749-c084706c2272/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= @@ -2592,37 +2380,21 @@ golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122 h1:NvGWuYG8dkDHFSKksI1P9faiVJ9rayE6l0+ouWVIDs8= golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/exp v0.0.0-20200901203048-c4f52b2c50aa/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200908183739-ae8ad444f925 h1:5XVKs2rlCg8EFyRcvO8/XFwYxh1oKJO1Q3X5vttIf9c= golang.org/x/exp v0.0.0-20200908183739-ae8ad444f925/go.mod h1:1phAWC201xIgDyaFpmDeZkgf70Q4Pd/CNqfRtVPtxNw= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -2649,7 +2421,6 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2668,7 +2439,6 @@ golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -2726,10 +2496,8 @@ golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211020060615-d418f374d309/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211108170745-6635138e15ea/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -2882,7 +2650,6 @@ golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2925,8 +2692,6 @@ golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220307203707-22a9840ba4d7/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2959,29 +2724,23 @@ golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220411224347-583f2d630306 h1:+gHMid33q6pen7kv9xvT+JRinntgeXO2AeZVd0AWD3w= golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181112210238-4b1f3b6b1646/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -3003,7 +2762,6 @@ golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20190906203814-12febf440ab1/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -3038,7 +2796,6 @@ golang.org/x/tools v0.0.0-20200527183253-8e7acdbce89d/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200701151220-7cb253f4c4f8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= @@ -3060,7 +2817,6 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.10-0.20220218145154-897bd77cd717/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= @@ -3073,16 +2829,8 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df h1:5Pf6pFKu98ODmgnpvkJ3kFUOQGGLIzLIkbzUHp47618= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.7.0/go.mod h1:L02bwd0sqlsvRv41G7wGWFCsVNZFv/k1xzGIxeANHGM= -gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= gonum.org/v1/gonum v0.11.0 h1:f1IJhK4Km5tBJmaiJXtk/PkL4cdVX6J+tGiM187uT5E= gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= -gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= -gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= @@ -3117,7 +2865,6 @@ google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6 google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.58.0/go.mod h1:cAbP2FsxoGVNwtgNAmmn3y5G1TWAiVYRmg4yku3lv+E= google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= @@ -3177,7 +2924,6 @@ google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1m google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200528110217-3d3490e7e671/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200605102947-12044bf5ea91/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200726014623-da3ae01ef02d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -3215,11 +2961,8 @@ google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEc google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210921142501-181ce0d877f6/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211018162055-cf77aa76bad2/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= @@ -3246,7 +2989,6 @@ google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220524023933-508584e28198/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220527130721-00d5c0f3be58 h1:a221mAAEAzq4Lz6ZWRkcS8ptb2mxoxYSt4N68aRyQHM= google.golang.org/genproto v0.0.0-20220527130721-00d5c0f3be58/go.mod h1:yKyY4AMRwFiC8yMMNaMi+RkCnjZJt9LoWuvhXjMs+To= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -3336,14 +3078,11 @@ gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:a gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4= gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/jinzhu/gorm.v1 v1.9.1/go.mod h1:56JJPUzbikvTVnoyP1nppSkbJ2L8sunqTBDY2fDrmFg= -gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= @@ -3354,7 +3093,6 @@ gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76 gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w= gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/telebot.v3 v3.0.0/go.mod h1:7rExV8/0mDDNu9epSrDm/8j22KLaActH1Tbee6YjzWg= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= @@ -3368,12 +3106,10 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/zorkian/go-datadog-api.v2 v2.30.0 h1:umQdVO0Ytx+kYadhuJNjFtDgIsIEBnKrOTvNuu8ClKI= @@ -3386,12 +3122,9 @@ gorm.io/gorm v1.20.0/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gorm.io/gorm v1.20.6/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -gotest.tools/gotestsum v1.7.0/go.mod h1:V1m4Jw3eBerhI/A6qCxUE07RnCg7ACkKj9BYcAm09V8= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -gotest.tools/v3 v3.1.0/go.mod h1:fHy7eyTmJFO5bQbUsEGQ1v4m2J3Jz9eWL54TP2/ZuYQ= gotest.tools/v3 v3.2.0 h1:I0DwBVMGAx26dttAj1BtJLAkVGncrkkUXfJLC4Flt/I= -gotest.tools/v3 v3.2.0/go.mod h1:Mcr9QNxkg0uMvy/YElmo4SpXgJKWgQvYrT7Kw5RzJ1A= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -3400,7 +3133,6 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= honnef.co/go/tools v0.2.0/go.mod h1:lPVVZ2BS5TfnjLyizF7o7hv7j9/L+8cZY2hLyjP9cGY= howett.net/plist v0.0.0-20181124034731-591f970eefbb h1:jhnBjNi9UFpfpl8YZhA9CrOqpnJdvzuiHsl/dnxl11M= howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= @@ -3410,7 +3142,6 @@ k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= k8s.io/api v0.21.1/go.mod h1:FstGROTmsSHBarKc8bylzXih8BLNYTiS3TZcsoEDg2s= k8s.io/api v0.22.5/go.mod h1:mEhXyLaSD1qTOf40rRiKXkc+2iCem09rWLlFwhCEiAs= -k8s.io/api v0.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8= k8s.io/api v0.24.0/go.mod h1:5Jl90IUrJHUJYEMANRURMiVvJ0g7Ax7r3R1bqO8zx8I= k8s.io/api v0.24.1 h1:BjCMRDcyEYz03joa3K1+rbshwh1Ay6oB53+iUx2H8UY= k8s.io/api v0.24.1/go.mod h1:JhoOvNiLXKTPQ60zh2g0ewpA+bnEYf5q44Flhquh4vQ= @@ -3421,7 +3152,6 @@ k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MA k8s.io/apimachinery v0.21.1/go.mod h1:jbreFvJo3ov9rj7eWT7+sYiRx+qZuCYXwWT1bcDswPY= k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= k8s.io/apimachinery v0.22.5/go.mod h1:xziclGKwuuJ2RM5/rSFQSYAj0zdbci3DH8kj+WvyN0U= -k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= k8s.io/apimachinery v0.24.0/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= k8s.io/apimachinery v0.24.1 h1:ShD4aDxTQKN5zNf8K1RQ2u98ELLdIW7jEnlO9uAMX/I= k8s.io/apimachinery v0.24.1/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= @@ -3435,7 +3165,6 @@ k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= k8s.io/client-go v0.21.1/go.mod h1:/kEw4RgW+3xnBGzvp9IWxKSNA+lXn3A7AuH3gdOAzLs= k8s.io/client-go v0.22.5/go.mod h1:cs6yf/61q2T1SdQL5Rdcjg9J1ElXSwbjSrW2vFImM4Y= -k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4= k8s.io/client-go v0.24.0/go.mod h1:VFPQET+cAFpYxh6Bq6f4xyMY80G6jKKktU6G0m00VDw= k8s.io/client-go v0.24.1 h1:w1hNdI9PFrzu3OlovVeTnf4oHDt+FJLd9Ndluvnb42E= k8s.io/client-go v0.24.1/go.mod h1:f1kIDqcEYmwXS/vTbbhopMUbhKp2JhOeVTfxgaCIlF8= @@ -3467,7 +3196,6 @@ k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.8.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.60.1 h1:VW25q3bZx9uE3vvdL6M8ezOX79vA2Aq1nEWLqNQclHc= k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= @@ -3476,7 +3204,6 @@ k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAG k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42 h1:Gii5eqf+GmIEwGNKQYQClCayuJCe2/4fZUvF7VG99sU= k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= k8s.io/kubelet v0.24.0 h1:fH+D6mSr4DGIeHp/O2+mCEJhkVq3Gpgv9BVOHI+GrWY= @@ -3492,16 +3219,13 @@ k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19V k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= mellium.im/sasl v0.2.1/go.mod h1:ROaEDLQNuf9vjKqE1SrAfnsobm2YKXT1gnN1uDp1PjQ= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 h1:kDi4JBNAsJWfz1aEXhO8Jg87JJaPNLh5tIzYHgStQ9Y= sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e h1:4Z09Hglb792X0kfOBBJUPFEyvVfQWrYT/l8h5EKA6JQ= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= @@ -3514,7 +3238,6 @@ sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= -skywalking.apache.org/repo/goapi v0.0.0-20211122071111-ffc517fbfe21/go.mod h1:4KrWd+Oi4lkB+PtxZgIlf+3T6EECPru4fOWNMEHjxRk= skywalking.apache.org/repo/goapi v0.0.0-20220121092418-9c455d0dda3f h1:i0cL/mhLt8xVO05SCKshkzWNUkXOkiW+zRIIuVWjPko= skywalking.apache.org/repo/goapi v0.0.0-20220121092418-9c455d0dda3f/go.mod h1:4KrWd+Oi4lkB+PtxZgIlf+3T6EECPru4fOWNMEHjxRk= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/processor/stream_processor/Sql.g4 b/processor/stream_processor/Sql.g4 index d8965012d20b..cad85b784fd8 100644 --- a/processor/stream_processor/Sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -7,13 +7,14 @@ sqlQuery : selectQuery EOF; selectQuery - : K_SELECT (resultColumns) ( whereStatement )? EOQ + : K_SELECT resultColumns (whereStatement)? EOQ #selectSimple + | K_SELECT resultColumns K_WINDOW_TUMBLING NUMERIC_LITERAL (whereStatement)? (groupBy)? EOQ #selectTumbling ; resultColumns : column (COMMA column)* # selectColumns - | avg (COMMA avg)+ # selectAVG + | avg # selectAVG | STAR # selectStar ; @@ -23,12 +24,11 @@ column ; whereStatement - : ( K_WHERE expr )? # whereStmt - | (tumblingWindow) ( K_WHERE expr )? (groupBy) # tumblingStmt + : K_WHERE expr #whereStmt ; -tumblingWindow - : K_WINDOW_TUMBLING NUMERIC_LITERAL( K_WHERE expr )? +windowTumbling + : K_WINDOW_TUMBLING NUMERIC_LITERAL ; @@ -44,7 +44,7 @@ compoundExpr ; comparisonOperator - : K_EQUAL | K_GREATER | K_LESS | K_LESS_EQUAL | K_GREATER_EQUAL | K_NOT_EQUAL | K_LIKE | K_IN | K_IS | K_NOT_IN + : K_EQUAL | K_GREATER | K_LESS | K_LESS_EQUAL | K_GREATER_EQUAL | K_NOT_EQUAL | K_LIKE |K_NOT_LIKE | K_IN | K_IS | K_NOT_IN ; @@ -83,6 +83,7 @@ K_AND : A N D; K_OR : O R; K_IS : I S; K_LIKE : L I K E; +K_NOT_LIKE : N O T SPACE L I K E; K_EQUAL : '='; K_GREATER : '>'; K_LESS : '<'; diff --git a/processor/stream_processor/cmd/main.go b/processor/stream_processor/cmd/main.go new file mode 100644 index 000000000000..1d44cb880271 --- /dev/null +++ b/processor/stream_processor/cmd/main.go @@ -0,0 +1,73 @@ +package main + +import ( + "bufio" + "fmt" + "github.com/open-telemetry/opentelemetry-collector-contrib/processor/stream_processor/parser" + "go.opentelemetry.io/collector/pdata/plog" + "go.uber.org/zap" + "os" + "strconv" + "strings" +) + +func main() { + reader := bufio.NewReader(os.Stdin) + + for { + fmt.Print("-> ") + query, _ := reader.ReadString('\n') + if strings.TrimRight(strings.ToLower(query), "\r\n\\") == "quit" { + break + } + + logs := generateTestLogs() + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + visitor := parser.NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) + in <- logs + + select { + case ld := <-out: + for i := 0; i < ld.Len(); i++ { + name, ok := ld.At(i).Attributes().Get("name") + if ok { + fmt.Printf("name: %q ", name.AsString()) + } + + isAlive, ok := ld.At(i).Attributes().Get("IsAlive") + if ok { + fmt.Printf("IsAlive: %q ", isAlive.AsString()) + } + price, ok := ld.At(i).Attributes().Get("price") + if ok { + fmt.Printf("price:%q ", price.AsString()) + } + fmt.Print("\n") + } + + case err := <-outErr: + fmt.Println(err) + continue + } + visitor.Stop() + + } + +} + +func generateTestLogs() plog.LogRecordSlice { + + ld := plog.NewLogs() + sc := ld.ResourceLogs().AppendEmpty().ScopeLogs().AppendEmpty() + + for i := 0; i < 100; i++ { + record := sc.LogRecords().AppendEmpty() + record.Attributes().InsertString("name", "Test name "+strconv.Itoa(i)) + record.Attributes().InsertBool("IsAlive", i%2 == 0) + record.Attributes().InsertInt("price", int64(i)) + } + + return ld.ResourceLogs().At(0).ScopeLogs().At(0).LogRecords() +} diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp index e05859146ce2..a143462118be 100644 --- a/processor/stream_processor/parser/Sql.interp +++ b/processor/stream_processor/parser/Sql.interp @@ -14,6 +14,7 @@ null null null null +null '=' '>' '<' @@ -54,6 +55,7 @@ K_AND K_OR K_IS K_LIKE +K_NOT_LIKE K_EQUAL K_GREATER K_LESS @@ -84,7 +86,7 @@ selectQuery resultColumns column whereStatement -tumblingWindow +windowTumbling expr compoundExpr comparisonOperator @@ -94,4 +96,4 @@ avg atn: -[4, 1, 37, 111, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 31, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 5, 2, 38, 8, 2, 10, 2, 12, 2, 41, 9, 2, 1, 2, 1, 2, 1, 2, 4, 2, 46, 8, 2, 11, 2, 12, 2, 47, 1, 2, 3, 2, 51, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 57, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 62, 8, 4, 1, 4, 1, 4, 3, 4, 66, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 72, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 85, 8, 6, 1, 6, 1, 6, 1, 6, 5, 6, 90, 8, 6, 10, 6, 12, 6, 93, 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 0, 1, 12, 12, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 0, 5, 1, 0, 11, 12, 1, 0, 22, 23, 2, 0, 13, 20, 25, 26, 1, 0, 34, 36, 1, 0, 29, 32, 110, 0, 24, 1, 0, 0, 0, 2, 27, 1, 0, 0, 0, 4, 50, 1, 0, 0, 0, 6, 52, 1, 0, 0, 0, 8, 65, 1, 0, 0, 0, 10, 67, 1, 0, 0, 0, 12, 84, 1, 0, 0, 0, 14, 94, 1, 0, 0, 0, 16, 98, 1, 0, 0, 0, 18, 100, 1, 0, 0, 0, 20, 102, 1, 0, 0, 0, 22, 105, 1, 0, 0, 0, 24, 25, 3, 2, 1, 0, 25, 26, 5, 0, 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 5, 7, 0, 0, 28, 30, 3, 4, 2, 0, 29, 31, 3, 8, 4, 0, 30, 29, 1, 0, 0, 0, 30, 31, 1, 0, 0, 0, 31, 32, 1, 0, 0, 0, 32, 33, 5, 6, 0, 0, 33, 3, 1, 0, 0, 0, 34, 39, 3, 6, 3, 0, 35, 36, 5, 3, 0, 0, 36, 38, 3, 6, 3, 0, 37, 35, 1, 0, 0, 0, 38, 41, 1, 0, 0, 0, 39, 37, 1, 0, 0, 0, 39, 40, 1, 0, 0, 0, 40, 51, 1, 0, 0, 0, 41, 39, 1, 0, 0, 0, 42, 45, 3, 22, 11, 0, 43, 44, 5, 3, 0, 0, 44, 46, 3, 22, 11, 0, 45, 43, 1, 0, 0, 0, 46, 47, 1, 0, 0, 0, 47, 45, 1, 0, 0, 0, 47, 48, 1, 0, 0, 0, 48, 51, 1, 0, 0, 0, 49, 51, 5, 37, 0, 0, 50, 34, 1, 0, 0, 0, 50, 42, 1, 0, 0, 0, 50, 49, 1, 0, 0, 0, 51, 5, 1, 0, 0, 0, 52, 53, 5, 33, 0, 0, 53, 7, 1, 0, 0, 0, 54, 55, 5, 8, 0, 0, 55, 57, 3, 12, 6, 0, 56, 54, 1, 0, 0, 0, 56, 57, 1, 0, 0, 0, 57, 66, 1, 0, 0, 0, 58, 61, 3, 10, 5, 0, 59, 60, 5, 8, 0, 0, 60, 62, 3, 12, 6, 0, 61, 59, 1, 0, 0, 0, 61, 62, 1, 0, 0, 0, 62, 63, 1, 0, 0, 0, 63, 64, 3, 20, 10, 0, 64, 66, 1, 0, 0, 0, 65, 56, 1, 0, 0, 0, 65, 58, 1, 0, 0, 0, 66, 9, 1, 0, 0, 0, 67, 68, 5, 9, 0, 0, 68, 71, 5, 35, 0, 0, 69, 70, 5, 8, 0, 0, 70, 72, 3, 12, 6, 0, 71, 69, 1, 0, 0, 0, 71, 72, 1, 0, 0, 0, 72, 11, 1, 0, 0, 0, 73, 74, 6, 6, -1, 0, 74, 75, 5, 33, 0, 0, 75, 76, 3, 16, 8, 0, 76, 77, 3, 18, 9, 0, 77, 85, 1, 0, 0, 0, 78, 79, 3, 14, 7, 0, 79, 80, 7, 0, 0, 0, 80, 81, 3, 14, 7, 0, 81, 85, 1, 0, 0, 0, 82, 83, 5, 33, 0, 0, 83, 85, 7, 1, 0, 0, 84, 73, 1, 0, 0, 0, 84, 78, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 85, 91, 1, 0, 0, 0, 86, 87, 10, 1, 0, 0, 87, 88, 7, 0, 0, 0, 88, 90, 3, 12, 6, 2, 89, 86, 1, 0, 0, 0, 90, 93, 1, 0, 0, 0, 91, 89, 1, 0, 0, 0, 91, 92, 1, 0, 0, 0, 92, 13, 1, 0, 0, 0, 93, 91, 1, 0, 0, 0, 94, 95, 5, 4, 0, 0, 95, 96, 3, 12, 6, 0, 96, 97, 5, 5, 0, 0, 97, 15, 1, 0, 0, 0, 98, 99, 7, 2, 0, 0, 99, 17, 1, 0, 0, 0, 100, 101, 7, 3, 0, 0, 101, 19, 1, 0, 0, 0, 102, 103, 5, 10, 0, 0, 103, 104, 3, 6, 3, 0, 104, 21, 1, 0, 0, 0, 105, 106, 7, 4, 0, 0, 106, 107, 5, 4, 0, 0, 107, 108, 3, 6, 3, 0, 108, 109, 5, 5, 0, 0, 109, 23, 1, 0, 0, 0, 10, 30, 39, 47, 50, 56, 61, 65, 71, 84, 91] \ No newline at end of file +[4, 1, 38, 104, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 31, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 40, 8, 1, 1, 1, 3, 1, 43, 8, 1, 1, 1, 1, 1, 3, 1, 47, 8, 1, 1, 2, 1, 2, 1, 2, 5, 2, 52, 8, 2, 10, 2, 12, 2, 55, 9, 2, 1, 2, 1, 2, 3, 2, 59, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 78, 8, 6, 1, 6, 1, 6, 1, 6, 5, 6, 83, 8, 6, 10, 6, 12, 6, 86, 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 0, 1, 12, 12, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 0, 4, 1, 0, 11, 12, 2, 0, 13, 21, 26, 27, 1, 0, 35, 37, 1, 0, 30, 33, 100, 0, 24, 1, 0, 0, 0, 2, 46, 1, 0, 0, 0, 4, 58, 1, 0, 0, 0, 6, 60, 1, 0, 0, 0, 8, 62, 1, 0, 0, 0, 10, 65, 1, 0, 0, 0, 12, 77, 1, 0, 0, 0, 14, 87, 1, 0, 0, 0, 16, 91, 1, 0, 0, 0, 18, 93, 1, 0, 0, 0, 20, 95, 1, 0, 0, 0, 22, 98, 1, 0, 0, 0, 24, 25, 3, 2, 1, 0, 25, 26, 5, 0, 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 5, 7, 0, 0, 28, 30, 3, 4, 2, 0, 29, 31, 3, 8, 4, 0, 30, 29, 1, 0, 0, 0, 30, 31, 1, 0, 0, 0, 31, 32, 1, 0, 0, 0, 32, 33, 5, 6, 0, 0, 33, 47, 1, 0, 0, 0, 34, 35, 5, 7, 0, 0, 35, 36, 3, 4, 2, 0, 36, 37, 5, 9, 0, 0, 37, 39, 5, 36, 0, 0, 38, 40, 3, 8, 4, 0, 39, 38, 1, 0, 0, 0, 39, 40, 1, 0, 0, 0, 40, 42, 1, 0, 0, 0, 41, 43, 3, 20, 10, 0, 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 45, 5, 6, 0, 0, 45, 47, 1, 0, 0, 0, 46, 27, 1, 0, 0, 0, 46, 34, 1, 0, 0, 0, 47, 3, 1, 0, 0, 0, 48, 53, 3, 6, 3, 0, 49, 50, 5, 3, 0, 0, 50, 52, 3, 6, 3, 0, 51, 49, 1, 0, 0, 0, 52, 55, 1, 0, 0, 0, 53, 51, 1, 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 59, 1, 0, 0, 0, 55, 53, 1, 0, 0, 0, 56, 59, 3, 22, 11, 0, 57, 59, 5, 38, 0, 0, 58, 48, 1, 0, 0, 0, 58, 56, 1, 0, 0, 0, 58, 57, 1, 0, 0, 0, 59, 5, 1, 0, 0, 0, 60, 61, 5, 34, 0, 0, 61, 7, 1, 0, 0, 0, 62, 63, 5, 8, 0, 0, 63, 64, 3, 12, 6, 0, 64, 9, 1, 0, 0, 0, 65, 66, 5, 9, 0, 0, 66, 67, 5, 36, 0, 0, 67, 11, 1, 0, 0, 0, 68, 69, 6, 6, -1, 0, 69, 70, 5, 34, 0, 0, 70, 71, 3, 16, 8, 0, 71, 72, 3, 18, 9, 0, 72, 78, 1, 0, 0, 0, 73, 74, 3, 14, 7, 0, 74, 75, 7, 0, 0, 0, 75, 76, 3, 14, 7, 0, 76, 78, 1, 0, 0, 0, 77, 68, 1, 0, 0, 0, 77, 73, 1, 0, 0, 0, 78, 84, 1, 0, 0, 0, 79, 80, 10, 1, 0, 0, 80, 81, 7, 0, 0, 0, 81, 83, 3, 12, 6, 2, 82, 79, 1, 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 13, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 88, 5, 4, 0, 0, 88, 89, 3, 12, 6, 0, 89, 90, 5, 5, 0, 0, 90, 15, 1, 0, 0, 0, 91, 92, 7, 1, 0, 0, 92, 17, 1, 0, 0, 0, 93, 94, 7, 2, 0, 0, 94, 19, 1, 0, 0, 0, 95, 96, 5, 10, 0, 0, 96, 97, 3, 6, 3, 0, 97, 21, 1, 0, 0, 0, 98, 99, 7, 3, 0, 0, 99, 100, 5, 4, 0, 0, 100, 101, 3, 6, 3, 0, 101, 102, 5, 5, 0, 0, 102, 23, 1, 0, 0, 0, 8, 30, 39, 42, 46, 53, 58, 77, 84] \ No newline at end of file diff --git a/processor/stream_processor/parser/Sql.tokens b/processor/stream_processor/parser/Sql.tokens index 23c7b10dbb8a..a1cc5f4ceba9 100644 --- a/processor/stream_processor/parser/Sql.tokens +++ b/processor/stream_processor/parser/Sql.tokens @@ -12,34 +12,35 @@ K_AND=11 K_OR=12 K_IS=13 K_LIKE=14 -K_EQUAL=15 -K_GREATER=16 -K_LESS=17 -K_LESS_EQUAL=18 -K_GREATER_EQUAL=19 -K_NOT_EQUAL=20 -K_NULL=21 -K_IS_NULL=22 -K_IS_NOT_NULL=23 -K_NOT=24 -K_NOT_IN=25 -K_IN=26 -K_TRUE=27 -K_FALSE=28 -K_COUNT=29 -K_MIN=30 -K_MAX=31 -K_AVG=32 -IDENTIFIER=33 -BOOLEAN_LITERAL=34 -NUMERIC_LITERAL=35 -STRING_LITERAL=36 -STAR=37 +K_NOT_LIKE=15 +K_EQUAL=16 +K_GREATER=17 +K_LESS=18 +K_LESS_EQUAL=19 +K_GREATER_EQUAL=20 +K_NOT_EQUAL=21 +K_NULL=22 +K_IS_NULL=23 +K_IS_NOT_NULL=24 +K_NOT=25 +K_NOT_IN=26 +K_IN=27 +K_TRUE=28 +K_FALSE=29 +K_COUNT=30 +K_MIN=31 +K_MAX=32 +K_AVG=33 +IDENTIFIER=34 +BOOLEAN_LITERAL=35 +NUMERIC_LITERAL=36 +STRING_LITERAL=37 +STAR=38 ','=3 '('=4 ')'=5 ';'=6 -'='=15 -'>'=16 -'<'=17 -'*'=37 +'='=16 +'>'=17 +'<'=18 +'*'=38 diff --git a/processor/stream_processor/parser/SqlLexer.interp b/processor/stream_processor/parser/SqlLexer.interp index 3dc2ef55c28e..852d9c2ba7a4 100644 --- a/processor/stream_processor/parser/SqlLexer.interp +++ b/processor/stream_processor/parser/SqlLexer.interp @@ -14,6 +14,7 @@ null null null null +null '=' '>' '<' @@ -54,6 +55,7 @@ K_AND K_OR K_IS K_LIKE +K_NOT_LIKE K_EQUAL K_GREATER K_LESS @@ -93,6 +95,7 @@ K_AND K_OR K_IS K_LIKE +K_NOT_LIKE K_EQUAL K_GREATER K_LESS @@ -152,4 +155,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 37, 424, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 135, 8, 1, 11, 1, 12, 1, 136, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 277, 8, 32, 10, 32, 12, 32, 280, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 287, 8, 32, 10, 32, 12, 32, 290, 9, 32, 1, 32, 1, 32, 1, 32, 5, 32, 295, 8, 32, 10, 32, 12, 32, 298, 9, 32, 1, 32, 1, 32, 1, 32, 5, 32, 303, 8, 32, 10, 32, 12, 32, 306, 9, 32, 3, 32, 308, 8, 32, 1, 33, 1, 33, 3, 33, 312, 8, 33, 1, 34, 4, 34, 315, 8, 34, 11, 34, 12, 34, 316, 1, 34, 1, 34, 5, 34, 321, 8, 34, 10, 34, 12, 34, 324, 9, 34, 3, 34, 326, 8, 34, 1, 34, 1, 34, 3, 34, 330, 8, 34, 1, 34, 4, 34, 333, 8, 34, 11, 34, 12, 34, 334, 3, 34, 337, 8, 34, 1, 34, 1, 34, 4, 34, 341, 8, 34, 11, 34, 12, 34, 342, 1, 34, 1, 34, 3, 34, 347, 8, 34, 1, 34, 4, 34, 350, 8, 34, 11, 34, 12, 34, 351, 3, 34, 354, 8, 34, 3, 34, 356, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 362, 8, 35, 10, 35, 12, 35, 365, 9, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 0, 0, 64, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 420, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 1, 129, 1, 0, 0, 0, 3, 134, 1, 0, 0, 0, 5, 140, 1, 0, 0, 0, 7, 142, 1, 0, 0, 0, 9, 144, 1, 0, 0, 0, 11, 146, 1, 0, 0, 0, 13, 148, 1, 0, 0, 0, 15, 155, 1, 0, 0, 0, 17, 161, 1, 0, 0, 0, 19, 177, 1, 0, 0, 0, 21, 186, 1, 0, 0, 0, 23, 190, 1, 0, 0, 0, 25, 193, 1, 0, 0, 0, 27, 196, 1, 0, 0, 0, 29, 201, 1, 0, 0, 0, 31, 203, 1, 0, 0, 0, 33, 205, 1, 0, 0, 0, 35, 207, 1, 0, 0, 0, 37, 210, 1, 0, 0, 0, 39, 213, 1, 0, 0, 0, 41, 216, 1, 0, 0, 0, 43, 221, 1, 0, 0, 0, 45, 225, 1, 0, 0, 0, 47, 231, 1, 0, 0, 0, 49, 235, 1, 0, 0, 0, 51, 240, 1, 0, 0, 0, 53, 243, 1, 0, 0, 0, 55, 248, 1, 0, 0, 0, 57, 254, 1, 0, 0, 0, 59, 260, 1, 0, 0, 0, 61, 264, 1, 0, 0, 0, 63, 268, 1, 0, 0, 0, 65, 307, 1, 0, 0, 0, 67, 311, 1, 0, 0, 0, 69, 355, 1, 0, 0, 0, 71, 357, 1, 0, 0, 0, 73, 368, 1, 0, 0, 0, 75, 370, 1, 0, 0, 0, 77, 372, 1, 0, 0, 0, 79, 374, 1, 0, 0, 0, 81, 376, 1, 0, 0, 0, 83, 378, 1, 0, 0, 0, 85, 380, 1, 0, 0, 0, 87, 382, 1, 0, 0, 0, 89, 384, 1, 0, 0, 0, 91, 386, 1, 0, 0, 0, 93, 388, 1, 0, 0, 0, 95, 390, 1, 0, 0, 0, 97, 392, 1, 0, 0, 0, 99, 394, 1, 0, 0, 0, 101, 396, 1, 0, 0, 0, 103, 398, 1, 0, 0, 0, 105, 400, 1, 0, 0, 0, 107, 402, 1, 0, 0, 0, 109, 404, 1, 0, 0, 0, 111, 406, 1, 0, 0, 0, 113, 408, 1, 0, 0, 0, 115, 410, 1, 0, 0, 0, 117, 412, 1, 0, 0, 0, 119, 414, 1, 0, 0, 0, 121, 416, 1, 0, 0, 0, 123, 418, 1, 0, 0, 0, 125, 420, 1, 0, 0, 0, 127, 422, 1, 0, 0, 0, 129, 130, 7, 0, 0, 0, 130, 131, 1, 0, 0, 0, 131, 132, 6, 0, 0, 0, 132, 2, 1, 0, 0, 0, 133, 135, 7, 1, 0, 0, 134, 133, 1, 0, 0, 0, 135, 136, 1, 0, 0, 0, 136, 134, 1, 0, 0, 0, 136, 137, 1, 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, 139, 6, 1, 1, 0, 139, 4, 1, 0, 0, 0, 140, 141, 5, 44, 0, 0, 141, 6, 1, 0, 0, 0, 142, 143, 5, 40, 0, 0, 143, 8, 1, 0, 0, 0, 144, 145, 5, 41, 0, 0, 145, 10, 1, 0, 0, 0, 146, 147, 5, 59, 0, 0, 147, 12, 1, 0, 0, 0, 148, 149, 3, 113, 56, 0, 149, 150, 3, 85, 42, 0, 150, 151, 3, 99, 49, 0, 151, 152, 3, 85, 42, 0, 152, 153, 3, 81, 40, 0, 153, 154, 3, 115, 57, 0, 154, 14, 1, 0, 0, 0, 155, 156, 3, 121, 60, 0, 156, 157, 3, 91, 45, 0, 157, 158, 3, 85, 42, 0, 158, 159, 3, 111, 55, 0, 159, 160, 3, 85, 42, 0, 160, 16, 1, 0, 0, 0, 161, 162, 3, 121, 60, 0, 162, 163, 3, 93, 46, 0, 163, 164, 3, 103, 51, 0, 164, 165, 3, 83, 41, 0, 165, 166, 3, 105, 52, 0, 166, 167, 3, 121, 60, 0, 167, 168, 3, 1, 0, 0, 168, 169, 3, 115, 57, 0, 169, 170, 3, 117, 58, 0, 170, 171, 3, 101, 50, 0, 171, 172, 3, 79, 39, 0, 172, 173, 3, 99, 49, 0, 173, 174, 3, 93, 46, 0, 174, 175, 3, 103, 51, 0, 175, 176, 3, 89, 44, 0, 176, 18, 1, 0, 0, 0, 177, 178, 3, 89, 44, 0, 178, 179, 3, 111, 55, 0, 179, 180, 3, 105, 52, 0, 180, 181, 3, 117, 58, 0, 181, 182, 3, 107, 53, 0, 182, 183, 3, 1, 0, 0, 183, 184, 3, 79, 39, 0, 184, 185, 3, 125, 62, 0, 185, 20, 1, 0, 0, 0, 186, 187, 3, 77, 38, 0, 187, 188, 3, 103, 51, 0, 188, 189, 3, 83, 41, 0, 189, 22, 1, 0, 0, 0, 190, 191, 3, 105, 52, 0, 191, 192, 3, 111, 55, 0, 192, 24, 1, 0, 0, 0, 193, 194, 3, 93, 46, 0, 194, 195, 3, 113, 56, 0, 195, 26, 1, 0, 0, 0, 196, 197, 3, 99, 49, 0, 197, 198, 3, 93, 46, 0, 198, 199, 3, 97, 48, 0, 199, 200, 3, 85, 42, 0, 200, 28, 1, 0, 0, 0, 201, 202, 5, 61, 0, 0, 202, 30, 1, 0, 0, 0, 203, 204, 5, 62, 0, 0, 204, 32, 1, 0, 0, 0, 205, 206, 5, 60, 0, 0, 206, 34, 1, 0, 0, 0, 207, 208, 3, 33, 16, 0, 208, 209, 3, 29, 14, 0, 209, 36, 1, 0, 0, 0, 210, 211, 3, 31, 15, 0, 211, 212, 3, 29, 14, 0, 212, 38, 1, 0, 0, 0, 213, 214, 5, 33, 0, 0, 214, 215, 3, 29, 14, 0, 215, 40, 1, 0, 0, 0, 216, 217, 3, 103, 51, 0, 217, 218, 3, 117, 58, 0, 218, 219, 3, 99, 49, 0, 219, 220, 3, 99, 49, 0, 220, 42, 1, 0, 0, 0, 221, 222, 3, 25, 12, 0, 222, 223, 3, 1, 0, 0, 223, 224, 3, 41, 20, 0, 224, 44, 1, 0, 0, 0, 225, 226, 3, 25, 12, 0, 226, 227, 3, 1, 0, 0, 227, 228, 3, 47, 23, 0, 228, 229, 3, 1, 0, 0, 229, 230, 3, 41, 20, 0, 230, 46, 1, 0, 0, 0, 231, 232, 3, 103, 51, 0, 232, 233, 3, 105, 52, 0, 233, 234, 3, 115, 57, 0, 234, 48, 1, 0, 0, 0, 235, 236, 3, 47, 23, 0, 236, 237, 3, 1, 0, 0, 237, 238, 3, 93, 46, 0, 238, 239, 3, 103, 51, 0, 239, 50, 1, 0, 0, 0, 240, 241, 3, 93, 46, 0, 241, 242, 3, 103, 51, 0, 242, 52, 1, 0, 0, 0, 243, 244, 3, 115, 57, 0, 244, 245, 3, 111, 55, 0, 245, 246, 3, 117, 58, 0, 246, 247, 3, 85, 42, 0, 247, 54, 1, 0, 0, 0, 248, 249, 3, 87, 43, 0, 249, 250, 3, 77, 38, 0, 250, 251, 3, 99, 49, 0, 251, 252, 3, 113, 56, 0, 252, 253, 3, 85, 42, 0, 253, 56, 1, 0, 0, 0, 254, 255, 3, 81, 40, 0, 255, 256, 3, 105, 52, 0, 256, 257, 3, 117, 58, 0, 257, 258, 3, 103, 51, 0, 258, 259, 3, 115, 57, 0, 259, 58, 1, 0, 0, 0, 260, 261, 3, 101, 50, 0, 261, 262, 3, 93, 46, 0, 262, 263, 3, 103, 51, 0, 263, 60, 1, 0, 0, 0, 264, 265, 3, 101, 50, 0, 265, 266, 3, 77, 38, 0, 266, 267, 3, 123, 61, 0, 267, 62, 1, 0, 0, 0, 268, 269, 3, 77, 38, 0, 269, 270, 3, 119, 59, 0, 270, 271, 3, 89, 44, 0, 271, 64, 1, 0, 0, 0, 272, 278, 5, 34, 0, 0, 273, 277, 8, 2, 0, 0, 274, 275, 5, 34, 0, 0, 275, 277, 5, 34, 0, 0, 276, 273, 1, 0, 0, 0, 276, 274, 1, 0, 0, 0, 277, 280, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 281, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 308, 5, 34, 0, 0, 282, 288, 5, 96, 0, 0, 283, 287, 8, 3, 0, 0, 284, 285, 5, 96, 0, 0, 285, 287, 5, 96, 0, 0, 286, 283, 1, 0, 0, 0, 286, 284, 1, 0, 0, 0, 287, 290, 1, 0, 0, 0, 288, 286, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0, 289, 291, 1, 0, 0, 0, 290, 288, 1, 0, 0, 0, 291, 308, 5, 96, 0, 0, 292, 296, 5, 91, 0, 0, 293, 295, 8, 4, 0, 0, 294, 293, 1, 0, 0, 0, 295, 298, 1, 0, 0, 0, 296, 294, 1, 0, 0, 0, 296, 297, 1, 0, 0, 0, 297, 299, 1, 0, 0, 0, 298, 296, 1, 0, 0, 0, 299, 308, 5, 93, 0, 0, 300, 304, 7, 5, 0, 0, 301, 303, 7, 6, 0, 0, 302, 301, 1, 0, 0, 0, 303, 306, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 308, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 307, 272, 1, 0, 0, 0, 307, 282, 1, 0, 0, 0, 307, 292, 1, 0, 0, 0, 307, 300, 1, 0, 0, 0, 308, 66, 1, 0, 0, 0, 309, 312, 3, 53, 26, 0, 310, 312, 3, 55, 27, 0, 311, 309, 1, 0, 0, 0, 311, 310, 1, 0, 0, 0, 312, 68, 1, 0, 0, 0, 313, 315, 3, 75, 37, 0, 314, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 314, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 325, 1, 0, 0, 0, 318, 322, 5, 46, 0, 0, 319, 321, 3, 75, 37, 0, 320, 319, 1, 0, 0, 0, 321, 324, 1, 0, 0, 0, 322, 320, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 323, 326, 1, 0, 0, 0, 324, 322, 1, 0, 0, 0, 325, 318, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, 326, 336, 1, 0, 0, 0, 327, 329, 3, 85, 42, 0, 328, 330, 7, 7, 0, 0, 329, 328, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 332, 1, 0, 0, 0, 331, 333, 3, 75, 37, 0, 332, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 334, 335, 1, 0, 0, 0, 335, 337, 1, 0, 0, 0, 336, 327, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 356, 1, 0, 0, 0, 338, 340, 5, 46, 0, 0, 339, 341, 3, 75, 37, 0, 340, 339, 1, 0, 0, 0, 341, 342, 1, 0, 0, 0, 342, 340, 1, 0, 0, 0, 342, 343, 1, 0, 0, 0, 343, 353, 1, 0, 0, 0, 344, 346, 3, 85, 42, 0, 345, 347, 7, 7, 0, 0, 346, 345, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347, 349, 1, 0, 0, 0, 348, 350, 3, 75, 37, 0, 349, 348, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 344, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 356, 1, 0, 0, 0, 355, 314, 1, 0, 0, 0, 355, 338, 1, 0, 0, 0, 356, 70, 1, 0, 0, 0, 357, 363, 5, 39, 0, 0, 358, 362, 8, 8, 0, 0, 359, 360, 5, 39, 0, 0, 360, 362, 5, 39, 0, 0, 361, 358, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 362, 365, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 366, 1, 0, 0, 0, 365, 363, 1, 0, 0, 0, 366, 367, 5, 39, 0, 0, 367, 72, 1, 0, 0, 0, 368, 369, 5, 42, 0, 0, 369, 74, 1, 0, 0, 0, 370, 371, 7, 9, 0, 0, 371, 76, 1, 0, 0, 0, 372, 373, 7, 10, 0, 0, 373, 78, 1, 0, 0, 0, 374, 375, 7, 11, 0, 0, 375, 80, 1, 0, 0, 0, 376, 377, 7, 12, 0, 0, 377, 82, 1, 0, 0, 0, 378, 379, 7, 13, 0, 0, 379, 84, 1, 0, 0, 0, 380, 381, 7, 14, 0, 0, 381, 86, 1, 0, 0, 0, 382, 383, 7, 15, 0, 0, 383, 88, 1, 0, 0, 0, 384, 385, 7, 16, 0, 0, 385, 90, 1, 0, 0, 0, 386, 387, 7, 17, 0, 0, 387, 92, 1, 0, 0, 0, 388, 389, 7, 18, 0, 0, 389, 94, 1, 0, 0, 0, 390, 391, 7, 19, 0, 0, 391, 96, 1, 0, 0, 0, 392, 393, 7, 20, 0, 0, 393, 98, 1, 0, 0, 0, 394, 395, 7, 21, 0, 0, 395, 100, 1, 0, 0, 0, 396, 397, 7, 22, 0, 0, 397, 102, 1, 0, 0, 0, 398, 399, 7, 23, 0, 0, 399, 104, 1, 0, 0, 0, 400, 401, 7, 24, 0, 0, 401, 106, 1, 0, 0, 0, 402, 403, 7, 25, 0, 0, 403, 108, 1, 0, 0, 0, 404, 405, 7, 26, 0, 0, 405, 110, 1, 0, 0, 0, 406, 407, 7, 27, 0, 0, 407, 112, 1, 0, 0, 0, 408, 409, 7, 28, 0, 0, 409, 114, 1, 0, 0, 0, 410, 411, 7, 29, 0, 0, 411, 116, 1, 0, 0, 0, 412, 413, 7, 30, 0, 0, 413, 118, 1, 0, 0, 0, 414, 415, 7, 31, 0, 0, 415, 120, 1, 0, 0, 0, 416, 417, 7, 32, 0, 0, 417, 122, 1, 0, 0, 0, 418, 419, 7, 33, 0, 0, 419, 124, 1, 0, 0, 0, 420, 421, 7, 34, 0, 0, 421, 126, 1, 0, 0, 0, 422, 423, 7, 35, 0, 0, 423, 128, 1, 0, 0, 0, 23, 0, 136, 276, 278, 286, 288, 296, 304, 307, 311, 316, 322, 325, 329, 334, 336, 342, 346, 351, 353, 355, 361, 363, 2, 0, 1, 0, 6, 0, 0] \ No newline at end of file +[4, 0, 38, 435, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 137, 8, 1, 11, 1, 12, 1, 138, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 288, 8, 33, 10, 33, 12, 33, 291, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 298, 8, 33, 10, 33, 12, 33, 301, 9, 33, 1, 33, 1, 33, 1, 33, 5, 33, 306, 8, 33, 10, 33, 12, 33, 309, 9, 33, 1, 33, 1, 33, 1, 33, 5, 33, 314, 8, 33, 10, 33, 12, 33, 317, 9, 33, 3, 33, 319, 8, 33, 1, 34, 1, 34, 3, 34, 323, 8, 34, 1, 35, 4, 35, 326, 8, 35, 11, 35, 12, 35, 327, 1, 35, 1, 35, 5, 35, 332, 8, 35, 10, 35, 12, 35, 335, 9, 35, 3, 35, 337, 8, 35, 1, 35, 1, 35, 3, 35, 341, 8, 35, 1, 35, 4, 35, 344, 8, 35, 11, 35, 12, 35, 345, 3, 35, 348, 8, 35, 1, 35, 1, 35, 4, 35, 352, 8, 35, 11, 35, 12, 35, 353, 1, 35, 1, 35, 3, 35, 358, 8, 35, 1, 35, 4, 35, 361, 8, 35, 11, 35, 12, 35, 362, 3, 35, 365, 8, 35, 3, 35, 367, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 373, 8, 36, 10, 36, 12, 36, 376, 9, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 0, 0, 65, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 431, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 1, 131, 1, 0, 0, 0, 3, 136, 1, 0, 0, 0, 5, 142, 1, 0, 0, 0, 7, 144, 1, 0, 0, 0, 9, 146, 1, 0, 0, 0, 11, 148, 1, 0, 0, 0, 13, 150, 1, 0, 0, 0, 15, 157, 1, 0, 0, 0, 17, 163, 1, 0, 0, 0, 19, 179, 1, 0, 0, 0, 21, 188, 1, 0, 0, 0, 23, 192, 1, 0, 0, 0, 25, 195, 1, 0, 0, 0, 27, 198, 1, 0, 0, 0, 29, 203, 1, 0, 0, 0, 31, 212, 1, 0, 0, 0, 33, 214, 1, 0, 0, 0, 35, 216, 1, 0, 0, 0, 37, 218, 1, 0, 0, 0, 39, 221, 1, 0, 0, 0, 41, 224, 1, 0, 0, 0, 43, 227, 1, 0, 0, 0, 45, 232, 1, 0, 0, 0, 47, 236, 1, 0, 0, 0, 49, 242, 1, 0, 0, 0, 51, 246, 1, 0, 0, 0, 53, 251, 1, 0, 0, 0, 55, 254, 1, 0, 0, 0, 57, 259, 1, 0, 0, 0, 59, 265, 1, 0, 0, 0, 61, 271, 1, 0, 0, 0, 63, 275, 1, 0, 0, 0, 65, 279, 1, 0, 0, 0, 67, 318, 1, 0, 0, 0, 69, 322, 1, 0, 0, 0, 71, 366, 1, 0, 0, 0, 73, 368, 1, 0, 0, 0, 75, 379, 1, 0, 0, 0, 77, 381, 1, 0, 0, 0, 79, 383, 1, 0, 0, 0, 81, 385, 1, 0, 0, 0, 83, 387, 1, 0, 0, 0, 85, 389, 1, 0, 0, 0, 87, 391, 1, 0, 0, 0, 89, 393, 1, 0, 0, 0, 91, 395, 1, 0, 0, 0, 93, 397, 1, 0, 0, 0, 95, 399, 1, 0, 0, 0, 97, 401, 1, 0, 0, 0, 99, 403, 1, 0, 0, 0, 101, 405, 1, 0, 0, 0, 103, 407, 1, 0, 0, 0, 105, 409, 1, 0, 0, 0, 107, 411, 1, 0, 0, 0, 109, 413, 1, 0, 0, 0, 111, 415, 1, 0, 0, 0, 113, 417, 1, 0, 0, 0, 115, 419, 1, 0, 0, 0, 117, 421, 1, 0, 0, 0, 119, 423, 1, 0, 0, 0, 121, 425, 1, 0, 0, 0, 123, 427, 1, 0, 0, 0, 125, 429, 1, 0, 0, 0, 127, 431, 1, 0, 0, 0, 129, 433, 1, 0, 0, 0, 131, 132, 7, 0, 0, 0, 132, 133, 1, 0, 0, 0, 133, 134, 6, 0, 0, 0, 134, 2, 1, 0, 0, 0, 135, 137, 7, 1, 0, 0, 136, 135, 1, 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, 136, 1, 0, 0, 0, 138, 139, 1, 0, 0, 0, 139, 140, 1, 0, 0, 0, 140, 141, 6, 1, 1, 0, 141, 4, 1, 0, 0, 0, 142, 143, 5, 44, 0, 0, 143, 6, 1, 0, 0, 0, 144, 145, 5, 40, 0, 0, 145, 8, 1, 0, 0, 0, 146, 147, 5, 41, 0, 0, 147, 10, 1, 0, 0, 0, 148, 149, 5, 59, 0, 0, 149, 12, 1, 0, 0, 0, 150, 151, 3, 115, 57, 0, 151, 152, 3, 87, 43, 0, 152, 153, 3, 101, 50, 0, 153, 154, 3, 87, 43, 0, 154, 155, 3, 83, 41, 0, 155, 156, 3, 117, 58, 0, 156, 14, 1, 0, 0, 0, 157, 158, 3, 123, 61, 0, 158, 159, 3, 93, 46, 0, 159, 160, 3, 87, 43, 0, 160, 161, 3, 113, 56, 0, 161, 162, 3, 87, 43, 0, 162, 16, 1, 0, 0, 0, 163, 164, 3, 123, 61, 0, 164, 165, 3, 95, 47, 0, 165, 166, 3, 105, 52, 0, 166, 167, 3, 85, 42, 0, 167, 168, 3, 107, 53, 0, 168, 169, 3, 123, 61, 0, 169, 170, 3, 1, 0, 0, 170, 171, 3, 117, 58, 0, 171, 172, 3, 119, 59, 0, 172, 173, 3, 103, 51, 0, 173, 174, 3, 81, 40, 0, 174, 175, 3, 101, 50, 0, 175, 176, 3, 95, 47, 0, 176, 177, 3, 105, 52, 0, 177, 178, 3, 91, 45, 0, 178, 18, 1, 0, 0, 0, 179, 180, 3, 91, 45, 0, 180, 181, 3, 113, 56, 0, 181, 182, 3, 107, 53, 0, 182, 183, 3, 119, 59, 0, 183, 184, 3, 109, 54, 0, 184, 185, 3, 1, 0, 0, 185, 186, 3, 81, 40, 0, 186, 187, 3, 127, 63, 0, 187, 20, 1, 0, 0, 0, 188, 189, 3, 79, 39, 0, 189, 190, 3, 105, 52, 0, 190, 191, 3, 85, 42, 0, 191, 22, 1, 0, 0, 0, 192, 193, 3, 107, 53, 0, 193, 194, 3, 113, 56, 0, 194, 24, 1, 0, 0, 0, 195, 196, 3, 95, 47, 0, 196, 197, 3, 115, 57, 0, 197, 26, 1, 0, 0, 0, 198, 199, 3, 101, 50, 0, 199, 200, 3, 95, 47, 0, 200, 201, 3, 99, 49, 0, 201, 202, 3, 87, 43, 0, 202, 28, 1, 0, 0, 0, 203, 204, 3, 105, 52, 0, 204, 205, 3, 107, 53, 0, 205, 206, 3, 117, 58, 0, 206, 207, 3, 1, 0, 0, 207, 208, 3, 101, 50, 0, 208, 209, 3, 95, 47, 0, 209, 210, 3, 99, 49, 0, 210, 211, 3, 87, 43, 0, 211, 30, 1, 0, 0, 0, 212, 213, 5, 61, 0, 0, 213, 32, 1, 0, 0, 0, 214, 215, 5, 62, 0, 0, 215, 34, 1, 0, 0, 0, 216, 217, 5, 60, 0, 0, 217, 36, 1, 0, 0, 0, 218, 219, 3, 35, 17, 0, 219, 220, 3, 31, 15, 0, 220, 38, 1, 0, 0, 0, 221, 222, 3, 33, 16, 0, 222, 223, 3, 31, 15, 0, 223, 40, 1, 0, 0, 0, 224, 225, 5, 33, 0, 0, 225, 226, 3, 31, 15, 0, 226, 42, 1, 0, 0, 0, 227, 228, 3, 105, 52, 0, 228, 229, 3, 119, 59, 0, 229, 230, 3, 101, 50, 0, 230, 231, 3, 101, 50, 0, 231, 44, 1, 0, 0, 0, 232, 233, 3, 25, 12, 0, 233, 234, 3, 1, 0, 0, 234, 235, 3, 43, 21, 0, 235, 46, 1, 0, 0, 0, 236, 237, 3, 25, 12, 0, 237, 238, 3, 1, 0, 0, 238, 239, 3, 49, 24, 0, 239, 240, 3, 1, 0, 0, 240, 241, 3, 43, 21, 0, 241, 48, 1, 0, 0, 0, 242, 243, 3, 105, 52, 0, 243, 244, 3, 107, 53, 0, 244, 245, 3, 117, 58, 0, 245, 50, 1, 0, 0, 0, 246, 247, 3, 49, 24, 0, 247, 248, 3, 1, 0, 0, 248, 249, 3, 95, 47, 0, 249, 250, 3, 105, 52, 0, 250, 52, 1, 0, 0, 0, 251, 252, 3, 95, 47, 0, 252, 253, 3, 105, 52, 0, 253, 54, 1, 0, 0, 0, 254, 255, 3, 117, 58, 0, 255, 256, 3, 113, 56, 0, 256, 257, 3, 119, 59, 0, 257, 258, 3, 87, 43, 0, 258, 56, 1, 0, 0, 0, 259, 260, 3, 89, 44, 0, 260, 261, 3, 79, 39, 0, 261, 262, 3, 101, 50, 0, 262, 263, 3, 115, 57, 0, 263, 264, 3, 87, 43, 0, 264, 58, 1, 0, 0, 0, 265, 266, 3, 83, 41, 0, 266, 267, 3, 107, 53, 0, 267, 268, 3, 119, 59, 0, 268, 269, 3, 105, 52, 0, 269, 270, 3, 117, 58, 0, 270, 60, 1, 0, 0, 0, 271, 272, 3, 103, 51, 0, 272, 273, 3, 95, 47, 0, 273, 274, 3, 105, 52, 0, 274, 62, 1, 0, 0, 0, 275, 276, 3, 103, 51, 0, 276, 277, 3, 79, 39, 0, 277, 278, 3, 125, 62, 0, 278, 64, 1, 0, 0, 0, 279, 280, 3, 79, 39, 0, 280, 281, 3, 121, 60, 0, 281, 282, 3, 91, 45, 0, 282, 66, 1, 0, 0, 0, 283, 289, 5, 34, 0, 0, 284, 288, 8, 2, 0, 0, 285, 286, 5, 34, 0, 0, 286, 288, 5, 34, 0, 0, 287, 284, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 288, 291, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 292, 1, 0, 0, 0, 291, 289, 1, 0, 0, 0, 292, 319, 5, 34, 0, 0, 293, 299, 5, 96, 0, 0, 294, 298, 8, 3, 0, 0, 295, 296, 5, 96, 0, 0, 296, 298, 5, 96, 0, 0, 297, 294, 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, 298, 301, 1, 0, 0, 0, 299, 297, 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 302, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 302, 319, 5, 96, 0, 0, 303, 307, 5, 91, 0, 0, 304, 306, 8, 4, 0, 0, 305, 304, 1, 0, 0, 0, 306, 309, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 308, 310, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 310, 319, 5, 93, 0, 0, 311, 315, 7, 5, 0, 0, 312, 314, 7, 6, 0, 0, 313, 312, 1, 0, 0, 0, 314, 317, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 319, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 318, 283, 1, 0, 0, 0, 318, 293, 1, 0, 0, 0, 318, 303, 1, 0, 0, 0, 318, 311, 1, 0, 0, 0, 319, 68, 1, 0, 0, 0, 320, 323, 3, 55, 27, 0, 321, 323, 3, 57, 28, 0, 322, 320, 1, 0, 0, 0, 322, 321, 1, 0, 0, 0, 323, 70, 1, 0, 0, 0, 324, 326, 3, 77, 38, 0, 325, 324, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 336, 1, 0, 0, 0, 329, 333, 5, 46, 0, 0, 330, 332, 3, 77, 38, 0, 331, 330, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 337, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 329, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 347, 1, 0, 0, 0, 338, 340, 3, 87, 43, 0, 339, 341, 7, 7, 0, 0, 340, 339, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 343, 1, 0, 0, 0, 342, 344, 3, 77, 38, 0, 343, 342, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 348, 1, 0, 0, 0, 347, 338, 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 367, 1, 0, 0, 0, 349, 351, 5, 46, 0, 0, 350, 352, 3, 77, 38, 0, 351, 350, 1, 0, 0, 0, 352, 353, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 364, 1, 0, 0, 0, 355, 357, 3, 87, 43, 0, 356, 358, 7, 7, 0, 0, 357, 356, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 360, 1, 0, 0, 0, 359, 361, 3, 77, 38, 0, 360, 359, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 365, 1, 0, 0, 0, 364, 355, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 367, 1, 0, 0, 0, 366, 325, 1, 0, 0, 0, 366, 349, 1, 0, 0, 0, 367, 72, 1, 0, 0, 0, 368, 374, 5, 39, 0, 0, 369, 373, 8, 8, 0, 0, 370, 371, 5, 39, 0, 0, 371, 373, 5, 39, 0, 0, 372, 369, 1, 0, 0, 0, 372, 370, 1, 0, 0, 0, 373, 376, 1, 0, 0, 0, 374, 372, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 377, 1, 0, 0, 0, 376, 374, 1, 0, 0, 0, 377, 378, 5, 39, 0, 0, 378, 74, 1, 0, 0, 0, 379, 380, 5, 42, 0, 0, 380, 76, 1, 0, 0, 0, 381, 382, 7, 9, 0, 0, 382, 78, 1, 0, 0, 0, 383, 384, 7, 10, 0, 0, 384, 80, 1, 0, 0, 0, 385, 386, 7, 11, 0, 0, 386, 82, 1, 0, 0, 0, 387, 388, 7, 12, 0, 0, 388, 84, 1, 0, 0, 0, 389, 390, 7, 13, 0, 0, 390, 86, 1, 0, 0, 0, 391, 392, 7, 14, 0, 0, 392, 88, 1, 0, 0, 0, 393, 394, 7, 15, 0, 0, 394, 90, 1, 0, 0, 0, 395, 396, 7, 16, 0, 0, 396, 92, 1, 0, 0, 0, 397, 398, 7, 17, 0, 0, 398, 94, 1, 0, 0, 0, 399, 400, 7, 18, 0, 0, 400, 96, 1, 0, 0, 0, 401, 402, 7, 19, 0, 0, 402, 98, 1, 0, 0, 0, 403, 404, 7, 20, 0, 0, 404, 100, 1, 0, 0, 0, 405, 406, 7, 21, 0, 0, 406, 102, 1, 0, 0, 0, 407, 408, 7, 22, 0, 0, 408, 104, 1, 0, 0, 0, 409, 410, 7, 23, 0, 0, 410, 106, 1, 0, 0, 0, 411, 412, 7, 24, 0, 0, 412, 108, 1, 0, 0, 0, 413, 414, 7, 25, 0, 0, 414, 110, 1, 0, 0, 0, 415, 416, 7, 26, 0, 0, 416, 112, 1, 0, 0, 0, 417, 418, 7, 27, 0, 0, 418, 114, 1, 0, 0, 0, 419, 420, 7, 28, 0, 0, 420, 116, 1, 0, 0, 0, 421, 422, 7, 29, 0, 0, 422, 118, 1, 0, 0, 0, 423, 424, 7, 30, 0, 0, 424, 120, 1, 0, 0, 0, 425, 426, 7, 31, 0, 0, 426, 122, 1, 0, 0, 0, 427, 428, 7, 32, 0, 0, 428, 124, 1, 0, 0, 0, 429, 430, 7, 33, 0, 0, 430, 126, 1, 0, 0, 0, 431, 432, 7, 34, 0, 0, 432, 128, 1, 0, 0, 0, 433, 434, 7, 35, 0, 0, 434, 130, 1, 0, 0, 0, 23, 0, 138, 287, 289, 297, 299, 307, 315, 318, 322, 327, 333, 336, 340, 345, 347, 353, 357, 362, 364, 366, 372, 374, 2, 0, 1, 0, 6, 0, 0] \ No newline at end of file diff --git a/processor/stream_processor/parser/SqlLexer.tokens b/processor/stream_processor/parser/SqlLexer.tokens index 23c7b10dbb8a..a1cc5f4ceba9 100644 --- a/processor/stream_processor/parser/SqlLexer.tokens +++ b/processor/stream_processor/parser/SqlLexer.tokens @@ -12,34 +12,35 @@ K_AND=11 K_OR=12 K_IS=13 K_LIKE=14 -K_EQUAL=15 -K_GREATER=16 -K_LESS=17 -K_LESS_EQUAL=18 -K_GREATER_EQUAL=19 -K_NOT_EQUAL=20 -K_NULL=21 -K_IS_NULL=22 -K_IS_NOT_NULL=23 -K_NOT=24 -K_NOT_IN=25 -K_IN=26 -K_TRUE=27 -K_FALSE=28 -K_COUNT=29 -K_MIN=30 -K_MAX=31 -K_AVG=32 -IDENTIFIER=33 -BOOLEAN_LITERAL=34 -NUMERIC_LITERAL=35 -STRING_LITERAL=36 -STAR=37 +K_NOT_LIKE=15 +K_EQUAL=16 +K_GREATER=17 +K_LESS=18 +K_LESS_EQUAL=19 +K_GREATER_EQUAL=20 +K_NOT_EQUAL=21 +K_NULL=22 +K_IS_NULL=23 +K_IS_NOT_NULL=24 +K_NOT=25 +K_NOT_IN=26 +K_IN=27 +K_TRUE=28 +K_FALSE=29 +K_COUNT=30 +K_MIN=31 +K_MAX=32 +K_AVG=33 +IDENTIFIER=34 +BOOLEAN_LITERAL=35 +NUMERIC_LITERAL=36 +STRING_LITERAL=37 +STAR=38 ','=3 '('=4 ')'=5 ';'=6 -'='=15 -'>'=16 -'<'=17 -'*'=37 +'='=16 +'>'=17 +'<'=18 +'*'=38 diff --git a/processor/stream_processor/parser/sql_base_visitor.go b/processor/stream_processor/parser/sql_base_visitor.go index fd0688738720..728a06913203 100644 --- a/processor/stream_processor/parser/sql_base_visitor.go +++ b/processor/stream_processor/parser/sql_base_visitor.go @@ -12,7 +12,11 @@ func (v *BaseSqlVisitor) VisitSqlQuery(ctx *SqlQueryContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitSelectQuery(ctx *SelectQueryContext) interface{} { +func (v *BaseSqlVisitor) VisitSelectSimple(ctx *SelectSimpleContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitSelectTumbling(ctx *SelectTumblingContext) interface{} { return v.VisitChildren(ctx) } @@ -36,11 +40,7 @@ func (v *BaseSqlVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitTumblingStmt(ctx *TumblingStmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *BaseSqlVisitor) VisitTumblingWindow(ctx *TumblingWindowContext) interface{} { +func (v *BaseSqlVisitor) VisitWindowTumbling(ctx *WindowTumblingContext) interface{} { return v.VisitChildren(ctx) } @@ -48,10 +48,6 @@ func (v *BaseSqlVisitor) VisitSimpleCondition(ctx *SimpleConditionContext) inter return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitNullCondition(ctx *NullConditionContext) interface{} { - return v.VisitChildren(ctx) -} - func (v *BaseSqlVisitor) VisitCompoundRecursiveCondition(ctx *CompoundRecursiveConditionContext) interface{} { return v.VisitChildren(ctx) } diff --git a/processor/stream_processor/parser/sql_lexer.go b/processor/stream_processor/parser/sql_lexer.go index 7d83da33d8b4..631dc8228662 100644 --- a/processor/stream_processor/parser/sql_lexer.go +++ b/processor/stream_processor/parser/sql_lexer.go @@ -45,30 +45,32 @@ func sqllexerLexerInit() { } staticData.literalNames = []string{ "", "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", - "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "'*'", + "", "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "'*'", } staticData.symbolicNames = []string{ "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", - "K_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", - "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", - "K_IN", "K_TRUE", "K_FALSE", "K_COUNT", "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", - "BOOLEAN_LITERAL", "NUMERIC_LITERAL", "STRING_LITERAL", "STAR", + "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", + "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", + "K_NOT", "K_NOT_IN", "K_IN", "K_TRUE", "K_FALSE", "K_COUNT", "K_MIN", + "K_MAX", "K_AVG", "IDENTIFIER", "BOOLEAN_LITERAL", "NUMERIC_LITERAL", + "STRING_LITERAL", "STAR", } staticData.ruleNames = []string{ "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", - "K_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", - "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", - "K_IN", "K_TRUE", "K_FALSE", "K_COUNT", "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", - "BOOLEAN_LITERAL", "NUMERIC_LITERAL", "STRING_LITERAL", "STAR", "DIGIT", - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", - "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", + "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", + "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", + "K_NOT", "K_NOT_IN", "K_IN", "K_TRUE", "K_FALSE", "K_COUNT", "K_MIN", + "K_MAX", "K_AVG", "IDENTIFIER", "BOOLEAN_LITERAL", "NUMERIC_LITERAL", + "STRING_LITERAL", "STAR", "DIGIT", "A", "B", "C", "D", "E", "F", "G", + "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", + "V", "W", "X", "Y", "Z", } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 0, 37, 424, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, + 4, 0, 38, 435, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, @@ -80,185 +82,190 @@ func sqllexerLexerInit() { 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, - 62, 2, 63, 7, 63, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 135, 8, 1, 11, 1, - 12, 1, 136, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, - 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, - 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, - 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, - 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, - 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, - 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, - 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, - 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, - 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, - 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, - 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, - 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 277, 8, - 32, 10, 32, 12, 32, 280, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, - 287, 8, 32, 10, 32, 12, 32, 290, 9, 32, 1, 32, 1, 32, 1, 32, 5, 32, 295, - 8, 32, 10, 32, 12, 32, 298, 9, 32, 1, 32, 1, 32, 1, 32, 5, 32, 303, 8, - 32, 10, 32, 12, 32, 306, 9, 32, 3, 32, 308, 8, 32, 1, 33, 1, 33, 3, 33, - 312, 8, 33, 1, 34, 4, 34, 315, 8, 34, 11, 34, 12, 34, 316, 1, 34, 1, 34, - 5, 34, 321, 8, 34, 10, 34, 12, 34, 324, 9, 34, 3, 34, 326, 8, 34, 1, 34, - 1, 34, 3, 34, 330, 8, 34, 1, 34, 4, 34, 333, 8, 34, 11, 34, 12, 34, 334, - 3, 34, 337, 8, 34, 1, 34, 1, 34, 4, 34, 341, 8, 34, 11, 34, 12, 34, 342, - 1, 34, 1, 34, 3, 34, 347, 8, 34, 1, 34, 4, 34, 350, 8, 34, 11, 34, 12, - 34, 351, 3, 34, 354, 8, 34, 3, 34, 356, 8, 34, 1, 35, 1, 35, 1, 35, 1, - 35, 5, 35, 362, 8, 35, 10, 35, 12, 35, 365, 9, 35, 1, 35, 1, 35, 1, 36, - 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, - 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, - 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, - 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, - 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, - 62, 1, 63, 1, 63, 0, 0, 64, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, + 62, 2, 63, 7, 63, 2, 64, 7, 64, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 137, + 8, 1, 11, 1, 12, 1, 138, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, + 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, + 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, + 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, + 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, + 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, + 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, + 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, + 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, + 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, + 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, + 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, + 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, + 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 288, 8, + 33, 10, 33, 12, 33, 291, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, + 298, 8, 33, 10, 33, 12, 33, 301, 9, 33, 1, 33, 1, 33, 1, 33, 5, 33, 306, + 8, 33, 10, 33, 12, 33, 309, 9, 33, 1, 33, 1, 33, 1, 33, 5, 33, 314, 8, + 33, 10, 33, 12, 33, 317, 9, 33, 3, 33, 319, 8, 33, 1, 34, 1, 34, 3, 34, + 323, 8, 34, 1, 35, 4, 35, 326, 8, 35, 11, 35, 12, 35, 327, 1, 35, 1, 35, + 5, 35, 332, 8, 35, 10, 35, 12, 35, 335, 9, 35, 3, 35, 337, 8, 35, 1, 35, + 1, 35, 3, 35, 341, 8, 35, 1, 35, 4, 35, 344, 8, 35, 11, 35, 12, 35, 345, + 3, 35, 348, 8, 35, 1, 35, 1, 35, 4, 35, 352, 8, 35, 11, 35, 12, 35, 353, + 1, 35, 1, 35, 3, 35, 358, 8, 35, 1, 35, 4, 35, 361, 8, 35, 11, 35, 12, + 35, 362, 3, 35, 365, 8, 35, 3, 35, 367, 8, 35, 1, 36, 1, 36, 1, 36, 1, + 36, 5, 36, 373, 8, 36, 10, 36, 12, 36, 376, 9, 36, 1, 36, 1, 36, 1, 37, + 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, + 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, + 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, + 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, + 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, + 63, 1, 64, 1, 64, 0, 0, 65, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, - 35, 71, 36, 73, 37, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, + 35, 71, 36, 73, 37, 75, 38, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, - 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, - 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, - 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, - 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, - 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, - 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, - 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, - 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, - 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, - 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, - 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, - 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 420, 0, 1, 1, 0, 0, 0, - 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, - 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, - 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, - 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, - 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, - 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, - 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, - 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, - 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, - 0, 0, 0, 73, 1, 0, 0, 0, 1, 129, 1, 0, 0, 0, 3, 134, 1, 0, 0, 0, 5, 140, - 1, 0, 0, 0, 7, 142, 1, 0, 0, 0, 9, 144, 1, 0, 0, 0, 11, 146, 1, 0, 0, 0, - 13, 148, 1, 0, 0, 0, 15, 155, 1, 0, 0, 0, 17, 161, 1, 0, 0, 0, 19, 177, - 1, 0, 0, 0, 21, 186, 1, 0, 0, 0, 23, 190, 1, 0, 0, 0, 25, 193, 1, 0, 0, - 0, 27, 196, 1, 0, 0, 0, 29, 201, 1, 0, 0, 0, 31, 203, 1, 0, 0, 0, 33, 205, - 1, 0, 0, 0, 35, 207, 1, 0, 0, 0, 37, 210, 1, 0, 0, 0, 39, 213, 1, 0, 0, - 0, 41, 216, 1, 0, 0, 0, 43, 221, 1, 0, 0, 0, 45, 225, 1, 0, 0, 0, 47, 231, - 1, 0, 0, 0, 49, 235, 1, 0, 0, 0, 51, 240, 1, 0, 0, 0, 53, 243, 1, 0, 0, - 0, 55, 248, 1, 0, 0, 0, 57, 254, 1, 0, 0, 0, 59, 260, 1, 0, 0, 0, 61, 264, - 1, 0, 0, 0, 63, 268, 1, 0, 0, 0, 65, 307, 1, 0, 0, 0, 67, 311, 1, 0, 0, - 0, 69, 355, 1, 0, 0, 0, 71, 357, 1, 0, 0, 0, 73, 368, 1, 0, 0, 0, 75, 370, - 1, 0, 0, 0, 77, 372, 1, 0, 0, 0, 79, 374, 1, 0, 0, 0, 81, 376, 1, 0, 0, - 0, 83, 378, 1, 0, 0, 0, 85, 380, 1, 0, 0, 0, 87, 382, 1, 0, 0, 0, 89, 384, - 1, 0, 0, 0, 91, 386, 1, 0, 0, 0, 93, 388, 1, 0, 0, 0, 95, 390, 1, 0, 0, - 0, 97, 392, 1, 0, 0, 0, 99, 394, 1, 0, 0, 0, 101, 396, 1, 0, 0, 0, 103, - 398, 1, 0, 0, 0, 105, 400, 1, 0, 0, 0, 107, 402, 1, 0, 0, 0, 109, 404, - 1, 0, 0, 0, 111, 406, 1, 0, 0, 0, 113, 408, 1, 0, 0, 0, 115, 410, 1, 0, - 0, 0, 117, 412, 1, 0, 0, 0, 119, 414, 1, 0, 0, 0, 121, 416, 1, 0, 0, 0, - 123, 418, 1, 0, 0, 0, 125, 420, 1, 0, 0, 0, 127, 422, 1, 0, 0, 0, 129, - 130, 7, 0, 0, 0, 130, 131, 1, 0, 0, 0, 131, 132, 6, 0, 0, 0, 132, 2, 1, - 0, 0, 0, 133, 135, 7, 1, 0, 0, 134, 133, 1, 0, 0, 0, 135, 136, 1, 0, 0, - 0, 136, 134, 1, 0, 0, 0, 136, 137, 1, 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, - 139, 6, 1, 1, 0, 139, 4, 1, 0, 0, 0, 140, 141, 5, 44, 0, 0, 141, 6, 1, - 0, 0, 0, 142, 143, 5, 40, 0, 0, 143, 8, 1, 0, 0, 0, 144, 145, 5, 41, 0, - 0, 145, 10, 1, 0, 0, 0, 146, 147, 5, 59, 0, 0, 147, 12, 1, 0, 0, 0, 148, - 149, 3, 113, 56, 0, 149, 150, 3, 85, 42, 0, 150, 151, 3, 99, 49, 0, 151, - 152, 3, 85, 42, 0, 152, 153, 3, 81, 40, 0, 153, 154, 3, 115, 57, 0, 154, - 14, 1, 0, 0, 0, 155, 156, 3, 121, 60, 0, 156, 157, 3, 91, 45, 0, 157, 158, - 3, 85, 42, 0, 158, 159, 3, 111, 55, 0, 159, 160, 3, 85, 42, 0, 160, 16, - 1, 0, 0, 0, 161, 162, 3, 121, 60, 0, 162, 163, 3, 93, 46, 0, 163, 164, - 3, 103, 51, 0, 164, 165, 3, 83, 41, 0, 165, 166, 3, 105, 52, 0, 166, 167, - 3, 121, 60, 0, 167, 168, 3, 1, 0, 0, 168, 169, 3, 115, 57, 0, 169, 170, - 3, 117, 58, 0, 170, 171, 3, 101, 50, 0, 171, 172, 3, 79, 39, 0, 172, 173, - 3, 99, 49, 0, 173, 174, 3, 93, 46, 0, 174, 175, 3, 103, 51, 0, 175, 176, - 3, 89, 44, 0, 176, 18, 1, 0, 0, 0, 177, 178, 3, 89, 44, 0, 178, 179, 3, - 111, 55, 0, 179, 180, 3, 105, 52, 0, 180, 181, 3, 117, 58, 0, 181, 182, - 3, 107, 53, 0, 182, 183, 3, 1, 0, 0, 183, 184, 3, 79, 39, 0, 184, 185, - 3, 125, 62, 0, 185, 20, 1, 0, 0, 0, 186, 187, 3, 77, 38, 0, 187, 188, 3, - 103, 51, 0, 188, 189, 3, 83, 41, 0, 189, 22, 1, 0, 0, 0, 190, 191, 3, 105, - 52, 0, 191, 192, 3, 111, 55, 0, 192, 24, 1, 0, 0, 0, 193, 194, 3, 93, 46, - 0, 194, 195, 3, 113, 56, 0, 195, 26, 1, 0, 0, 0, 196, 197, 3, 99, 49, 0, - 197, 198, 3, 93, 46, 0, 198, 199, 3, 97, 48, 0, 199, 200, 3, 85, 42, 0, - 200, 28, 1, 0, 0, 0, 201, 202, 5, 61, 0, 0, 202, 30, 1, 0, 0, 0, 203, 204, - 5, 62, 0, 0, 204, 32, 1, 0, 0, 0, 205, 206, 5, 60, 0, 0, 206, 34, 1, 0, - 0, 0, 207, 208, 3, 33, 16, 0, 208, 209, 3, 29, 14, 0, 209, 36, 1, 0, 0, - 0, 210, 211, 3, 31, 15, 0, 211, 212, 3, 29, 14, 0, 212, 38, 1, 0, 0, 0, - 213, 214, 5, 33, 0, 0, 214, 215, 3, 29, 14, 0, 215, 40, 1, 0, 0, 0, 216, - 217, 3, 103, 51, 0, 217, 218, 3, 117, 58, 0, 218, 219, 3, 99, 49, 0, 219, - 220, 3, 99, 49, 0, 220, 42, 1, 0, 0, 0, 221, 222, 3, 25, 12, 0, 222, 223, - 3, 1, 0, 0, 223, 224, 3, 41, 20, 0, 224, 44, 1, 0, 0, 0, 225, 226, 3, 25, - 12, 0, 226, 227, 3, 1, 0, 0, 227, 228, 3, 47, 23, 0, 228, 229, 3, 1, 0, - 0, 229, 230, 3, 41, 20, 0, 230, 46, 1, 0, 0, 0, 231, 232, 3, 103, 51, 0, - 232, 233, 3, 105, 52, 0, 233, 234, 3, 115, 57, 0, 234, 48, 1, 0, 0, 0, - 235, 236, 3, 47, 23, 0, 236, 237, 3, 1, 0, 0, 237, 238, 3, 93, 46, 0, 238, - 239, 3, 103, 51, 0, 239, 50, 1, 0, 0, 0, 240, 241, 3, 93, 46, 0, 241, 242, - 3, 103, 51, 0, 242, 52, 1, 0, 0, 0, 243, 244, 3, 115, 57, 0, 244, 245, - 3, 111, 55, 0, 245, 246, 3, 117, 58, 0, 246, 247, 3, 85, 42, 0, 247, 54, - 1, 0, 0, 0, 248, 249, 3, 87, 43, 0, 249, 250, 3, 77, 38, 0, 250, 251, 3, - 99, 49, 0, 251, 252, 3, 113, 56, 0, 252, 253, 3, 85, 42, 0, 253, 56, 1, - 0, 0, 0, 254, 255, 3, 81, 40, 0, 255, 256, 3, 105, 52, 0, 256, 257, 3, - 117, 58, 0, 257, 258, 3, 103, 51, 0, 258, 259, 3, 115, 57, 0, 259, 58, - 1, 0, 0, 0, 260, 261, 3, 101, 50, 0, 261, 262, 3, 93, 46, 0, 262, 263, - 3, 103, 51, 0, 263, 60, 1, 0, 0, 0, 264, 265, 3, 101, 50, 0, 265, 266, - 3, 77, 38, 0, 266, 267, 3, 123, 61, 0, 267, 62, 1, 0, 0, 0, 268, 269, 3, - 77, 38, 0, 269, 270, 3, 119, 59, 0, 270, 271, 3, 89, 44, 0, 271, 64, 1, - 0, 0, 0, 272, 278, 5, 34, 0, 0, 273, 277, 8, 2, 0, 0, 274, 275, 5, 34, - 0, 0, 275, 277, 5, 34, 0, 0, 276, 273, 1, 0, 0, 0, 276, 274, 1, 0, 0, 0, - 277, 280, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, - 281, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 308, 5, 34, 0, 0, 282, 288, - 5, 96, 0, 0, 283, 287, 8, 3, 0, 0, 284, 285, 5, 96, 0, 0, 285, 287, 5, - 96, 0, 0, 286, 283, 1, 0, 0, 0, 286, 284, 1, 0, 0, 0, 287, 290, 1, 0, 0, - 0, 288, 286, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0, 289, 291, 1, 0, 0, 0, 290, - 288, 1, 0, 0, 0, 291, 308, 5, 96, 0, 0, 292, 296, 5, 91, 0, 0, 293, 295, - 8, 4, 0, 0, 294, 293, 1, 0, 0, 0, 295, 298, 1, 0, 0, 0, 296, 294, 1, 0, - 0, 0, 296, 297, 1, 0, 0, 0, 297, 299, 1, 0, 0, 0, 298, 296, 1, 0, 0, 0, - 299, 308, 5, 93, 0, 0, 300, 304, 7, 5, 0, 0, 301, 303, 7, 6, 0, 0, 302, - 301, 1, 0, 0, 0, 303, 306, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, 304, 305, - 1, 0, 0, 0, 305, 308, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 307, 272, 1, 0, - 0, 0, 307, 282, 1, 0, 0, 0, 307, 292, 1, 0, 0, 0, 307, 300, 1, 0, 0, 0, - 308, 66, 1, 0, 0, 0, 309, 312, 3, 53, 26, 0, 310, 312, 3, 55, 27, 0, 311, - 309, 1, 0, 0, 0, 311, 310, 1, 0, 0, 0, 312, 68, 1, 0, 0, 0, 313, 315, 3, - 75, 37, 0, 314, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 314, 1, 0, - 0, 0, 316, 317, 1, 0, 0, 0, 317, 325, 1, 0, 0, 0, 318, 322, 5, 46, 0, 0, - 319, 321, 3, 75, 37, 0, 320, 319, 1, 0, 0, 0, 321, 324, 1, 0, 0, 0, 322, - 320, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 323, 326, 1, 0, 0, 0, 324, 322, - 1, 0, 0, 0, 325, 318, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, 326, 336, 1, 0, - 0, 0, 327, 329, 3, 85, 42, 0, 328, 330, 7, 7, 0, 0, 329, 328, 1, 0, 0, - 0, 329, 330, 1, 0, 0, 0, 330, 332, 1, 0, 0, 0, 331, 333, 3, 75, 37, 0, - 332, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 334, - 335, 1, 0, 0, 0, 335, 337, 1, 0, 0, 0, 336, 327, 1, 0, 0, 0, 336, 337, - 1, 0, 0, 0, 337, 356, 1, 0, 0, 0, 338, 340, 5, 46, 0, 0, 339, 341, 3, 75, - 37, 0, 340, 339, 1, 0, 0, 0, 341, 342, 1, 0, 0, 0, 342, 340, 1, 0, 0, 0, - 342, 343, 1, 0, 0, 0, 343, 353, 1, 0, 0, 0, 344, 346, 3, 85, 42, 0, 345, - 347, 7, 7, 0, 0, 346, 345, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347, 349, - 1, 0, 0, 0, 348, 350, 3, 75, 37, 0, 349, 348, 1, 0, 0, 0, 350, 351, 1, - 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, - 0, 353, 344, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 356, 1, 0, 0, 0, 355, - 314, 1, 0, 0, 0, 355, 338, 1, 0, 0, 0, 356, 70, 1, 0, 0, 0, 357, 363, 5, - 39, 0, 0, 358, 362, 8, 8, 0, 0, 359, 360, 5, 39, 0, 0, 360, 362, 5, 39, - 0, 0, 361, 358, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 362, 365, 1, 0, 0, 0, - 363, 361, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 366, 1, 0, 0, 0, 365, - 363, 1, 0, 0, 0, 366, 367, 5, 39, 0, 0, 367, 72, 1, 0, 0, 0, 368, 369, - 5, 42, 0, 0, 369, 74, 1, 0, 0, 0, 370, 371, 7, 9, 0, 0, 371, 76, 1, 0, - 0, 0, 372, 373, 7, 10, 0, 0, 373, 78, 1, 0, 0, 0, 374, 375, 7, 11, 0, 0, - 375, 80, 1, 0, 0, 0, 376, 377, 7, 12, 0, 0, 377, 82, 1, 0, 0, 0, 378, 379, - 7, 13, 0, 0, 379, 84, 1, 0, 0, 0, 380, 381, 7, 14, 0, 0, 381, 86, 1, 0, - 0, 0, 382, 383, 7, 15, 0, 0, 383, 88, 1, 0, 0, 0, 384, 385, 7, 16, 0, 0, - 385, 90, 1, 0, 0, 0, 386, 387, 7, 17, 0, 0, 387, 92, 1, 0, 0, 0, 388, 389, - 7, 18, 0, 0, 389, 94, 1, 0, 0, 0, 390, 391, 7, 19, 0, 0, 391, 96, 1, 0, - 0, 0, 392, 393, 7, 20, 0, 0, 393, 98, 1, 0, 0, 0, 394, 395, 7, 21, 0, 0, - 395, 100, 1, 0, 0, 0, 396, 397, 7, 22, 0, 0, 397, 102, 1, 0, 0, 0, 398, - 399, 7, 23, 0, 0, 399, 104, 1, 0, 0, 0, 400, 401, 7, 24, 0, 0, 401, 106, - 1, 0, 0, 0, 402, 403, 7, 25, 0, 0, 403, 108, 1, 0, 0, 0, 404, 405, 7, 26, - 0, 0, 405, 110, 1, 0, 0, 0, 406, 407, 7, 27, 0, 0, 407, 112, 1, 0, 0, 0, - 408, 409, 7, 28, 0, 0, 409, 114, 1, 0, 0, 0, 410, 411, 7, 29, 0, 0, 411, - 116, 1, 0, 0, 0, 412, 413, 7, 30, 0, 0, 413, 118, 1, 0, 0, 0, 414, 415, - 7, 31, 0, 0, 415, 120, 1, 0, 0, 0, 416, 417, 7, 32, 0, 0, 417, 122, 1, - 0, 0, 0, 418, 419, 7, 33, 0, 0, 419, 124, 1, 0, 0, 0, 420, 421, 7, 34, - 0, 0, 421, 126, 1, 0, 0, 0, 422, 423, 7, 35, 0, 0, 423, 128, 1, 0, 0, 0, - 23, 0, 136, 276, 278, 286, 288, 296, 304, 307, 311, 316, 322, 325, 329, - 334, 336, 342, 346, 351, 353, 355, 361, 363, 2, 0, 1, 0, 6, 0, 0, + 0, 129, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, + 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, + 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, + 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, + 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, + 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, + 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, + 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, + 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, + 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, + 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, + 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 431, 0, 1, 1, 0, 0, + 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, + 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, + 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, + 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, + 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, + 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, + 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, + 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, + 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, + 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 1, 131, 1, 0, 0, 0, 3, 136, + 1, 0, 0, 0, 5, 142, 1, 0, 0, 0, 7, 144, 1, 0, 0, 0, 9, 146, 1, 0, 0, 0, + 11, 148, 1, 0, 0, 0, 13, 150, 1, 0, 0, 0, 15, 157, 1, 0, 0, 0, 17, 163, + 1, 0, 0, 0, 19, 179, 1, 0, 0, 0, 21, 188, 1, 0, 0, 0, 23, 192, 1, 0, 0, + 0, 25, 195, 1, 0, 0, 0, 27, 198, 1, 0, 0, 0, 29, 203, 1, 0, 0, 0, 31, 212, + 1, 0, 0, 0, 33, 214, 1, 0, 0, 0, 35, 216, 1, 0, 0, 0, 37, 218, 1, 0, 0, + 0, 39, 221, 1, 0, 0, 0, 41, 224, 1, 0, 0, 0, 43, 227, 1, 0, 0, 0, 45, 232, + 1, 0, 0, 0, 47, 236, 1, 0, 0, 0, 49, 242, 1, 0, 0, 0, 51, 246, 1, 0, 0, + 0, 53, 251, 1, 0, 0, 0, 55, 254, 1, 0, 0, 0, 57, 259, 1, 0, 0, 0, 59, 265, + 1, 0, 0, 0, 61, 271, 1, 0, 0, 0, 63, 275, 1, 0, 0, 0, 65, 279, 1, 0, 0, + 0, 67, 318, 1, 0, 0, 0, 69, 322, 1, 0, 0, 0, 71, 366, 1, 0, 0, 0, 73, 368, + 1, 0, 0, 0, 75, 379, 1, 0, 0, 0, 77, 381, 1, 0, 0, 0, 79, 383, 1, 0, 0, + 0, 81, 385, 1, 0, 0, 0, 83, 387, 1, 0, 0, 0, 85, 389, 1, 0, 0, 0, 87, 391, + 1, 0, 0, 0, 89, 393, 1, 0, 0, 0, 91, 395, 1, 0, 0, 0, 93, 397, 1, 0, 0, + 0, 95, 399, 1, 0, 0, 0, 97, 401, 1, 0, 0, 0, 99, 403, 1, 0, 0, 0, 101, + 405, 1, 0, 0, 0, 103, 407, 1, 0, 0, 0, 105, 409, 1, 0, 0, 0, 107, 411, + 1, 0, 0, 0, 109, 413, 1, 0, 0, 0, 111, 415, 1, 0, 0, 0, 113, 417, 1, 0, + 0, 0, 115, 419, 1, 0, 0, 0, 117, 421, 1, 0, 0, 0, 119, 423, 1, 0, 0, 0, + 121, 425, 1, 0, 0, 0, 123, 427, 1, 0, 0, 0, 125, 429, 1, 0, 0, 0, 127, + 431, 1, 0, 0, 0, 129, 433, 1, 0, 0, 0, 131, 132, 7, 0, 0, 0, 132, 133, + 1, 0, 0, 0, 133, 134, 6, 0, 0, 0, 134, 2, 1, 0, 0, 0, 135, 137, 7, 1, 0, + 0, 136, 135, 1, 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, 136, 1, 0, 0, 0, 138, + 139, 1, 0, 0, 0, 139, 140, 1, 0, 0, 0, 140, 141, 6, 1, 1, 0, 141, 4, 1, + 0, 0, 0, 142, 143, 5, 44, 0, 0, 143, 6, 1, 0, 0, 0, 144, 145, 5, 40, 0, + 0, 145, 8, 1, 0, 0, 0, 146, 147, 5, 41, 0, 0, 147, 10, 1, 0, 0, 0, 148, + 149, 5, 59, 0, 0, 149, 12, 1, 0, 0, 0, 150, 151, 3, 115, 57, 0, 151, 152, + 3, 87, 43, 0, 152, 153, 3, 101, 50, 0, 153, 154, 3, 87, 43, 0, 154, 155, + 3, 83, 41, 0, 155, 156, 3, 117, 58, 0, 156, 14, 1, 0, 0, 0, 157, 158, 3, + 123, 61, 0, 158, 159, 3, 93, 46, 0, 159, 160, 3, 87, 43, 0, 160, 161, 3, + 113, 56, 0, 161, 162, 3, 87, 43, 0, 162, 16, 1, 0, 0, 0, 163, 164, 3, 123, + 61, 0, 164, 165, 3, 95, 47, 0, 165, 166, 3, 105, 52, 0, 166, 167, 3, 85, + 42, 0, 167, 168, 3, 107, 53, 0, 168, 169, 3, 123, 61, 0, 169, 170, 3, 1, + 0, 0, 170, 171, 3, 117, 58, 0, 171, 172, 3, 119, 59, 0, 172, 173, 3, 103, + 51, 0, 173, 174, 3, 81, 40, 0, 174, 175, 3, 101, 50, 0, 175, 176, 3, 95, + 47, 0, 176, 177, 3, 105, 52, 0, 177, 178, 3, 91, 45, 0, 178, 18, 1, 0, + 0, 0, 179, 180, 3, 91, 45, 0, 180, 181, 3, 113, 56, 0, 181, 182, 3, 107, + 53, 0, 182, 183, 3, 119, 59, 0, 183, 184, 3, 109, 54, 0, 184, 185, 3, 1, + 0, 0, 185, 186, 3, 81, 40, 0, 186, 187, 3, 127, 63, 0, 187, 20, 1, 0, 0, + 0, 188, 189, 3, 79, 39, 0, 189, 190, 3, 105, 52, 0, 190, 191, 3, 85, 42, + 0, 191, 22, 1, 0, 0, 0, 192, 193, 3, 107, 53, 0, 193, 194, 3, 113, 56, + 0, 194, 24, 1, 0, 0, 0, 195, 196, 3, 95, 47, 0, 196, 197, 3, 115, 57, 0, + 197, 26, 1, 0, 0, 0, 198, 199, 3, 101, 50, 0, 199, 200, 3, 95, 47, 0, 200, + 201, 3, 99, 49, 0, 201, 202, 3, 87, 43, 0, 202, 28, 1, 0, 0, 0, 203, 204, + 3, 105, 52, 0, 204, 205, 3, 107, 53, 0, 205, 206, 3, 117, 58, 0, 206, 207, + 3, 1, 0, 0, 207, 208, 3, 101, 50, 0, 208, 209, 3, 95, 47, 0, 209, 210, + 3, 99, 49, 0, 210, 211, 3, 87, 43, 0, 211, 30, 1, 0, 0, 0, 212, 213, 5, + 61, 0, 0, 213, 32, 1, 0, 0, 0, 214, 215, 5, 62, 0, 0, 215, 34, 1, 0, 0, + 0, 216, 217, 5, 60, 0, 0, 217, 36, 1, 0, 0, 0, 218, 219, 3, 35, 17, 0, + 219, 220, 3, 31, 15, 0, 220, 38, 1, 0, 0, 0, 221, 222, 3, 33, 16, 0, 222, + 223, 3, 31, 15, 0, 223, 40, 1, 0, 0, 0, 224, 225, 5, 33, 0, 0, 225, 226, + 3, 31, 15, 0, 226, 42, 1, 0, 0, 0, 227, 228, 3, 105, 52, 0, 228, 229, 3, + 119, 59, 0, 229, 230, 3, 101, 50, 0, 230, 231, 3, 101, 50, 0, 231, 44, + 1, 0, 0, 0, 232, 233, 3, 25, 12, 0, 233, 234, 3, 1, 0, 0, 234, 235, 3, + 43, 21, 0, 235, 46, 1, 0, 0, 0, 236, 237, 3, 25, 12, 0, 237, 238, 3, 1, + 0, 0, 238, 239, 3, 49, 24, 0, 239, 240, 3, 1, 0, 0, 240, 241, 3, 43, 21, + 0, 241, 48, 1, 0, 0, 0, 242, 243, 3, 105, 52, 0, 243, 244, 3, 107, 53, + 0, 244, 245, 3, 117, 58, 0, 245, 50, 1, 0, 0, 0, 246, 247, 3, 49, 24, 0, + 247, 248, 3, 1, 0, 0, 248, 249, 3, 95, 47, 0, 249, 250, 3, 105, 52, 0, + 250, 52, 1, 0, 0, 0, 251, 252, 3, 95, 47, 0, 252, 253, 3, 105, 52, 0, 253, + 54, 1, 0, 0, 0, 254, 255, 3, 117, 58, 0, 255, 256, 3, 113, 56, 0, 256, + 257, 3, 119, 59, 0, 257, 258, 3, 87, 43, 0, 258, 56, 1, 0, 0, 0, 259, 260, + 3, 89, 44, 0, 260, 261, 3, 79, 39, 0, 261, 262, 3, 101, 50, 0, 262, 263, + 3, 115, 57, 0, 263, 264, 3, 87, 43, 0, 264, 58, 1, 0, 0, 0, 265, 266, 3, + 83, 41, 0, 266, 267, 3, 107, 53, 0, 267, 268, 3, 119, 59, 0, 268, 269, + 3, 105, 52, 0, 269, 270, 3, 117, 58, 0, 270, 60, 1, 0, 0, 0, 271, 272, + 3, 103, 51, 0, 272, 273, 3, 95, 47, 0, 273, 274, 3, 105, 52, 0, 274, 62, + 1, 0, 0, 0, 275, 276, 3, 103, 51, 0, 276, 277, 3, 79, 39, 0, 277, 278, + 3, 125, 62, 0, 278, 64, 1, 0, 0, 0, 279, 280, 3, 79, 39, 0, 280, 281, 3, + 121, 60, 0, 281, 282, 3, 91, 45, 0, 282, 66, 1, 0, 0, 0, 283, 289, 5, 34, + 0, 0, 284, 288, 8, 2, 0, 0, 285, 286, 5, 34, 0, 0, 286, 288, 5, 34, 0, + 0, 287, 284, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 288, 291, 1, 0, 0, 0, 289, + 287, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 292, 1, 0, 0, 0, 291, 289, + 1, 0, 0, 0, 292, 319, 5, 34, 0, 0, 293, 299, 5, 96, 0, 0, 294, 298, 8, + 3, 0, 0, 295, 296, 5, 96, 0, 0, 296, 298, 5, 96, 0, 0, 297, 294, 1, 0, + 0, 0, 297, 295, 1, 0, 0, 0, 298, 301, 1, 0, 0, 0, 299, 297, 1, 0, 0, 0, + 299, 300, 1, 0, 0, 0, 300, 302, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 302, + 319, 5, 96, 0, 0, 303, 307, 5, 91, 0, 0, 304, 306, 8, 4, 0, 0, 305, 304, + 1, 0, 0, 0, 306, 309, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 307, 308, 1, 0, + 0, 0, 308, 310, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 310, 319, 5, 93, 0, 0, + 311, 315, 7, 5, 0, 0, 312, 314, 7, 6, 0, 0, 313, 312, 1, 0, 0, 0, 314, + 317, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 319, + 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 318, 283, 1, 0, 0, 0, 318, 293, 1, 0, + 0, 0, 318, 303, 1, 0, 0, 0, 318, 311, 1, 0, 0, 0, 319, 68, 1, 0, 0, 0, + 320, 323, 3, 55, 27, 0, 321, 323, 3, 57, 28, 0, 322, 320, 1, 0, 0, 0, 322, + 321, 1, 0, 0, 0, 323, 70, 1, 0, 0, 0, 324, 326, 3, 77, 38, 0, 325, 324, + 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 327, 328, 1, 0, + 0, 0, 328, 336, 1, 0, 0, 0, 329, 333, 5, 46, 0, 0, 330, 332, 3, 77, 38, + 0, 331, 330, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, + 334, 1, 0, 0, 0, 334, 337, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 329, + 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 347, 1, 0, 0, 0, 338, 340, 3, 87, + 43, 0, 339, 341, 7, 7, 0, 0, 340, 339, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, + 341, 343, 1, 0, 0, 0, 342, 344, 3, 77, 38, 0, 343, 342, 1, 0, 0, 0, 344, + 345, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 348, + 1, 0, 0, 0, 347, 338, 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 367, 1, 0, + 0, 0, 349, 351, 5, 46, 0, 0, 350, 352, 3, 77, 38, 0, 351, 350, 1, 0, 0, + 0, 352, 353, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, + 364, 1, 0, 0, 0, 355, 357, 3, 87, 43, 0, 356, 358, 7, 7, 0, 0, 357, 356, + 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 360, 1, 0, 0, 0, 359, 361, 3, 77, + 38, 0, 360, 359, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, + 362, 363, 1, 0, 0, 0, 363, 365, 1, 0, 0, 0, 364, 355, 1, 0, 0, 0, 364, + 365, 1, 0, 0, 0, 365, 367, 1, 0, 0, 0, 366, 325, 1, 0, 0, 0, 366, 349, + 1, 0, 0, 0, 367, 72, 1, 0, 0, 0, 368, 374, 5, 39, 0, 0, 369, 373, 8, 8, + 0, 0, 370, 371, 5, 39, 0, 0, 371, 373, 5, 39, 0, 0, 372, 369, 1, 0, 0, + 0, 372, 370, 1, 0, 0, 0, 373, 376, 1, 0, 0, 0, 374, 372, 1, 0, 0, 0, 374, + 375, 1, 0, 0, 0, 375, 377, 1, 0, 0, 0, 376, 374, 1, 0, 0, 0, 377, 378, + 5, 39, 0, 0, 378, 74, 1, 0, 0, 0, 379, 380, 5, 42, 0, 0, 380, 76, 1, 0, + 0, 0, 381, 382, 7, 9, 0, 0, 382, 78, 1, 0, 0, 0, 383, 384, 7, 10, 0, 0, + 384, 80, 1, 0, 0, 0, 385, 386, 7, 11, 0, 0, 386, 82, 1, 0, 0, 0, 387, 388, + 7, 12, 0, 0, 388, 84, 1, 0, 0, 0, 389, 390, 7, 13, 0, 0, 390, 86, 1, 0, + 0, 0, 391, 392, 7, 14, 0, 0, 392, 88, 1, 0, 0, 0, 393, 394, 7, 15, 0, 0, + 394, 90, 1, 0, 0, 0, 395, 396, 7, 16, 0, 0, 396, 92, 1, 0, 0, 0, 397, 398, + 7, 17, 0, 0, 398, 94, 1, 0, 0, 0, 399, 400, 7, 18, 0, 0, 400, 96, 1, 0, + 0, 0, 401, 402, 7, 19, 0, 0, 402, 98, 1, 0, 0, 0, 403, 404, 7, 20, 0, 0, + 404, 100, 1, 0, 0, 0, 405, 406, 7, 21, 0, 0, 406, 102, 1, 0, 0, 0, 407, + 408, 7, 22, 0, 0, 408, 104, 1, 0, 0, 0, 409, 410, 7, 23, 0, 0, 410, 106, + 1, 0, 0, 0, 411, 412, 7, 24, 0, 0, 412, 108, 1, 0, 0, 0, 413, 414, 7, 25, + 0, 0, 414, 110, 1, 0, 0, 0, 415, 416, 7, 26, 0, 0, 416, 112, 1, 0, 0, 0, + 417, 418, 7, 27, 0, 0, 418, 114, 1, 0, 0, 0, 419, 420, 7, 28, 0, 0, 420, + 116, 1, 0, 0, 0, 421, 422, 7, 29, 0, 0, 422, 118, 1, 0, 0, 0, 423, 424, + 7, 30, 0, 0, 424, 120, 1, 0, 0, 0, 425, 426, 7, 31, 0, 0, 426, 122, 1, + 0, 0, 0, 427, 428, 7, 32, 0, 0, 428, 124, 1, 0, 0, 0, 429, 430, 7, 33, + 0, 0, 430, 126, 1, 0, 0, 0, 431, 432, 7, 34, 0, 0, 432, 128, 1, 0, 0, 0, + 433, 434, 7, 35, 0, 0, 434, 130, 1, 0, 0, 0, 23, 0, 138, 287, 289, 297, + 299, 307, 315, 318, 322, 327, 333, 336, 340, 345, 347, 353, 357, 362, 364, + 366, 372, 374, 2, 0, 1, 0, 6, 0, 0, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -313,27 +320,28 @@ const ( SqlLexerK_OR = 12 SqlLexerK_IS = 13 SqlLexerK_LIKE = 14 - SqlLexerK_EQUAL = 15 - SqlLexerK_GREATER = 16 - SqlLexerK_LESS = 17 - SqlLexerK_LESS_EQUAL = 18 - SqlLexerK_GREATER_EQUAL = 19 - SqlLexerK_NOT_EQUAL = 20 - SqlLexerK_NULL = 21 - SqlLexerK_IS_NULL = 22 - SqlLexerK_IS_NOT_NULL = 23 - SqlLexerK_NOT = 24 - SqlLexerK_NOT_IN = 25 - SqlLexerK_IN = 26 - SqlLexerK_TRUE = 27 - SqlLexerK_FALSE = 28 - SqlLexerK_COUNT = 29 - SqlLexerK_MIN = 30 - SqlLexerK_MAX = 31 - SqlLexerK_AVG = 32 - SqlLexerIDENTIFIER = 33 - SqlLexerBOOLEAN_LITERAL = 34 - SqlLexerNUMERIC_LITERAL = 35 - SqlLexerSTRING_LITERAL = 36 - SqlLexerSTAR = 37 + SqlLexerK_NOT_LIKE = 15 + SqlLexerK_EQUAL = 16 + SqlLexerK_GREATER = 17 + SqlLexerK_LESS = 18 + SqlLexerK_LESS_EQUAL = 19 + SqlLexerK_GREATER_EQUAL = 20 + SqlLexerK_NOT_EQUAL = 21 + SqlLexerK_NULL = 22 + SqlLexerK_IS_NULL = 23 + SqlLexerK_IS_NOT_NULL = 24 + SqlLexerK_NOT = 25 + SqlLexerK_NOT_IN = 26 + SqlLexerK_IN = 27 + SqlLexerK_TRUE = 28 + SqlLexerK_FALSE = 29 + SqlLexerK_COUNT = 30 + SqlLexerK_MIN = 31 + SqlLexerK_MAX = 32 + SqlLexerK_AVG = 33 + SqlLexerIDENTIFIER = 34 + SqlLexerBOOLEAN_LITERAL = 35 + SqlLexerNUMERIC_LITERAL = 36 + SqlLexerSTRING_LITERAL = 37 + SqlLexerSTAR = 38 ) diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index 7b980d15d057..347edc505b2f 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -34,69 +34,65 @@ func sqlParserInit() { staticData := &sqlParserStaticData staticData.literalNames = []string{ "", "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", - "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "'*'", + "", "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "'*'", } staticData.symbolicNames = []string{ "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", - "K_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", - "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", - "K_IN", "K_TRUE", "K_FALSE", "K_COUNT", "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", - "BOOLEAN_LITERAL", "NUMERIC_LITERAL", "STRING_LITERAL", "STAR", + "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", + "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", + "K_NOT", "K_NOT_IN", "K_IN", "K_TRUE", "K_FALSE", "K_COUNT", "K_MIN", + "K_MAX", "K_AVG", "IDENTIFIER", "BOOLEAN_LITERAL", "NUMERIC_LITERAL", + "STRING_LITERAL", "STAR", } staticData.ruleNames = []string{ "sqlQuery", "selectQuery", "resultColumns", "column", "whereStatement", - "tumblingWindow", "expr", "compoundExpr", "comparisonOperator", "literalValue", + "windowTumbling", "expr", "compoundExpr", "comparisonOperator", "literalValue", "groupBy", "avg", } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 37, 111, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 38, 104, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 31, 8, 1, 1, - 1, 1, 1, 1, 2, 1, 2, 1, 2, 5, 2, 38, 8, 2, 10, 2, 12, 2, 41, 9, 2, 1, 2, - 1, 2, 1, 2, 4, 2, 46, 8, 2, 11, 2, 12, 2, 47, 1, 2, 3, 2, 51, 8, 2, 1, - 3, 1, 3, 1, 4, 1, 4, 3, 4, 57, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 62, 8, 4, - 1, 4, 1, 4, 3, 4, 66, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 72, 8, 5, 1, - 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 85, - 8, 6, 1, 6, 1, 6, 1, 6, 5, 6, 90, 8, 6, 10, 6, 12, 6, 93, 9, 6, 1, 7, 1, - 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, - 1, 11, 1, 11, 1, 11, 1, 11, 0, 1, 12, 12, 0, 2, 4, 6, 8, 10, 12, 14, 16, - 18, 20, 22, 0, 5, 1, 0, 11, 12, 1, 0, 22, 23, 2, 0, 13, 20, 25, 26, 1, - 0, 34, 36, 1, 0, 29, 32, 110, 0, 24, 1, 0, 0, 0, 2, 27, 1, 0, 0, 0, 4, - 50, 1, 0, 0, 0, 6, 52, 1, 0, 0, 0, 8, 65, 1, 0, 0, 0, 10, 67, 1, 0, 0, - 0, 12, 84, 1, 0, 0, 0, 14, 94, 1, 0, 0, 0, 16, 98, 1, 0, 0, 0, 18, 100, - 1, 0, 0, 0, 20, 102, 1, 0, 0, 0, 22, 105, 1, 0, 0, 0, 24, 25, 3, 2, 1, - 0, 25, 26, 5, 0, 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 5, 7, 0, 0, 28, 30, 3, - 4, 2, 0, 29, 31, 3, 8, 4, 0, 30, 29, 1, 0, 0, 0, 30, 31, 1, 0, 0, 0, 31, - 32, 1, 0, 0, 0, 32, 33, 5, 6, 0, 0, 33, 3, 1, 0, 0, 0, 34, 39, 3, 6, 3, - 0, 35, 36, 5, 3, 0, 0, 36, 38, 3, 6, 3, 0, 37, 35, 1, 0, 0, 0, 38, 41, - 1, 0, 0, 0, 39, 37, 1, 0, 0, 0, 39, 40, 1, 0, 0, 0, 40, 51, 1, 0, 0, 0, - 41, 39, 1, 0, 0, 0, 42, 45, 3, 22, 11, 0, 43, 44, 5, 3, 0, 0, 44, 46, 3, - 22, 11, 0, 45, 43, 1, 0, 0, 0, 46, 47, 1, 0, 0, 0, 47, 45, 1, 0, 0, 0, - 47, 48, 1, 0, 0, 0, 48, 51, 1, 0, 0, 0, 49, 51, 5, 37, 0, 0, 50, 34, 1, - 0, 0, 0, 50, 42, 1, 0, 0, 0, 50, 49, 1, 0, 0, 0, 51, 5, 1, 0, 0, 0, 52, - 53, 5, 33, 0, 0, 53, 7, 1, 0, 0, 0, 54, 55, 5, 8, 0, 0, 55, 57, 3, 12, - 6, 0, 56, 54, 1, 0, 0, 0, 56, 57, 1, 0, 0, 0, 57, 66, 1, 0, 0, 0, 58, 61, - 3, 10, 5, 0, 59, 60, 5, 8, 0, 0, 60, 62, 3, 12, 6, 0, 61, 59, 1, 0, 0, - 0, 61, 62, 1, 0, 0, 0, 62, 63, 1, 0, 0, 0, 63, 64, 3, 20, 10, 0, 64, 66, - 1, 0, 0, 0, 65, 56, 1, 0, 0, 0, 65, 58, 1, 0, 0, 0, 66, 9, 1, 0, 0, 0, - 67, 68, 5, 9, 0, 0, 68, 71, 5, 35, 0, 0, 69, 70, 5, 8, 0, 0, 70, 72, 3, - 12, 6, 0, 71, 69, 1, 0, 0, 0, 71, 72, 1, 0, 0, 0, 72, 11, 1, 0, 0, 0, 73, - 74, 6, 6, -1, 0, 74, 75, 5, 33, 0, 0, 75, 76, 3, 16, 8, 0, 76, 77, 3, 18, - 9, 0, 77, 85, 1, 0, 0, 0, 78, 79, 3, 14, 7, 0, 79, 80, 7, 0, 0, 0, 80, - 81, 3, 14, 7, 0, 81, 85, 1, 0, 0, 0, 82, 83, 5, 33, 0, 0, 83, 85, 7, 1, - 0, 0, 84, 73, 1, 0, 0, 0, 84, 78, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 85, 91, - 1, 0, 0, 0, 86, 87, 10, 1, 0, 0, 87, 88, 7, 0, 0, 0, 88, 90, 3, 12, 6, - 2, 89, 86, 1, 0, 0, 0, 90, 93, 1, 0, 0, 0, 91, 89, 1, 0, 0, 0, 91, 92, - 1, 0, 0, 0, 92, 13, 1, 0, 0, 0, 93, 91, 1, 0, 0, 0, 94, 95, 5, 4, 0, 0, - 95, 96, 3, 12, 6, 0, 96, 97, 5, 5, 0, 0, 97, 15, 1, 0, 0, 0, 98, 99, 7, - 2, 0, 0, 99, 17, 1, 0, 0, 0, 100, 101, 7, 3, 0, 0, 101, 19, 1, 0, 0, 0, - 102, 103, 5, 10, 0, 0, 103, 104, 3, 6, 3, 0, 104, 21, 1, 0, 0, 0, 105, - 106, 7, 4, 0, 0, 106, 107, 5, 4, 0, 0, 107, 108, 3, 6, 3, 0, 108, 109, - 5, 5, 0, 0, 109, 23, 1, 0, 0, 0, 10, 30, 39, 47, 50, 56, 61, 65, 71, 84, - 91, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 40, 8, 1, 1, 1, 3, 1, 43, + 8, 1, 1, 1, 1, 1, 3, 1, 47, 8, 1, 1, 2, 1, 2, 1, 2, 5, 2, 52, 8, 2, 10, + 2, 12, 2, 55, 9, 2, 1, 2, 1, 2, 3, 2, 59, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, + 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, + 1, 6, 3, 6, 78, 8, 6, 1, 6, 1, 6, 1, 6, 5, 6, 83, 8, 6, 10, 6, 12, 6, 86, + 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, + 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 0, 1, 12, 12, 0, 2, 4, 6, + 8, 10, 12, 14, 16, 18, 20, 22, 0, 4, 1, 0, 11, 12, 2, 0, 13, 21, 26, 27, + 1, 0, 35, 37, 1, 0, 30, 33, 100, 0, 24, 1, 0, 0, 0, 2, 46, 1, 0, 0, 0, + 4, 58, 1, 0, 0, 0, 6, 60, 1, 0, 0, 0, 8, 62, 1, 0, 0, 0, 10, 65, 1, 0, + 0, 0, 12, 77, 1, 0, 0, 0, 14, 87, 1, 0, 0, 0, 16, 91, 1, 0, 0, 0, 18, 93, + 1, 0, 0, 0, 20, 95, 1, 0, 0, 0, 22, 98, 1, 0, 0, 0, 24, 25, 3, 2, 1, 0, + 25, 26, 5, 0, 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 5, 7, 0, 0, 28, 30, 3, 4, + 2, 0, 29, 31, 3, 8, 4, 0, 30, 29, 1, 0, 0, 0, 30, 31, 1, 0, 0, 0, 31, 32, + 1, 0, 0, 0, 32, 33, 5, 6, 0, 0, 33, 47, 1, 0, 0, 0, 34, 35, 5, 7, 0, 0, + 35, 36, 3, 4, 2, 0, 36, 37, 5, 9, 0, 0, 37, 39, 5, 36, 0, 0, 38, 40, 3, + 8, 4, 0, 39, 38, 1, 0, 0, 0, 39, 40, 1, 0, 0, 0, 40, 42, 1, 0, 0, 0, 41, + 43, 3, 20, 10, 0, 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 1, 0, + 0, 0, 44, 45, 5, 6, 0, 0, 45, 47, 1, 0, 0, 0, 46, 27, 1, 0, 0, 0, 46, 34, + 1, 0, 0, 0, 47, 3, 1, 0, 0, 0, 48, 53, 3, 6, 3, 0, 49, 50, 5, 3, 0, 0, + 50, 52, 3, 6, 3, 0, 51, 49, 1, 0, 0, 0, 52, 55, 1, 0, 0, 0, 53, 51, 1, + 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 59, 1, 0, 0, 0, 55, 53, 1, 0, 0, 0, 56, + 59, 3, 22, 11, 0, 57, 59, 5, 38, 0, 0, 58, 48, 1, 0, 0, 0, 58, 56, 1, 0, + 0, 0, 58, 57, 1, 0, 0, 0, 59, 5, 1, 0, 0, 0, 60, 61, 5, 34, 0, 0, 61, 7, + 1, 0, 0, 0, 62, 63, 5, 8, 0, 0, 63, 64, 3, 12, 6, 0, 64, 9, 1, 0, 0, 0, + 65, 66, 5, 9, 0, 0, 66, 67, 5, 36, 0, 0, 67, 11, 1, 0, 0, 0, 68, 69, 6, + 6, -1, 0, 69, 70, 5, 34, 0, 0, 70, 71, 3, 16, 8, 0, 71, 72, 3, 18, 9, 0, + 72, 78, 1, 0, 0, 0, 73, 74, 3, 14, 7, 0, 74, 75, 7, 0, 0, 0, 75, 76, 3, + 14, 7, 0, 76, 78, 1, 0, 0, 0, 77, 68, 1, 0, 0, 0, 77, 73, 1, 0, 0, 0, 78, + 84, 1, 0, 0, 0, 79, 80, 10, 1, 0, 0, 80, 81, 7, 0, 0, 0, 81, 83, 3, 12, + 6, 2, 82, 79, 1, 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, + 1, 0, 0, 0, 85, 13, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 88, 5, 4, 0, 0, + 88, 89, 3, 12, 6, 0, 89, 90, 5, 5, 0, 0, 90, 15, 1, 0, 0, 0, 91, 92, 7, + 1, 0, 0, 92, 17, 1, 0, 0, 0, 93, 94, 7, 2, 0, 0, 94, 19, 1, 0, 0, 0, 95, + 96, 5, 10, 0, 0, 96, 97, 3, 6, 3, 0, 97, 21, 1, 0, 0, 0, 98, 99, 7, 3, + 0, 0, 99, 100, 5, 4, 0, 0, 100, 101, 3, 6, 3, 0, 101, 102, 5, 5, 0, 0, + 102, 23, 1, 0, 0, 0, 8, 30, 39, 42, 46, 53, 58, 77, 84, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -149,29 +145,30 @@ const ( SqlParserK_OR = 12 SqlParserK_IS = 13 SqlParserK_LIKE = 14 - SqlParserK_EQUAL = 15 - SqlParserK_GREATER = 16 - SqlParserK_LESS = 17 - SqlParserK_LESS_EQUAL = 18 - SqlParserK_GREATER_EQUAL = 19 - SqlParserK_NOT_EQUAL = 20 - SqlParserK_NULL = 21 - SqlParserK_IS_NULL = 22 - SqlParserK_IS_NOT_NULL = 23 - SqlParserK_NOT = 24 - SqlParserK_NOT_IN = 25 - SqlParserK_IN = 26 - SqlParserK_TRUE = 27 - SqlParserK_FALSE = 28 - SqlParserK_COUNT = 29 - SqlParserK_MIN = 30 - SqlParserK_MAX = 31 - SqlParserK_AVG = 32 - SqlParserIDENTIFIER = 33 - SqlParserBOOLEAN_LITERAL = 34 - SqlParserNUMERIC_LITERAL = 35 - SqlParserSTRING_LITERAL = 36 - SqlParserSTAR = 37 + SqlParserK_NOT_LIKE = 15 + SqlParserK_EQUAL = 16 + SqlParserK_GREATER = 17 + SqlParserK_LESS = 18 + SqlParserK_LESS_EQUAL = 19 + SqlParserK_GREATER_EQUAL = 20 + SqlParserK_NOT_EQUAL = 21 + SqlParserK_NULL = 22 + SqlParserK_IS_NULL = 23 + SqlParserK_IS_NOT_NULL = 24 + SqlParserK_NOT = 25 + SqlParserK_NOT_IN = 26 + SqlParserK_IN = 27 + SqlParserK_TRUE = 28 + SqlParserK_FALSE = 29 + SqlParserK_COUNT = 30 + SqlParserK_MIN = 31 + SqlParserK_MAX = 32 + SqlParserK_AVG = 33 + SqlParserIDENTIFIER = 34 + SqlParserBOOLEAN_LITERAL = 35 + SqlParserNUMERIC_LITERAL = 36 + SqlParserSTRING_LITERAL = 37 + SqlParserSTAR = 38 ) // SqlParser rules. @@ -181,7 +178,7 @@ const ( SqlParserRULE_resultColumns = 2 SqlParserRULE_column = 3 SqlParserRULE_whereStatement = 4 - SqlParserRULE_tumblingWindow = 5 + SqlParserRULE_windowTumbling = 5 SqlParserRULE_expr = 6 SqlParserRULE_compoundExpr = 7 SqlParserRULE_comparisonOperator = 8 @@ -340,15 +337,41 @@ func NewSelectQueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, func (s *SelectQueryContext) GetParser() antlr.Parser { return s.parser } -func (s *SelectQueryContext) K_SELECT() antlr.TerminalNode { - return s.GetToken(SqlParserK_SELECT, 0) +func (s *SelectQueryContext) CopyFrom(ctx *SelectQueryContext) { + s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext) } -func (s *SelectQueryContext) EOQ() antlr.TerminalNode { - return s.GetToken(SqlParserEOQ, 0) +func (s *SelectQueryContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SelectQueryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +type SelectTumblingContext struct { + *SelectQueryContext +} + +func NewSelectTumblingContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectTumblingContext { + var p = new(SelectTumblingContext) + + p.SelectQueryContext = NewEmptySelectQueryContext() + p.parser = parser + p.CopyFrom(ctx.(*SelectQueryContext)) + + return p +} + +func (s *SelectTumblingContext) GetRuleContext() antlr.RuleContext { + return s } -func (s *SelectQueryContext) ResultColumns() IResultColumnsContext { +func (s *SelectTumblingContext) K_SELECT() antlr.TerminalNode { + return s.GetToken(SqlParserK_SELECT, 0) +} + +func (s *SelectTumblingContext) ResultColumns() IResultColumnsContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { if _, ok := ctx.(IResultColumnsContext); ok { @@ -364,7 +387,19 @@ func (s *SelectQueryContext) ResultColumns() IResultColumnsContext { return t.(IResultColumnsContext) } -func (s *SelectQueryContext) WhereStatement() IWhereStatementContext { +func (s *SelectTumblingContext) K_WINDOW_TUMBLING() antlr.TerminalNode { + return s.GetToken(SqlParserK_WINDOW_TUMBLING, 0) +} + +func (s *SelectTumblingContext) NUMERIC_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserNUMERIC_LITERAL, 0) +} + +func (s *SelectTumblingContext) EOQ() antlr.TerminalNode { + return s.GetToken(SqlParserEOQ, 0) +} + +func (s *SelectTumblingContext) WhereStatement() IWhereStatementContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { if _, ok := ctx.(IWhereStatementContext); ok { @@ -380,18 +415,94 @@ func (s *SelectQueryContext) WhereStatement() IWhereStatementContext { return t.(IWhereStatementContext) } -func (s *SelectQueryContext) GetRuleContext() antlr.RuleContext { +func (s *SelectTumblingContext) GroupBy() IGroupByContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGroupByContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGroupByContext) +} + +func (s *SelectTumblingContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitSelectTumbling(s) + + default: + return t.VisitChildren(s) + } +} + +type SelectSimpleContext struct { + *SelectQueryContext +} + +func NewSelectSimpleContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectSimpleContext { + var p = new(SelectSimpleContext) + + p.SelectQueryContext = NewEmptySelectQueryContext() + p.parser = parser + p.CopyFrom(ctx.(*SelectQueryContext)) + + return p +} + +func (s *SelectSimpleContext) GetRuleContext() antlr.RuleContext { return s } -func (s *SelectQueryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) +func (s *SelectSimpleContext) K_SELECT() antlr.TerminalNode { + return s.GetToken(SqlParserK_SELECT, 0) } -func (s *SelectQueryContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *SelectSimpleContext) ResultColumns() IResultColumnsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IResultColumnsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IResultColumnsContext) +} + +func (s *SelectSimpleContext) EOQ() antlr.TerminalNode { + return s.GetToken(SqlParserEOQ, 0) +} + +func (s *SelectSimpleContext) WhereStatement() IWhereStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWhereStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IWhereStatementContext) +} + +func (s *SelectSimpleContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case SqlVisitor: - return t.VisitSelectQuery(s) + return t.VisitSelectSimple(s) default: return t.VisitChildren(s) @@ -404,6 +515,7 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { localctx = NewSelectQueryContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 2, SqlParserRULE_selectQuery) + var _la int defer func() { p.ExitRule() @@ -421,30 +533,82 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { } }() - p.EnterOuterAlt(localctx, 1) - { - p.SetState(27) - p.Match(SqlParserK_SELECT) - } + p.SetState(46) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 3, p.GetParserRuleContext()) { + case 1: + localctx = NewSelectSimpleContext(p, localctx) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(27) + p.Match(SqlParserK_SELECT) + } + { + p.SetState(28) + p.ResultColumns() + } + p.SetState(30) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) - { - p.SetState(28) - p.ResultColumns() - } + if _la == SqlParserK_WHERE { + { + p.SetState(29) + p.WhereStatement() + } - p.SetState(30) - p.GetErrorHandler().Sync(p) + } + { + p.SetState(32) + p.Match(SqlParserEOQ) + } - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 0, p.GetParserRuleContext()) == 1 { + case 2: + localctx = NewSelectTumblingContext(p, localctx) + p.EnterOuterAlt(localctx, 2) + { + p.SetState(34) + p.Match(SqlParserK_SELECT) + } { - p.SetState(29) - p.WhereStatement() + p.SetState(35) + p.ResultColumns() + } + { + p.SetState(36) + p.Match(SqlParserK_WINDOW_TUMBLING) + } + { + p.SetState(37) + p.Match(SqlParserNUMERIC_LITERAL) + } + p.SetState(39) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + if _la == SqlParserK_WHERE { + { + p.SetState(38) + p.WhereStatement() + } + + } + p.SetState(42) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + if _la == SqlParserK_GROUP_BY { + { + p.SetState(41) + p.GroupBy() + } + + } + { + p.SetState(44) + p.Match(SqlParserEOQ) } - } - { - p.SetState(32) - p.Match(SqlParserEOQ) } return localctx @@ -518,37 +682,12 @@ func (s *SelectAVGContext) GetRuleContext() antlr.RuleContext { return s } -func (s *SelectAVGContext) AllAvg() []IAvgContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IAvgContext); ok { - len++ - } - } - - tst := make([]IAvgContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IAvgContext); ok { - tst[i] = t.(IAvgContext) - i++ - } - } - - return tst -} - -func (s *SelectAVGContext) Avg(i int) IAvgContext { +func (s *SelectAVGContext) Avg() IAvgContext { var t antlr.RuleContext - j := 0 for _, ctx := range s.GetChildren() { if _, ok := ctx.(IAvgContext); ok { - if j == i { - t = ctx.(antlr.RuleContext) - break - } - j++ + t = ctx.(antlr.RuleContext) + break } } @@ -559,14 +698,6 @@ func (s *SelectAVGContext) Avg(i int) IAvgContext { return t.(IAvgContext) } -func (s *SelectAVGContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *SelectAVGContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - func (s *SelectAVGContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case SqlVisitor: @@ -710,7 +841,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { } }() - p.SetState(50) + p.SetState(58) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { @@ -718,24 +849,24 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectColumnsContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(34) + p.SetState(48) p.Column() } - p.SetState(39) + p.SetState(53) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for _la == SqlParserCOMMA { { - p.SetState(35) + p.SetState(49) p.Match(SqlParserCOMMA) } { - p.SetState(36) + p.SetState(50) p.Column() } - p.SetState(41) + p.SetState(55) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } @@ -744,33 +875,15 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectAVGContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(42) + p.SetState(56) p.Avg() } - p.SetState(45) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - for ok := true; ok; ok = _la == SqlParserCOMMA { - { - p.SetState(43) - p.Match(SqlParserCOMMA) - } - { - p.SetState(44) - p.Avg() - } - - p.SetState(47) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } case SqlParserSTAR: localctx = NewSelectStarContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(49) + p.SetState(57) p.Match(SqlParserSTAR) } @@ -866,7 +979,7 @@ func (p *SqlParser) Column() (localctx IColumnContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(52) + p.SetState(60) p.Match(SqlParserIDENTIFIER) } @@ -971,93 +1084,12 @@ func (s *WhereStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } } -type TumblingStmtContext struct { - *WhereStatementContext -} - -func NewTumblingStmtContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TumblingStmtContext { - var p = new(TumblingStmtContext) - - p.WhereStatementContext = NewEmptyWhereStatementContext() - p.parser = parser - p.CopyFrom(ctx.(*WhereStatementContext)) - - return p -} - -func (s *TumblingStmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *TumblingStmtContext) TumblingWindow() ITumblingWindowContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITumblingWindowContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(ITumblingWindowContext) -} - -func (s *TumblingStmtContext) GroupBy() IGroupByContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IGroupByContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IGroupByContext) -} - -func (s *TumblingStmtContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHERE, 0) -} - -func (s *TumblingStmtContext) Expr() IExprContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *TumblingStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { - switch t := visitor.(type) { - case SqlVisitor: - return t.VisitTumblingStmt(s) - - default: - return t.VisitChildren(s) - } -} - func (p *SqlParser) WhereStatement() (localctx IWhereStatementContext) { this := p _ = this localctx = NewWhereStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 8, SqlParserRULE_whereStatement) - var _la int defer func() { p.ExitRule() @@ -1075,155 +1107,90 @@ func (p *SqlParser) WhereStatement() (localctx IWhereStatementContext) { } }() - p.SetState(65) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserEOQ, SqlParserK_WHERE: - localctx = NewWhereStmtContext(p, localctx) - p.EnterOuterAlt(localctx, 1) - p.SetState(56) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - if _la == SqlParserK_WHERE { - { - p.SetState(54) - p.Match(SqlParserK_WHERE) - } - { - p.SetState(55) - p.expr(0) - } - - } - - case SqlParserK_WINDOW_TUMBLING: - localctx = NewTumblingStmtContext(p, localctx) - p.EnterOuterAlt(localctx, 2) - { - p.SetState(58) - p.TumblingWindow() - } - - p.SetState(61) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - if _la == SqlParserK_WHERE { - { - p.SetState(59) - p.Match(SqlParserK_WHERE) - } - { - p.SetState(60) - p.expr(0) - } - - } - - { - p.SetState(63) - p.GroupBy() - } - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + localctx = NewWhereStmtContext(p, localctx) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(62) + p.Match(SqlParserK_WHERE) + } + { + p.SetState(63) + p.expr(0) } return localctx } -// ITumblingWindowContext is an interface to support dynamic dispatch. -type ITumblingWindowContext interface { +// IWindowTumblingContext is an interface to support dynamic dispatch. +type IWindowTumblingContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser - // IsTumblingWindowContext differentiates from other interfaces. - IsTumblingWindowContext() + // IsWindowTumblingContext differentiates from other interfaces. + IsWindowTumblingContext() } -type TumblingWindowContext struct { +type WindowTumblingContext struct { *antlr.BaseParserRuleContext parser antlr.Parser } -func NewEmptyTumblingWindowContext() *TumblingWindowContext { - var p = new(TumblingWindowContext) +func NewEmptyWindowTumblingContext() *WindowTumblingContext { + var p = new(WindowTumblingContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_tumblingWindow + p.RuleIndex = SqlParserRULE_windowTumbling return p } -func (*TumblingWindowContext) IsTumblingWindowContext() {} +func (*WindowTumblingContext) IsWindowTumblingContext() {} -func NewTumblingWindowContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TumblingWindowContext { - var p = new(TumblingWindowContext) +func NewWindowTumblingContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *WindowTumblingContext { + var p = new(WindowTumblingContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = SqlParserRULE_tumblingWindow + p.RuleIndex = SqlParserRULE_windowTumbling return p } -func (s *TumblingWindowContext) GetParser() antlr.Parser { return s.parser } +func (s *WindowTumblingContext) GetParser() antlr.Parser { return s.parser } -func (s *TumblingWindowContext) K_WINDOW_TUMBLING() antlr.TerminalNode { +func (s *WindowTumblingContext) K_WINDOW_TUMBLING() antlr.TerminalNode { return s.GetToken(SqlParserK_WINDOW_TUMBLING, 0) } -func (s *TumblingWindowContext) NUMERIC_LITERAL() antlr.TerminalNode { +func (s *WindowTumblingContext) NUMERIC_LITERAL() antlr.TerminalNode { return s.GetToken(SqlParserNUMERIC_LITERAL, 0) } -func (s *TumblingWindowContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHERE, 0) -} - -func (s *TumblingWindowContext) Expr() IExprContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *TumblingWindowContext) GetRuleContext() antlr.RuleContext { +func (s *WindowTumblingContext) GetRuleContext() antlr.RuleContext { return s } -func (s *TumblingWindowContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *WindowTumblingContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *TumblingWindowContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *WindowTumblingContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case SqlVisitor: - return t.VisitTumblingWindow(s) + return t.VisitWindowTumbling(s) default: return t.VisitChildren(s) } } -func (p *SqlParser) TumblingWindow() (localctx ITumblingWindowContext) { +func (p *SqlParser) WindowTumbling() (localctx IWindowTumblingContext) { this := p _ = this - localctx = NewTumblingWindowContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 10, SqlParserRULE_tumblingWindow) + localctx = NewWindowTumblingContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 10, SqlParserRULE_windowTumbling) defer func() { p.ExitRule() @@ -1243,27 +1210,13 @@ func (p *SqlParser) TumblingWindow() (localctx ITumblingWindowContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(67) + p.SetState(65) p.Match(SqlParserK_WINDOW_TUMBLING) } { - p.SetState(68) + p.SetState(66) p.Match(SqlParserNUMERIC_LITERAL) } - p.SetState(71) - p.GetErrorHandler().Sync(p) - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 7, p.GetParserRuleContext()) == 1 { - { - p.SetState(69) - p.Match(SqlParserK_WHERE) - } - { - p.SetState(70) - p.expr(0) - } - - } return localctx } @@ -1382,46 +1335,6 @@ func (s *SimpleConditionContext) Accept(visitor antlr.ParseTreeVisitor) interfac } } -type NullConditionContext struct { - *ExprContext -} - -func NewNullConditionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *NullConditionContext { - var p = new(NullConditionContext) - - p.ExprContext = NewEmptyExprContext() - p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) - - return p -} - -func (s *NullConditionContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *NullConditionContext) IDENTIFIER() antlr.TerminalNode { - return s.GetToken(SqlParserIDENTIFIER, 0) -} - -func (s *NullConditionContext) K_IS_NULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_IS_NULL, 0) -} - -func (s *NullConditionContext) K_IS_NOT_NULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_IS_NOT_NULL, 0) -} - -func (s *NullConditionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { - switch t := visitor.(type) { - case SqlVisitor: - return t.VisitNullCondition(s) - - default: - return t.VisitChildren(s) - } -} - type CompoundRecursiveConditionContext struct { *ExprContext } @@ -1612,37 +1525,38 @@ func (p *SqlParser) expr(_p int) (localctx IExprContext) { var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(84) + p.SetState(77) p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 8, p.GetParserRuleContext()) { - case 1: + + switch p.GetTokenStream().LA(1) { + case SqlParserIDENTIFIER: localctx = NewSimpleConditionContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(74) + p.SetState(69) p.Match(SqlParserIDENTIFIER) } { - p.SetState(75) + p.SetState(70) p.ComparisonOperator() } { - p.SetState(76) + p.SetState(71) p.LiteralValue() } - case 2: + case SqlParserL_BRACKET: localctx = NewCompoundRecursiveConditionContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(78) + p.SetState(73) p.CompoundExpr() } { - p.SetState(79) + p.SetState(74) _la = p.GetTokenStream().LA(1) if !(_la == SqlParserK_AND || _la == SqlParserK_OR) { @@ -1653,35 +1567,17 @@ func (p *SqlParser) expr(_p int) (localctx IExprContext) { } } { - p.SetState(80) + p.SetState(75) p.CompoundExpr() } - case 3: - localctx = NewNullConditionContext(p, localctx) - p.SetParserRuleContext(localctx) - _prevctx = localctx - { - p.SetState(82) - p.Match(SqlParserIDENTIFIER) - } - { - p.SetState(83) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_IS_NULL || _la == SqlParserK_IS_NOT_NULL) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) } p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(91) + p.SetState(84) p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 9, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 7, p.GetParserRuleContext()) for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { if _alt == 1 { @@ -1691,13 +1587,13 @@ func (p *SqlParser) expr(_p int) (localctx IExprContext) { _prevctx = localctx localctx = NewSimpleRecursiveConditionContext(p, NewExprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(86) + p.SetState(79) if !(p.Precpred(p.GetParserRuleContext(), 1)) { panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", "")) } { - p.SetState(87) + p.SetState(80) _la = p.GetTokenStream().LA(1) if !(_la == SqlParserK_AND || _la == SqlParserK_OR) { @@ -1708,14 +1604,14 @@ func (p *SqlParser) expr(_p int) (localctx IExprContext) { } } { - p.SetState(88) + p.SetState(81) p.expr(2) } } - p.SetState(93) + p.SetState(86) p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 9, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 7, p.GetParserRuleContext()) } return localctx @@ -1826,15 +1722,15 @@ func (p *SqlParser) CompoundExpr() (localctx ICompoundExprContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(94) + p.SetState(87) p.Match(SqlParserL_BRACKET) } { - p.SetState(95) + p.SetState(88) p.expr(0) } { - p.SetState(96) + p.SetState(89) p.Match(SqlParserR_BRACKET) } @@ -1907,6 +1803,10 @@ func (s *ComparisonOperatorContext) K_LIKE() antlr.TerminalNode { return s.GetToken(SqlParserK_LIKE, 0) } +func (s *ComparisonOperatorContext) K_NOT_LIKE() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT_LIKE, 0) +} + func (s *ComparisonOperatorContext) K_IN() antlr.TerminalNode { return s.GetToken(SqlParserK_IN, 0) } @@ -1963,10 +1863,10 @@ func (p *SqlParser) ComparisonOperator() (localctx IComparisonOperatorContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(98) + p.SetState(91) _la = p.GetTokenStream().LA(1) - if !(((_la)&-(0x1f+1)) == 0 && ((1< 4;` + visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) + + in <- ls + //visitor.Start() + // in <- ls + select { + case ls := <-out: + assert.Equal(t, 100, ls.Len()) + + case err := <-outErr: + fmt.Println(err) + + } + + in <- generateTestLogs() + ls = <-out + assert.Equal(t, 100, ls.Len()) + + visitor.Stop() + +} diff --git a/processor/stream_processor/parser/sql_visitor.go b/processor/stream_processor/parser/sql_visitor.go index ae8290b84b96..766a4c660a5a 100644 --- a/processor/stream_processor/parser/sql_visitor.go +++ b/processor/stream_processor/parser/sql_visitor.go @@ -11,8 +11,11 @@ type SqlVisitor interface { // Visit a parse tree produced by SqlParser#sqlQuery. VisitSqlQuery(ctx *SqlQueryContext) interface{} - // Visit a parse tree produced by SqlParser#selectQuery. - VisitSelectQuery(ctx *SelectQueryContext) interface{} + // Visit a parse tree produced by SqlParser#selectSimple. + VisitSelectSimple(ctx *SelectSimpleContext) interface{} + + // Visit a parse tree produced by SqlParser#selectTumbling. + VisitSelectTumbling(ctx *SelectTumblingContext) interface{} // Visit a parse tree produced by SqlParser#selectColumns. VisitSelectColumns(ctx *SelectColumnsContext) interface{} @@ -29,18 +32,12 @@ type SqlVisitor interface { // Visit a parse tree produced by SqlParser#whereStmt. VisitWhereStmt(ctx *WhereStmtContext) interface{} - // Visit a parse tree produced by SqlParser#tumblingStmt. - VisitTumblingStmt(ctx *TumblingStmtContext) interface{} - - // Visit a parse tree produced by SqlParser#tumblingWindow. - VisitTumblingWindow(ctx *TumblingWindowContext) interface{} + // Visit a parse tree produced by SqlParser#windowTumbling. + VisitWindowTumbling(ctx *WindowTumblingContext) interface{} // Visit a parse tree produced by SqlParser#simpleCondition. VisitSimpleCondition(ctx *SimpleConditionContext) interface{} - // Visit a parse tree produced by SqlParser#nullCondition. - VisitNullCondition(ctx *NullConditionContext) interface{} - // Visit a parse tree produced by SqlParser#compoundRecursiveCondition. VisitCompoundRecursiveCondition(ctx *CompoundRecursiveConditionContext) interface{} diff --git a/processor/stream_processor/parser/test.csv b/processor/stream_processor/parser/test.csv new file mode 100644 index 000000000000..0605e44aa48f --- /dev/null +++ b/processor/stream_processor/parser/test.csv @@ -0,0 +1,100 @@ +Test name 0,true,0 +Test name 1,false,1 +Test name 2,true,2 +Test name 3,false,3 +Test name 4,true,4 +Test name 5,false,5 +Test name 6,true,6 +Test name 7,false,7 +Test name 8,true,8 +Test name 9,false,9 +Test name 10,true,10 +Test name 11,false,11 +Test name 12,true,12 +Test name 13,false,13 +Test name 14,true,14 +Test name 15,false,15 +Test name 16,true,16 +Test name 17,false,17 +Test name 18,true,18 +Test name 19,false,19 +Test name 20,true,20 +Test name 21,false,21 +Test name 22,true,22 +Test name 23,false,23 +Test name 24,true,24 +Test name 25,false,25 +Test name 26,true,26 +Test name 27,false,27 +Test name 28,true,28 +Test name 29,false,29 +Test name 30,true,30 +Test name 31,false,31 +Test name 32,true,32 +Test name 33,false,33 +Test name 34,true,34 +Test name 35,false,35 +Test name 36,true,36 +Test name 37,false,37 +Test name 38,true,38 +Test name 39,false,39 +Test name 40,true,40 +Test name 41,false,41 +Test name 42,true,42 +Test name 43,false,43 +Test name 44,true,44 +Test name 45,false,45 +Test name 46,true,46 +Test name 47,false,47 +Test name 48,true,48 +Test name 49,false,49 +Test name 50,true,50 +Test name 51,false,51 +Test name 52,true,52 +Test name 53,false,53 +Test name 54,true,54 +Test name 55,false,55 +Test name 56,true,56 +Test name 57,false,57 +Test name 58,true,58 +Test name 59,false,59 +Test name 60,true,60 +Test name 61,false,61 +Test name 62,true,62 +Test name 63,false,63 +Test name 64,true,64 +Test name 65,false,65 +Test name 66,true,66 +Test name 67,false,67 +Test name 68,true,68 +Test name 69,false,69 +Test name 70,true,70 +Test name 71,false,71 +Test name 72,true,72 +Test name 73,false,73 +Test name 74,true,74 +Test name 75,false,75 +Test name 76,true,76 +Test name 77,false,77 +Test name 78,true,78 +Test name 79,false,79 +Test name 80,true,80 +Test name 81,false,81 +Test name 82,true,82 +Test name 83,false,83 +Test name 84,true,84 +Test name 85,false,85 +Test name 86,true,86 +Test name 87,false,87 +Test name 88,true,88 +Test name 89,false,89 +Test name 90,true,90 +Test name 91,false,91 +Test name 92,true,92 +Test name 93,false,93 +Test name 94,true,94 +Test name 95,false,95 +Test name 96,true,96 +Test name 97,false,97 +Test name 98,true,98 +Test name 99,false,99 diff --git a/processor/stream_processor/parser/visitor_utils.go b/processor/stream_processor/parser/visitor_utils.go index 900fdc80cfd8..e696127de369 100644 --- a/processor/stream_processor/parser/visitor_utils.go +++ b/processor/stream_processor/parser/visitor_utils.go @@ -31,6 +31,8 @@ func compareString(ctx *SimpleConditionContext, fieldVal, comparisonVal string) return fieldVal <= comparisonVal case SqlParserK_LIKE: return strings.Contains(fmt.Sprint(fieldVal), fmt.Sprint(comparisonVal)) + case SqlParserK_NOT_LIKE: + return !strings.Contains(fmt.Sprint(fieldVal), fmt.Sprint(comparisonVal)) case SqlParserK_IS_NULL: return len(fmt.Sprint(fieldVal)) == 0 case SqlParserK_IS_NOT_NULL: From 21c68d6a0070ecb8ee1471cab0c18cdb98a4c5b4 Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Fri, 5 Aug 2022 14:39:11 +0300 Subject: [PATCH 12/31] refactor/tumbling visitor/tests updated --- processor/stream_processor/Sql.g4 | 10 +- processor/stream_processor/parser/Sql.interp | 2 +- .../stream_processor/parser/sql_parser.go | 184 ++++++++-------- .../parser/sql_stream_visitor.go | 37 ++-- .../parser/sql_stream_visitor_test.go | 197 ++++++++---------- .../parser/windowTumblingVisitor.go | 54 +++++ 6 files changed, 260 insertions(+), 224 deletions(-) create mode 100644 processor/stream_processor/parser/windowTumblingVisitor.go diff --git a/processor/stream_processor/Sql.g4 b/processor/stream_processor/Sql.g4 index cad85b784fd8..d0418636924a 100644 --- a/processor/stream_processor/Sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -7,8 +7,8 @@ sqlQuery : selectQuery EOF; selectQuery - : K_SELECT resultColumns (whereStatement)? EOQ #selectSimple - | K_SELECT resultColumns K_WINDOW_TUMBLING NUMERIC_LITERAL (whereStatement)? (groupBy)? EOQ #selectTumbling + : K_SELECT resultColumns (whereStatement)? EOQ #selectSimple + | K_SELECT resultColumns windowTumbling (whereStatement)? (groupBy)? EOQ #selectTumbling ; @@ -28,8 +28,8 @@ whereStatement ; windowTumbling - : K_WINDOW_TUMBLING NUMERIC_LITERAL - ; + : K_WINDOW_TUMBLING NUMERIC_LITERAL + ; expr @@ -61,7 +61,7 @@ groupBy avg - : (K_MIN | K_MAX | K_COUNT | K_AVG) L_BRACKET column R_BRACKET; + : (K_MIN | K_MAX | K_COUNT | K_AVG) L_BRACKET (column | STAR) R_BRACKET; SPACE : [ \u000B\t\r\n] -> channel(HIDDEN) diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp index a143462118be..1b2622686f90 100644 --- a/processor/stream_processor/parser/Sql.interp +++ b/processor/stream_processor/parser/Sql.interp @@ -96,4 +96,4 @@ avg atn: -[4, 1, 38, 104, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 31, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 40, 8, 1, 1, 1, 3, 1, 43, 8, 1, 1, 1, 1, 1, 3, 1, 47, 8, 1, 1, 2, 1, 2, 1, 2, 5, 2, 52, 8, 2, 10, 2, 12, 2, 55, 9, 2, 1, 2, 1, 2, 3, 2, 59, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 78, 8, 6, 1, 6, 1, 6, 1, 6, 5, 6, 83, 8, 6, 10, 6, 12, 6, 86, 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 0, 1, 12, 12, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 0, 4, 1, 0, 11, 12, 2, 0, 13, 21, 26, 27, 1, 0, 35, 37, 1, 0, 30, 33, 100, 0, 24, 1, 0, 0, 0, 2, 46, 1, 0, 0, 0, 4, 58, 1, 0, 0, 0, 6, 60, 1, 0, 0, 0, 8, 62, 1, 0, 0, 0, 10, 65, 1, 0, 0, 0, 12, 77, 1, 0, 0, 0, 14, 87, 1, 0, 0, 0, 16, 91, 1, 0, 0, 0, 18, 93, 1, 0, 0, 0, 20, 95, 1, 0, 0, 0, 22, 98, 1, 0, 0, 0, 24, 25, 3, 2, 1, 0, 25, 26, 5, 0, 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 5, 7, 0, 0, 28, 30, 3, 4, 2, 0, 29, 31, 3, 8, 4, 0, 30, 29, 1, 0, 0, 0, 30, 31, 1, 0, 0, 0, 31, 32, 1, 0, 0, 0, 32, 33, 5, 6, 0, 0, 33, 47, 1, 0, 0, 0, 34, 35, 5, 7, 0, 0, 35, 36, 3, 4, 2, 0, 36, 37, 5, 9, 0, 0, 37, 39, 5, 36, 0, 0, 38, 40, 3, 8, 4, 0, 39, 38, 1, 0, 0, 0, 39, 40, 1, 0, 0, 0, 40, 42, 1, 0, 0, 0, 41, 43, 3, 20, 10, 0, 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 45, 5, 6, 0, 0, 45, 47, 1, 0, 0, 0, 46, 27, 1, 0, 0, 0, 46, 34, 1, 0, 0, 0, 47, 3, 1, 0, 0, 0, 48, 53, 3, 6, 3, 0, 49, 50, 5, 3, 0, 0, 50, 52, 3, 6, 3, 0, 51, 49, 1, 0, 0, 0, 52, 55, 1, 0, 0, 0, 53, 51, 1, 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 59, 1, 0, 0, 0, 55, 53, 1, 0, 0, 0, 56, 59, 3, 22, 11, 0, 57, 59, 5, 38, 0, 0, 58, 48, 1, 0, 0, 0, 58, 56, 1, 0, 0, 0, 58, 57, 1, 0, 0, 0, 59, 5, 1, 0, 0, 0, 60, 61, 5, 34, 0, 0, 61, 7, 1, 0, 0, 0, 62, 63, 5, 8, 0, 0, 63, 64, 3, 12, 6, 0, 64, 9, 1, 0, 0, 0, 65, 66, 5, 9, 0, 0, 66, 67, 5, 36, 0, 0, 67, 11, 1, 0, 0, 0, 68, 69, 6, 6, -1, 0, 69, 70, 5, 34, 0, 0, 70, 71, 3, 16, 8, 0, 71, 72, 3, 18, 9, 0, 72, 78, 1, 0, 0, 0, 73, 74, 3, 14, 7, 0, 74, 75, 7, 0, 0, 0, 75, 76, 3, 14, 7, 0, 76, 78, 1, 0, 0, 0, 77, 68, 1, 0, 0, 0, 77, 73, 1, 0, 0, 0, 78, 84, 1, 0, 0, 0, 79, 80, 10, 1, 0, 0, 80, 81, 7, 0, 0, 0, 81, 83, 3, 12, 6, 2, 82, 79, 1, 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 13, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 88, 5, 4, 0, 0, 88, 89, 3, 12, 6, 0, 89, 90, 5, 5, 0, 0, 90, 15, 1, 0, 0, 0, 91, 92, 7, 1, 0, 0, 92, 17, 1, 0, 0, 0, 93, 94, 7, 2, 0, 0, 94, 19, 1, 0, 0, 0, 95, 96, 5, 10, 0, 0, 96, 97, 3, 6, 3, 0, 97, 21, 1, 0, 0, 0, 98, 99, 7, 3, 0, 0, 99, 100, 5, 4, 0, 0, 100, 101, 3, 6, 3, 0, 101, 102, 5, 5, 0, 0, 102, 23, 1, 0, 0, 0, 8, 30, 39, 42, 46, 53, 58, 77, 84] \ No newline at end of file +[4, 1, 38, 103, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 31, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 39, 8, 1, 1, 1, 3, 1, 42, 8, 1, 1, 1, 1, 1, 3, 1, 46, 8, 1, 1, 2, 1, 2, 1, 2, 5, 2, 51, 8, 2, 10, 2, 12, 2, 54, 9, 2, 1, 2, 1, 2, 3, 2, 58, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 77, 8, 6, 1, 6, 1, 6, 1, 6, 5, 6, 82, 8, 6, 10, 6, 12, 6, 85, 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 0, 1, 12, 12, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 0, 4, 1, 0, 11, 12, 2, 0, 13, 21, 26, 27, 1, 0, 35, 37, 1, 0, 30, 33, 99, 0, 24, 1, 0, 0, 0, 2, 45, 1, 0, 0, 0, 4, 57, 1, 0, 0, 0, 6, 59, 1, 0, 0, 0, 8, 61, 1, 0, 0, 0, 10, 64, 1, 0, 0, 0, 12, 76, 1, 0, 0, 0, 14, 86, 1, 0, 0, 0, 16, 90, 1, 0, 0, 0, 18, 92, 1, 0, 0, 0, 20, 94, 1, 0, 0, 0, 22, 97, 1, 0, 0, 0, 24, 25, 3, 2, 1, 0, 25, 26, 5, 0, 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 5, 7, 0, 0, 28, 30, 3, 4, 2, 0, 29, 31, 3, 8, 4, 0, 30, 29, 1, 0, 0, 0, 30, 31, 1, 0, 0, 0, 31, 32, 1, 0, 0, 0, 32, 33, 5, 6, 0, 0, 33, 46, 1, 0, 0, 0, 34, 35, 5, 7, 0, 0, 35, 36, 3, 4, 2, 0, 36, 38, 3, 10, 5, 0, 37, 39, 3, 8, 4, 0, 38, 37, 1, 0, 0, 0, 38, 39, 1, 0, 0, 0, 39, 41, 1, 0, 0, 0, 40, 42, 3, 20, 10, 0, 41, 40, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 5, 6, 0, 0, 44, 46, 1, 0, 0, 0, 45, 27, 1, 0, 0, 0, 45, 34, 1, 0, 0, 0, 46, 3, 1, 0, 0, 0, 47, 52, 3, 6, 3, 0, 48, 49, 5, 3, 0, 0, 49, 51, 3, 6, 3, 0, 50, 48, 1, 0, 0, 0, 51, 54, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, 58, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 55, 58, 3, 22, 11, 0, 56, 58, 5, 38, 0, 0, 57, 47, 1, 0, 0, 0, 57, 55, 1, 0, 0, 0, 57, 56, 1, 0, 0, 0, 58, 5, 1, 0, 0, 0, 59, 60, 5, 34, 0, 0, 60, 7, 1, 0, 0, 0, 61, 62, 5, 8, 0, 0, 62, 63, 3, 12, 6, 0, 63, 9, 1, 0, 0, 0, 64, 65, 5, 9, 0, 0, 65, 66, 5, 36, 0, 0, 66, 11, 1, 0, 0, 0, 67, 68, 6, 6, -1, 0, 68, 69, 5, 34, 0, 0, 69, 70, 3, 16, 8, 0, 70, 71, 3, 18, 9, 0, 71, 77, 1, 0, 0, 0, 72, 73, 3, 14, 7, 0, 73, 74, 7, 0, 0, 0, 74, 75, 3, 14, 7, 0, 75, 77, 1, 0, 0, 0, 76, 67, 1, 0, 0, 0, 76, 72, 1, 0, 0, 0, 77, 83, 1, 0, 0, 0, 78, 79, 10, 1, 0, 0, 79, 80, 7, 0, 0, 0, 80, 82, 3, 12, 6, 2, 81, 78, 1, 0, 0, 0, 82, 85, 1, 0, 0, 0, 83, 81, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 13, 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, 86, 87, 5, 4, 0, 0, 87, 88, 3, 12, 6, 0, 88, 89, 5, 5, 0, 0, 89, 15, 1, 0, 0, 0, 90, 91, 7, 1, 0, 0, 91, 17, 1, 0, 0, 0, 92, 93, 7, 2, 0, 0, 93, 19, 1, 0, 0, 0, 94, 95, 5, 10, 0, 0, 95, 96, 3, 6, 3, 0, 96, 21, 1, 0, 0, 0, 97, 98, 7, 3, 0, 0, 98, 99, 5, 4, 0, 0, 99, 100, 3, 6, 3, 0, 100, 101, 5, 5, 0, 0, 101, 23, 1, 0, 0, 0, 8, 30, 38, 41, 45, 52, 57, 76, 83] \ No newline at end of file diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index 347edc505b2f..4e02778b6225 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -53,46 +53,46 @@ func sqlParserInit() { } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 38, 104, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 38, 103, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 31, 8, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 40, 8, 1, 1, 1, 3, 1, 43, - 8, 1, 1, 1, 1, 1, 3, 1, 47, 8, 1, 1, 2, 1, 2, 1, 2, 5, 2, 52, 8, 2, 10, - 2, 12, 2, 55, 9, 2, 1, 2, 1, 2, 3, 2, 59, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, - 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, - 1, 6, 3, 6, 78, 8, 6, 1, 6, 1, 6, 1, 6, 5, 6, 83, 8, 6, 10, 6, 12, 6, 86, - 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, - 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 0, 1, 12, 12, 0, 2, 4, 6, - 8, 10, 12, 14, 16, 18, 20, 22, 0, 4, 1, 0, 11, 12, 2, 0, 13, 21, 26, 27, - 1, 0, 35, 37, 1, 0, 30, 33, 100, 0, 24, 1, 0, 0, 0, 2, 46, 1, 0, 0, 0, - 4, 58, 1, 0, 0, 0, 6, 60, 1, 0, 0, 0, 8, 62, 1, 0, 0, 0, 10, 65, 1, 0, - 0, 0, 12, 77, 1, 0, 0, 0, 14, 87, 1, 0, 0, 0, 16, 91, 1, 0, 0, 0, 18, 93, - 1, 0, 0, 0, 20, 95, 1, 0, 0, 0, 22, 98, 1, 0, 0, 0, 24, 25, 3, 2, 1, 0, - 25, 26, 5, 0, 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 5, 7, 0, 0, 28, 30, 3, 4, - 2, 0, 29, 31, 3, 8, 4, 0, 30, 29, 1, 0, 0, 0, 30, 31, 1, 0, 0, 0, 31, 32, - 1, 0, 0, 0, 32, 33, 5, 6, 0, 0, 33, 47, 1, 0, 0, 0, 34, 35, 5, 7, 0, 0, - 35, 36, 3, 4, 2, 0, 36, 37, 5, 9, 0, 0, 37, 39, 5, 36, 0, 0, 38, 40, 3, - 8, 4, 0, 39, 38, 1, 0, 0, 0, 39, 40, 1, 0, 0, 0, 40, 42, 1, 0, 0, 0, 41, - 43, 3, 20, 10, 0, 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 1, 0, - 0, 0, 44, 45, 5, 6, 0, 0, 45, 47, 1, 0, 0, 0, 46, 27, 1, 0, 0, 0, 46, 34, - 1, 0, 0, 0, 47, 3, 1, 0, 0, 0, 48, 53, 3, 6, 3, 0, 49, 50, 5, 3, 0, 0, - 50, 52, 3, 6, 3, 0, 51, 49, 1, 0, 0, 0, 52, 55, 1, 0, 0, 0, 53, 51, 1, - 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 59, 1, 0, 0, 0, 55, 53, 1, 0, 0, 0, 56, - 59, 3, 22, 11, 0, 57, 59, 5, 38, 0, 0, 58, 48, 1, 0, 0, 0, 58, 56, 1, 0, - 0, 0, 58, 57, 1, 0, 0, 0, 59, 5, 1, 0, 0, 0, 60, 61, 5, 34, 0, 0, 61, 7, - 1, 0, 0, 0, 62, 63, 5, 8, 0, 0, 63, 64, 3, 12, 6, 0, 64, 9, 1, 0, 0, 0, - 65, 66, 5, 9, 0, 0, 66, 67, 5, 36, 0, 0, 67, 11, 1, 0, 0, 0, 68, 69, 6, - 6, -1, 0, 69, 70, 5, 34, 0, 0, 70, 71, 3, 16, 8, 0, 71, 72, 3, 18, 9, 0, - 72, 78, 1, 0, 0, 0, 73, 74, 3, 14, 7, 0, 74, 75, 7, 0, 0, 0, 75, 76, 3, - 14, 7, 0, 76, 78, 1, 0, 0, 0, 77, 68, 1, 0, 0, 0, 77, 73, 1, 0, 0, 0, 78, - 84, 1, 0, 0, 0, 79, 80, 10, 1, 0, 0, 80, 81, 7, 0, 0, 0, 81, 83, 3, 12, - 6, 2, 82, 79, 1, 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, - 1, 0, 0, 0, 85, 13, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 88, 5, 4, 0, 0, - 88, 89, 3, 12, 6, 0, 89, 90, 5, 5, 0, 0, 90, 15, 1, 0, 0, 0, 91, 92, 7, - 1, 0, 0, 92, 17, 1, 0, 0, 0, 93, 94, 7, 2, 0, 0, 94, 19, 1, 0, 0, 0, 95, - 96, 5, 10, 0, 0, 96, 97, 3, 6, 3, 0, 97, 21, 1, 0, 0, 0, 98, 99, 7, 3, - 0, 0, 99, 100, 5, 4, 0, 0, 100, 101, 3, 6, 3, 0, 101, 102, 5, 5, 0, 0, - 102, 23, 1, 0, 0, 0, 8, 30, 39, 42, 46, 53, 58, 77, 84, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 39, 8, 1, 1, 1, 3, 1, 42, 8, 1, + 1, 1, 1, 1, 3, 1, 46, 8, 1, 1, 2, 1, 2, 1, 2, 5, 2, 51, 8, 2, 10, 2, 12, + 2, 54, 9, 2, 1, 2, 1, 2, 3, 2, 58, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, + 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, + 3, 6, 77, 8, 6, 1, 6, 1, 6, 1, 6, 5, 6, 82, 8, 6, 10, 6, 12, 6, 85, 9, + 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, + 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 0, 1, 12, 12, 0, 2, 4, 6, 8, + 10, 12, 14, 16, 18, 20, 22, 0, 4, 1, 0, 11, 12, 2, 0, 13, 21, 26, 27, 1, + 0, 35, 37, 1, 0, 30, 33, 99, 0, 24, 1, 0, 0, 0, 2, 45, 1, 0, 0, 0, 4, 57, + 1, 0, 0, 0, 6, 59, 1, 0, 0, 0, 8, 61, 1, 0, 0, 0, 10, 64, 1, 0, 0, 0, 12, + 76, 1, 0, 0, 0, 14, 86, 1, 0, 0, 0, 16, 90, 1, 0, 0, 0, 18, 92, 1, 0, 0, + 0, 20, 94, 1, 0, 0, 0, 22, 97, 1, 0, 0, 0, 24, 25, 3, 2, 1, 0, 25, 26, + 5, 0, 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 5, 7, 0, 0, 28, 30, 3, 4, 2, 0, + 29, 31, 3, 8, 4, 0, 30, 29, 1, 0, 0, 0, 30, 31, 1, 0, 0, 0, 31, 32, 1, + 0, 0, 0, 32, 33, 5, 6, 0, 0, 33, 46, 1, 0, 0, 0, 34, 35, 5, 7, 0, 0, 35, + 36, 3, 4, 2, 0, 36, 38, 3, 10, 5, 0, 37, 39, 3, 8, 4, 0, 38, 37, 1, 0, + 0, 0, 38, 39, 1, 0, 0, 0, 39, 41, 1, 0, 0, 0, 40, 42, 3, 20, 10, 0, 41, + 40, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 5, 6, 0, + 0, 44, 46, 1, 0, 0, 0, 45, 27, 1, 0, 0, 0, 45, 34, 1, 0, 0, 0, 46, 3, 1, + 0, 0, 0, 47, 52, 3, 6, 3, 0, 48, 49, 5, 3, 0, 0, 49, 51, 3, 6, 3, 0, 50, + 48, 1, 0, 0, 0, 51, 54, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, + 0, 53, 58, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 55, 58, 3, 22, 11, 0, 56, 58, + 5, 38, 0, 0, 57, 47, 1, 0, 0, 0, 57, 55, 1, 0, 0, 0, 57, 56, 1, 0, 0, 0, + 58, 5, 1, 0, 0, 0, 59, 60, 5, 34, 0, 0, 60, 7, 1, 0, 0, 0, 61, 62, 5, 8, + 0, 0, 62, 63, 3, 12, 6, 0, 63, 9, 1, 0, 0, 0, 64, 65, 5, 9, 0, 0, 65, 66, + 5, 36, 0, 0, 66, 11, 1, 0, 0, 0, 67, 68, 6, 6, -1, 0, 68, 69, 5, 34, 0, + 0, 69, 70, 3, 16, 8, 0, 70, 71, 3, 18, 9, 0, 71, 77, 1, 0, 0, 0, 72, 73, + 3, 14, 7, 0, 73, 74, 7, 0, 0, 0, 74, 75, 3, 14, 7, 0, 75, 77, 1, 0, 0, + 0, 76, 67, 1, 0, 0, 0, 76, 72, 1, 0, 0, 0, 77, 83, 1, 0, 0, 0, 78, 79, + 10, 1, 0, 0, 79, 80, 7, 0, 0, 0, 80, 82, 3, 12, 6, 2, 81, 78, 1, 0, 0, + 0, 82, 85, 1, 0, 0, 0, 83, 81, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 13, + 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, 86, 87, 5, 4, 0, 0, 87, 88, 3, 12, 6, 0, + 88, 89, 5, 5, 0, 0, 89, 15, 1, 0, 0, 0, 90, 91, 7, 1, 0, 0, 91, 17, 1, + 0, 0, 0, 92, 93, 7, 2, 0, 0, 93, 19, 1, 0, 0, 0, 94, 95, 5, 10, 0, 0, 95, + 96, 3, 6, 3, 0, 96, 21, 1, 0, 0, 0, 97, 98, 7, 3, 0, 0, 98, 99, 5, 4, 0, + 0, 99, 100, 3, 6, 3, 0, 100, 101, 5, 5, 0, 0, 101, 23, 1, 0, 0, 0, 8, 30, + 38, 41, 45, 52, 57, 76, 83, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -387,12 +387,20 @@ func (s *SelectTumblingContext) ResultColumns() IResultColumnsContext { return t.(IResultColumnsContext) } -func (s *SelectTumblingContext) K_WINDOW_TUMBLING() antlr.TerminalNode { - return s.GetToken(SqlParserK_WINDOW_TUMBLING, 0) -} +func (s *SelectTumblingContext) WindowTumbling() IWindowTumblingContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWindowTumblingContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } -func (s *SelectTumblingContext) NUMERIC_LITERAL() antlr.TerminalNode { - return s.GetToken(SqlParserNUMERIC_LITERAL, 0) + if t == nil { + return nil + } + + return t.(IWindowTumblingContext) } func (s *SelectTumblingContext) EOQ() antlr.TerminalNode { @@ -533,7 +541,7 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { } }() - p.SetState(46) + p.SetState(45) p.GetErrorHandler().Sync(p) switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 3, p.GetParserRuleContext()) { case 1: @@ -576,36 +584,32 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { } { p.SetState(36) - p.Match(SqlParserK_WINDOW_TUMBLING) + p.WindowTumbling() } - { - p.SetState(37) - p.Match(SqlParserNUMERIC_LITERAL) - } - p.SetState(39) + p.SetState(38) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(38) + p.SetState(37) p.WhereStatement() } } - p.SetState(42) + p.SetState(41) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_GROUP_BY { { - p.SetState(41) + p.SetState(40) p.GroupBy() } } { - p.SetState(44) + p.SetState(43) p.Match(SqlParserEOQ) } @@ -841,7 +845,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { } }() - p.SetState(58) + p.SetState(57) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { @@ -849,24 +853,24 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectColumnsContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(48) + p.SetState(47) p.Column() } - p.SetState(53) + p.SetState(52) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for _la == SqlParserCOMMA { { - p.SetState(49) + p.SetState(48) p.Match(SqlParserCOMMA) } { - p.SetState(50) + p.SetState(49) p.Column() } - p.SetState(55) + p.SetState(54) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } @@ -875,7 +879,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectAVGContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(56) + p.SetState(55) p.Avg() } @@ -883,7 +887,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectStarContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(57) + p.SetState(56) p.Match(SqlParserSTAR) } @@ -979,7 +983,7 @@ func (p *SqlParser) Column() (localctx IColumnContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(60) + p.SetState(59) p.Match(SqlParserIDENTIFIER) } @@ -1110,11 +1114,11 @@ func (p *SqlParser) WhereStatement() (localctx IWhereStatementContext) { localctx = NewWhereStmtContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(62) + p.SetState(61) p.Match(SqlParserK_WHERE) } { - p.SetState(63) + p.SetState(62) p.expr(0) } @@ -1210,11 +1214,11 @@ func (p *SqlParser) WindowTumbling() (localctx IWindowTumblingContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(65) + p.SetState(64) p.Match(SqlParserK_WINDOW_TUMBLING) } { - p.SetState(66) + p.SetState(65) p.Match(SqlParserNUMERIC_LITERAL) } @@ -1525,7 +1529,7 @@ func (p *SqlParser) expr(_p int) (localctx IExprContext) { var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(77) + p.SetState(76) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { @@ -1535,15 +1539,15 @@ func (p *SqlParser) expr(_p int) (localctx IExprContext) { _prevctx = localctx { - p.SetState(69) + p.SetState(68) p.Match(SqlParserIDENTIFIER) } { - p.SetState(70) + p.SetState(69) p.ComparisonOperator() } { - p.SetState(71) + p.SetState(70) p.LiteralValue() } @@ -1552,11 +1556,11 @@ func (p *SqlParser) expr(_p int) (localctx IExprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(73) + p.SetState(72) p.CompoundExpr() } { - p.SetState(74) + p.SetState(73) _la = p.GetTokenStream().LA(1) if !(_la == SqlParserK_AND || _la == SqlParserK_OR) { @@ -1567,7 +1571,7 @@ func (p *SqlParser) expr(_p int) (localctx IExprContext) { } } { - p.SetState(75) + p.SetState(74) p.CompoundExpr() } @@ -1575,7 +1579,7 @@ func (p *SqlParser) expr(_p int) (localctx IExprContext) { panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) } p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(84) + p.SetState(83) p.GetErrorHandler().Sync(p) _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 7, p.GetParserRuleContext()) @@ -1587,13 +1591,13 @@ func (p *SqlParser) expr(_p int) (localctx IExprContext) { _prevctx = localctx localctx = NewSimpleRecursiveConditionContext(p, NewExprContext(p, _parentctx, _parentState)) p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(79) + p.SetState(78) if !(p.Precpred(p.GetParserRuleContext(), 1)) { panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", "")) } { - p.SetState(80) + p.SetState(79) _la = p.GetTokenStream().LA(1) if !(_la == SqlParserK_AND || _la == SqlParserK_OR) { @@ -1604,12 +1608,12 @@ func (p *SqlParser) expr(_p int) (localctx IExprContext) { } } { - p.SetState(81) + p.SetState(80) p.expr(2) } } - p.SetState(86) + p.SetState(85) p.GetErrorHandler().Sync(p) _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 7, p.GetParserRuleContext()) } @@ -1722,15 +1726,15 @@ func (p *SqlParser) CompoundExpr() (localctx ICompoundExprContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(87) + p.SetState(86) p.Match(SqlParserL_BRACKET) } { - p.SetState(88) + p.SetState(87) p.expr(0) } { - p.SetState(89) + p.SetState(88) p.Match(SqlParserR_BRACKET) } @@ -1863,7 +1867,7 @@ func (p *SqlParser) ComparisonOperator() (localctx IComparisonOperatorContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(91) + p.SetState(90) _la = p.GetTokenStream().LA(1) if !(((_la)&-(0x1f+1)) == 0 && ((1< 4;` - visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) - - in <- ls - //visitor.Start() - // in <- ls - select { - case ls := <-out: - assert.Equal(t, 100, ls.Len()) - - case err := <-outErr: - fmt.Println(err) - +func TestIsWindowTumbling(t *testing.T) { + tests := []struct { + name string + query string + value int + res bool + }{ + { + name: "not tumbling query", + query: `SELECT * WHERE price > 80 or name like '3';`, + value: 0, + res: false, + }, + { + name: "tumbling query", + query: `select max(price) window tumbling 3 where price > 4;`, + value: 3, + res: true, + }, + { + name: "incorrect tumbling query", + query: `select max(price) window tumbling kwa where price > 4;`, + value: 0, + res: false, + }, } - in <- generateTestLogs() - ls = <-out - assert.Equal(t, 100, ls.Len()) - - visitor.Stop() - + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + res, val := IsTumblingQuery(tt.query) + assert.Equal(t, tt.value, val) + assert.Equal(t, tt.res, res) + }) + } } diff --git a/processor/stream_processor/parser/windowTumblingVisitor.go b/processor/stream_processor/parser/windowTumblingVisitor.go new file mode 100644 index 000000000000..1abb4b9bd6a4 --- /dev/null +++ b/processor/stream_processor/parser/windowTumblingVisitor.go @@ -0,0 +1,54 @@ +package parser + +import ( + "errors" + "strconv" + + "github.com/antlr/antlr4/runtime/Go/antlr" +) + +//This is just to determine if it is window tumbling query and get time period value + +type TumblingVisitor struct { + *BaseSqlVisitor +} + +func IsTumblingQuery(query string) (bool, int) { + is := antlr.NewInputStream(query) + lexer := NewSqlLexer(is) + stream := antlr.NewCommonTokenStream(lexer, antlr.TokenDefaultChannel) + stream.Size() + parser := NewSqlParser(stream) + + t := &TumblingVisitor{ + BaseSqlVisitor: &BaseSqlVisitor{}, + } + switch res := t.Visit(parser.SqlQuery()).(type) { + case int: + return true, res + case error: + return false, 0 + } + + return false, 0 +} + +func (v *TumblingVisitor) Visit(tree antlr.ParseTree) interface{} { + return tree.(*SqlQueryContext).Accept(v) +} + +func (v *TumblingVisitor) VisitSqlQuery(ctx *SqlQueryContext) interface{} { + return ctx.SelectQuery().Accept(v) +} + +func (v *TumblingVisitor) VisitSelectTumbling(ctx *SelectTumblingContext) interface{} { + return ctx.WindowTumbling().Accept(v) +} + +func (v *TumblingVisitor) VisitWindowTumbling(ctx *WindowTumblingContext) interface{} { + if ctx.NUMERIC_LITERAL() != nil { + res, _ := strconv.Atoi(ctx.NUMERIC_LITERAL().GetText()) + return res + } + return errors.New("this is not window tumbling query") +} From 085bb872003a31dde7988c0ac3fe18401eb3447c Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Mon, 8 Aug 2022 15:35:06 +0300 Subject: [PATCH 13/31] update tumbling window/ tests --- processor/stream_processor/Sql.g4 | 5 +- processor/stream_processor/parser/Sql.interp | 4 +- processor/stream_processor/parser/Sql.tokens | 19 +- .../stream_processor/parser/SqlLexer.interp | 5 +- .../stream_processor/parser/SqlLexer.tokens | 19 +- .../stream_processor/parser/sql_lexer.go | 400 +++++++++--------- .../stream_processor/parser/sql_parser.go | 302 ++++++++----- .../parser/sql_stream_visitor.go | 84 +++- .../parser/sql_stream_visitor_test.go | 161 +++++-- .../stream_processor/parser/visitor_utils.go | 90 +++- .../parser/windowTumblingVisitor.go | 1 + 11 files changed, 724 insertions(+), 366 deletions(-) diff --git a/processor/stream_processor/Sql.g4 b/processor/stream_processor/Sql.g4 index d0418636924a..fb3b538b9e51 100644 --- a/processor/stream_processor/Sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -14,7 +14,7 @@ selectQuery resultColumns : column (COMMA column)* # selectColumns - | avg # selectAVG + | (K_MIN | K_MAX | K_COUNT | K_AVG | K_SUM) L_BRACKET (column | STAR) R_BRACKET # selectAVG | STAR # selectStar ; @@ -61,7 +61,7 @@ groupBy avg - : (K_MIN | K_MAX | K_COUNT | K_AVG) L_BRACKET (column | STAR) R_BRACKET; + : (K_MIN | K_MAX | K_COUNT | K_AVG | K_SUM) L_BRACKET (column | STAR) R_BRACKET; SPACE : [ \u000B\t\r\n] -> channel(HIDDEN) @@ -99,6 +99,7 @@ K_IN : I N; K_TRUE : T R U E; K_FALSE : F A L S E; K_COUNT : C O U N T; +K_SUM : S U M; K_MIN : M I N; K_MAX : M A X; K_AVG : A V G; diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp index 1b2622686f90..8f90b311a98e 100644 --- a/processor/stream_processor/parser/Sql.interp +++ b/processor/stream_processor/parser/Sql.interp @@ -37,6 +37,7 @@ null null null null +null '*' token symbolic names: @@ -71,6 +72,7 @@ K_IN K_TRUE K_FALSE K_COUNT +K_SUM K_MIN K_MAX K_AVG @@ -96,4 +98,4 @@ avg atn: -[4, 1, 38, 103, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 31, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 39, 8, 1, 1, 1, 3, 1, 42, 8, 1, 1, 1, 1, 1, 3, 1, 46, 8, 1, 1, 2, 1, 2, 1, 2, 5, 2, 51, 8, 2, 10, 2, 12, 2, 54, 9, 2, 1, 2, 1, 2, 3, 2, 58, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 77, 8, 6, 1, 6, 1, 6, 1, 6, 5, 6, 82, 8, 6, 10, 6, 12, 6, 85, 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 0, 1, 12, 12, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 0, 4, 1, 0, 11, 12, 2, 0, 13, 21, 26, 27, 1, 0, 35, 37, 1, 0, 30, 33, 99, 0, 24, 1, 0, 0, 0, 2, 45, 1, 0, 0, 0, 4, 57, 1, 0, 0, 0, 6, 59, 1, 0, 0, 0, 8, 61, 1, 0, 0, 0, 10, 64, 1, 0, 0, 0, 12, 76, 1, 0, 0, 0, 14, 86, 1, 0, 0, 0, 16, 90, 1, 0, 0, 0, 18, 92, 1, 0, 0, 0, 20, 94, 1, 0, 0, 0, 22, 97, 1, 0, 0, 0, 24, 25, 3, 2, 1, 0, 25, 26, 5, 0, 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 5, 7, 0, 0, 28, 30, 3, 4, 2, 0, 29, 31, 3, 8, 4, 0, 30, 29, 1, 0, 0, 0, 30, 31, 1, 0, 0, 0, 31, 32, 1, 0, 0, 0, 32, 33, 5, 6, 0, 0, 33, 46, 1, 0, 0, 0, 34, 35, 5, 7, 0, 0, 35, 36, 3, 4, 2, 0, 36, 38, 3, 10, 5, 0, 37, 39, 3, 8, 4, 0, 38, 37, 1, 0, 0, 0, 38, 39, 1, 0, 0, 0, 39, 41, 1, 0, 0, 0, 40, 42, 3, 20, 10, 0, 41, 40, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 5, 6, 0, 0, 44, 46, 1, 0, 0, 0, 45, 27, 1, 0, 0, 0, 45, 34, 1, 0, 0, 0, 46, 3, 1, 0, 0, 0, 47, 52, 3, 6, 3, 0, 48, 49, 5, 3, 0, 0, 49, 51, 3, 6, 3, 0, 50, 48, 1, 0, 0, 0, 51, 54, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, 58, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 55, 58, 3, 22, 11, 0, 56, 58, 5, 38, 0, 0, 57, 47, 1, 0, 0, 0, 57, 55, 1, 0, 0, 0, 57, 56, 1, 0, 0, 0, 58, 5, 1, 0, 0, 0, 59, 60, 5, 34, 0, 0, 60, 7, 1, 0, 0, 0, 61, 62, 5, 8, 0, 0, 62, 63, 3, 12, 6, 0, 63, 9, 1, 0, 0, 0, 64, 65, 5, 9, 0, 0, 65, 66, 5, 36, 0, 0, 66, 11, 1, 0, 0, 0, 67, 68, 6, 6, -1, 0, 68, 69, 5, 34, 0, 0, 69, 70, 3, 16, 8, 0, 70, 71, 3, 18, 9, 0, 71, 77, 1, 0, 0, 0, 72, 73, 3, 14, 7, 0, 73, 74, 7, 0, 0, 0, 74, 75, 3, 14, 7, 0, 75, 77, 1, 0, 0, 0, 76, 67, 1, 0, 0, 0, 76, 72, 1, 0, 0, 0, 77, 83, 1, 0, 0, 0, 78, 79, 10, 1, 0, 0, 79, 80, 7, 0, 0, 0, 80, 82, 3, 12, 6, 2, 81, 78, 1, 0, 0, 0, 82, 85, 1, 0, 0, 0, 83, 81, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 13, 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, 86, 87, 5, 4, 0, 0, 87, 88, 3, 12, 6, 0, 88, 89, 5, 5, 0, 0, 89, 15, 1, 0, 0, 0, 90, 91, 7, 1, 0, 0, 91, 17, 1, 0, 0, 0, 92, 93, 7, 2, 0, 0, 93, 19, 1, 0, 0, 0, 94, 95, 5, 10, 0, 0, 95, 96, 3, 6, 3, 0, 96, 21, 1, 0, 0, 0, 97, 98, 7, 3, 0, 0, 98, 99, 5, 4, 0, 0, 99, 100, 3, 6, 3, 0, 100, 101, 5, 5, 0, 0, 101, 23, 1, 0, 0, 0, 8, 30, 38, 41, 45, 52, 57, 76, 83] \ No newline at end of file +[4, 1, 39, 112, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 31, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 39, 8, 1, 1, 1, 3, 1, 42, 8, 1, 1, 1, 1, 1, 3, 1, 46, 8, 1, 1, 2, 1, 2, 1, 2, 5, 2, 51, 8, 2, 10, 2, 12, 2, 54, 9, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 60, 8, 2, 1, 2, 1, 2, 3, 2, 64, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 83, 8, 6, 1, 6, 1, 6, 1, 6, 5, 6, 88, 8, 6, 10, 6, 12, 6, 91, 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 108, 8, 11, 1, 11, 1, 11, 1, 11, 0, 1, 12, 12, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 0, 4, 1, 0, 30, 34, 1, 0, 11, 12, 2, 0, 13, 21, 26, 27, 1, 0, 36, 38, 110, 0, 24, 1, 0, 0, 0, 2, 45, 1, 0, 0, 0, 4, 63, 1, 0, 0, 0, 6, 65, 1, 0, 0, 0, 8, 67, 1, 0, 0, 0, 10, 70, 1, 0, 0, 0, 12, 82, 1, 0, 0, 0, 14, 92, 1, 0, 0, 0, 16, 96, 1, 0, 0, 0, 18, 98, 1, 0, 0, 0, 20, 100, 1, 0, 0, 0, 22, 103, 1, 0, 0, 0, 24, 25, 3, 2, 1, 0, 25, 26, 5, 0, 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 5, 7, 0, 0, 28, 30, 3, 4, 2, 0, 29, 31, 3, 8, 4, 0, 30, 29, 1, 0, 0, 0, 30, 31, 1, 0, 0, 0, 31, 32, 1, 0, 0, 0, 32, 33, 5, 6, 0, 0, 33, 46, 1, 0, 0, 0, 34, 35, 5, 7, 0, 0, 35, 36, 3, 4, 2, 0, 36, 38, 3, 10, 5, 0, 37, 39, 3, 8, 4, 0, 38, 37, 1, 0, 0, 0, 38, 39, 1, 0, 0, 0, 39, 41, 1, 0, 0, 0, 40, 42, 3, 20, 10, 0, 41, 40, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 5, 6, 0, 0, 44, 46, 1, 0, 0, 0, 45, 27, 1, 0, 0, 0, 45, 34, 1, 0, 0, 0, 46, 3, 1, 0, 0, 0, 47, 52, 3, 6, 3, 0, 48, 49, 5, 3, 0, 0, 49, 51, 3, 6, 3, 0, 50, 48, 1, 0, 0, 0, 51, 54, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, 64, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 55, 56, 7, 0, 0, 0, 56, 59, 5, 4, 0, 0, 57, 60, 3, 6, 3, 0, 58, 60, 5, 39, 0, 0, 59, 57, 1, 0, 0, 0, 59, 58, 1, 0, 0, 0, 60, 61, 1, 0, 0, 0, 61, 64, 5, 5, 0, 0, 62, 64, 5, 39, 0, 0, 63, 47, 1, 0, 0, 0, 63, 55, 1, 0, 0, 0, 63, 62, 1, 0, 0, 0, 64, 5, 1, 0, 0, 0, 65, 66, 5, 35, 0, 0, 66, 7, 1, 0, 0, 0, 67, 68, 5, 8, 0, 0, 68, 69, 3, 12, 6, 0, 69, 9, 1, 0, 0, 0, 70, 71, 5, 9, 0, 0, 71, 72, 5, 37, 0, 0, 72, 11, 1, 0, 0, 0, 73, 74, 6, 6, -1, 0, 74, 75, 5, 35, 0, 0, 75, 76, 3, 16, 8, 0, 76, 77, 3, 18, 9, 0, 77, 83, 1, 0, 0, 0, 78, 79, 3, 14, 7, 0, 79, 80, 7, 1, 0, 0, 80, 81, 3, 14, 7, 0, 81, 83, 1, 0, 0, 0, 82, 73, 1, 0, 0, 0, 82, 78, 1, 0, 0, 0, 83, 89, 1, 0, 0, 0, 84, 85, 10, 1, 0, 0, 85, 86, 7, 1, 0, 0, 86, 88, 3, 12, 6, 2, 87, 84, 1, 0, 0, 0, 88, 91, 1, 0, 0, 0, 89, 87, 1, 0, 0, 0, 89, 90, 1, 0, 0, 0, 90, 13, 1, 0, 0, 0, 91, 89, 1, 0, 0, 0, 92, 93, 5, 4, 0, 0, 93, 94, 3, 12, 6, 0, 94, 95, 5, 5, 0, 0, 95, 15, 1, 0, 0, 0, 96, 97, 7, 2, 0, 0, 97, 17, 1, 0, 0, 0, 98, 99, 7, 3, 0, 0, 99, 19, 1, 0, 0, 0, 100, 101, 5, 10, 0, 0, 101, 102, 3, 6, 3, 0, 102, 21, 1, 0, 0, 0, 103, 104, 7, 0, 0, 0, 104, 107, 5, 4, 0, 0, 105, 108, 3, 6, 3, 0, 106, 108, 5, 39, 0, 0, 107, 105, 1, 0, 0, 0, 107, 106, 1, 0, 0, 0, 108, 109, 1, 0, 0, 0, 109, 110, 5, 5, 0, 0, 110, 23, 1, 0, 0, 0, 10, 30, 38, 41, 45, 52, 59, 63, 82, 89, 107] \ No newline at end of file diff --git a/processor/stream_processor/parser/Sql.tokens b/processor/stream_processor/parser/Sql.tokens index a1cc5f4ceba9..b9034b7260a7 100644 --- a/processor/stream_processor/parser/Sql.tokens +++ b/processor/stream_processor/parser/Sql.tokens @@ -28,14 +28,15 @@ K_IN=27 K_TRUE=28 K_FALSE=29 K_COUNT=30 -K_MIN=31 -K_MAX=32 -K_AVG=33 -IDENTIFIER=34 -BOOLEAN_LITERAL=35 -NUMERIC_LITERAL=36 -STRING_LITERAL=37 -STAR=38 +K_SUM=31 +K_MIN=32 +K_MAX=33 +K_AVG=34 +IDENTIFIER=35 +BOOLEAN_LITERAL=36 +NUMERIC_LITERAL=37 +STRING_LITERAL=38 +STAR=39 ','=3 '('=4 ')'=5 @@ -43,4 +44,4 @@ STAR=38 '='=16 '>'=17 '<'=18 -'*'=38 +'*'=39 diff --git a/processor/stream_processor/parser/SqlLexer.interp b/processor/stream_processor/parser/SqlLexer.interp index 852d9c2ba7a4..9354c61db9fb 100644 --- a/processor/stream_processor/parser/SqlLexer.interp +++ b/processor/stream_processor/parser/SqlLexer.interp @@ -37,6 +37,7 @@ null null null null +null '*' token symbolic names: @@ -71,6 +72,7 @@ K_IN K_TRUE K_FALSE K_COUNT +K_SUM K_MIN K_MAX K_AVG @@ -111,6 +113,7 @@ K_IN K_TRUE K_FALSE K_COUNT +K_SUM K_MIN K_MAX K_AVG @@ -155,4 +158,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 38, 435, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 137, 8, 1, 11, 1, 12, 1, 138, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 288, 8, 33, 10, 33, 12, 33, 291, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 298, 8, 33, 10, 33, 12, 33, 301, 9, 33, 1, 33, 1, 33, 1, 33, 5, 33, 306, 8, 33, 10, 33, 12, 33, 309, 9, 33, 1, 33, 1, 33, 1, 33, 5, 33, 314, 8, 33, 10, 33, 12, 33, 317, 9, 33, 3, 33, 319, 8, 33, 1, 34, 1, 34, 3, 34, 323, 8, 34, 1, 35, 4, 35, 326, 8, 35, 11, 35, 12, 35, 327, 1, 35, 1, 35, 5, 35, 332, 8, 35, 10, 35, 12, 35, 335, 9, 35, 3, 35, 337, 8, 35, 1, 35, 1, 35, 3, 35, 341, 8, 35, 1, 35, 4, 35, 344, 8, 35, 11, 35, 12, 35, 345, 3, 35, 348, 8, 35, 1, 35, 1, 35, 4, 35, 352, 8, 35, 11, 35, 12, 35, 353, 1, 35, 1, 35, 3, 35, 358, 8, 35, 1, 35, 4, 35, 361, 8, 35, 11, 35, 12, 35, 362, 3, 35, 365, 8, 35, 3, 35, 367, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 373, 8, 36, 10, 36, 12, 36, 376, 9, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 0, 0, 65, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 431, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 1, 131, 1, 0, 0, 0, 3, 136, 1, 0, 0, 0, 5, 142, 1, 0, 0, 0, 7, 144, 1, 0, 0, 0, 9, 146, 1, 0, 0, 0, 11, 148, 1, 0, 0, 0, 13, 150, 1, 0, 0, 0, 15, 157, 1, 0, 0, 0, 17, 163, 1, 0, 0, 0, 19, 179, 1, 0, 0, 0, 21, 188, 1, 0, 0, 0, 23, 192, 1, 0, 0, 0, 25, 195, 1, 0, 0, 0, 27, 198, 1, 0, 0, 0, 29, 203, 1, 0, 0, 0, 31, 212, 1, 0, 0, 0, 33, 214, 1, 0, 0, 0, 35, 216, 1, 0, 0, 0, 37, 218, 1, 0, 0, 0, 39, 221, 1, 0, 0, 0, 41, 224, 1, 0, 0, 0, 43, 227, 1, 0, 0, 0, 45, 232, 1, 0, 0, 0, 47, 236, 1, 0, 0, 0, 49, 242, 1, 0, 0, 0, 51, 246, 1, 0, 0, 0, 53, 251, 1, 0, 0, 0, 55, 254, 1, 0, 0, 0, 57, 259, 1, 0, 0, 0, 59, 265, 1, 0, 0, 0, 61, 271, 1, 0, 0, 0, 63, 275, 1, 0, 0, 0, 65, 279, 1, 0, 0, 0, 67, 318, 1, 0, 0, 0, 69, 322, 1, 0, 0, 0, 71, 366, 1, 0, 0, 0, 73, 368, 1, 0, 0, 0, 75, 379, 1, 0, 0, 0, 77, 381, 1, 0, 0, 0, 79, 383, 1, 0, 0, 0, 81, 385, 1, 0, 0, 0, 83, 387, 1, 0, 0, 0, 85, 389, 1, 0, 0, 0, 87, 391, 1, 0, 0, 0, 89, 393, 1, 0, 0, 0, 91, 395, 1, 0, 0, 0, 93, 397, 1, 0, 0, 0, 95, 399, 1, 0, 0, 0, 97, 401, 1, 0, 0, 0, 99, 403, 1, 0, 0, 0, 101, 405, 1, 0, 0, 0, 103, 407, 1, 0, 0, 0, 105, 409, 1, 0, 0, 0, 107, 411, 1, 0, 0, 0, 109, 413, 1, 0, 0, 0, 111, 415, 1, 0, 0, 0, 113, 417, 1, 0, 0, 0, 115, 419, 1, 0, 0, 0, 117, 421, 1, 0, 0, 0, 119, 423, 1, 0, 0, 0, 121, 425, 1, 0, 0, 0, 123, 427, 1, 0, 0, 0, 125, 429, 1, 0, 0, 0, 127, 431, 1, 0, 0, 0, 129, 433, 1, 0, 0, 0, 131, 132, 7, 0, 0, 0, 132, 133, 1, 0, 0, 0, 133, 134, 6, 0, 0, 0, 134, 2, 1, 0, 0, 0, 135, 137, 7, 1, 0, 0, 136, 135, 1, 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, 136, 1, 0, 0, 0, 138, 139, 1, 0, 0, 0, 139, 140, 1, 0, 0, 0, 140, 141, 6, 1, 1, 0, 141, 4, 1, 0, 0, 0, 142, 143, 5, 44, 0, 0, 143, 6, 1, 0, 0, 0, 144, 145, 5, 40, 0, 0, 145, 8, 1, 0, 0, 0, 146, 147, 5, 41, 0, 0, 147, 10, 1, 0, 0, 0, 148, 149, 5, 59, 0, 0, 149, 12, 1, 0, 0, 0, 150, 151, 3, 115, 57, 0, 151, 152, 3, 87, 43, 0, 152, 153, 3, 101, 50, 0, 153, 154, 3, 87, 43, 0, 154, 155, 3, 83, 41, 0, 155, 156, 3, 117, 58, 0, 156, 14, 1, 0, 0, 0, 157, 158, 3, 123, 61, 0, 158, 159, 3, 93, 46, 0, 159, 160, 3, 87, 43, 0, 160, 161, 3, 113, 56, 0, 161, 162, 3, 87, 43, 0, 162, 16, 1, 0, 0, 0, 163, 164, 3, 123, 61, 0, 164, 165, 3, 95, 47, 0, 165, 166, 3, 105, 52, 0, 166, 167, 3, 85, 42, 0, 167, 168, 3, 107, 53, 0, 168, 169, 3, 123, 61, 0, 169, 170, 3, 1, 0, 0, 170, 171, 3, 117, 58, 0, 171, 172, 3, 119, 59, 0, 172, 173, 3, 103, 51, 0, 173, 174, 3, 81, 40, 0, 174, 175, 3, 101, 50, 0, 175, 176, 3, 95, 47, 0, 176, 177, 3, 105, 52, 0, 177, 178, 3, 91, 45, 0, 178, 18, 1, 0, 0, 0, 179, 180, 3, 91, 45, 0, 180, 181, 3, 113, 56, 0, 181, 182, 3, 107, 53, 0, 182, 183, 3, 119, 59, 0, 183, 184, 3, 109, 54, 0, 184, 185, 3, 1, 0, 0, 185, 186, 3, 81, 40, 0, 186, 187, 3, 127, 63, 0, 187, 20, 1, 0, 0, 0, 188, 189, 3, 79, 39, 0, 189, 190, 3, 105, 52, 0, 190, 191, 3, 85, 42, 0, 191, 22, 1, 0, 0, 0, 192, 193, 3, 107, 53, 0, 193, 194, 3, 113, 56, 0, 194, 24, 1, 0, 0, 0, 195, 196, 3, 95, 47, 0, 196, 197, 3, 115, 57, 0, 197, 26, 1, 0, 0, 0, 198, 199, 3, 101, 50, 0, 199, 200, 3, 95, 47, 0, 200, 201, 3, 99, 49, 0, 201, 202, 3, 87, 43, 0, 202, 28, 1, 0, 0, 0, 203, 204, 3, 105, 52, 0, 204, 205, 3, 107, 53, 0, 205, 206, 3, 117, 58, 0, 206, 207, 3, 1, 0, 0, 207, 208, 3, 101, 50, 0, 208, 209, 3, 95, 47, 0, 209, 210, 3, 99, 49, 0, 210, 211, 3, 87, 43, 0, 211, 30, 1, 0, 0, 0, 212, 213, 5, 61, 0, 0, 213, 32, 1, 0, 0, 0, 214, 215, 5, 62, 0, 0, 215, 34, 1, 0, 0, 0, 216, 217, 5, 60, 0, 0, 217, 36, 1, 0, 0, 0, 218, 219, 3, 35, 17, 0, 219, 220, 3, 31, 15, 0, 220, 38, 1, 0, 0, 0, 221, 222, 3, 33, 16, 0, 222, 223, 3, 31, 15, 0, 223, 40, 1, 0, 0, 0, 224, 225, 5, 33, 0, 0, 225, 226, 3, 31, 15, 0, 226, 42, 1, 0, 0, 0, 227, 228, 3, 105, 52, 0, 228, 229, 3, 119, 59, 0, 229, 230, 3, 101, 50, 0, 230, 231, 3, 101, 50, 0, 231, 44, 1, 0, 0, 0, 232, 233, 3, 25, 12, 0, 233, 234, 3, 1, 0, 0, 234, 235, 3, 43, 21, 0, 235, 46, 1, 0, 0, 0, 236, 237, 3, 25, 12, 0, 237, 238, 3, 1, 0, 0, 238, 239, 3, 49, 24, 0, 239, 240, 3, 1, 0, 0, 240, 241, 3, 43, 21, 0, 241, 48, 1, 0, 0, 0, 242, 243, 3, 105, 52, 0, 243, 244, 3, 107, 53, 0, 244, 245, 3, 117, 58, 0, 245, 50, 1, 0, 0, 0, 246, 247, 3, 49, 24, 0, 247, 248, 3, 1, 0, 0, 248, 249, 3, 95, 47, 0, 249, 250, 3, 105, 52, 0, 250, 52, 1, 0, 0, 0, 251, 252, 3, 95, 47, 0, 252, 253, 3, 105, 52, 0, 253, 54, 1, 0, 0, 0, 254, 255, 3, 117, 58, 0, 255, 256, 3, 113, 56, 0, 256, 257, 3, 119, 59, 0, 257, 258, 3, 87, 43, 0, 258, 56, 1, 0, 0, 0, 259, 260, 3, 89, 44, 0, 260, 261, 3, 79, 39, 0, 261, 262, 3, 101, 50, 0, 262, 263, 3, 115, 57, 0, 263, 264, 3, 87, 43, 0, 264, 58, 1, 0, 0, 0, 265, 266, 3, 83, 41, 0, 266, 267, 3, 107, 53, 0, 267, 268, 3, 119, 59, 0, 268, 269, 3, 105, 52, 0, 269, 270, 3, 117, 58, 0, 270, 60, 1, 0, 0, 0, 271, 272, 3, 103, 51, 0, 272, 273, 3, 95, 47, 0, 273, 274, 3, 105, 52, 0, 274, 62, 1, 0, 0, 0, 275, 276, 3, 103, 51, 0, 276, 277, 3, 79, 39, 0, 277, 278, 3, 125, 62, 0, 278, 64, 1, 0, 0, 0, 279, 280, 3, 79, 39, 0, 280, 281, 3, 121, 60, 0, 281, 282, 3, 91, 45, 0, 282, 66, 1, 0, 0, 0, 283, 289, 5, 34, 0, 0, 284, 288, 8, 2, 0, 0, 285, 286, 5, 34, 0, 0, 286, 288, 5, 34, 0, 0, 287, 284, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 288, 291, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 292, 1, 0, 0, 0, 291, 289, 1, 0, 0, 0, 292, 319, 5, 34, 0, 0, 293, 299, 5, 96, 0, 0, 294, 298, 8, 3, 0, 0, 295, 296, 5, 96, 0, 0, 296, 298, 5, 96, 0, 0, 297, 294, 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, 298, 301, 1, 0, 0, 0, 299, 297, 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 302, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 302, 319, 5, 96, 0, 0, 303, 307, 5, 91, 0, 0, 304, 306, 8, 4, 0, 0, 305, 304, 1, 0, 0, 0, 306, 309, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 308, 310, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 310, 319, 5, 93, 0, 0, 311, 315, 7, 5, 0, 0, 312, 314, 7, 6, 0, 0, 313, 312, 1, 0, 0, 0, 314, 317, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 319, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 318, 283, 1, 0, 0, 0, 318, 293, 1, 0, 0, 0, 318, 303, 1, 0, 0, 0, 318, 311, 1, 0, 0, 0, 319, 68, 1, 0, 0, 0, 320, 323, 3, 55, 27, 0, 321, 323, 3, 57, 28, 0, 322, 320, 1, 0, 0, 0, 322, 321, 1, 0, 0, 0, 323, 70, 1, 0, 0, 0, 324, 326, 3, 77, 38, 0, 325, 324, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 336, 1, 0, 0, 0, 329, 333, 5, 46, 0, 0, 330, 332, 3, 77, 38, 0, 331, 330, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 337, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 329, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 347, 1, 0, 0, 0, 338, 340, 3, 87, 43, 0, 339, 341, 7, 7, 0, 0, 340, 339, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 343, 1, 0, 0, 0, 342, 344, 3, 77, 38, 0, 343, 342, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 348, 1, 0, 0, 0, 347, 338, 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 367, 1, 0, 0, 0, 349, 351, 5, 46, 0, 0, 350, 352, 3, 77, 38, 0, 351, 350, 1, 0, 0, 0, 352, 353, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 364, 1, 0, 0, 0, 355, 357, 3, 87, 43, 0, 356, 358, 7, 7, 0, 0, 357, 356, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 360, 1, 0, 0, 0, 359, 361, 3, 77, 38, 0, 360, 359, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 365, 1, 0, 0, 0, 364, 355, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 367, 1, 0, 0, 0, 366, 325, 1, 0, 0, 0, 366, 349, 1, 0, 0, 0, 367, 72, 1, 0, 0, 0, 368, 374, 5, 39, 0, 0, 369, 373, 8, 8, 0, 0, 370, 371, 5, 39, 0, 0, 371, 373, 5, 39, 0, 0, 372, 369, 1, 0, 0, 0, 372, 370, 1, 0, 0, 0, 373, 376, 1, 0, 0, 0, 374, 372, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 377, 1, 0, 0, 0, 376, 374, 1, 0, 0, 0, 377, 378, 5, 39, 0, 0, 378, 74, 1, 0, 0, 0, 379, 380, 5, 42, 0, 0, 380, 76, 1, 0, 0, 0, 381, 382, 7, 9, 0, 0, 382, 78, 1, 0, 0, 0, 383, 384, 7, 10, 0, 0, 384, 80, 1, 0, 0, 0, 385, 386, 7, 11, 0, 0, 386, 82, 1, 0, 0, 0, 387, 388, 7, 12, 0, 0, 388, 84, 1, 0, 0, 0, 389, 390, 7, 13, 0, 0, 390, 86, 1, 0, 0, 0, 391, 392, 7, 14, 0, 0, 392, 88, 1, 0, 0, 0, 393, 394, 7, 15, 0, 0, 394, 90, 1, 0, 0, 0, 395, 396, 7, 16, 0, 0, 396, 92, 1, 0, 0, 0, 397, 398, 7, 17, 0, 0, 398, 94, 1, 0, 0, 0, 399, 400, 7, 18, 0, 0, 400, 96, 1, 0, 0, 0, 401, 402, 7, 19, 0, 0, 402, 98, 1, 0, 0, 0, 403, 404, 7, 20, 0, 0, 404, 100, 1, 0, 0, 0, 405, 406, 7, 21, 0, 0, 406, 102, 1, 0, 0, 0, 407, 408, 7, 22, 0, 0, 408, 104, 1, 0, 0, 0, 409, 410, 7, 23, 0, 0, 410, 106, 1, 0, 0, 0, 411, 412, 7, 24, 0, 0, 412, 108, 1, 0, 0, 0, 413, 414, 7, 25, 0, 0, 414, 110, 1, 0, 0, 0, 415, 416, 7, 26, 0, 0, 416, 112, 1, 0, 0, 0, 417, 418, 7, 27, 0, 0, 418, 114, 1, 0, 0, 0, 419, 420, 7, 28, 0, 0, 420, 116, 1, 0, 0, 0, 421, 422, 7, 29, 0, 0, 422, 118, 1, 0, 0, 0, 423, 424, 7, 30, 0, 0, 424, 120, 1, 0, 0, 0, 425, 426, 7, 31, 0, 0, 426, 122, 1, 0, 0, 0, 427, 428, 7, 32, 0, 0, 428, 124, 1, 0, 0, 0, 429, 430, 7, 33, 0, 0, 430, 126, 1, 0, 0, 0, 431, 432, 7, 34, 0, 0, 432, 128, 1, 0, 0, 0, 433, 434, 7, 35, 0, 0, 434, 130, 1, 0, 0, 0, 23, 0, 138, 287, 289, 297, 299, 307, 315, 318, 322, 327, 333, 336, 340, 345, 347, 353, 357, 362, 364, 366, 372, 374, 2, 0, 1, 0, 6, 0, 0] \ No newline at end of file +[4, 0, 39, 441, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 139, 8, 1, 11, 1, 12, 1, 140, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 294, 8, 34, 10, 34, 12, 34, 297, 9, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 304, 8, 34, 10, 34, 12, 34, 307, 9, 34, 1, 34, 1, 34, 1, 34, 5, 34, 312, 8, 34, 10, 34, 12, 34, 315, 9, 34, 1, 34, 1, 34, 1, 34, 5, 34, 320, 8, 34, 10, 34, 12, 34, 323, 9, 34, 3, 34, 325, 8, 34, 1, 35, 1, 35, 3, 35, 329, 8, 35, 1, 36, 4, 36, 332, 8, 36, 11, 36, 12, 36, 333, 1, 36, 1, 36, 5, 36, 338, 8, 36, 10, 36, 12, 36, 341, 9, 36, 3, 36, 343, 8, 36, 1, 36, 1, 36, 3, 36, 347, 8, 36, 1, 36, 4, 36, 350, 8, 36, 11, 36, 12, 36, 351, 3, 36, 354, 8, 36, 1, 36, 1, 36, 4, 36, 358, 8, 36, 11, 36, 12, 36, 359, 1, 36, 1, 36, 3, 36, 364, 8, 36, 1, 36, 4, 36, 367, 8, 36, 11, 36, 12, 36, 368, 3, 36, 371, 8, 36, 3, 36, 373, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 379, 8, 37, 10, 37, 12, 37, 382, 9, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 0, 0, 66, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 437, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 1, 133, 1, 0, 0, 0, 3, 138, 1, 0, 0, 0, 5, 144, 1, 0, 0, 0, 7, 146, 1, 0, 0, 0, 9, 148, 1, 0, 0, 0, 11, 150, 1, 0, 0, 0, 13, 152, 1, 0, 0, 0, 15, 159, 1, 0, 0, 0, 17, 165, 1, 0, 0, 0, 19, 181, 1, 0, 0, 0, 21, 190, 1, 0, 0, 0, 23, 194, 1, 0, 0, 0, 25, 197, 1, 0, 0, 0, 27, 200, 1, 0, 0, 0, 29, 205, 1, 0, 0, 0, 31, 214, 1, 0, 0, 0, 33, 216, 1, 0, 0, 0, 35, 218, 1, 0, 0, 0, 37, 220, 1, 0, 0, 0, 39, 223, 1, 0, 0, 0, 41, 226, 1, 0, 0, 0, 43, 229, 1, 0, 0, 0, 45, 234, 1, 0, 0, 0, 47, 238, 1, 0, 0, 0, 49, 244, 1, 0, 0, 0, 51, 248, 1, 0, 0, 0, 53, 253, 1, 0, 0, 0, 55, 256, 1, 0, 0, 0, 57, 261, 1, 0, 0, 0, 59, 267, 1, 0, 0, 0, 61, 273, 1, 0, 0, 0, 63, 277, 1, 0, 0, 0, 65, 281, 1, 0, 0, 0, 67, 285, 1, 0, 0, 0, 69, 324, 1, 0, 0, 0, 71, 328, 1, 0, 0, 0, 73, 372, 1, 0, 0, 0, 75, 374, 1, 0, 0, 0, 77, 385, 1, 0, 0, 0, 79, 387, 1, 0, 0, 0, 81, 389, 1, 0, 0, 0, 83, 391, 1, 0, 0, 0, 85, 393, 1, 0, 0, 0, 87, 395, 1, 0, 0, 0, 89, 397, 1, 0, 0, 0, 91, 399, 1, 0, 0, 0, 93, 401, 1, 0, 0, 0, 95, 403, 1, 0, 0, 0, 97, 405, 1, 0, 0, 0, 99, 407, 1, 0, 0, 0, 101, 409, 1, 0, 0, 0, 103, 411, 1, 0, 0, 0, 105, 413, 1, 0, 0, 0, 107, 415, 1, 0, 0, 0, 109, 417, 1, 0, 0, 0, 111, 419, 1, 0, 0, 0, 113, 421, 1, 0, 0, 0, 115, 423, 1, 0, 0, 0, 117, 425, 1, 0, 0, 0, 119, 427, 1, 0, 0, 0, 121, 429, 1, 0, 0, 0, 123, 431, 1, 0, 0, 0, 125, 433, 1, 0, 0, 0, 127, 435, 1, 0, 0, 0, 129, 437, 1, 0, 0, 0, 131, 439, 1, 0, 0, 0, 133, 134, 7, 0, 0, 0, 134, 135, 1, 0, 0, 0, 135, 136, 6, 0, 0, 0, 136, 2, 1, 0, 0, 0, 137, 139, 7, 1, 0, 0, 138, 137, 1, 0, 0, 0, 139, 140, 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 142, 1, 0, 0, 0, 142, 143, 6, 1, 1, 0, 143, 4, 1, 0, 0, 0, 144, 145, 5, 44, 0, 0, 145, 6, 1, 0, 0, 0, 146, 147, 5, 40, 0, 0, 147, 8, 1, 0, 0, 0, 148, 149, 5, 41, 0, 0, 149, 10, 1, 0, 0, 0, 150, 151, 5, 59, 0, 0, 151, 12, 1, 0, 0, 0, 152, 153, 3, 117, 58, 0, 153, 154, 3, 89, 44, 0, 154, 155, 3, 103, 51, 0, 155, 156, 3, 89, 44, 0, 156, 157, 3, 85, 42, 0, 157, 158, 3, 119, 59, 0, 158, 14, 1, 0, 0, 0, 159, 160, 3, 125, 62, 0, 160, 161, 3, 95, 47, 0, 161, 162, 3, 89, 44, 0, 162, 163, 3, 115, 57, 0, 163, 164, 3, 89, 44, 0, 164, 16, 1, 0, 0, 0, 165, 166, 3, 125, 62, 0, 166, 167, 3, 97, 48, 0, 167, 168, 3, 107, 53, 0, 168, 169, 3, 87, 43, 0, 169, 170, 3, 109, 54, 0, 170, 171, 3, 125, 62, 0, 171, 172, 3, 1, 0, 0, 172, 173, 3, 119, 59, 0, 173, 174, 3, 121, 60, 0, 174, 175, 3, 105, 52, 0, 175, 176, 3, 83, 41, 0, 176, 177, 3, 103, 51, 0, 177, 178, 3, 97, 48, 0, 178, 179, 3, 107, 53, 0, 179, 180, 3, 93, 46, 0, 180, 18, 1, 0, 0, 0, 181, 182, 3, 93, 46, 0, 182, 183, 3, 115, 57, 0, 183, 184, 3, 109, 54, 0, 184, 185, 3, 121, 60, 0, 185, 186, 3, 111, 55, 0, 186, 187, 3, 1, 0, 0, 187, 188, 3, 83, 41, 0, 188, 189, 3, 129, 64, 0, 189, 20, 1, 0, 0, 0, 190, 191, 3, 81, 40, 0, 191, 192, 3, 107, 53, 0, 192, 193, 3, 87, 43, 0, 193, 22, 1, 0, 0, 0, 194, 195, 3, 109, 54, 0, 195, 196, 3, 115, 57, 0, 196, 24, 1, 0, 0, 0, 197, 198, 3, 97, 48, 0, 198, 199, 3, 117, 58, 0, 199, 26, 1, 0, 0, 0, 200, 201, 3, 103, 51, 0, 201, 202, 3, 97, 48, 0, 202, 203, 3, 101, 50, 0, 203, 204, 3, 89, 44, 0, 204, 28, 1, 0, 0, 0, 205, 206, 3, 107, 53, 0, 206, 207, 3, 109, 54, 0, 207, 208, 3, 119, 59, 0, 208, 209, 3, 1, 0, 0, 209, 210, 3, 103, 51, 0, 210, 211, 3, 97, 48, 0, 211, 212, 3, 101, 50, 0, 212, 213, 3, 89, 44, 0, 213, 30, 1, 0, 0, 0, 214, 215, 5, 61, 0, 0, 215, 32, 1, 0, 0, 0, 216, 217, 5, 62, 0, 0, 217, 34, 1, 0, 0, 0, 218, 219, 5, 60, 0, 0, 219, 36, 1, 0, 0, 0, 220, 221, 3, 35, 17, 0, 221, 222, 3, 31, 15, 0, 222, 38, 1, 0, 0, 0, 223, 224, 3, 33, 16, 0, 224, 225, 3, 31, 15, 0, 225, 40, 1, 0, 0, 0, 226, 227, 5, 33, 0, 0, 227, 228, 3, 31, 15, 0, 228, 42, 1, 0, 0, 0, 229, 230, 3, 107, 53, 0, 230, 231, 3, 121, 60, 0, 231, 232, 3, 103, 51, 0, 232, 233, 3, 103, 51, 0, 233, 44, 1, 0, 0, 0, 234, 235, 3, 25, 12, 0, 235, 236, 3, 1, 0, 0, 236, 237, 3, 43, 21, 0, 237, 46, 1, 0, 0, 0, 238, 239, 3, 25, 12, 0, 239, 240, 3, 1, 0, 0, 240, 241, 3, 49, 24, 0, 241, 242, 3, 1, 0, 0, 242, 243, 3, 43, 21, 0, 243, 48, 1, 0, 0, 0, 244, 245, 3, 107, 53, 0, 245, 246, 3, 109, 54, 0, 246, 247, 3, 119, 59, 0, 247, 50, 1, 0, 0, 0, 248, 249, 3, 49, 24, 0, 249, 250, 3, 1, 0, 0, 250, 251, 3, 97, 48, 0, 251, 252, 3, 107, 53, 0, 252, 52, 1, 0, 0, 0, 253, 254, 3, 97, 48, 0, 254, 255, 3, 107, 53, 0, 255, 54, 1, 0, 0, 0, 256, 257, 3, 119, 59, 0, 257, 258, 3, 115, 57, 0, 258, 259, 3, 121, 60, 0, 259, 260, 3, 89, 44, 0, 260, 56, 1, 0, 0, 0, 261, 262, 3, 91, 45, 0, 262, 263, 3, 81, 40, 0, 263, 264, 3, 103, 51, 0, 264, 265, 3, 117, 58, 0, 265, 266, 3, 89, 44, 0, 266, 58, 1, 0, 0, 0, 267, 268, 3, 85, 42, 0, 268, 269, 3, 109, 54, 0, 269, 270, 3, 121, 60, 0, 270, 271, 3, 107, 53, 0, 271, 272, 3, 119, 59, 0, 272, 60, 1, 0, 0, 0, 273, 274, 3, 117, 58, 0, 274, 275, 3, 121, 60, 0, 275, 276, 3, 105, 52, 0, 276, 62, 1, 0, 0, 0, 277, 278, 3, 105, 52, 0, 278, 279, 3, 97, 48, 0, 279, 280, 3, 107, 53, 0, 280, 64, 1, 0, 0, 0, 281, 282, 3, 105, 52, 0, 282, 283, 3, 81, 40, 0, 283, 284, 3, 127, 63, 0, 284, 66, 1, 0, 0, 0, 285, 286, 3, 81, 40, 0, 286, 287, 3, 123, 61, 0, 287, 288, 3, 93, 46, 0, 288, 68, 1, 0, 0, 0, 289, 295, 5, 34, 0, 0, 290, 294, 8, 2, 0, 0, 291, 292, 5, 34, 0, 0, 292, 294, 5, 34, 0, 0, 293, 290, 1, 0, 0, 0, 293, 291, 1, 0, 0, 0, 294, 297, 1, 0, 0, 0, 295, 293, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 298, 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, 298, 325, 5, 34, 0, 0, 299, 305, 5, 96, 0, 0, 300, 304, 8, 3, 0, 0, 301, 302, 5, 96, 0, 0, 302, 304, 5, 96, 0, 0, 303, 300, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 304, 307, 1, 0, 0, 0, 305, 303, 1, 0, 0, 0, 305, 306, 1, 0, 0, 0, 306, 308, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 325, 5, 96, 0, 0, 309, 313, 5, 91, 0, 0, 310, 312, 8, 4, 0, 0, 311, 310, 1, 0, 0, 0, 312, 315, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 316, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 316, 325, 5, 93, 0, 0, 317, 321, 7, 5, 0, 0, 318, 320, 7, 6, 0, 0, 319, 318, 1, 0, 0, 0, 320, 323, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 325, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 324, 289, 1, 0, 0, 0, 324, 299, 1, 0, 0, 0, 324, 309, 1, 0, 0, 0, 324, 317, 1, 0, 0, 0, 325, 70, 1, 0, 0, 0, 326, 329, 3, 55, 27, 0, 327, 329, 3, 57, 28, 0, 328, 326, 1, 0, 0, 0, 328, 327, 1, 0, 0, 0, 329, 72, 1, 0, 0, 0, 330, 332, 3, 79, 39, 0, 331, 330, 1, 0, 0, 0, 332, 333, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 342, 1, 0, 0, 0, 335, 339, 5, 46, 0, 0, 336, 338, 3, 79, 39, 0, 337, 336, 1, 0, 0, 0, 338, 341, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 339, 340, 1, 0, 0, 0, 340, 343, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 342, 335, 1, 0, 0, 0, 342, 343, 1, 0, 0, 0, 343, 353, 1, 0, 0, 0, 344, 346, 3, 89, 44, 0, 345, 347, 7, 7, 0, 0, 346, 345, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347, 349, 1, 0, 0, 0, 348, 350, 3, 79, 39, 0, 349, 348, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 344, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 373, 1, 0, 0, 0, 355, 357, 5, 46, 0, 0, 356, 358, 3, 79, 39, 0, 357, 356, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 370, 1, 0, 0, 0, 361, 363, 3, 89, 44, 0, 362, 364, 7, 7, 0, 0, 363, 362, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 366, 1, 0, 0, 0, 365, 367, 3, 79, 39, 0, 366, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 371, 1, 0, 0, 0, 370, 361, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 373, 1, 0, 0, 0, 372, 331, 1, 0, 0, 0, 372, 355, 1, 0, 0, 0, 373, 74, 1, 0, 0, 0, 374, 380, 5, 39, 0, 0, 375, 379, 8, 8, 0, 0, 376, 377, 5, 39, 0, 0, 377, 379, 5, 39, 0, 0, 378, 375, 1, 0, 0, 0, 378, 376, 1, 0, 0, 0, 379, 382, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 383, 1, 0, 0, 0, 382, 380, 1, 0, 0, 0, 383, 384, 5, 39, 0, 0, 384, 76, 1, 0, 0, 0, 385, 386, 5, 42, 0, 0, 386, 78, 1, 0, 0, 0, 387, 388, 7, 9, 0, 0, 388, 80, 1, 0, 0, 0, 389, 390, 7, 10, 0, 0, 390, 82, 1, 0, 0, 0, 391, 392, 7, 11, 0, 0, 392, 84, 1, 0, 0, 0, 393, 394, 7, 12, 0, 0, 394, 86, 1, 0, 0, 0, 395, 396, 7, 13, 0, 0, 396, 88, 1, 0, 0, 0, 397, 398, 7, 14, 0, 0, 398, 90, 1, 0, 0, 0, 399, 400, 7, 15, 0, 0, 400, 92, 1, 0, 0, 0, 401, 402, 7, 16, 0, 0, 402, 94, 1, 0, 0, 0, 403, 404, 7, 17, 0, 0, 404, 96, 1, 0, 0, 0, 405, 406, 7, 18, 0, 0, 406, 98, 1, 0, 0, 0, 407, 408, 7, 19, 0, 0, 408, 100, 1, 0, 0, 0, 409, 410, 7, 20, 0, 0, 410, 102, 1, 0, 0, 0, 411, 412, 7, 21, 0, 0, 412, 104, 1, 0, 0, 0, 413, 414, 7, 22, 0, 0, 414, 106, 1, 0, 0, 0, 415, 416, 7, 23, 0, 0, 416, 108, 1, 0, 0, 0, 417, 418, 7, 24, 0, 0, 418, 110, 1, 0, 0, 0, 419, 420, 7, 25, 0, 0, 420, 112, 1, 0, 0, 0, 421, 422, 7, 26, 0, 0, 422, 114, 1, 0, 0, 0, 423, 424, 7, 27, 0, 0, 424, 116, 1, 0, 0, 0, 425, 426, 7, 28, 0, 0, 426, 118, 1, 0, 0, 0, 427, 428, 7, 29, 0, 0, 428, 120, 1, 0, 0, 0, 429, 430, 7, 30, 0, 0, 430, 122, 1, 0, 0, 0, 431, 432, 7, 31, 0, 0, 432, 124, 1, 0, 0, 0, 433, 434, 7, 32, 0, 0, 434, 126, 1, 0, 0, 0, 435, 436, 7, 33, 0, 0, 436, 128, 1, 0, 0, 0, 437, 438, 7, 34, 0, 0, 438, 130, 1, 0, 0, 0, 439, 440, 7, 35, 0, 0, 440, 132, 1, 0, 0, 0, 23, 0, 140, 293, 295, 303, 305, 313, 321, 324, 328, 333, 339, 342, 346, 351, 353, 359, 363, 368, 370, 372, 378, 380, 2, 0, 1, 0, 6, 0, 0] \ No newline at end of file diff --git a/processor/stream_processor/parser/SqlLexer.tokens b/processor/stream_processor/parser/SqlLexer.tokens index a1cc5f4ceba9..b9034b7260a7 100644 --- a/processor/stream_processor/parser/SqlLexer.tokens +++ b/processor/stream_processor/parser/SqlLexer.tokens @@ -28,14 +28,15 @@ K_IN=27 K_TRUE=28 K_FALSE=29 K_COUNT=30 -K_MIN=31 -K_MAX=32 -K_AVG=33 -IDENTIFIER=34 -BOOLEAN_LITERAL=35 -NUMERIC_LITERAL=36 -STRING_LITERAL=37 -STAR=38 +K_SUM=31 +K_MIN=32 +K_MAX=33 +K_AVG=34 +IDENTIFIER=35 +BOOLEAN_LITERAL=36 +NUMERIC_LITERAL=37 +STRING_LITERAL=38 +STAR=39 ','=3 '('=4 ')'=5 @@ -43,4 +44,4 @@ STAR=38 '='=16 '>'=17 '<'=18 -'*'=38 +'*'=39 diff --git a/processor/stream_processor/parser/sql_lexer.go b/processor/stream_processor/parser/sql_lexer.go index 631dc8228662..62b2db2c78ba 100644 --- a/processor/stream_processor/parser/sql_lexer.go +++ b/processor/stream_processor/parser/sql_lexer.go @@ -46,15 +46,15 @@ func sqllexerLexerInit() { staticData.literalNames = []string{ "", "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", "", "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "'*'", + "", "", "", "", "", "", "", "", "", "", "'*'", } staticData.symbolicNames = []string{ "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", - "K_NOT", "K_NOT_IN", "K_IN", "K_TRUE", "K_FALSE", "K_COUNT", "K_MIN", - "K_MAX", "K_AVG", "IDENTIFIER", "BOOLEAN_LITERAL", "NUMERIC_LITERAL", + "K_NOT", "K_NOT_IN", "K_IN", "K_TRUE", "K_FALSE", "K_COUNT", "K_SUM", + "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", "BOOLEAN_LITERAL", "NUMERIC_LITERAL", "STRING_LITERAL", "STAR", } staticData.ruleNames = []string{ @@ -62,15 +62,15 @@ func sqllexerLexerInit() { "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", - "K_NOT", "K_NOT_IN", "K_IN", "K_TRUE", "K_FALSE", "K_COUNT", "K_MIN", - "K_MAX", "K_AVG", "IDENTIFIER", "BOOLEAN_LITERAL", "NUMERIC_LITERAL", + "K_NOT", "K_NOT_IN", "K_IN", "K_TRUE", "K_FALSE", "K_COUNT", "K_SUM", + "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", "BOOLEAN_LITERAL", "NUMERIC_LITERAL", "STRING_LITERAL", "STAR", "DIGIT", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 0, 38, 435, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, + 4, 0, 39, 441, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, @@ -82,190 +82,193 @@ func sqllexerLexerInit() { 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, - 62, 2, 63, 7, 63, 2, 64, 7, 64, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 137, - 8, 1, 11, 1, 12, 1, 138, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, - 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, - 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, - 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, - 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, - 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, - 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, - 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, - 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, - 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, - 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, - 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, - 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, - 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 288, 8, - 33, 10, 33, 12, 33, 291, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, - 298, 8, 33, 10, 33, 12, 33, 301, 9, 33, 1, 33, 1, 33, 1, 33, 5, 33, 306, - 8, 33, 10, 33, 12, 33, 309, 9, 33, 1, 33, 1, 33, 1, 33, 5, 33, 314, 8, - 33, 10, 33, 12, 33, 317, 9, 33, 3, 33, 319, 8, 33, 1, 34, 1, 34, 3, 34, - 323, 8, 34, 1, 35, 4, 35, 326, 8, 35, 11, 35, 12, 35, 327, 1, 35, 1, 35, - 5, 35, 332, 8, 35, 10, 35, 12, 35, 335, 9, 35, 3, 35, 337, 8, 35, 1, 35, - 1, 35, 3, 35, 341, 8, 35, 1, 35, 4, 35, 344, 8, 35, 11, 35, 12, 35, 345, - 3, 35, 348, 8, 35, 1, 35, 1, 35, 4, 35, 352, 8, 35, 11, 35, 12, 35, 353, - 1, 35, 1, 35, 3, 35, 358, 8, 35, 1, 35, 4, 35, 361, 8, 35, 11, 35, 12, - 35, 362, 3, 35, 365, 8, 35, 3, 35, 367, 8, 35, 1, 36, 1, 36, 1, 36, 1, - 36, 5, 36, 373, 8, 36, 10, 36, 12, 36, 376, 9, 36, 1, 36, 1, 36, 1, 37, - 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, - 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, - 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, - 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, - 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, - 63, 1, 64, 1, 64, 0, 0, 65, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, - 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, - 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, - 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, - 35, 71, 36, 73, 37, 75, 38, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, - 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, - 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, - 0, 129, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, - 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, - 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, - 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, - 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, - 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, - 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, - 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, - 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, - 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, - 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, - 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 431, 0, 1, 1, 0, 0, - 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, - 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, - 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, - 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, - 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, - 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, - 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, - 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, - 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, - 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 1, 131, 1, 0, 0, 0, 3, 136, - 1, 0, 0, 0, 5, 142, 1, 0, 0, 0, 7, 144, 1, 0, 0, 0, 9, 146, 1, 0, 0, 0, - 11, 148, 1, 0, 0, 0, 13, 150, 1, 0, 0, 0, 15, 157, 1, 0, 0, 0, 17, 163, - 1, 0, 0, 0, 19, 179, 1, 0, 0, 0, 21, 188, 1, 0, 0, 0, 23, 192, 1, 0, 0, - 0, 25, 195, 1, 0, 0, 0, 27, 198, 1, 0, 0, 0, 29, 203, 1, 0, 0, 0, 31, 212, - 1, 0, 0, 0, 33, 214, 1, 0, 0, 0, 35, 216, 1, 0, 0, 0, 37, 218, 1, 0, 0, - 0, 39, 221, 1, 0, 0, 0, 41, 224, 1, 0, 0, 0, 43, 227, 1, 0, 0, 0, 45, 232, - 1, 0, 0, 0, 47, 236, 1, 0, 0, 0, 49, 242, 1, 0, 0, 0, 51, 246, 1, 0, 0, - 0, 53, 251, 1, 0, 0, 0, 55, 254, 1, 0, 0, 0, 57, 259, 1, 0, 0, 0, 59, 265, - 1, 0, 0, 0, 61, 271, 1, 0, 0, 0, 63, 275, 1, 0, 0, 0, 65, 279, 1, 0, 0, - 0, 67, 318, 1, 0, 0, 0, 69, 322, 1, 0, 0, 0, 71, 366, 1, 0, 0, 0, 73, 368, - 1, 0, 0, 0, 75, 379, 1, 0, 0, 0, 77, 381, 1, 0, 0, 0, 79, 383, 1, 0, 0, - 0, 81, 385, 1, 0, 0, 0, 83, 387, 1, 0, 0, 0, 85, 389, 1, 0, 0, 0, 87, 391, - 1, 0, 0, 0, 89, 393, 1, 0, 0, 0, 91, 395, 1, 0, 0, 0, 93, 397, 1, 0, 0, - 0, 95, 399, 1, 0, 0, 0, 97, 401, 1, 0, 0, 0, 99, 403, 1, 0, 0, 0, 101, - 405, 1, 0, 0, 0, 103, 407, 1, 0, 0, 0, 105, 409, 1, 0, 0, 0, 107, 411, - 1, 0, 0, 0, 109, 413, 1, 0, 0, 0, 111, 415, 1, 0, 0, 0, 113, 417, 1, 0, - 0, 0, 115, 419, 1, 0, 0, 0, 117, 421, 1, 0, 0, 0, 119, 423, 1, 0, 0, 0, - 121, 425, 1, 0, 0, 0, 123, 427, 1, 0, 0, 0, 125, 429, 1, 0, 0, 0, 127, - 431, 1, 0, 0, 0, 129, 433, 1, 0, 0, 0, 131, 132, 7, 0, 0, 0, 132, 133, - 1, 0, 0, 0, 133, 134, 6, 0, 0, 0, 134, 2, 1, 0, 0, 0, 135, 137, 7, 1, 0, - 0, 136, 135, 1, 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, 136, 1, 0, 0, 0, 138, - 139, 1, 0, 0, 0, 139, 140, 1, 0, 0, 0, 140, 141, 6, 1, 1, 0, 141, 4, 1, - 0, 0, 0, 142, 143, 5, 44, 0, 0, 143, 6, 1, 0, 0, 0, 144, 145, 5, 40, 0, - 0, 145, 8, 1, 0, 0, 0, 146, 147, 5, 41, 0, 0, 147, 10, 1, 0, 0, 0, 148, - 149, 5, 59, 0, 0, 149, 12, 1, 0, 0, 0, 150, 151, 3, 115, 57, 0, 151, 152, - 3, 87, 43, 0, 152, 153, 3, 101, 50, 0, 153, 154, 3, 87, 43, 0, 154, 155, - 3, 83, 41, 0, 155, 156, 3, 117, 58, 0, 156, 14, 1, 0, 0, 0, 157, 158, 3, - 123, 61, 0, 158, 159, 3, 93, 46, 0, 159, 160, 3, 87, 43, 0, 160, 161, 3, - 113, 56, 0, 161, 162, 3, 87, 43, 0, 162, 16, 1, 0, 0, 0, 163, 164, 3, 123, - 61, 0, 164, 165, 3, 95, 47, 0, 165, 166, 3, 105, 52, 0, 166, 167, 3, 85, - 42, 0, 167, 168, 3, 107, 53, 0, 168, 169, 3, 123, 61, 0, 169, 170, 3, 1, - 0, 0, 170, 171, 3, 117, 58, 0, 171, 172, 3, 119, 59, 0, 172, 173, 3, 103, - 51, 0, 173, 174, 3, 81, 40, 0, 174, 175, 3, 101, 50, 0, 175, 176, 3, 95, - 47, 0, 176, 177, 3, 105, 52, 0, 177, 178, 3, 91, 45, 0, 178, 18, 1, 0, - 0, 0, 179, 180, 3, 91, 45, 0, 180, 181, 3, 113, 56, 0, 181, 182, 3, 107, - 53, 0, 182, 183, 3, 119, 59, 0, 183, 184, 3, 109, 54, 0, 184, 185, 3, 1, - 0, 0, 185, 186, 3, 81, 40, 0, 186, 187, 3, 127, 63, 0, 187, 20, 1, 0, 0, - 0, 188, 189, 3, 79, 39, 0, 189, 190, 3, 105, 52, 0, 190, 191, 3, 85, 42, - 0, 191, 22, 1, 0, 0, 0, 192, 193, 3, 107, 53, 0, 193, 194, 3, 113, 56, - 0, 194, 24, 1, 0, 0, 0, 195, 196, 3, 95, 47, 0, 196, 197, 3, 115, 57, 0, - 197, 26, 1, 0, 0, 0, 198, 199, 3, 101, 50, 0, 199, 200, 3, 95, 47, 0, 200, - 201, 3, 99, 49, 0, 201, 202, 3, 87, 43, 0, 202, 28, 1, 0, 0, 0, 203, 204, - 3, 105, 52, 0, 204, 205, 3, 107, 53, 0, 205, 206, 3, 117, 58, 0, 206, 207, - 3, 1, 0, 0, 207, 208, 3, 101, 50, 0, 208, 209, 3, 95, 47, 0, 209, 210, - 3, 99, 49, 0, 210, 211, 3, 87, 43, 0, 211, 30, 1, 0, 0, 0, 212, 213, 5, - 61, 0, 0, 213, 32, 1, 0, 0, 0, 214, 215, 5, 62, 0, 0, 215, 34, 1, 0, 0, - 0, 216, 217, 5, 60, 0, 0, 217, 36, 1, 0, 0, 0, 218, 219, 3, 35, 17, 0, - 219, 220, 3, 31, 15, 0, 220, 38, 1, 0, 0, 0, 221, 222, 3, 33, 16, 0, 222, - 223, 3, 31, 15, 0, 223, 40, 1, 0, 0, 0, 224, 225, 5, 33, 0, 0, 225, 226, - 3, 31, 15, 0, 226, 42, 1, 0, 0, 0, 227, 228, 3, 105, 52, 0, 228, 229, 3, - 119, 59, 0, 229, 230, 3, 101, 50, 0, 230, 231, 3, 101, 50, 0, 231, 44, - 1, 0, 0, 0, 232, 233, 3, 25, 12, 0, 233, 234, 3, 1, 0, 0, 234, 235, 3, - 43, 21, 0, 235, 46, 1, 0, 0, 0, 236, 237, 3, 25, 12, 0, 237, 238, 3, 1, - 0, 0, 238, 239, 3, 49, 24, 0, 239, 240, 3, 1, 0, 0, 240, 241, 3, 43, 21, - 0, 241, 48, 1, 0, 0, 0, 242, 243, 3, 105, 52, 0, 243, 244, 3, 107, 53, - 0, 244, 245, 3, 117, 58, 0, 245, 50, 1, 0, 0, 0, 246, 247, 3, 49, 24, 0, - 247, 248, 3, 1, 0, 0, 248, 249, 3, 95, 47, 0, 249, 250, 3, 105, 52, 0, - 250, 52, 1, 0, 0, 0, 251, 252, 3, 95, 47, 0, 252, 253, 3, 105, 52, 0, 253, - 54, 1, 0, 0, 0, 254, 255, 3, 117, 58, 0, 255, 256, 3, 113, 56, 0, 256, - 257, 3, 119, 59, 0, 257, 258, 3, 87, 43, 0, 258, 56, 1, 0, 0, 0, 259, 260, - 3, 89, 44, 0, 260, 261, 3, 79, 39, 0, 261, 262, 3, 101, 50, 0, 262, 263, - 3, 115, 57, 0, 263, 264, 3, 87, 43, 0, 264, 58, 1, 0, 0, 0, 265, 266, 3, - 83, 41, 0, 266, 267, 3, 107, 53, 0, 267, 268, 3, 119, 59, 0, 268, 269, - 3, 105, 52, 0, 269, 270, 3, 117, 58, 0, 270, 60, 1, 0, 0, 0, 271, 272, - 3, 103, 51, 0, 272, 273, 3, 95, 47, 0, 273, 274, 3, 105, 52, 0, 274, 62, - 1, 0, 0, 0, 275, 276, 3, 103, 51, 0, 276, 277, 3, 79, 39, 0, 277, 278, - 3, 125, 62, 0, 278, 64, 1, 0, 0, 0, 279, 280, 3, 79, 39, 0, 280, 281, 3, - 121, 60, 0, 281, 282, 3, 91, 45, 0, 282, 66, 1, 0, 0, 0, 283, 289, 5, 34, - 0, 0, 284, 288, 8, 2, 0, 0, 285, 286, 5, 34, 0, 0, 286, 288, 5, 34, 0, - 0, 287, 284, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 288, 291, 1, 0, 0, 0, 289, - 287, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 292, 1, 0, 0, 0, 291, 289, - 1, 0, 0, 0, 292, 319, 5, 34, 0, 0, 293, 299, 5, 96, 0, 0, 294, 298, 8, - 3, 0, 0, 295, 296, 5, 96, 0, 0, 296, 298, 5, 96, 0, 0, 297, 294, 1, 0, - 0, 0, 297, 295, 1, 0, 0, 0, 298, 301, 1, 0, 0, 0, 299, 297, 1, 0, 0, 0, - 299, 300, 1, 0, 0, 0, 300, 302, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 302, - 319, 5, 96, 0, 0, 303, 307, 5, 91, 0, 0, 304, 306, 8, 4, 0, 0, 305, 304, - 1, 0, 0, 0, 306, 309, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 307, 308, 1, 0, - 0, 0, 308, 310, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 310, 319, 5, 93, 0, 0, - 311, 315, 7, 5, 0, 0, 312, 314, 7, 6, 0, 0, 313, 312, 1, 0, 0, 0, 314, - 317, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 319, - 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 318, 283, 1, 0, 0, 0, 318, 293, 1, 0, - 0, 0, 318, 303, 1, 0, 0, 0, 318, 311, 1, 0, 0, 0, 319, 68, 1, 0, 0, 0, - 320, 323, 3, 55, 27, 0, 321, 323, 3, 57, 28, 0, 322, 320, 1, 0, 0, 0, 322, - 321, 1, 0, 0, 0, 323, 70, 1, 0, 0, 0, 324, 326, 3, 77, 38, 0, 325, 324, - 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 327, 328, 1, 0, - 0, 0, 328, 336, 1, 0, 0, 0, 329, 333, 5, 46, 0, 0, 330, 332, 3, 77, 38, - 0, 331, 330, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, - 334, 1, 0, 0, 0, 334, 337, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 329, - 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 347, 1, 0, 0, 0, 338, 340, 3, 87, - 43, 0, 339, 341, 7, 7, 0, 0, 340, 339, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, - 341, 343, 1, 0, 0, 0, 342, 344, 3, 77, 38, 0, 343, 342, 1, 0, 0, 0, 344, - 345, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 348, - 1, 0, 0, 0, 347, 338, 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 367, 1, 0, - 0, 0, 349, 351, 5, 46, 0, 0, 350, 352, 3, 77, 38, 0, 351, 350, 1, 0, 0, - 0, 352, 353, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, - 364, 1, 0, 0, 0, 355, 357, 3, 87, 43, 0, 356, 358, 7, 7, 0, 0, 357, 356, - 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 360, 1, 0, 0, 0, 359, 361, 3, 77, - 38, 0, 360, 359, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, - 362, 363, 1, 0, 0, 0, 363, 365, 1, 0, 0, 0, 364, 355, 1, 0, 0, 0, 364, - 365, 1, 0, 0, 0, 365, 367, 1, 0, 0, 0, 366, 325, 1, 0, 0, 0, 366, 349, - 1, 0, 0, 0, 367, 72, 1, 0, 0, 0, 368, 374, 5, 39, 0, 0, 369, 373, 8, 8, - 0, 0, 370, 371, 5, 39, 0, 0, 371, 373, 5, 39, 0, 0, 372, 369, 1, 0, 0, - 0, 372, 370, 1, 0, 0, 0, 373, 376, 1, 0, 0, 0, 374, 372, 1, 0, 0, 0, 374, - 375, 1, 0, 0, 0, 375, 377, 1, 0, 0, 0, 376, 374, 1, 0, 0, 0, 377, 378, - 5, 39, 0, 0, 378, 74, 1, 0, 0, 0, 379, 380, 5, 42, 0, 0, 380, 76, 1, 0, - 0, 0, 381, 382, 7, 9, 0, 0, 382, 78, 1, 0, 0, 0, 383, 384, 7, 10, 0, 0, - 384, 80, 1, 0, 0, 0, 385, 386, 7, 11, 0, 0, 386, 82, 1, 0, 0, 0, 387, 388, - 7, 12, 0, 0, 388, 84, 1, 0, 0, 0, 389, 390, 7, 13, 0, 0, 390, 86, 1, 0, - 0, 0, 391, 392, 7, 14, 0, 0, 392, 88, 1, 0, 0, 0, 393, 394, 7, 15, 0, 0, - 394, 90, 1, 0, 0, 0, 395, 396, 7, 16, 0, 0, 396, 92, 1, 0, 0, 0, 397, 398, - 7, 17, 0, 0, 398, 94, 1, 0, 0, 0, 399, 400, 7, 18, 0, 0, 400, 96, 1, 0, - 0, 0, 401, 402, 7, 19, 0, 0, 402, 98, 1, 0, 0, 0, 403, 404, 7, 20, 0, 0, - 404, 100, 1, 0, 0, 0, 405, 406, 7, 21, 0, 0, 406, 102, 1, 0, 0, 0, 407, - 408, 7, 22, 0, 0, 408, 104, 1, 0, 0, 0, 409, 410, 7, 23, 0, 0, 410, 106, - 1, 0, 0, 0, 411, 412, 7, 24, 0, 0, 412, 108, 1, 0, 0, 0, 413, 414, 7, 25, - 0, 0, 414, 110, 1, 0, 0, 0, 415, 416, 7, 26, 0, 0, 416, 112, 1, 0, 0, 0, - 417, 418, 7, 27, 0, 0, 418, 114, 1, 0, 0, 0, 419, 420, 7, 28, 0, 0, 420, - 116, 1, 0, 0, 0, 421, 422, 7, 29, 0, 0, 422, 118, 1, 0, 0, 0, 423, 424, - 7, 30, 0, 0, 424, 120, 1, 0, 0, 0, 425, 426, 7, 31, 0, 0, 426, 122, 1, - 0, 0, 0, 427, 428, 7, 32, 0, 0, 428, 124, 1, 0, 0, 0, 429, 430, 7, 33, - 0, 0, 430, 126, 1, 0, 0, 0, 431, 432, 7, 34, 0, 0, 432, 128, 1, 0, 0, 0, - 433, 434, 7, 35, 0, 0, 434, 130, 1, 0, 0, 0, 23, 0, 138, 287, 289, 297, - 299, 307, 315, 318, 322, 327, 333, 336, 340, 345, 347, 353, 357, 362, 364, - 366, 372, 374, 2, 0, 1, 0, 6, 0, 0, + 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 1, 0, 1, 0, 1, 0, 1, 0, 1, + 1, 4, 1, 139, 8, 1, 11, 1, 12, 1, 140, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, + 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, + 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, + 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, + 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, + 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, + 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, + 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, + 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, + 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, + 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, + 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, + 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, + 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, + 34, 1, 34, 1, 34, 1, 34, 5, 34, 294, 8, 34, 10, 34, 12, 34, 297, 9, 34, + 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 304, 8, 34, 10, 34, 12, 34, 307, + 9, 34, 1, 34, 1, 34, 1, 34, 5, 34, 312, 8, 34, 10, 34, 12, 34, 315, 9, + 34, 1, 34, 1, 34, 1, 34, 5, 34, 320, 8, 34, 10, 34, 12, 34, 323, 9, 34, + 3, 34, 325, 8, 34, 1, 35, 1, 35, 3, 35, 329, 8, 35, 1, 36, 4, 36, 332, + 8, 36, 11, 36, 12, 36, 333, 1, 36, 1, 36, 5, 36, 338, 8, 36, 10, 36, 12, + 36, 341, 9, 36, 3, 36, 343, 8, 36, 1, 36, 1, 36, 3, 36, 347, 8, 36, 1, + 36, 4, 36, 350, 8, 36, 11, 36, 12, 36, 351, 3, 36, 354, 8, 36, 1, 36, 1, + 36, 4, 36, 358, 8, 36, 11, 36, 12, 36, 359, 1, 36, 1, 36, 3, 36, 364, 8, + 36, 1, 36, 4, 36, 367, 8, 36, 11, 36, 12, 36, 368, 3, 36, 371, 8, 36, 3, + 36, 373, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 379, 8, 37, 10, 37, + 12, 37, 382, 9, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, + 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, + 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, + 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, + 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, + 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 0, 0, 66, 1, + 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, + 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, + 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, + 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, + 77, 39, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, + 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, + 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 1, 0, + 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, + 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, + 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, + 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, + 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, + 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, + 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, + 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, + 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, + 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, + 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, + 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 437, 0, 1, 1, 0, 0, 0, 0, 3, + 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, + 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, + 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, + 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, + 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, + 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, + 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, + 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, + 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, + 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 1, 133, 1, 0, + 0, 0, 3, 138, 1, 0, 0, 0, 5, 144, 1, 0, 0, 0, 7, 146, 1, 0, 0, 0, 9, 148, + 1, 0, 0, 0, 11, 150, 1, 0, 0, 0, 13, 152, 1, 0, 0, 0, 15, 159, 1, 0, 0, + 0, 17, 165, 1, 0, 0, 0, 19, 181, 1, 0, 0, 0, 21, 190, 1, 0, 0, 0, 23, 194, + 1, 0, 0, 0, 25, 197, 1, 0, 0, 0, 27, 200, 1, 0, 0, 0, 29, 205, 1, 0, 0, + 0, 31, 214, 1, 0, 0, 0, 33, 216, 1, 0, 0, 0, 35, 218, 1, 0, 0, 0, 37, 220, + 1, 0, 0, 0, 39, 223, 1, 0, 0, 0, 41, 226, 1, 0, 0, 0, 43, 229, 1, 0, 0, + 0, 45, 234, 1, 0, 0, 0, 47, 238, 1, 0, 0, 0, 49, 244, 1, 0, 0, 0, 51, 248, + 1, 0, 0, 0, 53, 253, 1, 0, 0, 0, 55, 256, 1, 0, 0, 0, 57, 261, 1, 0, 0, + 0, 59, 267, 1, 0, 0, 0, 61, 273, 1, 0, 0, 0, 63, 277, 1, 0, 0, 0, 65, 281, + 1, 0, 0, 0, 67, 285, 1, 0, 0, 0, 69, 324, 1, 0, 0, 0, 71, 328, 1, 0, 0, + 0, 73, 372, 1, 0, 0, 0, 75, 374, 1, 0, 0, 0, 77, 385, 1, 0, 0, 0, 79, 387, + 1, 0, 0, 0, 81, 389, 1, 0, 0, 0, 83, 391, 1, 0, 0, 0, 85, 393, 1, 0, 0, + 0, 87, 395, 1, 0, 0, 0, 89, 397, 1, 0, 0, 0, 91, 399, 1, 0, 0, 0, 93, 401, + 1, 0, 0, 0, 95, 403, 1, 0, 0, 0, 97, 405, 1, 0, 0, 0, 99, 407, 1, 0, 0, + 0, 101, 409, 1, 0, 0, 0, 103, 411, 1, 0, 0, 0, 105, 413, 1, 0, 0, 0, 107, + 415, 1, 0, 0, 0, 109, 417, 1, 0, 0, 0, 111, 419, 1, 0, 0, 0, 113, 421, + 1, 0, 0, 0, 115, 423, 1, 0, 0, 0, 117, 425, 1, 0, 0, 0, 119, 427, 1, 0, + 0, 0, 121, 429, 1, 0, 0, 0, 123, 431, 1, 0, 0, 0, 125, 433, 1, 0, 0, 0, + 127, 435, 1, 0, 0, 0, 129, 437, 1, 0, 0, 0, 131, 439, 1, 0, 0, 0, 133, + 134, 7, 0, 0, 0, 134, 135, 1, 0, 0, 0, 135, 136, 6, 0, 0, 0, 136, 2, 1, + 0, 0, 0, 137, 139, 7, 1, 0, 0, 138, 137, 1, 0, 0, 0, 139, 140, 1, 0, 0, + 0, 140, 138, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 142, 1, 0, 0, 0, 142, + 143, 6, 1, 1, 0, 143, 4, 1, 0, 0, 0, 144, 145, 5, 44, 0, 0, 145, 6, 1, + 0, 0, 0, 146, 147, 5, 40, 0, 0, 147, 8, 1, 0, 0, 0, 148, 149, 5, 41, 0, + 0, 149, 10, 1, 0, 0, 0, 150, 151, 5, 59, 0, 0, 151, 12, 1, 0, 0, 0, 152, + 153, 3, 117, 58, 0, 153, 154, 3, 89, 44, 0, 154, 155, 3, 103, 51, 0, 155, + 156, 3, 89, 44, 0, 156, 157, 3, 85, 42, 0, 157, 158, 3, 119, 59, 0, 158, + 14, 1, 0, 0, 0, 159, 160, 3, 125, 62, 0, 160, 161, 3, 95, 47, 0, 161, 162, + 3, 89, 44, 0, 162, 163, 3, 115, 57, 0, 163, 164, 3, 89, 44, 0, 164, 16, + 1, 0, 0, 0, 165, 166, 3, 125, 62, 0, 166, 167, 3, 97, 48, 0, 167, 168, + 3, 107, 53, 0, 168, 169, 3, 87, 43, 0, 169, 170, 3, 109, 54, 0, 170, 171, + 3, 125, 62, 0, 171, 172, 3, 1, 0, 0, 172, 173, 3, 119, 59, 0, 173, 174, + 3, 121, 60, 0, 174, 175, 3, 105, 52, 0, 175, 176, 3, 83, 41, 0, 176, 177, + 3, 103, 51, 0, 177, 178, 3, 97, 48, 0, 178, 179, 3, 107, 53, 0, 179, 180, + 3, 93, 46, 0, 180, 18, 1, 0, 0, 0, 181, 182, 3, 93, 46, 0, 182, 183, 3, + 115, 57, 0, 183, 184, 3, 109, 54, 0, 184, 185, 3, 121, 60, 0, 185, 186, + 3, 111, 55, 0, 186, 187, 3, 1, 0, 0, 187, 188, 3, 83, 41, 0, 188, 189, + 3, 129, 64, 0, 189, 20, 1, 0, 0, 0, 190, 191, 3, 81, 40, 0, 191, 192, 3, + 107, 53, 0, 192, 193, 3, 87, 43, 0, 193, 22, 1, 0, 0, 0, 194, 195, 3, 109, + 54, 0, 195, 196, 3, 115, 57, 0, 196, 24, 1, 0, 0, 0, 197, 198, 3, 97, 48, + 0, 198, 199, 3, 117, 58, 0, 199, 26, 1, 0, 0, 0, 200, 201, 3, 103, 51, + 0, 201, 202, 3, 97, 48, 0, 202, 203, 3, 101, 50, 0, 203, 204, 3, 89, 44, + 0, 204, 28, 1, 0, 0, 0, 205, 206, 3, 107, 53, 0, 206, 207, 3, 109, 54, + 0, 207, 208, 3, 119, 59, 0, 208, 209, 3, 1, 0, 0, 209, 210, 3, 103, 51, + 0, 210, 211, 3, 97, 48, 0, 211, 212, 3, 101, 50, 0, 212, 213, 3, 89, 44, + 0, 213, 30, 1, 0, 0, 0, 214, 215, 5, 61, 0, 0, 215, 32, 1, 0, 0, 0, 216, + 217, 5, 62, 0, 0, 217, 34, 1, 0, 0, 0, 218, 219, 5, 60, 0, 0, 219, 36, + 1, 0, 0, 0, 220, 221, 3, 35, 17, 0, 221, 222, 3, 31, 15, 0, 222, 38, 1, + 0, 0, 0, 223, 224, 3, 33, 16, 0, 224, 225, 3, 31, 15, 0, 225, 40, 1, 0, + 0, 0, 226, 227, 5, 33, 0, 0, 227, 228, 3, 31, 15, 0, 228, 42, 1, 0, 0, + 0, 229, 230, 3, 107, 53, 0, 230, 231, 3, 121, 60, 0, 231, 232, 3, 103, + 51, 0, 232, 233, 3, 103, 51, 0, 233, 44, 1, 0, 0, 0, 234, 235, 3, 25, 12, + 0, 235, 236, 3, 1, 0, 0, 236, 237, 3, 43, 21, 0, 237, 46, 1, 0, 0, 0, 238, + 239, 3, 25, 12, 0, 239, 240, 3, 1, 0, 0, 240, 241, 3, 49, 24, 0, 241, 242, + 3, 1, 0, 0, 242, 243, 3, 43, 21, 0, 243, 48, 1, 0, 0, 0, 244, 245, 3, 107, + 53, 0, 245, 246, 3, 109, 54, 0, 246, 247, 3, 119, 59, 0, 247, 50, 1, 0, + 0, 0, 248, 249, 3, 49, 24, 0, 249, 250, 3, 1, 0, 0, 250, 251, 3, 97, 48, + 0, 251, 252, 3, 107, 53, 0, 252, 52, 1, 0, 0, 0, 253, 254, 3, 97, 48, 0, + 254, 255, 3, 107, 53, 0, 255, 54, 1, 0, 0, 0, 256, 257, 3, 119, 59, 0, + 257, 258, 3, 115, 57, 0, 258, 259, 3, 121, 60, 0, 259, 260, 3, 89, 44, + 0, 260, 56, 1, 0, 0, 0, 261, 262, 3, 91, 45, 0, 262, 263, 3, 81, 40, 0, + 263, 264, 3, 103, 51, 0, 264, 265, 3, 117, 58, 0, 265, 266, 3, 89, 44, + 0, 266, 58, 1, 0, 0, 0, 267, 268, 3, 85, 42, 0, 268, 269, 3, 109, 54, 0, + 269, 270, 3, 121, 60, 0, 270, 271, 3, 107, 53, 0, 271, 272, 3, 119, 59, + 0, 272, 60, 1, 0, 0, 0, 273, 274, 3, 117, 58, 0, 274, 275, 3, 121, 60, + 0, 275, 276, 3, 105, 52, 0, 276, 62, 1, 0, 0, 0, 277, 278, 3, 105, 52, + 0, 278, 279, 3, 97, 48, 0, 279, 280, 3, 107, 53, 0, 280, 64, 1, 0, 0, 0, + 281, 282, 3, 105, 52, 0, 282, 283, 3, 81, 40, 0, 283, 284, 3, 127, 63, + 0, 284, 66, 1, 0, 0, 0, 285, 286, 3, 81, 40, 0, 286, 287, 3, 123, 61, 0, + 287, 288, 3, 93, 46, 0, 288, 68, 1, 0, 0, 0, 289, 295, 5, 34, 0, 0, 290, + 294, 8, 2, 0, 0, 291, 292, 5, 34, 0, 0, 292, 294, 5, 34, 0, 0, 293, 290, + 1, 0, 0, 0, 293, 291, 1, 0, 0, 0, 294, 297, 1, 0, 0, 0, 295, 293, 1, 0, + 0, 0, 295, 296, 1, 0, 0, 0, 296, 298, 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, + 298, 325, 5, 34, 0, 0, 299, 305, 5, 96, 0, 0, 300, 304, 8, 3, 0, 0, 301, + 302, 5, 96, 0, 0, 302, 304, 5, 96, 0, 0, 303, 300, 1, 0, 0, 0, 303, 301, + 1, 0, 0, 0, 304, 307, 1, 0, 0, 0, 305, 303, 1, 0, 0, 0, 305, 306, 1, 0, + 0, 0, 306, 308, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 325, 5, 96, 0, 0, + 309, 313, 5, 91, 0, 0, 310, 312, 8, 4, 0, 0, 311, 310, 1, 0, 0, 0, 312, + 315, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 316, + 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 316, 325, 5, 93, 0, 0, 317, 321, 7, 5, + 0, 0, 318, 320, 7, 6, 0, 0, 319, 318, 1, 0, 0, 0, 320, 323, 1, 0, 0, 0, + 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 325, 1, 0, 0, 0, 323, + 321, 1, 0, 0, 0, 324, 289, 1, 0, 0, 0, 324, 299, 1, 0, 0, 0, 324, 309, + 1, 0, 0, 0, 324, 317, 1, 0, 0, 0, 325, 70, 1, 0, 0, 0, 326, 329, 3, 55, + 27, 0, 327, 329, 3, 57, 28, 0, 328, 326, 1, 0, 0, 0, 328, 327, 1, 0, 0, + 0, 329, 72, 1, 0, 0, 0, 330, 332, 3, 79, 39, 0, 331, 330, 1, 0, 0, 0, 332, + 333, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 342, + 1, 0, 0, 0, 335, 339, 5, 46, 0, 0, 336, 338, 3, 79, 39, 0, 337, 336, 1, + 0, 0, 0, 338, 341, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 339, 340, 1, 0, 0, + 0, 340, 343, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 342, 335, 1, 0, 0, 0, 342, + 343, 1, 0, 0, 0, 343, 353, 1, 0, 0, 0, 344, 346, 3, 89, 44, 0, 345, 347, + 7, 7, 0, 0, 346, 345, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347, 349, 1, 0, + 0, 0, 348, 350, 3, 79, 39, 0, 349, 348, 1, 0, 0, 0, 350, 351, 1, 0, 0, + 0, 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, + 344, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 373, 1, 0, 0, 0, 355, 357, + 5, 46, 0, 0, 356, 358, 3, 79, 39, 0, 357, 356, 1, 0, 0, 0, 358, 359, 1, + 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 370, 1, 0, 0, + 0, 361, 363, 3, 89, 44, 0, 362, 364, 7, 7, 0, 0, 363, 362, 1, 0, 0, 0, + 363, 364, 1, 0, 0, 0, 364, 366, 1, 0, 0, 0, 365, 367, 3, 79, 39, 0, 366, + 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, + 1, 0, 0, 0, 369, 371, 1, 0, 0, 0, 370, 361, 1, 0, 0, 0, 370, 371, 1, 0, + 0, 0, 371, 373, 1, 0, 0, 0, 372, 331, 1, 0, 0, 0, 372, 355, 1, 0, 0, 0, + 373, 74, 1, 0, 0, 0, 374, 380, 5, 39, 0, 0, 375, 379, 8, 8, 0, 0, 376, + 377, 5, 39, 0, 0, 377, 379, 5, 39, 0, 0, 378, 375, 1, 0, 0, 0, 378, 376, + 1, 0, 0, 0, 379, 382, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 380, 381, 1, 0, + 0, 0, 381, 383, 1, 0, 0, 0, 382, 380, 1, 0, 0, 0, 383, 384, 5, 39, 0, 0, + 384, 76, 1, 0, 0, 0, 385, 386, 5, 42, 0, 0, 386, 78, 1, 0, 0, 0, 387, 388, + 7, 9, 0, 0, 388, 80, 1, 0, 0, 0, 389, 390, 7, 10, 0, 0, 390, 82, 1, 0, + 0, 0, 391, 392, 7, 11, 0, 0, 392, 84, 1, 0, 0, 0, 393, 394, 7, 12, 0, 0, + 394, 86, 1, 0, 0, 0, 395, 396, 7, 13, 0, 0, 396, 88, 1, 0, 0, 0, 397, 398, + 7, 14, 0, 0, 398, 90, 1, 0, 0, 0, 399, 400, 7, 15, 0, 0, 400, 92, 1, 0, + 0, 0, 401, 402, 7, 16, 0, 0, 402, 94, 1, 0, 0, 0, 403, 404, 7, 17, 0, 0, + 404, 96, 1, 0, 0, 0, 405, 406, 7, 18, 0, 0, 406, 98, 1, 0, 0, 0, 407, 408, + 7, 19, 0, 0, 408, 100, 1, 0, 0, 0, 409, 410, 7, 20, 0, 0, 410, 102, 1, + 0, 0, 0, 411, 412, 7, 21, 0, 0, 412, 104, 1, 0, 0, 0, 413, 414, 7, 22, + 0, 0, 414, 106, 1, 0, 0, 0, 415, 416, 7, 23, 0, 0, 416, 108, 1, 0, 0, 0, + 417, 418, 7, 24, 0, 0, 418, 110, 1, 0, 0, 0, 419, 420, 7, 25, 0, 0, 420, + 112, 1, 0, 0, 0, 421, 422, 7, 26, 0, 0, 422, 114, 1, 0, 0, 0, 423, 424, + 7, 27, 0, 0, 424, 116, 1, 0, 0, 0, 425, 426, 7, 28, 0, 0, 426, 118, 1, + 0, 0, 0, 427, 428, 7, 29, 0, 0, 428, 120, 1, 0, 0, 0, 429, 430, 7, 30, + 0, 0, 430, 122, 1, 0, 0, 0, 431, 432, 7, 31, 0, 0, 432, 124, 1, 0, 0, 0, + 433, 434, 7, 32, 0, 0, 434, 126, 1, 0, 0, 0, 435, 436, 7, 33, 0, 0, 436, + 128, 1, 0, 0, 0, 437, 438, 7, 34, 0, 0, 438, 130, 1, 0, 0, 0, 439, 440, + 7, 35, 0, 0, 440, 132, 1, 0, 0, 0, 23, 0, 140, 293, 295, 303, 305, 313, + 321, 324, 328, 333, 339, 342, 346, 351, 353, 359, 363, 368, 370, 372, 378, + 380, 2, 0, 1, 0, 6, 0, 0, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -336,12 +339,13 @@ const ( SqlLexerK_TRUE = 28 SqlLexerK_FALSE = 29 SqlLexerK_COUNT = 30 - SqlLexerK_MIN = 31 - SqlLexerK_MAX = 32 - SqlLexerK_AVG = 33 - SqlLexerIDENTIFIER = 34 - SqlLexerBOOLEAN_LITERAL = 35 - SqlLexerNUMERIC_LITERAL = 36 - SqlLexerSTRING_LITERAL = 37 - SqlLexerSTAR = 38 + SqlLexerK_SUM = 31 + SqlLexerK_MIN = 32 + SqlLexerK_MAX = 33 + SqlLexerK_AVG = 34 + SqlLexerIDENTIFIER = 35 + SqlLexerBOOLEAN_LITERAL = 36 + SqlLexerNUMERIC_LITERAL = 37 + SqlLexerSTRING_LITERAL = 38 + SqlLexerSTAR = 39 ) diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index 4e02778b6225..aae7e90cadbb 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -35,15 +35,15 @@ func sqlParserInit() { staticData.literalNames = []string{ "", "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", "", "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "'*'", + "", "", "", "", "", "", "", "", "", "", "'*'", } staticData.symbolicNames = []string{ "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", - "K_NOT", "K_NOT_IN", "K_IN", "K_TRUE", "K_FALSE", "K_COUNT", "K_MIN", - "K_MAX", "K_AVG", "IDENTIFIER", "BOOLEAN_LITERAL", "NUMERIC_LITERAL", + "K_NOT", "K_NOT_IN", "K_IN", "K_TRUE", "K_FALSE", "K_COUNT", "K_SUM", + "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", "BOOLEAN_LITERAL", "NUMERIC_LITERAL", "STRING_LITERAL", "STAR", } staticData.ruleNames = []string{ @@ -53,46 +53,50 @@ func sqlParserInit() { } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 38, 103, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 39, 112, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 31, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 39, 8, 1, 1, 1, 3, 1, 42, 8, 1, 1, 1, 1, 1, 3, 1, 46, 8, 1, 1, 2, 1, 2, 1, 2, 5, 2, 51, 8, 2, 10, 2, 12, - 2, 54, 9, 2, 1, 2, 1, 2, 3, 2, 58, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, - 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, - 3, 6, 77, 8, 6, 1, 6, 1, 6, 1, 6, 5, 6, 82, 8, 6, 10, 6, 12, 6, 85, 9, - 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, - 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 0, 1, 12, 12, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, 0, 4, 1, 0, 11, 12, 2, 0, 13, 21, 26, 27, 1, - 0, 35, 37, 1, 0, 30, 33, 99, 0, 24, 1, 0, 0, 0, 2, 45, 1, 0, 0, 0, 4, 57, - 1, 0, 0, 0, 6, 59, 1, 0, 0, 0, 8, 61, 1, 0, 0, 0, 10, 64, 1, 0, 0, 0, 12, - 76, 1, 0, 0, 0, 14, 86, 1, 0, 0, 0, 16, 90, 1, 0, 0, 0, 18, 92, 1, 0, 0, - 0, 20, 94, 1, 0, 0, 0, 22, 97, 1, 0, 0, 0, 24, 25, 3, 2, 1, 0, 25, 26, - 5, 0, 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 5, 7, 0, 0, 28, 30, 3, 4, 2, 0, - 29, 31, 3, 8, 4, 0, 30, 29, 1, 0, 0, 0, 30, 31, 1, 0, 0, 0, 31, 32, 1, - 0, 0, 0, 32, 33, 5, 6, 0, 0, 33, 46, 1, 0, 0, 0, 34, 35, 5, 7, 0, 0, 35, - 36, 3, 4, 2, 0, 36, 38, 3, 10, 5, 0, 37, 39, 3, 8, 4, 0, 38, 37, 1, 0, - 0, 0, 38, 39, 1, 0, 0, 0, 39, 41, 1, 0, 0, 0, 40, 42, 3, 20, 10, 0, 41, - 40, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 5, 6, 0, - 0, 44, 46, 1, 0, 0, 0, 45, 27, 1, 0, 0, 0, 45, 34, 1, 0, 0, 0, 46, 3, 1, - 0, 0, 0, 47, 52, 3, 6, 3, 0, 48, 49, 5, 3, 0, 0, 49, 51, 3, 6, 3, 0, 50, - 48, 1, 0, 0, 0, 51, 54, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, - 0, 53, 58, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 55, 58, 3, 22, 11, 0, 56, 58, - 5, 38, 0, 0, 57, 47, 1, 0, 0, 0, 57, 55, 1, 0, 0, 0, 57, 56, 1, 0, 0, 0, - 58, 5, 1, 0, 0, 0, 59, 60, 5, 34, 0, 0, 60, 7, 1, 0, 0, 0, 61, 62, 5, 8, - 0, 0, 62, 63, 3, 12, 6, 0, 63, 9, 1, 0, 0, 0, 64, 65, 5, 9, 0, 0, 65, 66, - 5, 36, 0, 0, 66, 11, 1, 0, 0, 0, 67, 68, 6, 6, -1, 0, 68, 69, 5, 34, 0, - 0, 69, 70, 3, 16, 8, 0, 70, 71, 3, 18, 9, 0, 71, 77, 1, 0, 0, 0, 72, 73, - 3, 14, 7, 0, 73, 74, 7, 0, 0, 0, 74, 75, 3, 14, 7, 0, 75, 77, 1, 0, 0, - 0, 76, 67, 1, 0, 0, 0, 76, 72, 1, 0, 0, 0, 77, 83, 1, 0, 0, 0, 78, 79, - 10, 1, 0, 0, 79, 80, 7, 0, 0, 0, 80, 82, 3, 12, 6, 2, 81, 78, 1, 0, 0, - 0, 82, 85, 1, 0, 0, 0, 83, 81, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 13, - 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, 86, 87, 5, 4, 0, 0, 87, 88, 3, 12, 6, 0, - 88, 89, 5, 5, 0, 0, 89, 15, 1, 0, 0, 0, 90, 91, 7, 1, 0, 0, 91, 17, 1, - 0, 0, 0, 92, 93, 7, 2, 0, 0, 93, 19, 1, 0, 0, 0, 94, 95, 5, 10, 0, 0, 95, - 96, 3, 6, 3, 0, 96, 21, 1, 0, 0, 0, 97, 98, 7, 3, 0, 0, 98, 99, 5, 4, 0, - 0, 99, 100, 3, 6, 3, 0, 100, 101, 5, 5, 0, 0, 101, 23, 1, 0, 0, 0, 8, 30, - 38, 41, 45, 52, 57, 76, 83, + 2, 54, 9, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 60, 8, 2, 1, 2, 1, 2, 3, 2, + 64, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, + 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 83, 8, 6, 1, 6, 1, 6, 1, 6, + 5, 6, 88, 8, 6, 10, 6, 12, 6, 91, 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, + 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, + 108, 8, 11, 1, 11, 1, 11, 1, 11, 0, 1, 12, 12, 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 0, 4, 1, 0, 30, 34, 1, 0, 11, 12, 2, 0, 13, 21, 26, 27, + 1, 0, 36, 38, 110, 0, 24, 1, 0, 0, 0, 2, 45, 1, 0, 0, 0, 4, 63, 1, 0, 0, + 0, 6, 65, 1, 0, 0, 0, 8, 67, 1, 0, 0, 0, 10, 70, 1, 0, 0, 0, 12, 82, 1, + 0, 0, 0, 14, 92, 1, 0, 0, 0, 16, 96, 1, 0, 0, 0, 18, 98, 1, 0, 0, 0, 20, + 100, 1, 0, 0, 0, 22, 103, 1, 0, 0, 0, 24, 25, 3, 2, 1, 0, 25, 26, 5, 0, + 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 5, 7, 0, 0, 28, 30, 3, 4, 2, 0, 29, 31, + 3, 8, 4, 0, 30, 29, 1, 0, 0, 0, 30, 31, 1, 0, 0, 0, 31, 32, 1, 0, 0, 0, + 32, 33, 5, 6, 0, 0, 33, 46, 1, 0, 0, 0, 34, 35, 5, 7, 0, 0, 35, 36, 3, + 4, 2, 0, 36, 38, 3, 10, 5, 0, 37, 39, 3, 8, 4, 0, 38, 37, 1, 0, 0, 0, 38, + 39, 1, 0, 0, 0, 39, 41, 1, 0, 0, 0, 40, 42, 3, 20, 10, 0, 41, 40, 1, 0, + 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 5, 6, 0, 0, 44, 46, + 1, 0, 0, 0, 45, 27, 1, 0, 0, 0, 45, 34, 1, 0, 0, 0, 46, 3, 1, 0, 0, 0, + 47, 52, 3, 6, 3, 0, 48, 49, 5, 3, 0, 0, 49, 51, 3, 6, 3, 0, 50, 48, 1, + 0, 0, 0, 51, 54, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, + 64, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 55, 56, 7, 0, 0, 0, 56, 59, 5, 4, 0, + 0, 57, 60, 3, 6, 3, 0, 58, 60, 5, 39, 0, 0, 59, 57, 1, 0, 0, 0, 59, 58, + 1, 0, 0, 0, 60, 61, 1, 0, 0, 0, 61, 64, 5, 5, 0, 0, 62, 64, 5, 39, 0, 0, + 63, 47, 1, 0, 0, 0, 63, 55, 1, 0, 0, 0, 63, 62, 1, 0, 0, 0, 64, 5, 1, 0, + 0, 0, 65, 66, 5, 35, 0, 0, 66, 7, 1, 0, 0, 0, 67, 68, 5, 8, 0, 0, 68, 69, + 3, 12, 6, 0, 69, 9, 1, 0, 0, 0, 70, 71, 5, 9, 0, 0, 71, 72, 5, 37, 0, 0, + 72, 11, 1, 0, 0, 0, 73, 74, 6, 6, -1, 0, 74, 75, 5, 35, 0, 0, 75, 76, 3, + 16, 8, 0, 76, 77, 3, 18, 9, 0, 77, 83, 1, 0, 0, 0, 78, 79, 3, 14, 7, 0, + 79, 80, 7, 1, 0, 0, 80, 81, 3, 14, 7, 0, 81, 83, 1, 0, 0, 0, 82, 73, 1, + 0, 0, 0, 82, 78, 1, 0, 0, 0, 83, 89, 1, 0, 0, 0, 84, 85, 10, 1, 0, 0, 85, + 86, 7, 1, 0, 0, 86, 88, 3, 12, 6, 2, 87, 84, 1, 0, 0, 0, 88, 91, 1, 0, + 0, 0, 89, 87, 1, 0, 0, 0, 89, 90, 1, 0, 0, 0, 90, 13, 1, 0, 0, 0, 91, 89, + 1, 0, 0, 0, 92, 93, 5, 4, 0, 0, 93, 94, 3, 12, 6, 0, 94, 95, 5, 5, 0, 0, + 95, 15, 1, 0, 0, 0, 96, 97, 7, 2, 0, 0, 97, 17, 1, 0, 0, 0, 98, 99, 7, + 3, 0, 0, 99, 19, 1, 0, 0, 0, 100, 101, 5, 10, 0, 0, 101, 102, 3, 6, 3, + 0, 102, 21, 1, 0, 0, 0, 103, 104, 7, 0, 0, 0, 104, 107, 5, 4, 0, 0, 105, + 108, 3, 6, 3, 0, 106, 108, 5, 39, 0, 0, 107, 105, 1, 0, 0, 0, 107, 106, + 1, 0, 0, 0, 108, 109, 1, 0, 0, 0, 109, 110, 5, 5, 0, 0, 110, 23, 1, 0, + 0, 0, 10, 30, 38, 41, 45, 52, 59, 63, 82, 89, 107, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -161,14 +165,15 @@ const ( SqlParserK_TRUE = 28 SqlParserK_FALSE = 29 SqlParserK_COUNT = 30 - SqlParserK_MIN = 31 - SqlParserK_MAX = 32 - SqlParserK_AVG = 33 - SqlParserIDENTIFIER = 34 - SqlParserBOOLEAN_LITERAL = 35 - SqlParserNUMERIC_LITERAL = 36 - SqlParserSTRING_LITERAL = 37 - SqlParserSTAR = 38 + SqlParserK_SUM = 31 + SqlParserK_MIN = 32 + SqlParserK_MAX = 33 + SqlParserK_AVG = 34 + SqlParserIDENTIFIER = 35 + SqlParserBOOLEAN_LITERAL = 36 + SqlParserNUMERIC_LITERAL = 37 + SqlParserSTRING_LITERAL = 38 + SqlParserSTAR = 39 ) // SqlParser rules. @@ -686,10 +691,38 @@ func (s *SelectAVGContext) GetRuleContext() antlr.RuleContext { return s } -func (s *SelectAVGContext) Avg() IAvgContext { +func (s *SelectAVGContext) L_BRACKET() antlr.TerminalNode { + return s.GetToken(SqlParserL_BRACKET, 0) +} + +func (s *SelectAVGContext) R_BRACKET() antlr.TerminalNode { + return s.GetToken(SqlParserR_BRACKET, 0) +} + +func (s *SelectAVGContext) K_MIN() antlr.TerminalNode { + return s.GetToken(SqlParserK_MIN, 0) +} + +func (s *SelectAVGContext) K_MAX() antlr.TerminalNode { + return s.GetToken(SqlParserK_MAX, 0) +} + +func (s *SelectAVGContext) K_COUNT() antlr.TerminalNode { + return s.GetToken(SqlParserK_COUNT, 0) +} + +func (s *SelectAVGContext) K_AVG() antlr.TerminalNode { + return s.GetToken(SqlParserK_AVG, 0) +} + +func (s *SelectAVGContext) K_SUM() antlr.TerminalNode { + return s.GetToken(SqlParserK_SUM, 0) +} + +func (s *SelectAVGContext) Column() IColumnContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAvgContext); ok { + if _, ok := ctx.(IColumnContext); ok { t = ctx.(antlr.RuleContext) break } @@ -699,7 +732,11 @@ func (s *SelectAVGContext) Avg() IAvgContext { return nil } - return t.(IAvgContext) + return t.(IColumnContext) +} + +func (s *SelectAVGContext) STAR() antlr.TerminalNode { + return s.GetToken(SqlParserSTAR, 0) } func (s *SelectAVGContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { @@ -845,7 +882,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { } }() - p.SetState(57) + p.SetState(63) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { @@ -875,19 +912,53 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { _la = p.GetTokenStream().LA(1) } - case SqlParserK_COUNT, SqlParserK_MIN, SqlParserK_MAX, SqlParserK_AVG: + case SqlParserK_COUNT, SqlParserK_SUM, SqlParserK_MIN, SqlParserK_MAX, SqlParserK_AVG: localctx = NewSelectAVGContext(p, localctx) p.EnterOuterAlt(localctx, 2) { p.SetState(55) - p.Avg() + _la = p.GetTokenStream().LA(1) + + if !(((_la-30)&-(0x1f+1)) == 0 && ((1< 0 { + if err := v.runQuery(); err != nil { + v.outErr <- err + break + } + v.out <- v.logRecords + v.logRecords = plog.NewLogRecordSlice() + } + case <-v.shutdownC: + v.logger.Debug("sql engine shutting down") + return + + } + } + }() } func (v *SqlStreamVisitor) runQuery() error { @@ -140,7 +165,16 @@ func (v *SqlStreamVisitor) VisitSelectSimple(ctx *SelectSimpleContext) interface } func (v *SqlStreamVisitor) VisitSelectTumbling(ctx *SelectTumblingContext) interface{} { - return nil + if ctx.WhereStatement() == nil { + return ctx.ResultColumns().Accept(v) + } + switch res := ctx.WhereStatement().Accept(v).(type) { + case error: + return res + case nil: + + } + return ctx.ResultColumns().Accept(v) } func (v *SqlStreamVisitor) VisitSelectColumns(ctx *SelectColumnsContext) interface{} { @@ -199,7 +233,28 @@ func (v *SqlStreamVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { } func (v *SqlStreamVisitor) VisitSelectAVG(ctx *SelectAVGContext) interface{} { + + column := ctx.Column().GetText() + ls := plog.NewLogRecordSlice() + avgRecord := ls.AppendEmpty() + if ctx.K_AVG() != nil { + + } + if ctx.K_SUM() != nil { + + } + if ctx.K_COUNT() != nil { + + } + if ctx.K_MAX() != nil { + + } + if ctx.K_MIN() != nil { + + } + fmt.Println(column, avgRecord) return nil + } func (v *SqlStreamVisitor) VisitSelectStar(ctx *SelectStarContext) interface{} { @@ -219,11 +274,11 @@ func (v *SqlStreamVisitor) VisitSimpleCondition(ctx *SimpleConditionContext) int switch ctx.LiteralValue().GetStart().GetTokenType() { case SqlParserNUMERIC_LITERAL: - fieldValue, err := strconv.Atoi(fieldNameValue.AsString()) + fieldValue, err := strconv.ParseFloat(fieldNameValue.AsString(), 64) if err != nil { return fmt.Errorf("can't convert record field value %q to numeric; %w", fieldNameValue.AsString(), err) } - comparisonValue, err := strconv.Atoi(ctx.LiteralValue().GetText()) + comparisonValue, err := strconv.ParseFloat(ctx.LiteralValue().GetText(), 64) if err != nil { return fmt.Errorf("can't convert comparison value %q to numeric; %w", ctx.LiteralValue().GetText(), err) } @@ -277,6 +332,7 @@ func (v *SqlStreamVisitor) VisitSimpleRecursiveCondition(ctx *SimpleRecursiveCon } return false } + func (v *SqlStreamVisitor) VisitWindowTumbling(ctx *WindowTumblingContext) interface{} { return nil } diff --git a/processor/stream_processor/parser/sql_stream_visitor_test.go b/processor/stream_processor/parser/sql_stream_visitor_test.go index ada88c90829a..3dc8ad568c20 100644 --- a/processor/stream_processor/parser/sql_stream_visitor_test.go +++ b/processor/stream_processor/parser/sql_stream_visitor_test.go @@ -5,7 +5,9 @@ import ( "errors" "os" "strconv" + "sync" "testing" + "time" "go.uber.org/zap" @@ -362,33 +364,6 @@ func TestCompoundCondition(t *testing.T) { } -func generateTestLogs() plog.LogRecordSlice { - - ld := plog.NewLogs() - sc := ld.ResourceLogs().AppendEmpty().ScopeLogs().AppendEmpty() - - for i := 0; i < 100; i++ { - record := sc.LogRecords().AppendEmpty() - record.Attributes().InsertString("name", "Test name "+strconv.Itoa(i)) - record.Attributes().InsertBool("IsAlive", i%2 == 0) - record.Attributes().InsertInt("price", int64(i)) - } - - return ld.ResourceLogs().At(0).ScopeLogs().At(0).LogRecords() -} - -func TestWriteTestLogsToCSV(t *testing.T) { - f, _ := os.Create("test.csv") - w := csv.NewWriter(f) - defer w.Flush() - for i := 0; i < 100; i++ { - isAlive := strconv.FormatBool(i%2 == 0) - w.Write([]string{"Test name " + strconv.Itoa(i), isAlive, strconv.Itoa(i)}) - - } - -} - func TestIsWindowTumbling(t *testing.T) { tests := []struct { name string @@ -424,3 +399,135 @@ func TestIsWindowTumbling(t *testing.T) { }) } } + +func TestWindowTumblingLoop(t *testing.T) { + tests := []struct { + name string + query string + expected int + }{ + { + name: "1 ms", + query: "select max(price) window tumbling 50 where price > 4;", + expected: 285, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + var ls plog.LogRecordSlice + var wg sync.WaitGroup + wg.Add(1) + visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + go func() { + defer wg.Done() + for { + ls = <-out + break + } + }() + in <- generateTestLogs() + <-time.After(1 * time.Millisecond) + in <- generateTestLogs() + <-time.After(1 * time.Millisecond) + in <- generateTestLogs() + <-time.After(1 * time.Millisecond) + wg.Wait() + + assert.Equal(t, tt.expected, ls.Len()) + }) + } +} + +func TestWindowTumblingLoopInterval(t *testing.T) { + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + query := "select max(price) window tumbling 30 ;" + var ls plog.LogRecordSlice + + visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + + for i := 0; i < 3; i++ { + in <- generateTestLogs() + } + ls = <-out + assert.Equal(t, 300, ls.Len()) + + for i := 0; i < 4; i++ { + in <- generateTestLogs() + } + ls = <-out + assert.Equal(t, 400, ls.Len()) + + for i := 0; i < 6; i++ { + in <- generateTestLogs() + } + ls = <-out + assert.Equal(t, 600, ls.Len()) + + for i := 0; i < 12; i++ { + in <- generateTestLogs() + } + ls = <-out + assert.Equal(t, 1200, ls.Len()) +} + +func TestAvgContext_K_MIN(t *testing.T) { + ls := generateTestLogs() + res, err := min(ls, "price") + assert.Nil(t, err) + assert.Equal(t, 0.0, res) + +} + +func TestAvgContext_K_MAX(t *testing.T) { + ls := generateTestLogs() + res, err := max(ls, "price") + assert.Nil(t, err) + assert.Equal(t, 99.0, res) +} + +func TestAvgContext_K_SUM(t *testing.T) { + ls := generateTestLogs() + res, err := sum(ls, "price") + assert.Nil(t, err) + assert.Equal(t, 4950.0, res) +} + +func TestAvgContext_K_COUNT(t *testing.T) { + ls := generateTestLogs() + count := count(ls) + assert.Equal(t, 100, count) +} +func generateTestLogs() plog.LogRecordSlice { + + ld := plog.NewLogs() + sc := ld.ResourceLogs().AppendEmpty().ScopeLogs().AppendEmpty() + + for i := 0; i < 100; i++ { + record := sc.LogRecords().AppendEmpty() + record.Attributes().InsertString("name", "Test name "+strconv.Itoa(i)) + record.Attributes().InsertBool("IsAlive", i%2 == 0) + record.Attributes().InsertInt("price", int64(i)) + } + + return ld.ResourceLogs().At(0).ScopeLogs().At(0).LogRecords() +} + +func TestWriteTestLogsToCSV(t *testing.T) { + f, _ := os.Create("test.csv") + w := csv.NewWriter(f) + defer w.Flush() + for i := 0; i < 100; i++ { + isAlive := strconv.FormatBool(i%2 == 0) + err := w.Write([]string{"Test name " + strconv.Itoa(i), isAlive, strconv.Itoa(i)}) + assert.Nil(t, err) + + } + +} diff --git a/processor/stream_processor/parser/visitor_utils.go b/processor/stream_processor/parser/visitor_utils.go index e696127de369..24195b443ed8 100644 --- a/processor/stream_processor/parser/visitor_utils.go +++ b/processor/stream_processor/parser/visitor_utils.go @@ -2,6 +2,8 @@ package parser import ( "fmt" + "go.opentelemetry.io/collector/pdata/plog" + "strconv" "strings" ) @@ -42,7 +44,7 @@ func compareString(ctx *SimpleConditionContext, fieldVal, comparisonVal string) } } -func compareNumeric(ctx *SimpleConditionContext, fieldVal, comparisonVal int) bool { +func compareNumeric(ctx *SimpleConditionContext, fieldVal, comparisonVal float64) bool { switch ctx.ComparisonOperator().GetStart().GetTokenType() { case SqlParserK_EQUAL: return fieldVal == comparisonVal @@ -74,3 +76,89 @@ func compareBool(ctx *SimpleConditionContext, fieldVal, comparisonVal bool) bool } return false } + +func sum(ls plog.LogRecordSlice, fieldName string) (float64, error) { + var sum float64 + for i := 0; i < ls.Len(); i++ { + curRec := ls.At(i) + val, ok := curRec.Attributes().Get(fieldName) + if !ok { + return 0, fmt.Errorf("field %q missed", fieldName) + } + convertedVal, err := strconv.ParseFloat(val.AsString(), 64) + if err != nil { + return 0.0, err + } + sum = sum + convertedVal + } + + return sum, nil +} + +func min(ls plog.LogRecordSlice, fieldName string) (float64, error) { + var conErr error + ls.Sort(func(a, b plog.LogRecord) bool { + leftVal, ok := a.Attributes().Get(fieldName) + if !ok { + conErr = fmt.Errorf("field %q missed", fieldName) + } + convertedLeft := leftVal.DoubleVal() + + rightVal, ok := b.Attributes().Get(fieldName) + + if !ok { + conErr = fmt.Errorf("field %q missed", fieldName) + } + + convertedRight := rightVal.DoubleVal() + + return convertedLeft < convertedRight + }) + + if ls.Len() > 0 { + res, _ := ls.At(0).Attributes().Get(fieldName) + convertedRes, _ := strconv.ParseFloat(res.AsString(), 64) + return convertedRes, nil + } + + return 0, conErr +} + +func max(ls plog.LogRecordSlice, fieldName string) (float64, error) { + var conErr error + ls.Sort(func(a, b plog.LogRecord) bool { + leftVal, ok := a.Attributes().Get(fieldName) + if !ok { + conErr = fmt.Errorf("field %q missed", fieldName) + } + convertedLeft, err := strconv.ParseFloat(leftVal.AsString(), 64) + if err != nil { + conErr = err + } + + rightVal, ok := b.Attributes().Get(fieldName) + + if !ok { + conErr = fmt.Errorf("field %q missed", fieldName) + } + + convertedRight, err := strconv.ParseFloat(rightVal.AsString(), 64) + if err != nil { + conErr = err + } + + return convertedLeft > convertedRight + }) + + if ls.Len() > 0 { + res, _ := ls.At(0).Attributes().Get(fieldName) + convertedRes, _ := strconv.ParseFloat(res.AsString(), 64) + return convertedRes, nil + } + + return 0.0, conErr +} + +func count(ls plog.LogRecordSlice) int { + return ls.Len() +} diff --git a/processor/stream_processor/parser/windowTumblingVisitor.go b/processor/stream_processor/parser/windowTumblingVisitor.go index 1abb4b9bd6a4..55226532f020 100644 --- a/processor/stream_processor/parser/windowTumblingVisitor.go +++ b/processor/stream_processor/parser/windowTumblingVisitor.go @@ -8,6 +8,7 @@ import ( ) //This is just to determine if it is window tumbling query and get time period value +//TODO find better way type TumblingVisitor struct { *BaseSqlVisitor From 931570339305bf38f522c413bd1466d17a66c329 Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Mon, 8 Aug 2022 18:42:29 +0300 Subject: [PATCH 14/31] aggregations/tests --- .../parser/sql_stream_visitor.go | 25 ++++-- .../parser/sql_stream_visitor_test.go | 81 +++++++++++++++++++ .../stream_processor/parser/visitor_utils.go | 17 ++++ 3 files changed, 115 insertions(+), 8 deletions(-) diff --git a/processor/stream_processor/parser/sql_stream_visitor.go b/processor/stream_processor/parser/sql_stream_visitor.go index 79c24bc75b0b..7c80f07856d0 100644 --- a/processor/stream_processor/parser/sql_stream_visitor.go +++ b/processor/stream_processor/parser/sql_stream_visitor.go @@ -234,25 +234,34 @@ func (v *SqlStreamVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { func (v *SqlStreamVisitor) VisitSelectAVG(ctx *SelectAVGContext) interface{} { - column := ctx.Column().GetText() + fieldName := ctx.Column().GetText() ls := plog.NewLogRecordSlice() - avgRecord := ls.AppendEmpty() - if ctx.K_AVG() != nil { + agrRecord := ls.AppendEmpty() + var res float64 + var err error + if ctx.K_AVG() != nil { + res, err = avg(v.logRecords, fieldName) } if ctx.K_SUM() != nil { - + res, err = sum(v.logRecords, fieldName) } if ctx.K_COUNT() != nil { - + res = float64(count(v.logRecords)) } if ctx.K_MAX() != nil { - + res, err = max(v.logRecords, fieldName) } if ctx.K_MIN() != nil { - + res, err = min(v.logRecords, fieldName) } - fmt.Println(column, avgRecord) + if err != nil { + return err + } + fmt.Println(fieldName, res) + + agrRecord.Attributes().Insert(fieldName, pcommon.NewValueDouble(res)) + v.logRecords = ls return nil } diff --git a/processor/stream_processor/parser/sql_stream_visitor_test.go b/processor/stream_processor/parser/sql_stream_visitor_test.go index 3dc8ad568c20..4b108378292e 100644 --- a/processor/stream_processor/parser/sql_stream_visitor_test.go +++ b/processor/stream_processor/parser/sql_stream_visitor_test.go @@ -3,6 +3,7 @@ package parser import ( "encoding/csv" "errors" + "go.opentelemetry.io/collector/pdata/pcommon" "os" "strconv" "sync" @@ -477,6 +478,86 @@ func TestWindowTumblingLoopInterval(t *testing.T) { assert.Equal(t, 1200, ls.Len()) } +func TestWindowTumblingAvg(t *testing.T) { + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + query := "select avg(price) window tumbling 30 ;" + var ls plog.LogRecordSlice + + visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + in <- generateTestLogs() + ls = <-out + res, ok := ls.At(0).Attributes().Get("price") + assert.True(t, ok) + assert.Equal(t, pcommon.NewValueDouble(49.5), res) +} + +func TestWindowTumblingCount(t *testing.T) { + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + query := "select count(price) window tumbling 30 ;" + var ls plog.LogRecordSlice + + visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + in <- generateTestLogs() + ls = <-out + res, ok := ls.At(0).Attributes().Get("price") + assert.True(t, ok) + assert.Equal(t, pcommon.NewValueDouble(100.0), res) +} + +func TestWindowTumblingSum(t *testing.T) { + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + query := "select sum(price) window tumbling 30 ;" + var ls plog.LogRecordSlice + + visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + in <- generateTestLogs() + ls = <-out + res, ok := ls.At(0).Attributes().Get("price") + assert.True(t, ok) + assert.Equal(t, pcommon.NewValueDouble(4950.0), res) +} + +func TestWindowTumblingMin(t *testing.T) { + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + query := "select min(price) window tumbling 30 ;" + var ls plog.LogRecordSlice + + visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + in <- generateTestLogs() + ls = <-out + res, ok := ls.At(0).Attributes().Get("price") + assert.True(t, ok) + assert.Equal(t, pcommon.NewValueDouble(0.0), res) +} + +func TestWindowTumblingMax(t *testing.T) { + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + query := "select max(price) window tumbling 30 ;" + var ls plog.LogRecordSlice + + visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + in <- generateTestLogs() + ls = <-out + res, ok := ls.At(0).Attributes().Get("price") + assert.True(t, ok) + assert.Equal(t, pcommon.NewValueDouble(99.0), res) +} + func TestAvgContext_K_MIN(t *testing.T) { ls := generateTestLogs() res, err := min(ls, "price") diff --git a/processor/stream_processor/parser/visitor_utils.go b/processor/stream_processor/parser/visitor_utils.go index 24195b443ed8..bf5a33b09e37 100644 --- a/processor/stream_processor/parser/visitor_utils.go +++ b/processor/stream_processor/parser/visitor_utils.go @@ -159,6 +159,23 @@ func max(ls plog.LogRecordSlice, fieldName string) (float64, error) { return 0.0, conErr } +func avg(ls plog.LogRecordSlice, fieldName string) (float64, error) { + var sum float64 + for i := 0; i < ls.Len(); i++ { + curRec := ls.At(i) + val, ok := curRec.Attributes().Get(fieldName) + if !ok { + return 0, fmt.Errorf("field %q missed", fieldName) + } + convertedVal, err := strconv.ParseFloat(val.AsString(), 64) + if err != nil { + return 0.0, err + } + sum = sum + convertedVal + } + return sum / float64(ls.Len()), nil +} + func count(ls plog.LogRecordSlice) int { return ls.Len() } From d7d57fae3d50aca1473e33df7d16fe11801bd026 Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Tue, 9 Aug 2022 19:22:29 +0300 Subject: [PATCH 15/31] update --- processor/stream_processor/Sql.g4 | 12 +- processor/stream_processor/cmd/main.go | 21 +- processor/stream_processor/parser/Sql.interp | 3 +- .../parser/sql_base_visitor.go | 8 +- .../stream_processor/parser/sql_parser.go | 733 ++++++++++++------ .../parser/sql_stream_visitor.go | 109 ++- .../parser/sql_stream_visitor_test.go | 242 +----- .../stream_processor/parser/sql_visitor.go | 9 +- .../stream_processor/parser/visitor_utils.go | 1 - 9 files changed, 613 insertions(+), 525 deletions(-) diff --git a/processor/stream_processor/Sql.g4 b/processor/stream_processor/Sql.g4 index fb3b538b9e51..27e2fa3f7cd7 100644 --- a/processor/stream_processor/Sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -7,17 +7,21 @@ sqlQuery : selectQuery EOF; selectQuery - : K_SELECT resultColumns (whereStatement)? EOQ #selectSimple - | K_SELECT resultColumns windowTumbling (whereStatement)? (groupBy)? EOQ #selectTumbling + : K_SELECT resultColumns (whereStatement)? EOQ #selectSimple + | K_SELECT aggregationColumns windowTumbling (whereStatement)? EOQ #selectTumbling + | K_SELECT aggregationColumns windowTumbling (whereStatement)? groupBy EOQ #selectTumblingGroupBy ; resultColumns : column (COMMA column)* # selectColumns - | (K_MIN | K_MAX | K_COUNT | K_AVG | K_SUM) L_BRACKET (column | STAR) R_BRACKET # selectAVG | STAR # selectStar ; +aggregationColumns + : (column COMMA)? (K_MIN | K_MAX | K_COUNT | K_AVG | K_SUM) L_BRACKET (column | STAR) R_BRACKET #selectAVG + ; + column : IDENTIFIER @@ -56,7 +60,7 @@ literalValue groupBy - : K_GROUP_BY column + : K_GROUP_BY column ; diff --git a/processor/stream_processor/cmd/main.go b/processor/stream_processor/cmd/main.go index 1d44cb880271..fb08b2183802 100644 --- a/processor/stream_processor/cmd/main.go +++ b/processor/stream_processor/cmd/main.go @@ -4,6 +4,7 @@ import ( "bufio" "fmt" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/stream_processor/parser" + "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/plog" "go.uber.org/zap" "os" @@ -29,21 +30,13 @@ func main() { in <- logs select { - case ld := <-out: - for i := 0; i < ld.Len(); i++ { - name, ok := ld.At(i).Attributes().Get("name") - if ok { - fmt.Printf("name: %q ", name.AsString()) - } + case ls := <-out: + for i := 0; i < ls.Len(); i++ { + ls.At(i).Attributes().Range(func(k string, v pcommon.Value) bool { + fmt.Printf("%q: %q ", k, v.AsString()) + return true + }) - isAlive, ok := ld.At(i).Attributes().Get("IsAlive") - if ok { - fmt.Printf("IsAlive: %q ", isAlive.AsString()) - } - price, ok := ld.At(i).Attributes().Get("price") - if ok { - fmt.Printf("price:%q ", price.AsString()) - } fmt.Print("\n") } diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp index 8f90b311a98e..2c7a2d019e91 100644 --- a/processor/stream_processor/parser/Sql.interp +++ b/processor/stream_processor/parser/Sql.interp @@ -86,6 +86,7 @@ rule names: sqlQuery selectQuery resultColumns +aggregationColumns column whereStatement windowTumbling @@ -98,4 +99,4 @@ avg atn: -[4, 1, 39, 112, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 31, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 39, 8, 1, 1, 1, 3, 1, 42, 8, 1, 1, 1, 1, 1, 3, 1, 46, 8, 1, 1, 2, 1, 2, 1, 2, 5, 2, 51, 8, 2, 10, 2, 12, 2, 54, 9, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 60, 8, 2, 1, 2, 1, 2, 3, 2, 64, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 83, 8, 6, 1, 6, 1, 6, 1, 6, 5, 6, 88, 8, 6, 10, 6, 12, 6, 91, 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 108, 8, 11, 1, 11, 1, 11, 1, 11, 0, 1, 12, 12, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 0, 4, 1, 0, 30, 34, 1, 0, 11, 12, 2, 0, 13, 21, 26, 27, 1, 0, 36, 38, 110, 0, 24, 1, 0, 0, 0, 2, 45, 1, 0, 0, 0, 4, 63, 1, 0, 0, 0, 6, 65, 1, 0, 0, 0, 8, 67, 1, 0, 0, 0, 10, 70, 1, 0, 0, 0, 12, 82, 1, 0, 0, 0, 14, 92, 1, 0, 0, 0, 16, 96, 1, 0, 0, 0, 18, 98, 1, 0, 0, 0, 20, 100, 1, 0, 0, 0, 22, 103, 1, 0, 0, 0, 24, 25, 3, 2, 1, 0, 25, 26, 5, 0, 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 5, 7, 0, 0, 28, 30, 3, 4, 2, 0, 29, 31, 3, 8, 4, 0, 30, 29, 1, 0, 0, 0, 30, 31, 1, 0, 0, 0, 31, 32, 1, 0, 0, 0, 32, 33, 5, 6, 0, 0, 33, 46, 1, 0, 0, 0, 34, 35, 5, 7, 0, 0, 35, 36, 3, 4, 2, 0, 36, 38, 3, 10, 5, 0, 37, 39, 3, 8, 4, 0, 38, 37, 1, 0, 0, 0, 38, 39, 1, 0, 0, 0, 39, 41, 1, 0, 0, 0, 40, 42, 3, 20, 10, 0, 41, 40, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 5, 6, 0, 0, 44, 46, 1, 0, 0, 0, 45, 27, 1, 0, 0, 0, 45, 34, 1, 0, 0, 0, 46, 3, 1, 0, 0, 0, 47, 52, 3, 6, 3, 0, 48, 49, 5, 3, 0, 0, 49, 51, 3, 6, 3, 0, 50, 48, 1, 0, 0, 0, 51, 54, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, 64, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 55, 56, 7, 0, 0, 0, 56, 59, 5, 4, 0, 0, 57, 60, 3, 6, 3, 0, 58, 60, 5, 39, 0, 0, 59, 57, 1, 0, 0, 0, 59, 58, 1, 0, 0, 0, 60, 61, 1, 0, 0, 0, 61, 64, 5, 5, 0, 0, 62, 64, 5, 39, 0, 0, 63, 47, 1, 0, 0, 0, 63, 55, 1, 0, 0, 0, 63, 62, 1, 0, 0, 0, 64, 5, 1, 0, 0, 0, 65, 66, 5, 35, 0, 0, 66, 7, 1, 0, 0, 0, 67, 68, 5, 8, 0, 0, 68, 69, 3, 12, 6, 0, 69, 9, 1, 0, 0, 0, 70, 71, 5, 9, 0, 0, 71, 72, 5, 37, 0, 0, 72, 11, 1, 0, 0, 0, 73, 74, 6, 6, -1, 0, 74, 75, 5, 35, 0, 0, 75, 76, 3, 16, 8, 0, 76, 77, 3, 18, 9, 0, 77, 83, 1, 0, 0, 0, 78, 79, 3, 14, 7, 0, 79, 80, 7, 1, 0, 0, 80, 81, 3, 14, 7, 0, 81, 83, 1, 0, 0, 0, 82, 73, 1, 0, 0, 0, 82, 78, 1, 0, 0, 0, 83, 89, 1, 0, 0, 0, 84, 85, 10, 1, 0, 0, 85, 86, 7, 1, 0, 0, 86, 88, 3, 12, 6, 2, 87, 84, 1, 0, 0, 0, 88, 91, 1, 0, 0, 0, 89, 87, 1, 0, 0, 0, 89, 90, 1, 0, 0, 0, 90, 13, 1, 0, 0, 0, 91, 89, 1, 0, 0, 0, 92, 93, 5, 4, 0, 0, 93, 94, 3, 12, 6, 0, 94, 95, 5, 5, 0, 0, 95, 15, 1, 0, 0, 0, 96, 97, 7, 2, 0, 0, 97, 17, 1, 0, 0, 0, 98, 99, 7, 3, 0, 0, 99, 19, 1, 0, 0, 0, 100, 101, 5, 10, 0, 0, 101, 102, 3, 6, 3, 0, 102, 21, 1, 0, 0, 0, 103, 104, 7, 0, 0, 0, 104, 107, 5, 4, 0, 0, 105, 108, 3, 6, 3, 0, 106, 108, 5, 39, 0, 0, 107, 105, 1, 0, 0, 0, 107, 106, 1, 0, 0, 0, 108, 109, 1, 0, 0, 0, 109, 110, 5, 5, 0, 0, 110, 23, 1, 0, 0, 0, 10, 30, 38, 41, 45, 52, 59, 63, 82, 89, 107] \ No newline at end of file +[4, 1, 39, 126, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 33, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 54, 8, 1, 1, 2, 1, 2, 1, 2, 5, 2, 59, 8, 2, 10, 2, 12, 2, 62, 9, 2, 1, 2, 3, 2, 65, 8, 2, 1, 3, 1, 3, 1, 3, 3, 3, 70, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 76, 8, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 97, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 102, 8, 7, 10, 7, 12, 7, 105, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 122, 8, 12, 1, 12, 1, 12, 1, 12, 0, 1, 14, 13, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 0, 4, 1, 0, 30, 34, 1, 0, 11, 12, 2, 0, 13, 21, 26, 27, 1, 0, 36, 38, 124, 0, 26, 1, 0, 0, 0, 2, 53, 1, 0, 0, 0, 4, 64, 1, 0, 0, 0, 6, 69, 1, 0, 0, 0, 8, 79, 1, 0, 0, 0, 10, 81, 1, 0, 0, 0, 12, 84, 1, 0, 0, 0, 14, 96, 1, 0, 0, 0, 16, 106, 1, 0, 0, 0, 18, 110, 1, 0, 0, 0, 20, 112, 1, 0, 0, 0, 22, 114, 1, 0, 0, 0, 24, 117, 1, 0, 0, 0, 26, 27, 3, 2, 1, 0, 27, 28, 5, 0, 0, 1, 28, 1, 1, 0, 0, 0, 29, 30, 5, 7, 0, 0, 30, 32, 3, 4, 2, 0, 31, 33, 3, 10, 5, 0, 32, 31, 1, 0, 0, 0, 32, 33, 1, 0, 0, 0, 33, 34, 1, 0, 0, 0, 34, 35, 5, 6, 0, 0, 35, 54, 1, 0, 0, 0, 36, 37, 5, 7, 0, 0, 37, 38, 3, 6, 3, 0, 38, 40, 3, 12, 6, 0, 39, 41, 3, 10, 5, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 5, 6, 0, 0, 43, 54, 1, 0, 0, 0, 44, 45, 5, 7, 0, 0, 45, 46, 3, 6, 3, 0, 46, 48, 3, 12, 6, 0, 47, 49, 3, 10, 5, 0, 48, 47, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 3, 22, 11, 0, 51, 52, 5, 6, 0, 0, 52, 54, 1, 0, 0, 0, 53, 29, 1, 0, 0, 0, 53, 36, 1, 0, 0, 0, 53, 44, 1, 0, 0, 0, 54, 3, 1, 0, 0, 0, 55, 60, 3, 8, 4, 0, 56, 57, 5, 3, 0, 0, 57, 59, 3, 8, 4, 0, 58, 56, 1, 0, 0, 0, 59, 62, 1, 0, 0, 0, 60, 58, 1, 0, 0, 0, 60, 61, 1, 0, 0, 0, 61, 65, 1, 0, 0, 0, 62, 60, 1, 0, 0, 0, 63, 65, 5, 39, 0, 0, 64, 55, 1, 0, 0, 0, 64, 63, 1, 0, 0, 0, 65, 5, 1, 0, 0, 0, 66, 67, 3, 8, 4, 0, 67, 68, 5, 3, 0, 0, 68, 70, 1, 0, 0, 0, 69, 66, 1, 0, 0, 0, 69, 70, 1, 0, 0, 0, 70, 71, 1, 0, 0, 0, 71, 72, 7, 0, 0, 0, 72, 75, 5, 4, 0, 0, 73, 76, 3, 8, 4, 0, 74, 76, 5, 39, 0, 0, 75, 73, 1, 0, 0, 0, 75, 74, 1, 0, 0, 0, 76, 77, 1, 0, 0, 0, 77, 78, 5, 5, 0, 0, 78, 7, 1, 0, 0, 0, 79, 80, 5, 35, 0, 0, 80, 9, 1, 0, 0, 0, 81, 82, 5, 8, 0, 0, 82, 83, 3, 14, 7, 0, 83, 11, 1, 0, 0, 0, 84, 85, 5, 9, 0, 0, 85, 86, 5, 37, 0, 0, 86, 13, 1, 0, 0, 0, 87, 88, 6, 7, -1, 0, 88, 89, 5, 35, 0, 0, 89, 90, 3, 18, 9, 0, 90, 91, 3, 20, 10, 0, 91, 97, 1, 0, 0, 0, 92, 93, 3, 16, 8, 0, 93, 94, 7, 1, 0, 0, 94, 95, 3, 16, 8, 0, 95, 97, 1, 0, 0, 0, 96, 87, 1, 0, 0, 0, 96, 92, 1, 0, 0, 0, 97, 103, 1, 0, 0, 0, 98, 99, 10, 1, 0, 0, 99, 100, 7, 1, 0, 0, 100, 102, 3, 14, 7, 2, 101, 98, 1, 0, 0, 0, 102, 105, 1, 0, 0, 0, 103, 101, 1, 0, 0, 0, 103, 104, 1, 0, 0, 0, 104, 15, 1, 0, 0, 0, 105, 103, 1, 0, 0, 0, 106, 107, 5, 4, 0, 0, 107, 108, 3, 14, 7, 0, 108, 109, 5, 5, 0, 0, 109, 17, 1, 0, 0, 0, 110, 111, 7, 2, 0, 0, 111, 19, 1, 0, 0, 0, 112, 113, 7, 3, 0, 0, 113, 21, 1, 0, 0, 0, 114, 115, 5, 10, 0, 0, 115, 116, 3, 8, 4, 0, 116, 23, 1, 0, 0, 0, 117, 118, 7, 0, 0, 0, 118, 121, 5, 4, 0, 0, 119, 122, 3, 8, 4, 0, 120, 122, 5, 39, 0, 0, 121, 119, 1, 0, 0, 0, 121, 120, 1, 0, 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 5, 5, 0, 0, 124, 25, 1, 0, 0, 0, 11, 32, 40, 48, 53, 60, 64, 69, 75, 96, 103, 121] \ No newline at end of file diff --git a/processor/stream_processor/parser/sql_base_visitor.go b/processor/stream_processor/parser/sql_base_visitor.go index 728a06913203..5ee4473053cc 100644 --- a/processor/stream_processor/parser/sql_base_visitor.go +++ b/processor/stream_processor/parser/sql_base_visitor.go @@ -20,11 +20,11 @@ func (v *BaseSqlVisitor) VisitSelectTumbling(ctx *SelectTumblingContext) interfa return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitSelectColumns(ctx *SelectColumnsContext) interface{} { +func (v *BaseSqlVisitor) VisitSelectTumblingGroupBy(ctx *SelectTumblingGroupByContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitSelectAVG(ctx *SelectAVGContext) interface{} { +func (v *BaseSqlVisitor) VisitSelectColumns(ctx *SelectColumnsContext) interface{} { return v.VisitChildren(ctx) } @@ -32,6 +32,10 @@ func (v *BaseSqlVisitor) VisitSelectStar(ctx *SelectStarContext) interface{} { return v.VisitChildren(ctx) } +func (v *BaseSqlVisitor) VisitSelectAVG(ctx *SelectAVGContext) interface{} { + return v.VisitChildren(ctx) +} + func (v *BaseSqlVisitor) VisitColumn(ctx *ColumnContext) interface{} { return v.VisitChildren(ctx) } diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index aae7e90cadbb..ee885663f010 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -47,56 +47,62 @@ func sqlParserInit() { "STRING_LITERAL", "STAR", } staticData.ruleNames = []string{ - "sqlQuery", "selectQuery", "resultColumns", "column", "whereStatement", - "windowTumbling", "expr", "compoundExpr", "comparisonOperator", "literalValue", - "groupBy", "avg", + "sqlQuery", "selectQuery", "resultColumns", "aggregationColumns", "column", + "whereStatement", "windowTumbling", "expr", "compoundExpr", "comparisonOperator", + "literalValue", "groupBy", "avg", } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 39, 112, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 39, 126, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, - 10, 2, 11, 7, 11, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 31, 8, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 39, 8, 1, 1, 1, 3, 1, 42, 8, 1, - 1, 1, 1, 1, 3, 1, 46, 8, 1, 1, 2, 1, 2, 1, 2, 5, 2, 51, 8, 2, 10, 2, 12, - 2, 54, 9, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 60, 8, 2, 1, 2, 1, 2, 3, 2, - 64, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, - 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 83, 8, 6, 1, 6, 1, 6, 1, 6, - 5, 6, 88, 8, 6, 10, 6, 12, 6, 91, 9, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, - 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, - 108, 8, 11, 1, 11, 1, 11, 1, 11, 0, 1, 12, 12, 0, 2, 4, 6, 8, 10, 12, 14, - 16, 18, 20, 22, 0, 4, 1, 0, 30, 34, 1, 0, 11, 12, 2, 0, 13, 21, 26, 27, - 1, 0, 36, 38, 110, 0, 24, 1, 0, 0, 0, 2, 45, 1, 0, 0, 0, 4, 63, 1, 0, 0, - 0, 6, 65, 1, 0, 0, 0, 8, 67, 1, 0, 0, 0, 10, 70, 1, 0, 0, 0, 12, 82, 1, - 0, 0, 0, 14, 92, 1, 0, 0, 0, 16, 96, 1, 0, 0, 0, 18, 98, 1, 0, 0, 0, 20, - 100, 1, 0, 0, 0, 22, 103, 1, 0, 0, 0, 24, 25, 3, 2, 1, 0, 25, 26, 5, 0, - 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 5, 7, 0, 0, 28, 30, 3, 4, 2, 0, 29, 31, - 3, 8, 4, 0, 30, 29, 1, 0, 0, 0, 30, 31, 1, 0, 0, 0, 31, 32, 1, 0, 0, 0, - 32, 33, 5, 6, 0, 0, 33, 46, 1, 0, 0, 0, 34, 35, 5, 7, 0, 0, 35, 36, 3, - 4, 2, 0, 36, 38, 3, 10, 5, 0, 37, 39, 3, 8, 4, 0, 38, 37, 1, 0, 0, 0, 38, - 39, 1, 0, 0, 0, 39, 41, 1, 0, 0, 0, 40, 42, 3, 20, 10, 0, 41, 40, 1, 0, - 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 5, 6, 0, 0, 44, 46, - 1, 0, 0, 0, 45, 27, 1, 0, 0, 0, 45, 34, 1, 0, 0, 0, 46, 3, 1, 0, 0, 0, - 47, 52, 3, 6, 3, 0, 48, 49, 5, 3, 0, 0, 49, 51, 3, 6, 3, 0, 50, 48, 1, - 0, 0, 0, 51, 54, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, - 64, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 55, 56, 7, 0, 0, 0, 56, 59, 5, 4, 0, - 0, 57, 60, 3, 6, 3, 0, 58, 60, 5, 39, 0, 0, 59, 57, 1, 0, 0, 0, 59, 58, - 1, 0, 0, 0, 60, 61, 1, 0, 0, 0, 61, 64, 5, 5, 0, 0, 62, 64, 5, 39, 0, 0, - 63, 47, 1, 0, 0, 0, 63, 55, 1, 0, 0, 0, 63, 62, 1, 0, 0, 0, 64, 5, 1, 0, - 0, 0, 65, 66, 5, 35, 0, 0, 66, 7, 1, 0, 0, 0, 67, 68, 5, 8, 0, 0, 68, 69, - 3, 12, 6, 0, 69, 9, 1, 0, 0, 0, 70, 71, 5, 9, 0, 0, 71, 72, 5, 37, 0, 0, - 72, 11, 1, 0, 0, 0, 73, 74, 6, 6, -1, 0, 74, 75, 5, 35, 0, 0, 75, 76, 3, - 16, 8, 0, 76, 77, 3, 18, 9, 0, 77, 83, 1, 0, 0, 0, 78, 79, 3, 14, 7, 0, - 79, 80, 7, 1, 0, 0, 80, 81, 3, 14, 7, 0, 81, 83, 1, 0, 0, 0, 82, 73, 1, - 0, 0, 0, 82, 78, 1, 0, 0, 0, 83, 89, 1, 0, 0, 0, 84, 85, 10, 1, 0, 0, 85, - 86, 7, 1, 0, 0, 86, 88, 3, 12, 6, 2, 87, 84, 1, 0, 0, 0, 88, 91, 1, 0, - 0, 0, 89, 87, 1, 0, 0, 0, 89, 90, 1, 0, 0, 0, 90, 13, 1, 0, 0, 0, 91, 89, - 1, 0, 0, 0, 92, 93, 5, 4, 0, 0, 93, 94, 3, 12, 6, 0, 94, 95, 5, 5, 0, 0, - 95, 15, 1, 0, 0, 0, 96, 97, 7, 2, 0, 0, 97, 17, 1, 0, 0, 0, 98, 99, 7, - 3, 0, 0, 99, 19, 1, 0, 0, 0, 100, 101, 5, 10, 0, 0, 101, 102, 3, 6, 3, - 0, 102, 21, 1, 0, 0, 0, 103, 104, 7, 0, 0, 0, 104, 107, 5, 4, 0, 0, 105, - 108, 3, 6, 3, 0, 106, 108, 5, 39, 0, 0, 107, 105, 1, 0, 0, 0, 107, 106, - 1, 0, 0, 0, 108, 109, 1, 0, 0, 0, 109, 110, 5, 5, 0, 0, 110, 23, 1, 0, - 0, 0, 10, 30, 38, 41, 45, 52, 59, 63, 82, 89, 107, + 10, 2, 11, 7, 11, 2, 12, 7, 12, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, + 1, 33, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 54, + 8, 1, 1, 2, 1, 2, 1, 2, 5, 2, 59, 8, 2, 10, 2, 12, 2, 62, 9, 2, 1, 2, 3, + 2, 65, 8, 2, 1, 3, 1, 3, 1, 3, 3, 3, 70, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, + 3, 3, 76, 8, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, + 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 97, 8, 7, + 1, 7, 1, 7, 1, 7, 5, 7, 102, 8, 7, 10, 7, 12, 7, 105, 9, 7, 1, 8, 1, 8, + 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, + 1, 12, 1, 12, 3, 12, 122, 8, 12, 1, 12, 1, 12, 1, 12, 0, 1, 14, 13, 0, + 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 0, 4, 1, 0, 30, 34, 1, 0, 11, + 12, 2, 0, 13, 21, 26, 27, 1, 0, 36, 38, 124, 0, 26, 1, 0, 0, 0, 2, 53, + 1, 0, 0, 0, 4, 64, 1, 0, 0, 0, 6, 69, 1, 0, 0, 0, 8, 79, 1, 0, 0, 0, 10, + 81, 1, 0, 0, 0, 12, 84, 1, 0, 0, 0, 14, 96, 1, 0, 0, 0, 16, 106, 1, 0, + 0, 0, 18, 110, 1, 0, 0, 0, 20, 112, 1, 0, 0, 0, 22, 114, 1, 0, 0, 0, 24, + 117, 1, 0, 0, 0, 26, 27, 3, 2, 1, 0, 27, 28, 5, 0, 0, 1, 28, 1, 1, 0, 0, + 0, 29, 30, 5, 7, 0, 0, 30, 32, 3, 4, 2, 0, 31, 33, 3, 10, 5, 0, 32, 31, + 1, 0, 0, 0, 32, 33, 1, 0, 0, 0, 33, 34, 1, 0, 0, 0, 34, 35, 5, 6, 0, 0, + 35, 54, 1, 0, 0, 0, 36, 37, 5, 7, 0, 0, 37, 38, 3, 6, 3, 0, 38, 40, 3, + 12, 6, 0, 39, 41, 3, 10, 5, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, + 41, 42, 1, 0, 0, 0, 42, 43, 5, 6, 0, 0, 43, 54, 1, 0, 0, 0, 44, 45, 5, + 7, 0, 0, 45, 46, 3, 6, 3, 0, 46, 48, 3, 12, 6, 0, 47, 49, 3, 10, 5, 0, + 48, 47, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 3, + 22, 11, 0, 51, 52, 5, 6, 0, 0, 52, 54, 1, 0, 0, 0, 53, 29, 1, 0, 0, 0, + 53, 36, 1, 0, 0, 0, 53, 44, 1, 0, 0, 0, 54, 3, 1, 0, 0, 0, 55, 60, 3, 8, + 4, 0, 56, 57, 5, 3, 0, 0, 57, 59, 3, 8, 4, 0, 58, 56, 1, 0, 0, 0, 59, 62, + 1, 0, 0, 0, 60, 58, 1, 0, 0, 0, 60, 61, 1, 0, 0, 0, 61, 65, 1, 0, 0, 0, + 62, 60, 1, 0, 0, 0, 63, 65, 5, 39, 0, 0, 64, 55, 1, 0, 0, 0, 64, 63, 1, + 0, 0, 0, 65, 5, 1, 0, 0, 0, 66, 67, 3, 8, 4, 0, 67, 68, 5, 3, 0, 0, 68, + 70, 1, 0, 0, 0, 69, 66, 1, 0, 0, 0, 69, 70, 1, 0, 0, 0, 70, 71, 1, 0, 0, + 0, 71, 72, 7, 0, 0, 0, 72, 75, 5, 4, 0, 0, 73, 76, 3, 8, 4, 0, 74, 76, + 5, 39, 0, 0, 75, 73, 1, 0, 0, 0, 75, 74, 1, 0, 0, 0, 76, 77, 1, 0, 0, 0, + 77, 78, 5, 5, 0, 0, 78, 7, 1, 0, 0, 0, 79, 80, 5, 35, 0, 0, 80, 9, 1, 0, + 0, 0, 81, 82, 5, 8, 0, 0, 82, 83, 3, 14, 7, 0, 83, 11, 1, 0, 0, 0, 84, + 85, 5, 9, 0, 0, 85, 86, 5, 37, 0, 0, 86, 13, 1, 0, 0, 0, 87, 88, 6, 7, + -1, 0, 88, 89, 5, 35, 0, 0, 89, 90, 3, 18, 9, 0, 90, 91, 3, 20, 10, 0, + 91, 97, 1, 0, 0, 0, 92, 93, 3, 16, 8, 0, 93, 94, 7, 1, 0, 0, 94, 95, 3, + 16, 8, 0, 95, 97, 1, 0, 0, 0, 96, 87, 1, 0, 0, 0, 96, 92, 1, 0, 0, 0, 97, + 103, 1, 0, 0, 0, 98, 99, 10, 1, 0, 0, 99, 100, 7, 1, 0, 0, 100, 102, 3, + 14, 7, 2, 101, 98, 1, 0, 0, 0, 102, 105, 1, 0, 0, 0, 103, 101, 1, 0, 0, + 0, 103, 104, 1, 0, 0, 0, 104, 15, 1, 0, 0, 0, 105, 103, 1, 0, 0, 0, 106, + 107, 5, 4, 0, 0, 107, 108, 3, 14, 7, 0, 108, 109, 5, 5, 0, 0, 109, 17, + 1, 0, 0, 0, 110, 111, 7, 2, 0, 0, 111, 19, 1, 0, 0, 0, 112, 113, 7, 3, + 0, 0, 113, 21, 1, 0, 0, 0, 114, 115, 5, 10, 0, 0, 115, 116, 3, 8, 4, 0, + 116, 23, 1, 0, 0, 0, 117, 118, 7, 0, 0, 0, 118, 121, 5, 4, 0, 0, 119, 122, + 3, 8, 4, 0, 120, 122, 5, 39, 0, 0, 121, 119, 1, 0, 0, 0, 121, 120, 1, 0, + 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 5, 5, 0, 0, 124, 25, 1, 0, 0, 0, + 11, 32, 40, 48, 53, 60, 64, 69, 75, 96, 103, 121, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -181,15 +187,16 @@ const ( SqlParserRULE_sqlQuery = 0 SqlParserRULE_selectQuery = 1 SqlParserRULE_resultColumns = 2 - SqlParserRULE_column = 3 - SqlParserRULE_whereStatement = 4 - SqlParserRULE_windowTumbling = 5 - SqlParserRULE_expr = 6 - SqlParserRULE_compoundExpr = 7 - SqlParserRULE_comparisonOperator = 8 - SqlParserRULE_literalValue = 9 - SqlParserRULE_groupBy = 10 - SqlParserRULE_avg = 11 + SqlParserRULE_aggregationColumns = 3 + SqlParserRULE_column = 4 + SqlParserRULE_whereStatement = 5 + SqlParserRULE_windowTumbling = 6 + SqlParserRULE_expr = 7 + SqlParserRULE_compoundExpr = 8 + SqlParserRULE_comparisonOperator = 9 + SqlParserRULE_literalValue = 10 + SqlParserRULE_groupBy = 11 + SqlParserRULE_avg = 12 ) // ISqlQueryContext is an interface to support dynamic dispatch. @@ -293,11 +300,11 @@ func (p *SqlParser) SqlQuery() (localctx ISqlQueryContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(24) + p.SetState(26) p.SelectQuery() } { - p.SetState(25) + p.SetState(27) p.Match(SqlParserEOF) } @@ -376,10 +383,10 @@ func (s *SelectTumblingContext) K_SELECT() antlr.TerminalNode { return s.GetToken(SqlParserK_SELECT, 0) } -func (s *SelectTumblingContext) ResultColumns() IResultColumnsContext { +func (s *SelectTumblingContext) AggregationColumns() IAggregationColumnsContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IResultColumnsContext); ok { + if _, ok := ctx.(IAggregationColumnsContext); ok { t = ctx.(antlr.RuleContext) break } @@ -389,7 +396,7 @@ func (s *SelectTumblingContext) ResultColumns() IResultColumnsContext { return nil } - return t.(IResultColumnsContext) + return t.(IAggregationColumnsContext) } func (s *SelectTumblingContext) WindowTumbling() IWindowTumblingContext { @@ -428,22 +435,6 @@ func (s *SelectTumblingContext) WhereStatement() IWhereStatementContext { return t.(IWhereStatementContext) } -func (s *SelectTumblingContext) GroupBy() IGroupByContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IGroupByContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IGroupByContext) -} - func (s *SelectTumblingContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case SqlVisitor: @@ -522,6 +513,106 @@ func (s *SelectSimpleContext) Accept(visitor antlr.ParseTreeVisitor) interface{} } } +type SelectTumblingGroupByContext struct { + *SelectQueryContext +} + +func NewSelectTumblingGroupByContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectTumblingGroupByContext { + var p = new(SelectTumblingGroupByContext) + + p.SelectQueryContext = NewEmptySelectQueryContext() + p.parser = parser + p.CopyFrom(ctx.(*SelectQueryContext)) + + return p +} + +func (s *SelectTumblingGroupByContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SelectTumblingGroupByContext) K_SELECT() antlr.TerminalNode { + return s.GetToken(SqlParserK_SELECT, 0) +} + +func (s *SelectTumblingGroupByContext) AggregationColumns() IAggregationColumnsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAggregationColumnsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAggregationColumnsContext) +} + +func (s *SelectTumblingGroupByContext) WindowTumbling() IWindowTumblingContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWindowTumblingContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IWindowTumblingContext) +} + +func (s *SelectTumblingGroupByContext) GroupBy() IGroupByContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGroupByContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGroupByContext) +} + +func (s *SelectTumblingGroupByContext) EOQ() antlr.TerminalNode { + return s.GetToken(SqlParserEOQ, 0) +} + +func (s *SelectTumblingGroupByContext) WhereStatement() IWhereStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWhereStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IWhereStatementContext) +} + +func (s *SelectTumblingGroupByContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitSelectTumblingGroupBy(s) + + default: + return t.VisitChildren(s) + } +} + func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { this := p _ = this @@ -546,33 +637,33 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { } }() - p.SetState(45) + p.SetState(53) p.GetErrorHandler().Sync(p) switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 3, p.GetParserRuleContext()) { case 1: localctx = NewSelectSimpleContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(27) + p.SetState(29) p.Match(SqlParserK_SELECT) } { - p.SetState(28) + p.SetState(30) p.ResultColumns() } - p.SetState(30) + p.SetState(32) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(29) + p.SetState(31) p.WhereStatement() } } { - p.SetState(32) + p.SetState(34) p.Match(SqlParserEOQ) } @@ -580,41 +671,65 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { localctx = NewSelectTumblingContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(34) + p.SetState(36) p.Match(SqlParserK_SELECT) } { - p.SetState(35) - p.ResultColumns() + p.SetState(37) + p.AggregationColumns() } { - p.SetState(36) + p.SetState(38) p.WindowTumbling() } - p.SetState(38) + p.SetState(40) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(37) + p.SetState(39) p.WhereStatement() } } - p.SetState(41) + { + p.SetState(42) + p.Match(SqlParserEOQ) + } + + case 3: + localctx = NewSelectTumblingGroupByContext(p, localctx) + p.EnterOuterAlt(localctx, 3) + { + p.SetState(44) + p.Match(SqlParserK_SELECT) + } + { + p.SetState(45) + p.AggregationColumns() + } + { + p.SetState(46) + p.WindowTumbling() + } + p.SetState(48) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - if _la == SqlParserK_GROUP_BY { + if _la == SqlParserK_WHERE { { - p.SetState(40) - p.GroupBy() + p.SetState(47) + p.WhereStatement() } } { - p.SetState(43) + p.SetState(50) + p.GroupBy() + } + { + p.SetState(51) p.Match(SqlParserEOQ) } @@ -673,82 +788,6 @@ func (s *ResultColumnsContext) ToStringTree(ruleNames []string, recog antlr.Reco return antlr.TreesStringTree(s, ruleNames, recog) } -type SelectAVGContext struct { - *ResultColumnsContext -} - -func NewSelectAVGContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectAVGContext { - var p = new(SelectAVGContext) - - p.ResultColumnsContext = NewEmptyResultColumnsContext() - p.parser = parser - p.CopyFrom(ctx.(*ResultColumnsContext)) - - return p -} - -func (s *SelectAVGContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *SelectAVGContext) L_BRACKET() antlr.TerminalNode { - return s.GetToken(SqlParserL_BRACKET, 0) -} - -func (s *SelectAVGContext) R_BRACKET() antlr.TerminalNode { - return s.GetToken(SqlParserR_BRACKET, 0) -} - -func (s *SelectAVGContext) K_MIN() antlr.TerminalNode { - return s.GetToken(SqlParserK_MIN, 0) -} - -func (s *SelectAVGContext) K_MAX() antlr.TerminalNode { - return s.GetToken(SqlParserK_MAX, 0) -} - -func (s *SelectAVGContext) K_COUNT() antlr.TerminalNode { - return s.GetToken(SqlParserK_COUNT, 0) -} - -func (s *SelectAVGContext) K_AVG() antlr.TerminalNode { - return s.GetToken(SqlParserK_AVG, 0) -} - -func (s *SelectAVGContext) K_SUM() antlr.TerminalNode { - return s.GetToken(SqlParserK_SUM, 0) -} - -func (s *SelectAVGContext) Column() IColumnContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumnContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IColumnContext) -} - -func (s *SelectAVGContext) STAR() antlr.TerminalNode { - return s.GetToken(SqlParserSTAR, 0) -} - -func (s *SelectAVGContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { - switch t := visitor.(type) { - case SqlVisitor: - return t.VisitSelectAVG(s) - - default: - return t.VisitChildren(s) - } -} - type SelectStarContext struct { *ResultColumnsContext } @@ -882,7 +921,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { } }() - p.SetState(63) + p.SetState(64) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { @@ -890,81 +929,277 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectColumnsContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(47) + p.SetState(55) p.Column() } - p.SetState(52) + p.SetState(60) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for _la == SqlParserCOMMA { { - p.SetState(48) + p.SetState(56) p.Match(SqlParserCOMMA) } { - p.SetState(49) + p.SetState(57) p.Column() } - p.SetState(54) + p.SetState(62) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } - case SqlParserK_COUNT, SqlParserK_SUM, SqlParserK_MIN, SqlParserK_MAX, SqlParserK_AVG: - localctx = NewSelectAVGContext(p, localctx) + case SqlParserSTAR: + localctx = NewSelectStarContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(55) - _la = p.GetTokenStream().LA(1) + p.SetState(63) + p.Match(SqlParserSTAR) + } - if !(((_la-30)&-(0x1f+1)) == 0 && ((1< 80 or name like '3';`, - value: 0, - res: false, - }, - { - name: "tumbling query", - query: `select max(price) window tumbling 3 where price > 4;`, - value: 3, - res: true, - }, - { - name: "incorrect tumbling query", - query: `select max(price) window tumbling kwa where price > 4;`, - value: 0, - res: false, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - res, val := IsTumblingQuery(tt.query) - assert.Equal(t, tt.value, val) - assert.Equal(t, tt.res, res) - }) - } -} - -func TestWindowTumblingLoop(t *testing.T) { - tests := []struct { - name string - query string - expected int - }{ - { - name: "1 ms", - query: "select max(price) window tumbling 50 where price > 4;", - expected: 285, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - in := make(chan plog.LogRecordSlice) - out := make(chan plog.LogRecordSlice) - outErr := make(chan error) - var ls plog.LogRecordSlice - var wg sync.WaitGroup - wg.Add(1) - visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) - defer visitor.Stop() - go func() { - defer wg.Done() - for { - ls = <-out - break - } - }() - in <- generateTestLogs() - <-time.After(1 * time.Millisecond) - in <- generateTestLogs() - <-time.After(1 * time.Millisecond) - in <- generateTestLogs() - <-time.After(1 * time.Millisecond) - wg.Wait() - - assert.Equal(t, tt.expected, ls.Len()) - }) - } -} - -func TestWindowTumblingLoopInterval(t *testing.T) { - in := make(chan plog.LogRecordSlice) - out := make(chan plog.LogRecordSlice) - outErr := make(chan error) - query := "select max(price) window tumbling 30 ;" - var ls plog.LogRecordSlice - - visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) - defer visitor.Stop() - - for i := 0; i < 3; i++ { - in <- generateTestLogs() - } - ls = <-out - assert.Equal(t, 300, ls.Len()) - - for i := 0; i < 4; i++ { - in <- generateTestLogs() - } - ls = <-out - assert.Equal(t, 400, ls.Len()) - - for i := 0; i < 6; i++ { - in <- generateTestLogs() - } - ls = <-out - assert.Equal(t, 600, ls.Len()) - - for i := 0; i < 12; i++ { - in <- generateTestLogs() - } - ls = <-out - assert.Equal(t, 1200, ls.Len()) -} - -func TestWindowTumblingAvg(t *testing.T) { - in := make(chan plog.LogRecordSlice) - out := make(chan plog.LogRecordSlice) - outErr := make(chan error) - query := "select avg(price) window tumbling 30 ;" - var ls plog.LogRecordSlice - - visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) - defer visitor.Stop() - in <- generateTestLogs() - ls = <-out - res, ok := ls.At(0).Attributes().Get("price") - assert.True(t, ok) - assert.Equal(t, pcommon.NewValueDouble(49.5), res) -} - -func TestWindowTumblingCount(t *testing.T) { - in := make(chan plog.LogRecordSlice) - out := make(chan plog.LogRecordSlice) - outErr := make(chan error) - query := "select count(price) window tumbling 30 ;" - var ls plog.LogRecordSlice - - visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) - defer visitor.Stop() - in <- generateTestLogs() - ls = <-out - res, ok := ls.At(0).Attributes().Get("price") - assert.True(t, ok) - assert.Equal(t, pcommon.NewValueDouble(100.0), res) -} - -func TestWindowTumblingSum(t *testing.T) { - in := make(chan plog.LogRecordSlice) - out := make(chan plog.LogRecordSlice) - outErr := make(chan error) - query := "select sum(price) window tumbling 30 ;" - var ls plog.LogRecordSlice - - visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) - defer visitor.Stop() - in <- generateTestLogs() - ls = <-out - res, ok := ls.At(0).Attributes().Get("price") - assert.True(t, ok) - assert.Equal(t, pcommon.NewValueDouble(4950.0), res) -} - -func TestWindowTumblingMin(t *testing.T) { - in := make(chan plog.LogRecordSlice) - out := make(chan plog.LogRecordSlice) - outErr := make(chan error) - query := "select min(price) window tumbling 30 ;" - var ls plog.LogRecordSlice - - visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) - defer visitor.Stop() - in <- generateTestLogs() - ls = <-out - res, ok := ls.At(0).Attributes().Get("price") - assert.True(t, ok) - assert.Equal(t, pcommon.NewValueDouble(0.0), res) -} - -func TestWindowTumblingMax(t *testing.T) { - in := make(chan plog.LogRecordSlice) - out := make(chan plog.LogRecordSlice) - outErr := make(chan error) - query := "select max(price) window tumbling 30 ;" - var ls plog.LogRecordSlice - - visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) - defer visitor.Stop() - in <- generateTestLogs() - ls = <-out - res, ok := ls.At(0).Attributes().Get("price") - assert.True(t, ok) - assert.Equal(t, pcommon.NewValueDouble(99.0), res) -} - -func TestAvgContext_K_MIN(t *testing.T) { - ls := generateTestLogs() - res, err := min(ls, "price") - assert.Nil(t, err) - assert.Equal(t, 0.0, res) - -} - -func TestAvgContext_K_MAX(t *testing.T) { - ls := generateTestLogs() - res, err := max(ls, "price") - assert.Nil(t, err) - assert.Equal(t, 99.0, res) -} - -func TestAvgContext_K_SUM(t *testing.T) { - ls := generateTestLogs() - res, err := sum(ls, "price") - assert.Nil(t, err) - assert.Equal(t, 4950.0, res) -} - -func TestAvgContext_K_COUNT(t *testing.T) { - ls := generateTestLogs() - count := count(ls) - assert.Equal(t, 100, count) -} func generateTestLogs() plog.LogRecordSlice { ld := plog.NewLogs() @@ -612,3 +388,17 @@ func TestWriteTestLogsToCSV(t *testing.T) { } } + +func TestWriteTestLogsGroupByToCSV(t *testing.T) { + f, _ := os.Create("testGroupBy.csv") + w := csv.NewWriter(f) + defer w.Flush() + for i := 0; i < 100; i++ { + isAlive := strconv.FormatBool(i%2 == 0) + name := strconv.Itoa(i) + err := w.Write([]string{fmt.Sprint("Test name ", string(name[0])), isAlive, strconv.Itoa(i)}) + assert.Nil(t, err) + + } + +} diff --git a/processor/stream_processor/parser/sql_visitor.go b/processor/stream_processor/parser/sql_visitor.go index 766a4c660a5a..94e9705ab5a9 100644 --- a/processor/stream_processor/parser/sql_visitor.go +++ b/processor/stream_processor/parser/sql_visitor.go @@ -17,15 +17,18 @@ type SqlVisitor interface { // Visit a parse tree produced by SqlParser#selectTumbling. VisitSelectTumbling(ctx *SelectTumblingContext) interface{} + // Visit a parse tree produced by SqlParser#selectTumblingGroupBy. + VisitSelectTumblingGroupBy(ctx *SelectTumblingGroupByContext) interface{} + // Visit a parse tree produced by SqlParser#selectColumns. VisitSelectColumns(ctx *SelectColumnsContext) interface{} - // Visit a parse tree produced by SqlParser#selectAVG. - VisitSelectAVG(ctx *SelectAVGContext) interface{} - // Visit a parse tree produced by SqlParser#selectStar. VisitSelectStar(ctx *SelectStarContext) interface{} + // Visit a parse tree produced by SqlParser#selectAVG. + VisitSelectAVG(ctx *SelectAVGContext) interface{} + // Visit a parse tree produced by SqlParser#column. VisitColumn(ctx *ColumnContext) interface{} diff --git a/processor/stream_processor/parser/visitor_utils.go b/processor/stream_processor/parser/visitor_utils.go index bf5a33b09e37..b60f57b2fae4 100644 --- a/processor/stream_processor/parser/visitor_utils.go +++ b/processor/stream_processor/parser/visitor_utils.go @@ -23,7 +23,6 @@ func compareString(ctx *SimpleConditionContext, fieldVal, comparisonVal string) case SqlParserK_NOT_EQUAL: return fieldVal != comparisonVal case SqlParserK_GREATER: - fmt.Println(fieldVal, " ", comparisonVal, " ", fieldVal > comparisonVal) return fieldVal > comparisonVal case SqlParserK_GREATER_EQUAL: return fieldVal >= comparisonVal From 255357cfd8dcaff8fb05c6aeb8b9e2d4df385638 Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Thu, 11 Aug 2022 19:38:52 +0300 Subject: [PATCH 16/31] grammar update/bug fixed/tests added --- processor/stream_processor/Sql.g4 | 38 +- processor/stream_processor/cmd/main.go | 5 +- processor/stream_processor/parser/Sql.interp | 14 +- processor/stream_processor/parser/Sql.tokens | 66 +- .../stream_processor/parser/SqlLexer.interp | 16 +- .../stream_processor/parser/SqlLexer.tokens | 66 +- .../parser/sql_base_visitor.go | 20 +- .../stream_processor/parser/sql_lexer.go | 400 +++--- .../stream_processor/parser/sql_parser.go | 1075 +++++++++-------- .../parser/sql_stream_visitor.go | 53 +- .../parser/sql_stream_visitor_test.go | 71 +- .../stream_processor/parser/sql_visitor.go | 19 +- .../stream_processor/parser/visitor_utils.go | 6 +- .../parser/windowTumblingVisitor.go | 9 + 14 files changed, 1038 insertions(+), 820 deletions(-) diff --git a/processor/stream_processor/Sql.g4 b/processor/stream_processor/Sql.g4 index 27e2fa3f7cd7..905dfb663f7b 100644 --- a/processor/stream_processor/Sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -12,6 +12,10 @@ selectQuery | K_SELECT aggregationColumns windowTumbling (whereStatement)? groupBy EOQ #selectTumblingGroupBy ; +windowTumbling + : K_WINDOW_TUMBLING NUMERIC_LITERAL + ; + resultColumns : column (COMMA column)* # selectColumns @@ -31,20 +35,21 @@ whereStatement : K_WHERE expr #whereStmt ; -windowTumbling - : K_WINDOW_TUMBLING NUMERIC_LITERAL - ; - expr - : IDENTIFIER comparisonOperator literalValue #simpleCondition - | compoundExpr ( K_AND | K_OR ) compoundExpr #compoundRecursiveCondition + : simpleExpr #simpleCondition + | (compoundExpr | simpleExpr) ( K_AND | K_OR ) (compoundExpr | simpleExpr) #compoundRecursiveCondition // IDENTIFIER (K_IS_NULL | K_IS_NOT_NULL) #nullCondition - | expr (K_AND| K_OR) expr #simpleRecursiveCondition + | expr (K_AND| K_OR) expr #simpleRecursiveCondition + | compoundExpr #simpleCompoundCondition + ; + +simpleExpr + : IDENTIFIER comparisonOperator literalValue #simpleExpression ; compoundExpr - : L_BRACKET expr R_BRACKET + : L_BRACKET expr R_BRACKET #compoundExpression ; comparisonOperator @@ -54,8 +59,8 @@ comparisonOperator literalValue : NUMERIC_LITERAL - | STRING_LITERAL | BOOLEAN_LITERAL + | STRING_LITERAL ; @@ -64,9 +69,6 @@ groupBy ; -avg - : (K_MIN | K_MAX | K_COUNT | K_AVG | K_SUM) L_BRACKET (column | STAR) R_BRACKET; - SPACE : [ \u000B\t\r\n] -> channel(HIDDEN) ; @@ -79,6 +81,10 @@ R_BRACKET : ')' ; EOQ: ';'; +BOOLEAN_LITERAL + : (K_TRUE | K_FALSE) + ; + K_SELECT : S E L E C T; K_WHERE : W H E R E; K_WINDOW_TUMBLING : W I N D O W SPACE T U M B L I N G; @@ -100,13 +106,13 @@ K_IS_NOT_NULL : (K_IS SPACE K_NOT SPACE K_NULL); K_NOT : N O T; K_NOT_IN : (K_NOT SPACE I N); K_IN : I N; -K_TRUE : T R U E; -K_FALSE : F A L S E; K_COUNT : C O U N T; K_SUM : S U M; K_MIN : M I N; K_MAX : M A X; K_AVG : A V G; +K_TRUE : T R U E; +K_FALSE : F A L S E; IDENTIFIER : '"' (~'"' | '""')* '"' @@ -116,10 +122,6 @@ IDENTIFIER ; -BOOLEAN_LITERAL - : (K_TRUE | K_FALSE) - ; - NUMERIC_LITERAL : DIGIT+ ( '.' DIGIT* )? ( E [-+]? DIGIT+ )? | '.' DIGIT+ ( E [-+]? DIGIT+ )? diff --git a/processor/stream_processor/cmd/main.go b/processor/stream_processor/cmd/main.go index fb08b2183802..b08ab2e02364 100644 --- a/processor/stream_processor/cmd/main.go +++ b/processor/stream_processor/cmd/main.go @@ -22,12 +22,13 @@ func main() { break } - logs := generateTestLogs() in := make(chan plog.LogRecordSlice) out := make(chan plog.LogRecordSlice) outErr := make(chan error) visitor := parser.NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) - in <- logs + //test := plog.NewLogRecordSlice() + //generateTestLogs().At(0).CopyTo(test.AppendEmpty()) + in <- generateTestLogs() select { case ls := <-out: diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp index 2c7a2d019e91..55a9c2f5265e 100644 --- a/processor/stream_processor/parser/Sql.interp +++ b/processor/stream_processor/parser/Sql.interp @@ -15,6 +15,7 @@ null null null null +null '=' '>' '<' @@ -37,7 +38,6 @@ null null null null -null '*' token symbolic names: @@ -48,6 +48,7 @@ COMMA L_BRACKET R_BRACKET EOQ +BOOLEAN_LITERAL K_SELECT K_WHERE K_WINDOW_TUMBLING @@ -69,15 +70,14 @@ K_IS_NOT_NULL K_NOT K_NOT_IN K_IN -K_TRUE -K_FALSE K_COUNT K_SUM K_MIN K_MAX K_AVG +K_TRUE +K_FALSE IDENTIFIER -BOOLEAN_LITERAL NUMERIC_LITERAL STRING_LITERAL STAR @@ -85,18 +85,18 @@ STAR rule names: sqlQuery selectQuery +windowTumbling resultColumns aggregationColumns column whereStatement -windowTumbling expr +simpleExpr compoundExpr comparisonOperator literalValue groupBy -avg atn: -[4, 1, 39, 126, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 33, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 54, 8, 1, 1, 2, 1, 2, 1, 2, 5, 2, 59, 8, 2, 10, 2, 12, 2, 62, 9, 2, 1, 2, 3, 2, 65, 8, 2, 1, 3, 1, 3, 1, 3, 3, 3, 70, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 76, 8, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 97, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 102, 8, 7, 10, 7, 12, 7, 105, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 122, 8, 12, 1, 12, 1, 12, 1, 12, 0, 1, 14, 13, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 0, 4, 1, 0, 30, 34, 1, 0, 11, 12, 2, 0, 13, 21, 26, 27, 1, 0, 36, 38, 124, 0, 26, 1, 0, 0, 0, 2, 53, 1, 0, 0, 0, 4, 64, 1, 0, 0, 0, 6, 69, 1, 0, 0, 0, 8, 79, 1, 0, 0, 0, 10, 81, 1, 0, 0, 0, 12, 84, 1, 0, 0, 0, 14, 96, 1, 0, 0, 0, 16, 106, 1, 0, 0, 0, 18, 110, 1, 0, 0, 0, 20, 112, 1, 0, 0, 0, 22, 114, 1, 0, 0, 0, 24, 117, 1, 0, 0, 0, 26, 27, 3, 2, 1, 0, 27, 28, 5, 0, 0, 1, 28, 1, 1, 0, 0, 0, 29, 30, 5, 7, 0, 0, 30, 32, 3, 4, 2, 0, 31, 33, 3, 10, 5, 0, 32, 31, 1, 0, 0, 0, 32, 33, 1, 0, 0, 0, 33, 34, 1, 0, 0, 0, 34, 35, 5, 6, 0, 0, 35, 54, 1, 0, 0, 0, 36, 37, 5, 7, 0, 0, 37, 38, 3, 6, 3, 0, 38, 40, 3, 12, 6, 0, 39, 41, 3, 10, 5, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 5, 6, 0, 0, 43, 54, 1, 0, 0, 0, 44, 45, 5, 7, 0, 0, 45, 46, 3, 6, 3, 0, 46, 48, 3, 12, 6, 0, 47, 49, 3, 10, 5, 0, 48, 47, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 3, 22, 11, 0, 51, 52, 5, 6, 0, 0, 52, 54, 1, 0, 0, 0, 53, 29, 1, 0, 0, 0, 53, 36, 1, 0, 0, 0, 53, 44, 1, 0, 0, 0, 54, 3, 1, 0, 0, 0, 55, 60, 3, 8, 4, 0, 56, 57, 5, 3, 0, 0, 57, 59, 3, 8, 4, 0, 58, 56, 1, 0, 0, 0, 59, 62, 1, 0, 0, 0, 60, 58, 1, 0, 0, 0, 60, 61, 1, 0, 0, 0, 61, 65, 1, 0, 0, 0, 62, 60, 1, 0, 0, 0, 63, 65, 5, 39, 0, 0, 64, 55, 1, 0, 0, 0, 64, 63, 1, 0, 0, 0, 65, 5, 1, 0, 0, 0, 66, 67, 3, 8, 4, 0, 67, 68, 5, 3, 0, 0, 68, 70, 1, 0, 0, 0, 69, 66, 1, 0, 0, 0, 69, 70, 1, 0, 0, 0, 70, 71, 1, 0, 0, 0, 71, 72, 7, 0, 0, 0, 72, 75, 5, 4, 0, 0, 73, 76, 3, 8, 4, 0, 74, 76, 5, 39, 0, 0, 75, 73, 1, 0, 0, 0, 75, 74, 1, 0, 0, 0, 76, 77, 1, 0, 0, 0, 77, 78, 5, 5, 0, 0, 78, 7, 1, 0, 0, 0, 79, 80, 5, 35, 0, 0, 80, 9, 1, 0, 0, 0, 81, 82, 5, 8, 0, 0, 82, 83, 3, 14, 7, 0, 83, 11, 1, 0, 0, 0, 84, 85, 5, 9, 0, 0, 85, 86, 5, 37, 0, 0, 86, 13, 1, 0, 0, 0, 87, 88, 6, 7, -1, 0, 88, 89, 5, 35, 0, 0, 89, 90, 3, 18, 9, 0, 90, 91, 3, 20, 10, 0, 91, 97, 1, 0, 0, 0, 92, 93, 3, 16, 8, 0, 93, 94, 7, 1, 0, 0, 94, 95, 3, 16, 8, 0, 95, 97, 1, 0, 0, 0, 96, 87, 1, 0, 0, 0, 96, 92, 1, 0, 0, 0, 97, 103, 1, 0, 0, 0, 98, 99, 10, 1, 0, 0, 99, 100, 7, 1, 0, 0, 100, 102, 3, 14, 7, 2, 101, 98, 1, 0, 0, 0, 102, 105, 1, 0, 0, 0, 103, 101, 1, 0, 0, 0, 103, 104, 1, 0, 0, 0, 104, 15, 1, 0, 0, 0, 105, 103, 1, 0, 0, 0, 106, 107, 5, 4, 0, 0, 107, 108, 3, 14, 7, 0, 108, 109, 5, 5, 0, 0, 109, 17, 1, 0, 0, 0, 110, 111, 7, 2, 0, 0, 111, 19, 1, 0, 0, 0, 112, 113, 7, 3, 0, 0, 113, 21, 1, 0, 0, 0, 114, 115, 5, 10, 0, 0, 115, 116, 3, 8, 4, 0, 116, 23, 1, 0, 0, 0, 117, 118, 7, 0, 0, 0, 118, 121, 5, 4, 0, 0, 119, 122, 3, 8, 4, 0, 120, 122, 5, 39, 0, 0, 121, 119, 1, 0, 0, 0, 121, 120, 1, 0, 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 5, 5, 0, 0, 124, 25, 1, 0, 0, 0, 11, 32, 40, 48, 53, 60, 64, 69, 75, 96, 103, 121] \ No newline at end of file +[4, 1, 39, 125, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 33, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 54, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 62, 8, 3, 10, 3, 12, 3, 65, 9, 3, 1, 3, 3, 3, 68, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 73, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 79, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 92, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 97, 8, 7, 1, 7, 3, 7, 100, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 105, 8, 7, 10, 7, 12, 7, 108, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 0, 1, 14, 13, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 0, 4, 1, 0, 29, 33, 1, 0, 12, 13, 2, 0, 14, 22, 27, 28, 2, 0, 7, 7, 37, 38, 125, 0, 26, 1, 0, 0, 0, 2, 53, 1, 0, 0, 0, 4, 55, 1, 0, 0, 0, 6, 67, 1, 0, 0, 0, 8, 72, 1, 0, 0, 0, 10, 82, 1, 0, 0, 0, 12, 84, 1, 0, 0, 0, 14, 99, 1, 0, 0, 0, 16, 109, 1, 0, 0, 0, 18, 113, 1, 0, 0, 0, 20, 117, 1, 0, 0, 0, 22, 119, 1, 0, 0, 0, 24, 121, 1, 0, 0, 0, 26, 27, 3, 2, 1, 0, 27, 28, 5, 0, 0, 1, 28, 1, 1, 0, 0, 0, 29, 30, 5, 8, 0, 0, 30, 32, 3, 6, 3, 0, 31, 33, 3, 12, 6, 0, 32, 31, 1, 0, 0, 0, 32, 33, 1, 0, 0, 0, 33, 34, 1, 0, 0, 0, 34, 35, 5, 6, 0, 0, 35, 54, 1, 0, 0, 0, 36, 37, 5, 8, 0, 0, 37, 38, 3, 8, 4, 0, 38, 40, 3, 4, 2, 0, 39, 41, 3, 12, 6, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 5, 6, 0, 0, 43, 54, 1, 0, 0, 0, 44, 45, 5, 8, 0, 0, 45, 46, 3, 8, 4, 0, 46, 48, 3, 4, 2, 0, 47, 49, 3, 12, 6, 0, 48, 47, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 3, 24, 12, 0, 51, 52, 5, 6, 0, 0, 52, 54, 1, 0, 0, 0, 53, 29, 1, 0, 0, 0, 53, 36, 1, 0, 0, 0, 53, 44, 1, 0, 0, 0, 54, 3, 1, 0, 0, 0, 55, 56, 5, 10, 0, 0, 56, 57, 5, 37, 0, 0, 57, 5, 1, 0, 0, 0, 58, 63, 3, 10, 5, 0, 59, 60, 5, 3, 0, 0, 60, 62, 3, 10, 5, 0, 61, 59, 1, 0, 0, 0, 62, 65, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 63, 64, 1, 0, 0, 0, 64, 68, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 66, 68, 5, 39, 0, 0, 67, 58, 1, 0, 0, 0, 67, 66, 1, 0, 0, 0, 68, 7, 1, 0, 0, 0, 69, 70, 3, 10, 5, 0, 70, 71, 5, 3, 0, 0, 71, 73, 1, 0, 0, 0, 72, 69, 1, 0, 0, 0, 72, 73, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 75, 7, 0, 0, 0, 75, 78, 5, 4, 0, 0, 76, 79, 3, 10, 5, 0, 77, 79, 5, 39, 0, 0, 78, 76, 1, 0, 0, 0, 78, 77, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 81, 5, 5, 0, 0, 81, 9, 1, 0, 0, 0, 82, 83, 5, 36, 0, 0, 83, 11, 1, 0, 0, 0, 84, 85, 5, 9, 0, 0, 85, 86, 3, 14, 7, 0, 86, 13, 1, 0, 0, 0, 87, 88, 6, 7, -1, 0, 88, 100, 3, 16, 8, 0, 89, 92, 3, 18, 9, 0, 90, 92, 3, 16, 8, 0, 91, 89, 1, 0, 0, 0, 91, 90, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 96, 7, 1, 0, 0, 94, 97, 3, 18, 9, 0, 95, 97, 3, 16, 8, 0, 96, 94, 1, 0, 0, 0, 96, 95, 1, 0, 0, 0, 97, 100, 1, 0, 0, 0, 98, 100, 3, 18, 9, 0, 99, 87, 1, 0, 0, 0, 99, 91, 1, 0, 0, 0, 99, 98, 1, 0, 0, 0, 100, 106, 1, 0, 0, 0, 101, 102, 10, 2, 0, 0, 102, 103, 7, 1, 0, 0, 103, 105, 3, 14, 7, 3, 104, 101, 1, 0, 0, 0, 105, 108, 1, 0, 0, 0, 106, 104, 1, 0, 0, 0, 106, 107, 1, 0, 0, 0, 107, 15, 1, 0, 0, 0, 108, 106, 1, 0, 0, 0, 109, 110, 5, 36, 0, 0, 110, 111, 3, 20, 10, 0, 111, 112, 3, 22, 11, 0, 112, 17, 1, 0, 0, 0, 113, 114, 5, 4, 0, 0, 114, 115, 3, 14, 7, 0, 115, 116, 5, 5, 0, 0, 116, 19, 1, 0, 0, 0, 117, 118, 7, 2, 0, 0, 118, 21, 1, 0, 0, 0, 119, 120, 7, 3, 0, 0, 120, 23, 1, 0, 0, 0, 121, 122, 5, 11, 0, 0, 122, 123, 3, 10, 5, 0, 123, 25, 1, 0, 0, 0, 12, 32, 40, 48, 53, 63, 67, 72, 78, 91, 96, 99, 106] \ No newline at end of file diff --git a/processor/stream_processor/parser/Sql.tokens b/processor/stream_processor/parser/Sql.tokens index b9034b7260a7..27afef39448c 100644 --- a/processor/stream_processor/parser/Sql.tokens +++ b/processor/stream_processor/parser/Sql.tokens @@ -4,36 +4,36 @@ COMMA=3 L_BRACKET=4 R_BRACKET=5 EOQ=6 -K_SELECT=7 -K_WHERE=8 -K_WINDOW_TUMBLING=9 -K_GROUP_BY=10 -K_AND=11 -K_OR=12 -K_IS=13 -K_LIKE=14 -K_NOT_LIKE=15 -K_EQUAL=16 -K_GREATER=17 -K_LESS=18 -K_LESS_EQUAL=19 -K_GREATER_EQUAL=20 -K_NOT_EQUAL=21 -K_NULL=22 -K_IS_NULL=23 -K_IS_NOT_NULL=24 -K_NOT=25 -K_NOT_IN=26 -K_IN=27 -K_TRUE=28 -K_FALSE=29 -K_COUNT=30 -K_SUM=31 -K_MIN=32 -K_MAX=33 -K_AVG=34 -IDENTIFIER=35 -BOOLEAN_LITERAL=36 +BOOLEAN_LITERAL=7 +K_SELECT=8 +K_WHERE=9 +K_WINDOW_TUMBLING=10 +K_GROUP_BY=11 +K_AND=12 +K_OR=13 +K_IS=14 +K_LIKE=15 +K_NOT_LIKE=16 +K_EQUAL=17 +K_GREATER=18 +K_LESS=19 +K_LESS_EQUAL=20 +K_GREATER_EQUAL=21 +K_NOT_EQUAL=22 +K_NULL=23 +K_IS_NULL=24 +K_IS_NOT_NULL=25 +K_NOT=26 +K_NOT_IN=27 +K_IN=28 +K_COUNT=29 +K_SUM=30 +K_MIN=31 +K_MAX=32 +K_AVG=33 +K_TRUE=34 +K_FALSE=35 +IDENTIFIER=36 NUMERIC_LITERAL=37 STRING_LITERAL=38 STAR=39 @@ -41,7 +41,7 @@ STAR=39 '('=4 ')'=5 ';'=6 -'='=16 -'>'=17 -'<'=18 +'='=17 +'>'=18 +'<'=19 '*'=39 diff --git a/processor/stream_processor/parser/SqlLexer.interp b/processor/stream_processor/parser/SqlLexer.interp index 9354c61db9fb..e2d97887a7c6 100644 --- a/processor/stream_processor/parser/SqlLexer.interp +++ b/processor/stream_processor/parser/SqlLexer.interp @@ -15,6 +15,7 @@ null null null null +null '=' '>' '<' @@ -37,7 +38,6 @@ null null null null -null '*' token symbolic names: @@ -48,6 +48,7 @@ COMMA L_BRACKET R_BRACKET EOQ +BOOLEAN_LITERAL K_SELECT K_WHERE K_WINDOW_TUMBLING @@ -69,15 +70,14 @@ K_IS_NOT_NULL K_NOT K_NOT_IN K_IN -K_TRUE -K_FALSE K_COUNT K_SUM K_MIN K_MAX K_AVG +K_TRUE +K_FALSE IDENTIFIER -BOOLEAN_LITERAL NUMERIC_LITERAL STRING_LITERAL STAR @@ -89,6 +89,7 @@ COMMA L_BRACKET R_BRACKET EOQ +BOOLEAN_LITERAL K_SELECT K_WHERE K_WINDOW_TUMBLING @@ -110,15 +111,14 @@ K_IS_NOT_NULL K_NOT K_NOT_IN K_IN -K_TRUE -K_FALSE K_COUNT K_SUM K_MIN K_MAX K_AVG +K_TRUE +K_FALSE IDENTIFIER -BOOLEAN_LITERAL NUMERIC_LITERAL STRING_LITERAL STAR @@ -158,4 +158,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 39, 441, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 139, 8, 1, 11, 1, 12, 1, 140, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 294, 8, 34, 10, 34, 12, 34, 297, 9, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 304, 8, 34, 10, 34, 12, 34, 307, 9, 34, 1, 34, 1, 34, 1, 34, 5, 34, 312, 8, 34, 10, 34, 12, 34, 315, 9, 34, 1, 34, 1, 34, 1, 34, 5, 34, 320, 8, 34, 10, 34, 12, 34, 323, 9, 34, 3, 34, 325, 8, 34, 1, 35, 1, 35, 3, 35, 329, 8, 35, 1, 36, 4, 36, 332, 8, 36, 11, 36, 12, 36, 333, 1, 36, 1, 36, 5, 36, 338, 8, 36, 10, 36, 12, 36, 341, 9, 36, 3, 36, 343, 8, 36, 1, 36, 1, 36, 3, 36, 347, 8, 36, 1, 36, 4, 36, 350, 8, 36, 11, 36, 12, 36, 351, 3, 36, 354, 8, 36, 1, 36, 1, 36, 4, 36, 358, 8, 36, 11, 36, 12, 36, 359, 1, 36, 1, 36, 3, 36, 364, 8, 36, 1, 36, 4, 36, 367, 8, 36, 11, 36, 12, 36, 368, 3, 36, 371, 8, 36, 3, 36, 373, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 379, 8, 37, 10, 37, 12, 37, 382, 9, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 0, 0, 66, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 437, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 1, 133, 1, 0, 0, 0, 3, 138, 1, 0, 0, 0, 5, 144, 1, 0, 0, 0, 7, 146, 1, 0, 0, 0, 9, 148, 1, 0, 0, 0, 11, 150, 1, 0, 0, 0, 13, 152, 1, 0, 0, 0, 15, 159, 1, 0, 0, 0, 17, 165, 1, 0, 0, 0, 19, 181, 1, 0, 0, 0, 21, 190, 1, 0, 0, 0, 23, 194, 1, 0, 0, 0, 25, 197, 1, 0, 0, 0, 27, 200, 1, 0, 0, 0, 29, 205, 1, 0, 0, 0, 31, 214, 1, 0, 0, 0, 33, 216, 1, 0, 0, 0, 35, 218, 1, 0, 0, 0, 37, 220, 1, 0, 0, 0, 39, 223, 1, 0, 0, 0, 41, 226, 1, 0, 0, 0, 43, 229, 1, 0, 0, 0, 45, 234, 1, 0, 0, 0, 47, 238, 1, 0, 0, 0, 49, 244, 1, 0, 0, 0, 51, 248, 1, 0, 0, 0, 53, 253, 1, 0, 0, 0, 55, 256, 1, 0, 0, 0, 57, 261, 1, 0, 0, 0, 59, 267, 1, 0, 0, 0, 61, 273, 1, 0, 0, 0, 63, 277, 1, 0, 0, 0, 65, 281, 1, 0, 0, 0, 67, 285, 1, 0, 0, 0, 69, 324, 1, 0, 0, 0, 71, 328, 1, 0, 0, 0, 73, 372, 1, 0, 0, 0, 75, 374, 1, 0, 0, 0, 77, 385, 1, 0, 0, 0, 79, 387, 1, 0, 0, 0, 81, 389, 1, 0, 0, 0, 83, 391, 1, 0, 0, 0, 85, 393, 1, 0, 0, 0, 87, 395, 1, 0, 0, 0, 89, 397, 1, 0, 0, 0, 91, 399, 1, 0, 0, 0, 93, 401, 1, 0, 0, 0, 95, 403, 1, 0, 0, 0, 97, 405, 1, 0, 0, 0, 99, 407, 1, 0, 0, 0, 101, 409, 1, 0, 0, 0, 103, 411, 1, 0, 0, 0, 105, 413, 1, 0, 0, 0, 107, 415, 1, 0, 0, 0, 109, 417, 1, 0, 0, 0, 111, 419, 1, 0, 0, 0, 113, 421, 1, 0, 0, 0, 115, 423, 1, 0, 0, 0, 117, 425, 1, 0, 0, 0, 119, 427, 1, 0, 0, 0, 121, 429, 1, 0, 0, 0, 123, 431, 1, 0, 0, 0, 125, 433, 1, 0, 0, 0, 127, 435, 1, 0, 0, 0, 129, 437, 1, 0, 0, 0, 131, 439, 1, 0, 0, 0, 133, 134, 7, 0, 0, 0, 134, 135, 1, 0, 0, 0, 135, 136, 6, 0, 0, 0, 136, 2, 1, 0, 0, 0, 137, 139, 7, 1, 0, 0, 138, 137, 1, 0, 0, 0, 139, 140, 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 142, 1, 0, 0, 0, 142, 143, 6, 1, 1, 0, 143, 4, 1, 0, 0, 0, 144, 145, 5, 44, 0, 0, 145, 6, 1, 0, 0, 0, 146, 147, 5, 40, 0, 0, 147, 8, 1, 0, 0, 0, 148, 149, 5, 41, 0, 0, 149, 10, 1, 0, 0, 0, 150, 151, 5, 59, 0, 0, 151, 12, 1, 0, 0, 0, 152, 153, 3, 117, 58, 0, 153, 154, 3, 89, 44, 0, 154, 155, 3, 103, 51, 0, 155, 156, 3, 89, 44, 0, 156, 157, 3, 85, 42, 0, 157, 158, 3, 119, 59, 0, 158, 14, 1, 0, 0, 0, 159, 160, 3, 125, 62, 0, 160, 161, 3, 95, 47, 0, 161, 162, 3, 89, 44, 0, 162, 163, 3, 115, 57, 0, 163, 164, 3, 89, 44, 0, 164, 16, 1, 0, 0, 0, 165, 166, 3, 125, 62, 0, 166, 167, 3, 97, 48, 0, 167, 168, 3, 107, 53, 0, 168, 169, 3, 87, 43, 0, 169, 170, 3, 109, 54, 0, 170, 171, 3, 125, 62, 0, 171, 172, 3, 1, 0, 0, 172, 173, 3, 119, 59, 0, 173, 174, 3, 121, 60, 0, 174, 175, 3, 105, 52, 0, 175, 176, 3, 83, 41, 0, 176, 177, 3, 103, 51, 0, 177, 178, 3, 97, 48, 0, 178, 179, 3, 107, 53, 0, 179, 180, 3, 93, 46, 0, 180, 18, 1, 0, 0, 0, 181, 182, 3, 93, 46, 0, 182, 183, 3, 115, 57, 0, 183, 184, 3, 109, 54, 0, 184, 185, 3, 121, 60, 0, 185, 186, 3, 111, 55, 0, 186, 187, 3, 1, 0, 0, 187, 188, 3, 83, 41, 0, 188, 189, 3, 129, 64, 0, 189, 20, 1, 0, 0, 0, 190, 191, 3, 81, 40, 0, 191, 192, 3, 107, 53, 0, 192, 193, 3, 87, 43, 0, 193, 22, 1, 0, 0, 0, 194, 195, 3, 109, 54, 0, 195, 196, 3, 115, 57, 0, 196, 24, 1, 0, 0, 0, 197, 198, 3, 97, 48, 0, 198, 199, 3, 117, 58, 0, 199, 26, 1, 0, 0, 0, 200, 201, 3, 103, 51, 0, 201, 202, 3, 97, 48, 0, 202, 203, 3, 101, 50, 0, 203, 204, 3, 89, 44, 0, 204, 28, 1, 0, 0, 0, 205, 206, 3, 107, 53, 0, 206, 207, 3, 109, 54, 0, 207, 208, 3, 119, 59, 0, 208, 209, 3, 1, 0, 0, 209, 210, 3, 103, 51, 0, 210, 211, 3, 97, 48, 0, 211, 212, 3, 101, 50, 0, 212, 213, 3, 89, 44, 0, 213, 30, 1, 0, 0, 0, 214, 215, 5, 61, 0, 0, 215, 32, 1, 0, 0, 0, 216, 217, 5, 62, 0, 0, 217, 34, 1, 0, 0, 0, 218, 219, 5, 60, 0, 0, 219, 36, 1, 0, 0, 0, 220, 221, 3, 35, 17, 0, 221, 222, 3, 31, 15, 0, 222, 38, 1, 0, 0, 0, 223, 224, 3, 33, 16, 0, 224, 225, 3, 31, 15, 0, 225, 40, 1, 0, 0, 0, 226, 227, 5, 33, 0, 0, 227, 228, 3, 31, 15, 0, 228, 42, 1, 0, 0, 0, 229, 230, 3, 107, 53, 0, 230, 231, 3, 121, 60, 0, 231, 232, 3, 103, 51, 0, 232, 233, 3, 103, 51, 0, 233, 44, 1, 0, 0, 0, 234, 235, 3, 25, 12, 0, 235, 236, 3, 1, 0, 0, 236, 237, 3, 43, 21, 0, 237, 46, 1, 0, 0, 0, 238, 239, 3, 25, 12, 0, 239, 240, 3, 1, 0, 0, 240, 241, 3, 49, 24, 0, 241, 242, 3, 1, 0, 0, 242, 243, 3, 43, 21, 0, 243, 48, 1, 0, 0, 0, 244, 245, 3, 107, 53, 0, 245, 246, 3, 109, 54, 0, 246, 247, 3, 119, 59, 0, 247, 50, 1, 0, 0, 0, 248, 249, 3, 49, 24, 0, 249, 250, 3, 1, 0, 0, 250, 251, 3, 97, 48, 0, 251, 252, 3, 107, 53, 0, 252, 52, 1, 0, 0, 0, 253, 254, 3, 97, 48, 0, 254, 255, 3, 107, 53, 0, 255, 54, 1, 0, 0, 0, 256, 257, 3, 119, 59, 0, 257, 258, 3, 115, 57, 0, 258, 259, 3, 121, 60, 0, 259, 260, 3, 89, 44, 0, 260, 56, 1, 0, 0, 0, 261, 262, 3, 91, 45, 0, 262, 263, 3, 81, 40, 0, 263, 264, 3, 103, 51, 0, 264, 265, 3, 117, 58, 0, 265, 266, 3, 89, 44, 0, 266, 58, 1, 0, 0, 0, 267, 268, 3, 85, 42, 0, 268, 269, 3, 109, 54, 0, 269, 270, 3, 121, 60, 0, 270, 271, 3, 107, 53, 0, 271, 272, 3, 119, 59, 0, 272, 60, 1, 0, 0, 0, 273, 274, 3, 117, 58, 0, 274, 275, 3, 121, 60, 0, 275, 276, 3, 105, 52, 0, 276, 62, 1, 0, 0, 0, 277, 278, 3, 105, 52, 0, 278, 279, 3, 97, 48, 0, 279, 280, 3, 107, 53, 0, 280, 64, 1, 0, 0, 0, 281, 282, 3, 105, 52, 0, 282, 283, 3, 81, 40, 0, 283, 284, 3, 127, 63, 0, 284, 66, 1, 0, 0, 0, 285, 286, 3, 81, 40, 0, 286, 287, 3, 123, 61, 0, 287, 288, 3, 93, 46, 0, 288, 68, 1, 0, 0, 0, 289, 295, 5, 34, 0, 0, 290, 294, 8, 2, 0, 0, 291, 292, 5, 34, 0, 0, 292, 294, 5, 34, 0, 0, 293, 290, 1, 0, 0, 0, 293, 291, 1, 0, 0, 0, 294, 297, 1, 0, 0, 0, 295, 293, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 298, 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, 298, 325, 5, 34, 0, 0, 299, 305, 5, 96, 0, 0, 300, 304, 8, 3, 0, 0, 301, 302, 5, 96, 0, 0, 302, 304, 5, 96, 0, 0, 303, 300, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 304, 307, 1, 0, 0, 0, 305, 303, 1, 0, 0, 0, 305, 306, 1, 0, 0, 0, 306, 308, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 325, 5, 96, 0, 0, 309, 313, 5, 91, 0, 0, 310, 312, 8, 4, 0, 0, 311, 310, 1, 0, 0, 0, 312, 315, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 316, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 316, 325, 5, 93, 0, 0, 317, 321, 7, 5, 0, 0, 318, 320, 7, 6, 0, 0, 319, 318, 1, 0, 0, 0, 320, 323, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 325, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 324, 289, 1, 0, 0, 0, 324, 299, 1, 0, 0, 0, 324, 309, 1, 0, 0, 0, 324, 317, 1, 0, 0, 0, 325, 70, 1, 0, 0, 0, 326, 329, 3, 55, 27, 0, 327, 329, 3, 57, 28, 0, 328, 326, 1, 0, 0, 0, 328, 327, 1, 0, 0, 0, 329, 72, 1, 0, 0, 0, 330, 332, 3, 79, 39, 0, 331, 330, 1, 0, 0, 0, 332, 333, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 342, 1, 0, 0, 0, 335, 339, 5, 46, 0, 0, 336, 338, 3, 79, 39, 0, 337, 336, 1, 0, 0, 0, 338, 341, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 339, 340, 1, 0, 0, 0, 340, 343, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 342, 335, 1, 0, 0, 0, 342, 343, 1, 0, 0, 0, 343, 353, 1, 0, 0, 0, 344, 346, 3, 89, 44, 0, 345, 347, 7, 7, 0, 0, 346, 345, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347, 349, 1, 0, 0, 0, 348, 350, 3, 79, 39, 0, 349, 348, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 344, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 373, 1, 0, 0, 0, 355, 357, 5, 46, 0, 0, 356, 358, 3, 79, 39, 0, 357, 356, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 370, 1, 0, 0, 0, 361, 363, 3, 89, 44, 0, 362, 364, 7, 7, 0, 0, 363, 362, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 366, 1, 0, 0, 0, 365, 367, 3, 79, 39, 0, 366, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 371, 1, 0, 0, 0, 370, 361, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 373, 1, 0, 0, 0, 372, 331, 1, 0, 0, 0, 372, 355, 1, 0, 0, 0, 373, 74, 1, 0, 0, 0, 374, 380, 5, 39, 0, 0, 375, 379, 8, 8, 0, 0, 376, 377, 5, 39, 0, 0, 377, 379, 5, 39, 0, 0, 378, 375, 1, 0, 0, 0, 378, 376, 1, 0, 0, 0, 379, 382, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 383, 1, 0, 0, 0, 382, 380, 1, 0, 0, 0, 383, 384, 5, 39, 0, 0, 384, 76, 1, 0, 0, 0, 385, 386, 5, 42, 0, 0, 386, 78, 1, 0, 0, 0, 387, 388, 7, 9, 0, 0, 388, 80, 1, 0, 0, 0, 389, 390, 7, 10, 0, 0, 390, 82, 1, 0, 0, 0, 391, 392, 7, 11, 0, 0, 392, 84, 1, 0, 0, 0, 393, 394, 7, 12, 0, 0, 394, 86, 1, 0, 0, 0, 395, 396, 7, 13, 0, 0, 396, 88, 1, 0, 0, 0, 397, 398, 7, 14, 0, 0, 398, 90, 1, 0, 0, 0, 399, 400, 7, 15, 0, 0, 400, 92, 1, 0, 0, 0, 401, 402, 7, 16, 0, 0, 402, 94, 1, 0, 0, 0, 403, 404, 7, 17, 0, 0, 404, 96, 1, 0, 0, 0, 405, 406, 7, 18, 0, 0, 406, 98, 1, 0, 0, 0, 407, 408, 7, 19, 0, 0, 408, 100, 1, 0, 0, 0, 409, 410, 7, 20, 0, 0, 410, 102, 1, 0, 0, 0, 411, 412, 7, 21, 0, 0, 412, 104, 1, 0, 0, 0, 413, 414, 7, 22, 0, 0, 414, 106, 1, 0, 0, 0, 415, 416, 7, 23, 0, 0, 416, 108, 1, 0, 0, 0, 417, 418, 7, 24, 0, 0, 418, 110, 1, 0, 0, 0, 419, 420, 7, 25, 0, 0, 420, 112, 1, 0, 0, 0, 421, 422, 7, 26, 0, 0, 422, 114, 1, 0, 0, 0, 423, 424, 7, 27, 0, 0, 424, 116, 1, 0, 0, 0, 425, 426, 7, 28, 0, 0, 426, 118, 1, 0, 0, 0, 427, 428, 7, 29, 0, 0, 428, 120, 1, 0, 0, 0, 429, 430, 7, 30, 0, 0, 430, 122, 1, 0, 0, 0, 431, 432, 7, 31, 0, 0, 432, 124, 1, 0, 0, 0, 433, 434, 7, 32, 0, 0, 434, 126, 1, 0, 0, 0, 435, 436, 7, 33, 0, 0, 436, 128, 1, 0, 0, 0, 437, 438, 7, 34, 0, 0, 438, 130, 1, 0, 0, 0, 439, 440, 7, 35, 0, 0, 440, 132, 1, 0, 0, 0, 23, 0, 140, 293, 295, 303, 305, 313, 321, 324, 328, 333, 339, 342, 346, 351, 353, 359, 363, 368, 370, 372, 378, 380, 2, 0, 1, 0, 6, 0, 0] \ No newline at end of file +[4, 0, 39, 441, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 139, 8, 1, 11, 1, 12, 1, 140, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 3, 6, 155, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 298, 8, 35, 10, 35, 12, 35, 301, 9, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 308, 8, 35, 10, 35, 12, 35, 311, 9, 35, 1, 35, 1, 35, 1, 35, 5, 35, 316, 8, 35, 10, 35, 12, 35, 319, 9, 35, 1, 35, 1, 35, 1, 35, 5, 35, 324, 8, 35, 10, 35, 12, 35, 327, 9, 35, 3, 35, 329, 8, 35, 1, 36, 4, 36, 332, 8, 36, 11, 36, 12, 36, 333, 1, 36, 1, 36, 5, 36, 338, 8, 36, 10, 36, 12, 36, 341, 9, 36, 3, 36, 343, 8, 36, 1, 36, 1, 36, 3, 36, 347, 8, 36, 1, 36, 4, 36, 350, 8, 36, 11, 36, 12, 36, 351, 3, 36, 354, 8, 36, 1, 36, 1, 36, 4, 36, 358, 8, 36, 11, 36, 12, 36, 359, 1, 36, 1, 36, 3, 36, 364, 8, 36, 1, 36, 4, 36, 367, 8, 36, 11, 36, 12, 36, 368, 3, 36, 371, 8, 36, 3, 36, 373, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 379, 8, 37, 10, 37, 12, 37, 382, 9, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 0, 0, 66, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 437, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 1, 133, 1, 0, 0, 0, 3, 138, 1, 0, 0, 0, 5, 144, 1, 0, 0, 0, 7, 146, 1, 0, 0, 0, 9, 148, 1, 0, 0, 0, 11, 150, 1, 0, 0, 0, 13, 154, 1, 0, 0, 0, 15, 156, 1, 0, 0, 0, 17, 163, 1, 0, 0, 0, 19, 169, 1, 0, 0, 0, 21, 185, 1, 0, 0, 0, 23, 194, 1, 0, 0, 0, 25, 198, 1, 0, 0, 0, 27, 201, 1, 0, 0, 0, 29, 204, 1, 0, 0, 0, 31, 209, 1, 0, 0, 0, 33, 218, 1, 0, 0, 0, 35, 220, 1, 0, 0, 0, 37, 222, 1, 0, 0, 0, 39, 224, 1, 0, 0, 0, 41, 227, 1, 0, 0, 0, 43, 230, 1, 0, 0, 0, 45, 233, 1, 0, 0, 0, 47, 238, 1, 0, 0, 0, 49, 242, 1, 0, 0, 0, 51, 248, 1, 0, 0, 0, 53, 252, 1, 0, 0, 0, 55, 257, 1, 0, 0, 0, 57, 260, 1, 0, 0, 0, 59, 266, 1, 0, 0, 0, 61, 270, 1, 0, 0, 0, 63, 274, 1, 0, 0, 0, 65, 278, 1, 0, 0, 0, 67, 282, 1, 0, 0, 0, 69, 287, 1, 0, 0, 0, 71, 328, 1, 0, 0, 0, 73, 372, 1, 0, 0, 0, 75, 374, 1, 0, 0, 0, 77, 385, 1, 0, 0, 0, 79, 387, 1, 0, 0, 0, 81, 389, 1, 0, 0, 0, 83, 391, 1, 0, 0, 0, 85, 393, 1, 0, 0, 0, 87, 395, 1, 0, 0, 0, 89, 397, 1, 0, 0, 0, 91, 399, 1, 0, 0, 0, 93, 401, 1, 0, 0, 0, 95, 403, 1, 0, 0, 0, 97, 405, 1, 0, 0, 0, 99, 407, 1, 0, 0, 0, 101, 409, 1, 0, 0, 0, 103, 411, 1, 0, 0, 0, 105, 413, 1, 0, 0, 0, 107, 415, 1, 0, 0, 0, 109, 417, 1, 0, 0, 0, 111, 419, 1, 0, 0, 0, 113, 421, 1, 0, 0, 0, 115, 423, 1, 0, 0, 0, 117, 425, 1, 0, 0, 0, 119, 427, 1, 0, 0, 0, 121, 429, 1, 0, 0, 0, 123, 431, 1, 0, 0, 0, 125, 433, 1, 0, 0, 0, 127, 435, 1, 0, 0, 0, 129, 437, 1, 0, 0, 0, 131, 439, 1, 0, 0, 0, 133, 134, 7, 0, 0, 0, 134, 135, 1, 0, 0, 0, 135, 136, 6, 0, 0, 0, 136, 2, 1, 0, 0, 0, 137, 139, 7, 1, 0, 0, 138, 137, 1, 0, 0, 0, 139, 140, 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 142, 1, 0, 0, 0, 142, 143, 6, 1, 1, 0, 143, 4, 1, 0, 0, 0, 144, 145, 5, 44, 0, 0, 145, 6, 1, 0, 0, 0, 146, 147, 5, 40, 0, 0, 147, 8, 1, 0, 0, 0, 148, 149, 5, 41, 0, 0, 149, 10, 1, 0, 0, 0, 150, 151, 5, 59, 0, 0, 151, 12, 1, 0, 0, 0, 152, 155, 3, 67, 33, 0, 153, 155, 3, 69, 34, 0, 154, 152, 1, 0, 0, 0, 154, 153, 1, 0, 0, 0, 155, 14, 1, 0, 0, 0, 156, 157, 3, 117, 58, 0, 157, 158, 3, 89, 44, 0, 158, 159, 3, 103, 51, 0, 159, 160, 3, 89, 44, 0, 160, 161, 3, 85, 42, 0, 161, 162, 3, 119, 59, 0, 162, 16, 1, 0, 0, 0, 163, 164, 3, 125, 62, 0, 164, 165, 3, 95, 47, 0, 165, 166, 3, 89, 44, 0, 166, 167, 3, 115, 57, 0, 167, 168, 3, 89, 44, 0, 168, 18, 1, 0, 0, 0, 169, 170, 3, 125, 62, 0, 170, 171, 3, 97, 48, 0, 171, 172, 3, 107, 53, 0, 172, 173, 3, 87, 43, 0, 173, 174, 3, 109, 54, 0, 174, 175, 3, 125, 62, 0, 175, 176, 3, 1, 0, 0, 176, 177, 3, 119, 59, 0, 177, 178, 3, 121, 60, 0, 178, 179, 3, 105, 52, 0, 179, 180, 3, 83, 41, 0, 180, 181, 3, 103, 51, 0, 181, 182, 3, 97, 48, 0, 182, 183, 3, 107, 53, 0, 183, 184, 3, 93, 46, 0, 184, 20, 1, 0, 0, 0, 185, 186, 3, 93, 46, 0, 186, 187, 3, 115, 57, 0, 187, 188, 3, 109, 54, 0, 188, 189, 3, 121, 60, 0, 189, 190, 3, 111, 55, 0, 190, 191, 3, 1, 0, 0, 191, 192, 3, 83, 41, 0, 192, 193, 3, 129, 64, 0, 193, 22, 1, 0, 0, 0, 194, 195, 3, 81, 40, 0, 195, 196, 3, 107, 53, 0, 196, 197, 3, 87, 43, 0, 197, 24, 1, 0, 0, 0, 198, 199, 3, 109, 54, 0, 199, 200, 3, 115, 57, 0, 200, 26, 1, 0, 0, 0, 201, 202, 3, 97, 48, 0, 202, 203, 3, 117, 58, 0, 203, 28, 1, 0, 0, 0, 204, 205, 3, 103, 51, 0, 205, 206, 3, 97, 48, 0, 206, 207, 3, 101, 50, 0, 207, 208, 3, 89, 44, 0, 208, 30, 1, 0, 0, 0, 209, 210, 3, 107, 53, 0, 210, 211, 3, 109, 54, 0, 211, 212, 3, 119, 59, 0, 212, 213, 3, 1, 0, 0, 213, 214, 3, 103, 51, 0, 214, 215, 3, 97, 48, 0, 215, 216, 3, 101, 50, 0, 216, 217, 3, 89, 44, 0, 217, 32, 1, 0, 0, 0, 218, 219, 5, 61, 0, 0, 219, 34, 1, 0, 0, 0, 220, 221, 5, 62, 0, 0, 221, 36, 1, 0, 0, 0, 222, 223, 5, 60, 0, 0, 223, 38, 1, 0, 0, 0, 224, 225, 3, 37, 18, 0, 225, 226, 3, 33, 16, 0, 226, 40, 1, 0, 0, 0, 227, 228, 3, 35, 17, 0, 228, 229, 3, 33, 16, 0, 229, 42, 1, 0, 0, 0, 230, 231, 5, 33, 0, 0, 231, 232, 3, 33, 16, 0, 232, 44, 1, 0, 0, 0, 233, 234, 3, 107, 53, 0, 234, 235, 3, 121, 60, 0, 235, 236, 3, 103, 51, 0, 236, 237, 3, 103, 51, 0, 237, 46, 1, 0, 0, 0, 238, 239, 3, 27, 13, 0, 239, 240, 3, 1, 0, 0, 240, 241, 3, 45, 22, 0, 241, 48, 1, 0, 0, 0, 242, 243, 3, 27, 13, 0, 243, 244, 3, 1, 0, 0, 244, 245, 3, 51, 25, 0, 245, 246, 3, 1, 0, 0, 246, 247, 3, 45, 22, 0, 247, 50, 1, 0, 0, 0, 248, 249, 3, 107, 53, 0, 249, 250, 3, 109, 54, 0, 250, 251, 3, 119, 59, 0, 251, 52, 1, 0, 0, 0, 252, 253, 3, 51, 25, 0, 253, 254, 3, 1, 0, 0, 254, 255, 3, 97, 48, 0, 255, 256, 3, 107, 53, 0, 256, 54, 1, 0, 0, 0, 257, 258, 3, 97, 48, 0, 258, 259, 3, 107, 53, 0, 259, 56, 1, 0, 0, 0, 260, 261, 3, 85, 42, 0, 261, 262, 3, 109, 54, 0, 262, 263, 3, 121, 60, 0, 263, 264, 3, 107, 53, 0, 264, 265, 3, 119, 59, 0, 265, 58, 1, 0, 0, 0, 266, 267, 3, 117, 58, 0, 267, 268, 3, 121, 60, 0, 268, 269, 3, 105, 52, 0, 269, 60, 1, 0, 0, 0, 270, 271, 3, 105, 52, 0, 271, 272, 3, 97, 48, 0, 272, 273, 3, 107, 53, 0, 273, 62, 1, 0, 0, 0, 274, 275, 3, 105, 52, 0, 275, 276, 3, 81, 40, 0, 276, 277, 3, 127, 63, 0, 277, 64, 1, 0, 0, 0, 278, 279, 3, 81, 40, 0, 279, 280, 3, 123, 61, 0, 280, 281, 3, 93, 46, 0, 281, 66, 1, 0, 0, 0, 282, 283, 3, 119, 59, 0, 283, 284, 3, 115, 57, 0, 284, 285, 3, 121, 60, 0, 285, 286, 3, 89, 44, 0, 286, 68, 1, 0, 0, 0, 287, 288, 3, 91, 45, 0, 288, 289, 3, 81, 40, 0, 289, 290, 3, 103, 51, 0, 290, 291, 3, 117, 58, 0, 291, 292, 3, 89, 44, 0, 292, 70, 1, 0, 0, 0, 293, 299, 5, 34, 0, 0, 294, 298, 8, 2, 0, 0, 295, 296, 5, 34, 0, 0, 296, 298, 5, 34, 0, 0, 297, 294, 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, 298, 301, 1, 0, 0, 0, 299, 297, 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 302, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 302, 329, 5, 34, 0, 0, 303, 309, 5, 96, 0, 0, 304, 308, 8, 3, 0, 0, 305, 306, 5, 96, 0, 0, 306, 308, 5, 96, 0, 0, 307, 304, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 311, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 309, 310, 1, 0, 0, 0, 310, 312, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 312, 329, 5, 96, 0, 0, 313, 317, 5, 91, 0, 0, 314, 316, 8, 4, 0, 0, 315, 314, 1, 0, 0, 0, 316, 319, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, 320, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 320, 329, 5, 93, 0, 0, 321, 325, 7, 5, 0, 0, 322, 324, 7, 6, 0, 0, 323, 322, 1, 0, 0, 0, 324, 327, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, 326, 329, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 328, 293, 1, 0, 0, 0, 328, 303, 1, 0, 0, 0, 328, 313, 1, 0, 0, 0, 328, 321, 1, 0, 0, 0, 329, 72, 1, 0, 0, 0, 330, 332, 3, 79, 39, 0, 331, 330, 1, 0, 0, 0, 332, 333, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 342, 1, 0, 0, 0, 335, 339, 5, 46, 0, 0, 336, 338, 3, 79, 39, 0, 337, 336, 1, 0, 0, 0, 338, 341, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 339, 340, 1, 0, 0, 0, 340, 343, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 342, 335, 1, 0, 0, 0, 342, 343, 1, 0, 0, 0, 343, 353, 1, 0, 0, 0, 344, 346, 3, 89, 44, 0, 345, 347, 7, 7, 0, 0, 346, 345, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347, 349, 1, 0, 0, 0, 348, 350, 3, 79, 39, 0, 349, 348, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 344, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 373, 1, 0, 0, 0, 355, 357, 5, 46, 0, 0, 356, 358, 3, 79, 39, 0, 357, 356, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 370, 1, 0, 0, 0, 361, 363, 3, 89, 44, 0, 362, 364, 7, 7, 0, 0, 363, 362, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 366, 1, 0, 0, 0, 365, 367, 3, 79, 39, 0, 366, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 371, 1, 0, 0, 0, 370, 361, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 373, 1, 0, 0, 0, 372, 331, 1, 0, 0, 0, 372, 355, 1, 0, 0, 0, 373, 74, 1, 0, 0, 0, 374, 380, 5, 39, 0, 0, 375, 379, 8, 8, 0, 0, 376, 377, 5, 39, 0, 0, 377, 379, 5, 39, 0, 0, 378, 375, 1, 0, 0, 0, 378, 376, 1, 0, 0, 0, 379, 382, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 383, 1, 0, 0, 0, 382, 380, 1, 0, 0, 0, 383, 384, 5, 39, 0, 0, 384, 76, 1, 0, 0, 0, 385, 386, 5, 42, 0, 0, 386, 78, 1, 0, 0, 0, 387, 388, 7, 9, 0, 0, 388, 80, 1, 0, 0, 0, 389, 390, 7, 10, 0, 0, 390, 82, 1, 0, 0, 0, 391, 392, 7, 11, 0, 0, 392, 84, 1, 0, 0, 0, 393, 394, 7, 12, 0, 0, 394, 86, 1, 0, 0, 0, 395, 396, 7, 13, 0, 0, 396, 88, 1, 0, 0, 0, 397, 398, 7, 14, 0, 0, 398, 90, 1, 0, 0, 0, 399, 400, 7, 15, 0, 0, 400, 92, 1, 0, 0, 0, 401, 402, 7, 16, 0, 0, 402, 94, 1, 0, 0, 0, 403, 404, 7, 17, 0, 0, 404, 96, 1, 0, 0, 0, 405, 406, 7, 18, 0, 0, 406, 98, 1, 0, 0, 0, 407, 408, 7, 19, 0, 0, 408, 100, 1, 0, 0, 0, 409, 410, 7, 20, 0, 0, 410, 102, 1, 0, 0, 0, 411, 412, 7, 21, 0, 0, 412, 104, 1, 0, 0, 0, 413, 414, 7, 22, 0, 0, 414, 106, 1, 0, 0, 0, 415, 416, 7, 23, 0, 0, 416, 108, 1, 0, 0, 0, 417, 418, 7, 24, 0, 0, 418, 110, 1, 0, 0, 0, 419, 420, 7, 25, 0, 0, 420, 112, 1, 0, 0, 0, 421, 422, 7, 26, 0, 0, 422, 114, 1, 0, 0, 0, 423, 424, 7, 27, 0, 0, 424, 116, 1, 0, 0, 0, 425, 426, 7, 28, 0, 0, 426, 118, 1, 0, 0, 0, 427, 428, 7, 29, 0, 0, 428, 120, 1, 0, 0, 0, 429, 430, 7, 30, 0, 0, 430, 122, 1, 0, 0, 0, 431, 432, 7, 31, 0, 0, 432, 124, 1, 0, 0, 0, 433, 434, 7, 32, 0, 0, 434, 126, 1, 0, 0, 0, 435, 436, 7, 33, 0, 0, 436, 128, 1, 0, 0, 0, 437, 438, 7, 34, 0, 0, 438, 130, 1, 0, 0, 0, 439, 440, 7, 35, 0, 0, 440, 132, 1, 0, 0, 0, 23, 0, 140, 154, 297, 299, 307, 309, 317, 325, 328, 333, 339, 342, 346, 351, 353, 359, 363, 368, 370, 372, 378, 380, 2, 0, 1, 0, 6, 0, 0] \ No newline at end of file diff --git a/processor/stream_processor/parser/SqlLexer.tokens b/processor/stream_processor/parser/SqlLexer.tokens index b9034b7260a7..27afef39448c 100644 --- a/processor/stream_processor/parser/SqlLexer.tokens +++ b/processor/stream_processor/parser/SqlLexer.tokens @@ -4,36 +4,36 @@ COMMA=3 L_BRACKET=4 R_BRACKET=5 EOQ=6 -K_SELECT=7 -K_WHERE=8 -K_WINDOW_TUMBLING=9 -K_GROUP_BY=10 -K_AND=11 -K_OR=12 -K_IS=13 -K_LIKE=14 -K_NOT_LIKE=15 -K_EQUAL=16 -K_GREATER=17 -K_LESS=18 -K_LESS_EQUAL=19 -K_GREATER_EQUAL=20 -K_NOT_EQUAL=21 -K_NULL=22 -K_IS_NULL=23 -K_IS_NOT_NULL=24 -K_NOT=25 -K_NOT_IN=26 -K_IN=27 -K_TRUE=28 -K_FALSE=29 -K_COUNT=30 -K_SUM=31 -K_MIN=32 -K_MAX=33 -K_AVG=34 -IDENTIFIER=35 -BOOLEAN_LITERAL=36 +BOOLEAN_LITERAL=7 +K_SELECT=8 +K_WHERE=9 +K_WINDOW_TUMBLING=10 +K_GROUP_BY=11 +K_AND=12 +K_OR=13 +K_IS=14 +K_LIKE=15 +K_NOT_LIKE=16 +K_EQUAL=17 +K_GREATER=18 +K_LESS=19 +K_LESS_EQUAL=20 +K_GREATER_EQUAL=21 +K_NOT_EQUAL=22 +K_NULL=23 +K_IS_NULL=24 +K_IS_NOT_NULL=25 +K_NOT=26 +K_NOT_IN=27 +K_IN=28 +K_COUNT=29 +K_SUM=30 +K_MIN=31 +K_MAX=32 +K_AVG=33 +K_TRUE=34 +K_FALSE=35 +IDENTIFIER=36 NUMERIC_LITERAL=37 STRING_LITERAL=38 STAR=39 @@ -41,7 +41,7 @@ STAR=39 '('=4 ')'=5 ';'=6 -'='=16 -'>'=17 -'<'=18 +'='=17 +'>'=18 +'<'=19 '*'=39 diff --git a/processor/stream_processor/parser/sql_base_visitor.go b/processor/stream_processor/parser/sql_base_visitor.go index 5ee4473053cc..25323a1a3cd2 100644 --- a/processor/stream_processor/parser/sql_base_visitor.go +++ b/processor/stream_processor/parser/sql_base_visitor.go @@ -24,6 +24,10 @@ func (v *BaseSqlVisitor) VisitSelectTumblingGroupBy(ctx *SelectTumblingGroupByCo return v.VisitChildren(ctx) } +func (v *BaseSqlVisitor) VisitWindowTumbling(ctx *WindowTumblingContext) interface{} { + return v.VisitChildren(ctx) +} + func (v *BaseSqlVisitor) VisitSelectColumns(ctx *SelectColumnsContext) interface{} { return v.VisitChildren(ctx) } @@ -44,15 +48,15 @@ func (v *BaseSqlVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitWindowTumbling(ctx *WindowTumblingContext) interface{} { +func (v *BaseSqlVisitor) VisitSimpleCondition(ctx *SimpleConditionContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitSimpleCondition(ctx *SimpleConditionContext) interface{} { +func (v *BaseSqlVisitor) VisitCompoundRecursiveCondition(ctx *CompoundRecursiveConditionContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitCompoundRecursiveCondition(ctx *CompoundRecursiveConditionContext) interface{} { +func (v *BaseSqlVisitor) VisitSimpleCompoundCondition(ctx *SimpleCompoundConditionContext) interface{} { return v.VisitChildren(ctx) } @@ -60,22 +64,22 @@ func (v *BaseSqlVisitor) VisitSimpleRecursiveCondition(ctx *SimpleRecursiveCondi return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitCompoundExpr(ctx *CompoundExprContext) interface{} { +func (v *BaseSqlVisitor) VisitSimpleExpression(ctx *SimpleExpressionContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitComparisonOperator(ctx *ComparisonOperatorContext) interface{} { +func (v *BaseSqlVisitor) VisitCompoundExpression(ctx *CompoundExpressionContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitLiteralValue(ctx *LiteralValueContext) interface{} { +func (v *BaseSqlVisitor) VisitComparisonOperator(ctx *ComparisonOperatorContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitGroupBy(ctx *GroupByContext) interface{} { +func (v *BaseSqlVisitor) VisitLiteralValue(ctx *LiteralValueContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitAvg(ctx *AvgContext) interface{} { +func (v *BaseSqlVisitor) VisitGroupBy(ctx *GroupByContext) interface{} { return v.VisitChildren(ctx) } diff --git a/processor/stream_processor/parser/sql_lexer.go b/processor/stream_processor/parser/sql_lexer.go index 62b2db2c78ba..fd89575f3a79 100644 --- a/processor/stream_processor/parser/sql_lexer.go +++ b/processor/stream_processor/parser/sql_lexer.go @@ -45,28 +45,28 @@ func sqllexerLexerInit() { } staticData.literalNames = []string{ "", "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", - "", "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", + "", "", "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "'*'", } staticData.symbolicNames = []string{ - "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", - "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", - "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", + "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "BOOLEAN_LITERAL", + "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", + "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", - "K_NOT", "K_NOT_IN", "K_IN", "K_TRUE", "K_FALSE", "K_COUNT", "K_SUM", - "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", "BOOLEAN_LITERAL", "NUMERIC_LITERAL", - "STRING_LITERAL", "STAR", + "K_NOT", "K_NOT_IN", "K_IN", "K_COUNT", "K_SUM", "K_MIN", "K_MAX", "K_AVG", + "K_TRUE", "K_FALSE", "IDENTIFIER", "NUMERIC_LITERAL", "STRING_LITERAL", + "STAR", } staticData.ruleNames = []string{ - "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", - "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", - "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", + "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "BOOLEAN_LITERAL", + "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", + "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", - "K_NOT", "K_NOT_IN", "K_IN", "K_TRUE", "K_FALSE", "K_COUNT", "K_SUM", - "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", "BOOLEAN_LITERAL", "NUMERIC_LITERAL", - "STRING_LITERAL", "STAR", "DIGIT", "A", "B", "C", "D", "E", "F", "G", - "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", - "V", "W", "X", "Y", "Z", + "K_NOT", "K_NOT_IN", "K_IN", "K_COUNT", "K_SUM", "K_MIN", "K_MAX", "K_AVG", + "K_TRUE", "K_FALSE", "IDENTIFIER", "NUMERIC_LITERAL", "STRING_LITERAL", + "STAR", "DIGIT", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", + "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", + "Z", } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ @@ -84,159 +84,159 @@ func sqllexerLexerInit() { 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 139, 8, 1, 11, 1, 12, 1, 140, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, - 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, - 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, - 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, - 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, - 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, - 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, - 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, - 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, - 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, - 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, - 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, - 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, - 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, - 34, 1, 34, 1, 34, 1, 34, 5, 34, 294, 8, 34, 10, 34, 12, 34, 297, 9, 34, - 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 304, 8, 34, 10, 34, 12, 34, 307, - 9, 34, 1, 34, 1, 34, 1, 34, 5, 34, 312, 8, 34, 10, 34, 12, 34, 315, 9, - 34, 1, 34, 1, 34, 1, 34, 5, 34, 320, 8, 34, 10, 34, 12, 34, 323, 9, 34, - 3, 34, 325, 8, 34, 1, 35, 1, 35, 3, 35, 329, 8, 35, 1, 36, 4, 36, 332, - 8, 36, 11, 36, 12, 36, 333, 1, 36, 1, 36, 5, 36, 338, 8, 36, 10, 36, 12, - 36, 341, 9, 36, 3, 36, 343, 8, 36, 1, 36, 1, 36, 3, 36, 347, 8, 36, 1, - 36, 4, 36, 350, 8, 36, 11, 36, 12, 36, 351, 3, 36, 354, 8, 36, 1, 36, 1, - 36, 4, 36, 358, 8, 36, 11, 36, 12, 36, 359, 1, 36, 1, 36, 3, 36, 364, 8, - 36, 1, 36, 4, 36, 367, 8, 36, 11, 36, 12, 36, 368, 3, 36, 371, 8, 36, 3, - 36, 373, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 379, 8, 37, 10, 37, - 12, 37, 382, 9, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, - 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, - 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, - 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, - 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, - 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 0, 0, 66, 1, - 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, - 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, - 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, - 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, - 77, 39, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, - 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, - 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 1, 0, - 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, - 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, - 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, - 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, - 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, - 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, - 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, - 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, - 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, - 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, - 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, - 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 437, 0, 1, 1, 0, 0, 0, 0, 3, - 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, - 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, - 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, - 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, - 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, - 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, - 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, - 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, - 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, - 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 1, 133, 1, 0, - 0, 0, 3, 138, 1, 0, 0, 0, 5, 144, 1, 0, 0, 0, 7, 146, 1, 0, 0, 0, 9, 148, - 1, 0, 0, 0, 11, 150, 1, 0, 0, 0, 13, 152, 1, 0, 0, 0, 15, 159, 1, 0, 0, - 0, 17, 165, 1, 0, 0, 0, 19, 181, 1, 0, 0, 0, 21, 190, 1, 0, 0, 0, 23, 194, - 1, 0, 0, 0, 25, 197, 1, 0, 0, 0, 27, 200, 1, 0, 0, 0, 29, 205, 1, 0, 0, - 0, 31, 214, 1, 0, 0, 0, 33, 216, 1, 0, 0, 0, 35, 218, 1, 0, 0, 0, 37, 220, - 1, 0, 0, 0, 39, 223, 1, 0, 0, 0, 41, 226, 1, 0, 0, 0, 43, 229, 1, 0, 0, - 0, 45, 234, 1, 0, 0, 0, 47, 238, 1, 0, 0, 0, 49, 244, 1, 0, 0, 0, 51, 248, - 1, 0, 0, 0, 53, 253, 1, 0, 0, 0, 55, 256, 1, 0, 0, 0, 57, 261, 1, 0, 0, - 0, 59, 267, 1, 0, 0, 0, 61, 273, 1, 0, 0, 0, 63, 277, 1, 0, 0, 0, 65, 281, - 1, 0, 0, 0, 67, 285, 1, 0, 0, 0, 69, 324, 1, 0, 0, 0, 71, 328, 1, 0, 0, - 0, 73, 372, 1, 0, 0, 0, 75, 374, 1, 0, 0, 0, 77, 385, 1, 0, 0, 0, 79, 387, - 1, 0, 0, 0, 81, 389, 1, 0, 0, 0, 83, 391, 1, 0, 0, 0, 85, 393, 1, 0, 0, - 0, 87, 395, 1, 0, 0, 0, 89, 397, 1, 0, 0, 0, 91, 399, 1, 0, 0, 0, 93, 401, - 1, 0, 0, 0, 95, 403, 1, 0, 0, 0, 97, 405, 1, 0, 0, 0, 99, 407, 1, 0, 0, - 0, 101, 409, 1, 0, 0, 0, 103, 411, 1, 0, 0, 0, 105, 413, 1, 0, 0, 0, 107, - 415, 1, 0, 0, 0, 109, 417, 1, 0, 0, 0, 111, 419, 1, 0, 0, 0, 113, 421, - 1, 0, 0, 0, 115, 423, 1, 0, 0, 0, 117, 425, 1, 0, 0, 0, 119, 427, 1, 0, - 0, 0, 121, 429, 1, 0, 0, 0, 123, 431, 1, 0, 0, 0, 125, 433, 1, 0, 0, 0, - 127, 435, 1, 0, 0, 0, 129, 437, 1, 0, 0, 0, 131, 439, 1, 0, 0, 0, 133, - 134, 7, 0, 0, 0, 134, 135, 1, 0, 0, 0, 135, 136, 6, 0, 0, 0, 136, 2, 1, - 0, 0, 0, 137, 139, 7, 1, 0, 0, 138, 137, 1, 0, 0, 0, 139, 140, 1, 0, 0, - 0, 140, 138, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 142, 1, 0, 0, 0, 142, - 143, 6, 1, 1, 0, 143, 4, 1, 0, 0, 0, 144, 145, 5, 44, 0, 0, 145, 6, 1, - 0, 0, 0, 146, 147, 5, 40, 0, 0, 147, 8, 1, 0, 0, 0, 148, 149, 5, 41, 0, - 0, 149, 10, 1, 0, 0, 0, 150, 151, 5, 59, 0, 0, 151, 12, 1, 0, 0, 0, 152, - 153, 3, 117, 58, 0, 153, 154, 3, 89, 44, 0, 154, 155, 3, 103, 51, 0, 155, - 156, 3, 89, 44, 0, 156, 157, 3, 85, 42, 0, 157, 158, 3, 119, 59, 0, 158, - 14, 1, 0, 0, 0, 159, 160, 3, 125, 62, 0, 160, 161, 3, 95, 47, 0, 161, 162, - 3, 89, 44, 0, 162, 163, 3, 115, 57, 0, 163, 164, 3, 89, 44, 0, 164, 16, - 1, 0, 0, 0, 165, 166, 3, 125, 62, 0, 166, 167, 3, 97, 48, 0, 167, 168, - 3, 107, 53, 0, 168, 169, 3, 87, 43, 0, 169, 170, 3, 109, 54, 0, 170, 171, - 3, 125, 62, 0, 171, 172, 3, 1, 0, 0, 172, 173, 3, 119, 59, 0, 173, 174, - 3, 121, 60, 0, 174, 175, 3, 105, 52, 0, 175, 176, 3, 83, 41, 0, 176, 177, - 3, 103, 51, 0, 177, 178, 3, 97, 48, 0, 178, 179, 3, 107, 53, 0, 179, 180, - 3, 93, 46, 0, 180, 18, 1, 0, 0, 0, 181, 182, 3, 93, 46, 0, 182, 183, 3, - 115, 57, 0, 183, 184, 3, 109, 54, 0, 184, 185, 3, 121, 60, 0, 185, 186, - 3, 111, 55, 0, 186, 187, 3, 1, 0, 0, 187, 188, 3, 83, 41, 0, 188, 189, - 3, 129, 64, 0, 189, 20, 1, 0, 0, 0, 190, 191, 3, 81, 40, 0, 191, 192, 3, - 107, 53, 0, 192, 193, 3, 87, 43, 0, 193, 22, 1, 0, 0, 0, 194, 195, 3, 109, - 54, 0, 195, 196, 3, 115, 57, 0, 196, 24, 1, 0, 0, 0, 197, 198, 3, 97, 48, - 0, 198, 199, 3, 117, 58, 0, 199, 26, 1, 0, 0, 0, 200, 201, 3, 103, 51, - 0, 201, 202, 3, 97, 48, 0, 202, 203, 3, 101, 50, 0, 203, 204, 3, 89, 44, - 0, 204, 28, 1, 0, 0, 0, 205, 206, 3, 107, 53, 0, 206, 207, 3, 109, 54, - 0, 207, 208, 3, 119, 59, 0, 208, 209, 3, 1, 0, 0, 209, 210, 3, 103, 51, - 0, 210, 211, 3, 97, 48, 0, 211, 212, 3, 101, 50, 0, 212, 213, 3, 89, 44, - 0, 213, 30, 1, 0, 0, 0, 214, 215, 5, 61, 0, 0, 215, 32, 1, 0, 0, 0, 216, - 217, 5, 62, 0, 0, 217, 34, 1, 0, 0, 0, 218, 219, 5, 60, 0, 0, 219, 36, - 1, 0, 0, 0, 220, 221, 3, 35, 17, 0, 221, 222, 3, 31, 15, 0, 222, 38, 1, - 0, 0, 0, 223, 224, 3, 33, 16, 0, 224, 225, 3, 31, 15, 0, 225, 40, 1, 0, - 0, 0, 226, 227, 5, 33, 0, 0, 227, 228, 3, 31, 15, 0, 228, 42, 1, 0, 0, - 0, 229, 230, 3, 107, 53, 0, 230, 231, 3, 121, 60, 0, 231, 232, 3, 103, - 51, 0, 232, 233, 3, 103, 51, 0, 233, 44, 1, 0, 0, 0, 234, 235, 3, 25, 12, - 0, 235, 236, 3, 1, 0, 0, 236, 237, 3, 43, 21, 0, 237, 46, 1, 0, 0, 0, 238, - 239, 3, 25, 12, 0, 239, 240, 3, 1, 0, 0, 240, 241, 3, 49, 24, 0, 241, 242, - 3, 1, 0, 0, 242, 243, 3, 43, 21, 0, 243, 48, 1, 0, 0, 0, 244, 245, 3, 107, - 53, 0, 245, 246, 3, 109, 54, 0, 246, 247, 3, 119, 59, 0, 247, 50, 1, 0, - 0, 0, 248, 249, 3, 49, 24, 0, 249, 250, 3, 1, 0, 0, 250, 251, 3, 97, 48, - 0, 251, 252, 3, 107, 53, 0, 252, 52, 1, 0, 0, 0, 253, 254, 3, 97, 48, 0, - 254, 255, 3, 107, 53, 0, 255, 54, 1, 0, 0, 0, 256, 257, 3, 119, 59, 0, - 257, 258, 3, 115, 57, 0, 258, 259, 3, 121, 60, 0, 259, 260, 3, 89, 44, - 0, 260, 56, 1, 0, 0, 0, 261, 262, 3, 91, 45, 0, 262, 263, 3, 81, 40, 0, - 263, 264, 3, 103, 51, 0, 264, 265, 3, 117, 58, 0, 265, 266, 3, 89, 44, - 0, 266, 58, 1, 0, 0, 0, 267, 268, 3, 85, 42, 0, 268, 269, 3, 109, 54, 0, - 269, 270, 3, 121, 60, 0, 270, 271, 3, 107, 53, 0, 271, 272, 3, 119, 59, - 0, 272, 60, 1, 0, 0, 0, 273, 274, 3, 117, 58, 0, 274, 275, 3, 121, 60, - 0, 275, 276, 3, 105, 52, 0, 276, 62, 1, 0, 0, 0, 277, 278, 3, 105, 52, - 0, 278, 279, 3, 97, 48, 0, 279, 280, 3, 107, 53, 0, 280, 64, 1, 0, 0, 0, - 281, 282, 3, 105, 52, 0, 282, 283, 3, 81, 40, 0, 283, 284, 3, 127, 63, - 0, 284, 66, 1, 0, 0, 0, 285, 286, 3, 81, 40, 0, 286, 287, 3, 123, 61, 0, - 287, 288, 3, 93, 46, 0, 288, 68, 1, 0, 0, 0, 289, 295, 5, 34, 0, 0, 290, - 294, 8, 2, 0, 0, 291, 292, 5, 34, 0, 0, 292, 294, 5, 34, 0, 0, 293, 290, - 1, 0, 0, 0, 293, 291, 1, 0, 0, 0, 294, 297, 1, 0, 0, 0, 295, 293, 1, 0, - 0, 0, 295, 296, 1, 0, 0, 0, 296, 298, 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, - 298, 325, 5, 34, 0, 0, 299, 305, 5, 96, 0, 0, 300, 304, 8, 3, 0, 0, 301, - 302, 5, 96, 0, 0, 302, 304, 5, 96, 0, 0, 303, 300, 1, 0, 0, 0, 303, 301, - 1, 0, 0, 0, 304, 307, 1, 0, 0, 0, 305, 303, 1, 0, 0, 0, 305, 306, 1, 0, - 0, 0, 306, 308, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 325, 5, 96, 0, 0, - 309, 313, 5, 91, 0, 0, 310, 312, 8, 4, 0, 0, 311, 310, 1, 0, 0, 0, 312, - 315, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 316, - 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 316, 325, 5, 93, 0, 0, 317, 321, 7, 5, - 0, 0, 318, 320, 7, 6, 0, 0, 319, 318, 1, 0, 0, 0, 320, 323, 1, 0, 0, 0, - 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 325, 1, 0, 0, 0, 323, - 321, 1, 0, 0, 0, 324, 289, 1, 0, 0, 0, 324, 299, 1, 0, 0, 0, 324, 309, - 1, 0, 0, 0, 324, 317, 1, 0, 0, 0, 325, 70, 1, 0, 0, 0, 326, 329, 3, 55, - 27, 0, 327, 329, 3, 57, 28, 0, 328, 326, 1, 0, 0, 0, 328, 327, 1, 0, 0, - 0, 329, 72, 1, 0, 0, 0, 330, 332, 3, 79, 39, 0, 331, 330, 1, 0, 0, 0, 332, - 333, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 342, - 1, 0, 0, 0, 335, 339, 5, 46, 0, 0, 336, 338, 3, 79, 39, 0, 337, 336, 1, - 0, 0, 0, 338, 341, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 339, 340, 1, 0, 0, - 0, 340, 343, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 342, 335, 1, 0, 0, 0, 342, - 343, 1, 0, 0, 0, 343, 353, 1, 0, 0, 0, 344, 346, 3, 89, 44, 0, 345, 347, - 7, 7, 0, 0, 346, 345, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347, 349, 1, 0, - 0, 0, 348, 350, 3, 79, 39, 0, 349, 348, 1, 0, 0, 0, 350, 351, 1, 0, 0, - 0, 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, + 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 3, 6, 155, 8, 6, 1, 7, 1, 7, 1, + 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, + 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, + 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, + 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, + 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, + 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, + 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, + 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, + 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, + 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, + 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, + 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, + 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, + 298, 8, 35, 10, 35, 12, 35, 301, 9, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, + 35, 5, 35, 308, 8, 35, 10, 35, 12, 35, 311, 9, 35, 1, 35, 1, 35, 1, 35, + 5, 35, 316, 8, 35, 10, 35, 12, 35, 319, 9, 35, 1, 35, 1, 35, 1, 35, 5, + 35, 324, 8, 35, 10, 35, 12, 35, 327, 9, 35, 3, 35, 329, 8, 35, 1, 36, 4, + 36, 332, 8, 36, 11, 36, 12, 36, 333, 1, 36, 1, 36, 5, 36, 338, 8, 36, 10, + 36, 12, 36, 341, 9, 36, 3, 36, 343, 8, 36, 1, 36, 1, 36, 3, 36, 347, 8, + 36, 1, 36, 4, 36, 350, 8, 36, 11, 36, 12, 36, 351, 3, 36, 354, 8, 36, 1, + 36, 1, 36, 4, 36, 358, 8, 36, 11, 36, 12, 36, 359, 1, 36, 1, 36, 3, 36, + 364, 8, 36, 1, 36, 4, 36, 367, 8, 36, 11, 36, 12, 36, 368, 3, 36, 371, + 8, 36, 3, 36, 373, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 379, 8, 37, + 10, 37, 12, 37, 382, 9, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, + 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, + 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, + 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, + 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, + 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 0, 0, + 66, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, + 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, + 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, + 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, + 38, 77, 39, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, + 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, + 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, + 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, + 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, + 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, + 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, + 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, + 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, + 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, + 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, + 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, + 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, + 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, + 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 437, 0, 1, 1, 0, 0, 0, 0, + 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, + 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, + 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, + 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, + 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, + 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, + 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, + 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, + 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, + 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 1, 133, 1, + 0, 0, 0, 3, 138, 1, 0, 0, 0, 5, 144, 1, 0, 0, 0, 7, 146, 1, 0, 0, 0, 9, + 148, 1, 0, 0, 0, 11, 150, 1, 0, 0, 0, 13, 154, 1, 0, 0, 0, 15, 156, 1, + 0, 0, 0, 17, 163, 1, 0, 0, 0, 19, 169, 1, 0, 0, 0, 21, 185, 1, 0, 0, 0, + 23, 194, 1, 0, 0, 0, 25, 198, 1, 0, 0, 0, 27, 201, 1, 0, 0, 0, 29, 204, + 1, 0, 0, 0, 31, 209, 1, 0, 0, 0, 33, 218, 1, 0, 0, 0, 35, 220, 1, 0, 0, + 0, 37, 222, 1, 0, 0, 0, 39, 224, 1, 0, 0, 0, 41, 227, 1, 0, 0, 0, 43, 230, + 1, 0, 0, 0, 45, 233, 1, 0, 0, 0, 47, 238, 1, 0, 0, 0, 49, 242, 1, 0, 0, + 0, 51, 248, 1, 0, 0, 0, 53, 252, 1, 0, 0, 0, 55, 257, 1, 0, 0, 0, 57, 260, + 1, 0, 0, 0, 59, 266, 1, 0, 0, 0, 61, 270, 1, 0, 0, 0, 63, 274, 1, 0, 0, + 0, 65, 278, 1, 0, 0, 0, 67, 282, 1, 0, 0, 0, 69, 287, 1, 0, 0, 0, 71, 328, + 1, 0, 0, 0, 73, 372, 1, 0, 0, 0, 75, 374, 1, 0, 0, 0, 77, 385, 1, 0, 0, + 0, 79, 387, 1, 0, 0, 0, 81, 389, 1, 0, 0, 0, 83, 391, 1, 0, 0, 0, 85, 393, + 1, 0, 0, 0, 87, 395, 1, 0, 0, 0, 89, 397, 1, 0, 0, 0, 91, 399, 1, 0, 0, + 0, 93, 401, 1, 0, 0, 0, 95, 403, 1, 0, 0, 0, 97, 405, 1, 0, 0, 0, 99, 407, + 1, 0, 0, 0, 101, 409, 1, 0, 0, 0, 103, 411, 1, 0, 0, 0, 105, 413, 1, 0, + 0, 0, 107, 415, 1, 0, 0, 0, 109, 417, 1, 0, 0, 0, 111, 419, 1, 0, 0, 0, + 113, 421, 1, 0, 0, 0, 115, 423, 1, 0, 0, 0, 117, 425, 1, 0, 0, 0, 119, + 427, 1, 0, 0, 0, 121, 429, 1, 0, 0, 0, 123, 431, 1, 0, 0, 0, 125, 433, + 1, 0, 0, 0, 127, 435, 1, 0, 0, 0, 129, 437, 1, 0, 0, 0, 131, 439, 1, 0, + 0, 0, 133, 134, 7, 0, 0, 0, 134, 135, 1, 0, 0, 0, 135, 136, 6, 0, 0, 0, + 136, 2, 1, 0, 0, 0, 137, 139, 7, 1, 0, 0, 138, 137, 1, 0, 0, 0, 139, 140, + 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 142, 1, 0, + 0, 0, 142, 143, 6, 1, 1, 0, 143, 4, 1, 0, 0, 0, 144, 145, 5, 44, 0, 0, + 145, 6, 1, 0, 0, 0, 146, 147, 5, 40, 0, 0, 147, 8, 1, 0, 0, 0, 148, 149, + 5, 41, 0, 0, 149, 10, 1, 0, 0, 0, 150, 151, 5, 59, 0, 0, 151, 12, 1, 0, + 0, 0, 152, 155, 3, 67, 33, 0, 153, 155, 3, 69, 34, 0, 154, 152, 1, 0, 0, + 0, 154, 153, 1, 0, 0, 0, 155, 14, 1, 0, 0, 0, 156, 157, 3, 117, 58, 0, + 157, 158, 3, 89, 44, 0, 158, 159, 3, 103, 51, 0, 159, 160, 3, 89, 44, 0, + 160, 161, 3, 85, 42, 0, 161, 162, 3, 119, 59, 0, 162, 16, 1, 0, 0, 0, 163, + 164, 3, 125, 62, 0, 164, 165, 3, 95, 47, 0, 165, 166, 3, 89, 44, 0, 166, + 167, 3, 115, 57, 0, 167, 168, 3, 89, 44, 0, 168, 18, 1, 0, 0, 0, 169, 170, + 3, 125, 62, 0, 170, 171, 3, 97, 48, 0, 171, 172, 3, 107, 53, 0, 172, 173, + 3, 87, 43, 0, 173, 174, 3, 109, 54, 0, 174, 175, 3, 125, 62, 0, 175, 176, + 3, 1, 0, 0, 176, 177, 3, 119, 59, 0, 177, 178, 3, 121, 60, 0, 178, 179, + 3, 105, 52, 0, 179, 180, 3, 83, 41, 0, 180, 181, 3, 103, 51, 0, 181, 182, + 3, 97, 48, 0, 182, 183, 3, 107, 53, 0, 183, 184, 3, 93, 46, 0, 184, 20, + 1, 0, 0, 0, 185, 186, 3, 93, 46, 0, 186, 187, 3, 115, 57, 0, 187, 188, + 3, 109, 54, 0, 188, 189, 3, 121, 60, 0, 189, 190, 3, 111, 55, 0, 190, 191, + 3, 1, 0, 0, 191, 192, 3, 83, 41, 0, 192, 193, 3, 129, 64, 0, 193, 22, 1, + 0, 0, 0, 194, 195, 3, 81, 40, 0, 195, 196, 3, 107, 53, 0, 196, 197, 3, + 87, 43, 0, 197, 24, 1, 0, 0, 0, 198, 199, 3, 109, 54, 0, 199, 200, 3, 115, + 57, 0, 200, 26, 1, 0, 0, 0, 201, 202, 3, 97, 48, 0, 202, 203, 3, 117, 58, + 0, 203, 28, 1, 0, 0, 0, 204, 205, 3, 103, 51, 0, 205, 206, 3, 97, 48, 0, + 206, 207, 3, 101, 50, 0, 207, 208, 3, 89, 44, 0, 208, 30, 1, 0, 0, 0, 209, + 210, 3, 107, 53, 0, 210, 211, 3, 109, 54, 0, 211, 212, 3, 119, 59, 0, 212, + 213, 3, 1, 0, 0, 213, 214, 3, 103, 51, 0, 214, 215, 3, 97, 48, 0, 215, + 216, 3, 101, 50, 0, 216, 217, 3, 89, 44, 0, 217, 32, 1, 0, 0, 0, 218, 219, + 5, 61, 0, 0, 219, 34, 1, 0, 0, 0, 220, 221, 5, 62, 0, 0, 221, 36, 1, 0, + 0, 0, 222, 223, 5, 60, 0, 0, 223, 38, 1, 0, 0, 0, 224, 225, 3, 37, 18, + 0, 225, 226, 3, 33, 16, 0, 226, 40, 1, 0, 0, 0, 227, 228, 3, 35, 17, 0, + 228, 229, 3, 33, 16, 0, 229, 42, 1, 0, 0, 0, 230, 231, 5, 33, 0, 0, 231, + 232, 3, 33, 16, 0, 232, 44, 1, 0, 0, 0, 233, 234, 3, 107, 53, 0, 234, 235, + 3, 121, 60, 0, 235, 236, 3, 103, 51, 0, 236, 237, 3, 103, 51, 0, 237, 46, + 1, 0, 0, 0, 238, 239, 3, 27, 13, 0, 239, 240, 3, 1, 0, 0, 240, 241, 3, + 45, 22, 0, 241, 48, 1, 0, 0, 0, 242, 243, 3, 27, 13, 0, 243, 244, 3, 1, + 0, 0, 244, 245, 3, 51, 25, 0, 245, 246, 3, 1, 0, 0, 246, 247, 3, 45, 22, + 0, 247, 50, 1, 0, 0, 0, 248, 249, 3, 107, 53, 0, 249, 250, 3, 109, 54, + 0, 250, 251, 3, 119, 59, 0, 251, 52, 1, 0, 0, 0, 252, 253, 3, 51, 25, 0, + 253, 254, 3, 1, 0, 0, 254, 255, 3, 97, 48, 0, 255, 256, 3, 107, 53, 0, + 256, 54, 1, 0, 0, 0, 257, 258, 3, 97, 48, 0, 258, 259, 3, 107, 53, 0, 259, + 56, 1, 0, 0, 0, 260, 261, 3, 85, 42, 0, 261, 262, 3, 109, 54, 0, 262, 263, + 3, 121, 60, 0, 263, 264, 3, 107, 53, 0, 264, 265, 3, 119, 59, 0, 265, 58, + 1, 0, 0, 0, 266, 267, 3, 117, 58, 0, 267, 268, 3, 121, 60, 0, 268, 269, + 3, 105, 52, 0, 269, 60, 1, 0, 0, 0, 270, 271, 3, 105, 52, 0, 271, 272, + 3, 97, 48, 0, 272, 273, 3, 107, 53, 0, 273, 62, 1, 0, 0, 0, 274, 275, 3, + 105, 52, 0, 275, 276, 3, 81, 40, 0, 276, 277, 3, 127, 63, 0, 277, 64, 1, + 0, 0, 0, 278, 279, 3, 81, 40, 0, 279, 280, 3, 123, 61, 0, 280, 281, 3, + 93, 46, 0, 281, 66, 1, 0, 0, 0, 282, 283, 3, 119, 59, 0, 283, 284, 3, 115, + 57, 0, 284, 285, 3, 121, 60, 0, 285, 286, 3, 89, 44, 0, 286, 68, 1, 0, + 0, 0, 287, 288, 3, 91, 45, 0, 288, 289, 3, 81, 40, 0, 289, 290, 3, 103, + 51, 0, 290, 291, 3, 117, 58, 0, 291, 292, 3, 89, 44, 0, 292, 70, 1, 0, + 0, 0, 293, 299, 5, 34, 0, 0, 294, 298, 8, 2, 0, 0, 295, 296, 5, 34, 0, + 0, 296, 298, 5, 34, 0, 0, 297, 294, 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, 298, + 301, 1, 0, 0, 0, 299, 297, 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 302, + 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 302, 329, 5, 34, 0, 0, 303, 309, 5, 96, + 0, 0, 304, 308, 8, 3, 0, 0, 305, 306, 5, 96, 0, 0, 306, 308, 5, 96, 0, + 0, 307, 304, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 311, 1, 0, 0, 0, 309, + 307, 1, 0, 0, 0, 309, 310, 1, 0, 0, 0, 310, 312, 1, 0, 0, 0, 311, 309, + 1, 0, 0, 0, 312, 329, 5, 96, 0, 0, 313, 317, 5, 91, 0, 0, 314, 316, 8, + 4, 0, 0, 315, 314, 1, 0, 0, 0, 316, 319, 1, 0, 0, 0, 317, 315, 1, 0, 0, + 0, 317, 318, 1, 0, 0, 0, 318, 320, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 320, + 329, 5, 93, 0, 0, 321, 325, 7, 5, 0, 0, 322, 324, 7, 6, 0, 0, 323, 322, + 1, 0, 0, 0, 324, 327, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 325, 326, 1, 0, + 0, 0, 326, 329, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 328, 293, 1, 0, 0, 0, + 328, 303, 1, 0, 0, 0, 328, 313, 1, 0, 0, 0, 328, 321, 1, 0, 0, 0, 329, + 72, 1, 0, 0, 0, 330, 332, 3, 79, 39, 0, 331, 330, 1, 0, 0, 0, 332, 333, + 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 342, 1, 0, + 0, 0, 335, 339, 5, 46, 0, 0, 336, 338, 3, 79, 39, 0, 337, 336, 1, 0, 0, + 0, 338, 341, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 339, 340, 1, 0, 0, 0, 340, + 343, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 342, 335, 1, 0, 0, 0, 342, 343, + 1, 0, 0, 0, 343, 353, 1, 0, 0, 0, 344, 346, 3, 89, 44, 0, 345, 347, 7, + 7, 0, 0, 346, 345, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347, 349, 1, 0, 0, + 0, 348, 350, 3, 79, 39, 0, 349, 348, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, + 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 344, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 373, 1, 0, 0, 0, 355, 357, 5, 46, 0, 0, 356, 358, 3, 79, 39, 0, 357, 356, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 370, 1, 0, 0, @@ -266,8 +266,8 @@ func sqllexerLexerInit() { 0, 0, 430, 122, 1, 0, 0, 0, 431, 432, 7, 31, 0, 0, 432, 124, 1, 0, 0, 0, 433, 434, 7, 32, 0, 0, 434, 126, 1, 0, 0, 0, 435, 436, 7, 33, 0, 0, 436, 128, 1, 0, 0, 0, 437, 438, 7, 34, 0, 0, 438, 130, 1, 0, 0, 0, 439, 440, - 7, 35, 0, 0, 440, 132, 1, 0, 0, 0, 23, 0, 140, 293, 295, 303, 305, 313, - 321, 324, 328, 333, 339, 342, 346, 351, 353, 359, 363, 368, 370, 372, 378, + 7, 35, 0, 0, 440, 132, 1, 0, 0, 0, 23, 0, 140, 154, 297, 299, 307, 309, + 317, 325, 328, 333, 339, 342, 346, 351, 353, 359, 363, 368, 370, 372, 378, 380, 2, 0, 1, 0, 6, 0, 0, } deserializer := antlr.NewATNDeserializer(nil) @@ -315,36 +315,36 @@ const ( SqlLexerL_BRACKET = 4 SqlLexerR_BRACKET = 5 SqlLexerEOQ = 6 - SqlLexerK_SELECT = 7 - SqlLexerK_WHERE = 8 - SqlLexerK_WINDOW_TUMBLING = 9 - SqlLexerK_GROUP_BY = 10 - SqlLexerK_AND = 11 - SqlLexerK_OR = 12 - SqlLexerK_IS = 13 - SqlLexerK_LIKE = 14 - SqlLexerK_NOT_LIKE = 15 - SqlLexerK_EQUAL = 16 - SqlLexerK_GREATER = 17 - SqlLexerK_LESS = 18 - SqlLexerK_LESS_EQUAL = 19 - SqlLexerK_GREATER_EQUAL = 20 - SqlLexerK_NOT_EQUAL = 21 - SqlLexerK_NULL = 22 - SqlLexerK_IS_NULL = 23 - SqlLexerK_IS_NOT_NULL = 24 - SqlLexerK_NOT = 25 - SqlLexerK_NOT_IN = 26 - SqlLexerK_IN = 27 - SqlLexerK_TRUE = 28 - SqlLexerK_FALSE = 29 - SqlLexerK_COUNT = 30 - SqlLexerK_SUM = 31 - SqlLexerK_MIN = 32 - SqlLexerK_MAX = 33 - SqlLexerK_AVG = 34 - SqlLexerIDENTIFIER = 35 - SqlLexerBOOLEAN_LITERAL = 36 + SqlLexerBOOLEAN_LITERAL = 7 + SqlLexerK_SELECT = 8 + SqlLexerK_WHERE = 9 + SqlLexerK_WINDOW_TUMBLING = 10 + SqlLexerK_GROUP_BY = 11 + SqlLexerK_AND = 12 + SqlLexerK_OR = 13 + SqlLexerK_IS = 14 + SqlLexerK_LIKE = 15 + SqlLexerK_NOT_LIKE = 16 + SqlLexerK_EQUAL = 17 + SqlLexerK_GREATER = 18 + SqlLexerK_LESS = 19 + SqlLexerK_LESS_EQUAL = 20 + SqlLexerK_GREATER_EQUAL = 21 + SqlLexerK_NOT_EQUAL = 22 + SqlLexerK_NULL = 23 + SqlLexerK_IS_NULL = 24 + SqlLexerK_IS_NOT_NULL = 25 + SqlLexerK_NOT = 26 + SqlLexerK_NOT_IN = 27 + SqlLexerK_IN = 28 + SqlLexerK_COUNT = 29 + SqlLexerK_SUM = 30 + SqlLexerK_MIN = 31 + SqlLexerK_MAX = 32 + SqlLexerK_AVG = 33 + SqlLexerK_TRUE = 34 + SqlLexerK_FALSE = 35 + SqlLexerIDENTIFIER = 36 SqlLexerNUMERIC_LITERAL = 37 SqlLexerSTRING_LITERAL = 38 SqlLexerSTAR = 39 diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index ee885663f010..c474ab1e36e8 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -34,75 +34,76 @@ func sqlParserInit() { staticData := &sqlParserStaticData staticData.literalNames = []string{ "", "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", - "", "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", + "", "", "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "'*'", } staticData.symbolicNames = []string{ - "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", - "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", - "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", + "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "BOOLEAN_LITERAL", + "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", + "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", - "K_NOT", "K_NOT_IN", "K_IN", "K_TRUE", "K_FALSE", "K_COUNT", "K_SUM", - "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", "BOOLEAN_LITERAL", "NUMERIC_LITERAL", - "STRING_LITERAL", "STAR", + "K_NOT", "K_NOT_IN", "K_IN", "K_COUNT", "K_SUM", "K_MIN", "K_MAX", "K_AVG", + "K_TRUE", "K_FALSE", "IDENTIFIER", "NUMERIC_LITERAL", "STRING_LITERAL", + "STAR", } staticData.ruleNames = []string{ - "sqlQuery", "selectQuery", "resultColumns", "aggregationColumns", "column", - "whereStatement", "windowTumbling", "expr", "compoundExpr", "comparisonOperator", - "literalValue", "groupBy", "avg", + "sqlQuery", "selectQuery", "windowTumbling", "resultColumns", "aggregationColumns", + "column", "whereStatement", "expr", "simpleExpr", "compoundExpr", "comparisonOperator", + "literalValue", "groupBy", } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 39, 126, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 39, 125, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 33, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 54, - 8, 1, 1, 2, 1, 2, 1, 2, 5, 2, 59, 8, 2, 10, 2, 12, 2, 62, 9, 2, 1, 2, 3, - 2, 65, 8, 2, 1, 3, 1, 3, 1, 3, 3, 3, 70, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 3, 3, 76, 8, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, - 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 97, 8, 7, - 1, 7, 1, 7, 1, 7, 5, 7, 102, 8, 7, 10, 7, 12, 7, 105, 9, 7, 1, 8, 1, 8, - 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, - 1, 12, 1, 12, 3, 12, 122, 8, 12, 1, 12, 1, 12, 1, 12, 0, 1, 14, 13, 0, - 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 0, 4, 1, 0, 30, 34, 1, 0, 11, - 12, 2, 0, 13, 21, 26, 27, 1, 0, 36, 38, 124, 0, 26, 1, 0, 0, 0, 2, 53, - 1, 0, 0, 0, 4, 64, 1, 0, 0, 0, 6, 69, 1, 0, 0, 0, 8, 79, 1, 0, 0, 0, 10, - 81, 1, 0, 0, 0, 12, 84, 1, 0, 0, 0, 14, 96, 1, 0, 0, 0, 16, 106, 1, 0, - 0, 0, 18, 110, 1, 0, 0, 0, 20, 112, 1, 0, 0, 0, 22, 114, 1, 0, 0, 0, 24, - 117, 1, 0, 0, 0, 26, 27, 3, 2, 1, 0, 27, 28, 5, 0, 0, 1, 28, 1, 1, 0, 0, - 0, 29, 30, 5, 7, 0, 0, 30, 32, 3, 4, 2, 0, 31, 33, 3, 10, 5, 0, 32, 31, + 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 62, 8, 3, 10, 3, 12, 3, + 65, 9, 3, 1, 3, 3, 3, 68, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 73, 8, 4, 1, 4, + 1, 4, 1, 4, 1, 4, 3, 4, 79, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, + 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 92, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 97, + 8, 7, 1, 7, 3, 7, 100, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 105, 8, 7, 10, 7, + 12, 7, 108, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, + 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 0, 1, 14, 13, 0, 2, 4, + 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 0, 4, 1, 0, 29, 33, 1, 0, 12, 13, + 2, 0, 14, 22, 27, 28, 2, 0, 7, 7, 37, 38, 125, 0, 26, 1, 0, 0, 0, 2, 53, + 1, 0, 0, 0, 4, 55, 1, 0, 0, 0, 6, 67, 1, 0, 0, 0, 8, 72, 1, 0, 0, 0, 10, + 82, 1, 0, 0, 0, 12, 84, 1, 0, 0, 0, 14, 99, 1, 0, 0, 0, 16, 109, 1, 0, + 0, 0, 18, 113, 1, 0, 0, 0, 20, 117, 1, 0, 0, 0, 22, 119, 1, 0, 0, 0, 24, + 121, 1, 0, 0, 0, 26, 27, 3, 2, 1, 0, 27, 28, 5, 0, 0, 1, 28, 1, 1, 0, 0, + 0, 29, 30, 5, 8, 0, 0, 30, 32, 3, 6, 3, 0, 31, 33, 3, 12, 6, 0, 32, 31, 1, 0, 0, 0, 32, 33, 1, 0, 0, 0, 33, 34, 1, 0, 0, 0, 34, 35, 5, 6, 0, 0, - 35, 54, 1, 0, 0, 0, 36, 37, 5, 7, 0, 0, 37, 38, 3, 6, 3, 0, 38, 40, 3, - 12, 6, 0, 39, 41, 3, 10, 5, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, - 41, 42, 1, 0, 0, 0, 42, 43, 5, 6, 0, 0, 43, 54, 1, 0, 0, 0, 44, 45, 5, - 7, 0, 0, 45, 46, 3, 6, 3, 0, 46, 48, 3, 12, 6, 0, 47, 49, 3, 10, 5, 0, - 48, 47, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 3, - 22, 11, 0, 51, 52, 5, 6, 0, 0, 52, 54, 1, 0, 0, 0, 53, 29, 1, 0, 0, 0, - 53, 36, 1, 0, 0, 0, 53, 44, 1, 0, 0, 0, 54, 3, 1, 0, 0, 0, 55, 60, 3, 8, - 4, 0, 56, 57, 5, 3, 0, 0, 57, 59, 3, 8, 4, 0, 58, 56, 1, 0, 0, 0, 59, 62, - 1, 0, 0, 0, 60, 58, 1, 0, 0, 0, 60, 61, 1, 0, 0, 0, 61, 65, 1, 0, 0, 0, - 62, 60, 1, 0, 0, 0, 63, 65, 5, 39, 0, 0, 64, 55, 1, 0, 0, 0, 64, 63, 1, - 0, 0, 0, 65, 5, 1, 0, 0, 0, 66, 67, 3, 8, 4, 0, 67, 68, 5, 3, 0, 0, 68, - 70, 1, 0, 0, 0, 69, 66, 1, 0, 0, 0, 69, 70, 1, 0, 0, 0, 70, 71, 1, 0, 0, - 0, 71, 72, 7, 0, 0, 0, 72, 75, 5, 4, 0, 0, 73, 76, 3, 8, 4, 0, 74, 76, - 5, 39, 0, 0, 75, 73, 1, 0, 0, 0, 75, 74, 1, 0, 0, 0, 76, 77, 1, 0, 0, 0, - 77, 78, 5, 5, 0, 0, 78, 7, 1, 0, 0, 0, 79, 80, 5, 35, 0, 0, 80, 9, 1, 0, - 0, 0, 81, 82, 5, 8, 0, 0, 82, 83, 3, 14, 7, 0, 83, 11, 1, 0, 0, 0, 84, - 85, 5, 9, 0, 0, 85, 86, 5, 37, 0, 0, 86, 13, 1, 0, 0, 0, 87, 88, 6, 7, - -1, 0, 88, 89, 5, 35, 0, 0, 89, 90, 3, 18, 9, 0, 90, 91, 3, 20, 10, 0, - 91, 97, 1, 0, 0, 0, 92, 93, 3, 16, 8, 0, 93, 94, 7, 1, 0, 0, 94, 95, 3, - 16, 8, 0, 95, 97, 1, 0, 0, 0, 96, 87, 1, 0, 0, 0, 96, 92, 1, 0, 0, 0, 97, - 103, 1, 0, 0, 0, 98, 99, 10, 1, 0, 0, 99, 100, 7, 1, 0, 0, 100, 102, 3, - 14, 7, 2, 101, 98, 1, 0, 0, 0, 102, 105, 1, 0, 0, 0, 103, 101, 1, 0, 0, - 0, 103, 104, 1, 0, 0, 0, 104, 15, 1, 0, 0, 0, 105, 103, 1, 0, 0, 0, 106, - 107, 5, 4, 0, 0, 107, 108, 3, 14, 7, 0, 108, 109, 5, 5, 0, 0, 109, 17, - 1, 0, 0, 0, 110, 111, 7, 2, 0, 0, 111, 19, 1, 0, 0, 0, 112, 113, 7, 3, - 0, 0, 113, 21, 1, 0, 0, 0, 114, 115, 5, 10, 0, 0, 115, 116, 3, 8, 4, 0, - 116, 23, 1, 0, 0, 0, 117, 118, 7, 0, 0, 0, 118, 121, 5, 4, 0, 0, 119, 122, - 3, 8, 4, 0, 120, 122, 5, 39, 0, 0, 121, 119, 1, 0, 0, 0, 121, 120, 1, 0, - 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 5, 5, 0, 0, 124, 25, 1, 0, 0, 0, - 11, 32, 40, 48, 53, 60, 64, 69, 75, 96, 103, 121, + 35, 54, 1, 0, 0, 0, 36, 37, 5, 8, 0, 0, 37, 38, 3, 8, 4, 0, 38, 40, 3, + 4, 2, 0, 39, 41, 3, 12, 6, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, + 42, 1, 0, 0, 0, 42, 43, 5, 6, 0, 0, 43, 54, 1, 0, 0, 0, 44, 45, 5, 8, 0, + 0, 45, 46, 3, 8, 4, 0, 46, 48, 3, 4, 2, 0, 47, 49, 3, 12, 6, 0, 48, 47, + 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 3, 24, 12, + 0, 51, 52, 5, 6, 0, 0, 52, 54, 1, 0, 0, 0, 53, 29, 1, 0, 0, 0, 53, 36, + 1, 0, 0, 0, 53, 44, 1, 0, 0, 0, 54, 3, 1, 0, 0, 0, 55, 56, 5, 10, 0, 0, + 56, 57, 5, 37, 0, 0, 57, 5, 1, 0, 0, 0, 58, 63, 3, 10, 5, 0, 59, 60, 5, + 3, 0, 0, 60, 62, 3, 10, 5, 0, 61, 59, 1, 0, 0, 0, 62, 65, 1, 0, 0, 0, 63, + 61, 1, 0, 0, 0, 63, 64, 1, 0, 0, 0, 64, 68, 1, 0, 0, 0, 65, 63, 1, 0, 0, + 0, 66, 68, 5, 39, 0, 0, 67, 58, 1, 0, 0, 0, 67, 66, 1, 0, 0, 0, 68, 7, + 1, 0, 0, 0, 69, 70, 3, 10, 5, 0, 70, 71, 5, 3, 0, 0, 71, 73, 1, 0, 0, 0, + 72, 69, 1, 0, 0, 0, 72, 73, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 75, 7, + 0, 0, 0, 75, 78, 5, 4, 0, 0, 76, 79, 3, 10, 5, 0, 77, 79, 5, 39, 0, 0, + 78, 76, 1, 0, 0, 0, 78, 77, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 81, 5, + 5, 0, 0, 81, 9, 1, 0, 0, 0, 82, 83, 5, 36, 0, 0, 83, 11, 1, 0, 0, 0, 84, + 85, 5, 9, 0, 0, 85, 86, 3, 14, 7, 0, 86, 13, 1, 0, 0, 0, 87, 88, 6, 7, + -1, 0, 88, 100, 3, 16, 8, 0, 89, 92, 3, 18, 9, 0, 90, 92, 3, 16, 8, 0, + 91, 89, 1, 0, 0, 0, 91, 90, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 96, 7, + 1, 0, 0, 94, 97, 3, 18, 9, 0, 95, 97, 3, 16, 8, 0, 96, 94, 1, 0, 0, 0, + 96, 95, 1, 0, 0, 0, 97, 100, 1, 0, 0, 0, 98, 100, 3, 18, 9, 0, 99, 87, + 1, 0, 0, 0, 99, 91, 1, 0, 0, 0, 99, 98, 1, 0, 0, 0, 100, 106, 1, 0, 0, + 0, 101, 102, 10, 2, 0, 0, 102, 103, 7, 1, 0, 0, 103, 105, 3, 14, 7, 3, + 104, 101, 1, 0, 0, 0, 105, 108, 1, 0, 0, 0, 106, 104, 1, 0, 0, 0, 106, + 107, 1, 0, 0, 0, 107, 15, 1, 0, 0, 0, 108, 106, 1, 0, 0, 0, 109, 110, 5, + 36, 0, 0, 110, 111, 3, 20, 10, 0, 111, 112, 3, 22, 11, 0, 112, 17, 1, 0, + 0, 0, 113, 114, 5, 4, 0, 0, 114, 115, 3, 14, 7, 0, 115, 116, 5, 5, 0, 0, + 116, 19, 1, 0, 0, 0, 117, 118, 7, 2, 0, 0, 118, 21, 1, 0, 0, 0, 119, 120, + 7, 3, 0, 0, 120, 23, 1, 0, 0, 0, 121, 122, 5, 11, 0, 0, 122, 123, 3, 10, + 5, 0, 123, 25, 1, 0, 0, 0, 12, 32, 40, 48, 53, 63, 67, 72, 78, 91, 96, + 99, 106, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -147,36 +148,36 @@ const ( SqlParserL_BRACKET = 4 SqlParserR_BRACKET = 5 SqlParserEOQ = 6 - SqlParserK_SELECT = 7 - SqlParserK_WHERE = 8 - SqlParserK_WINDOW_TUMBLING = 9 - SqlParserK_GROUP_BY = 10 - SqlParserK_AND = 11 - SqlParserK_OR = 12 - SqlParserK_IS = 13 - SqlParserK_LIKE = 14 - SqlParserK_NOT_LIKE = 15 - SqlParserK_EQUAL = 16 - SqlParserK_GREATER = 17 - SqlParserK_LESS = 18 - SqlParserK_LESS_EQUAL = 19 - SqlParserK_GREATER_EQUAL = 20 - SqlParserK_NOT_EQUAL = 21 - SqlParserK_NULL = 22 - SqlParserK_IS_NULL = 23 - SqlParserK_IS_NOT_NULL = 24 - SqlParserK_NOT = 25 - SqlParserK_NOT_IN = 26 - SqlParserK_IN = 27 - SqlParserK_TRUE = 28 - SqlParserK_FALSE = 29 - SqlParserK_COUNT = 30 - SqlParserK_SUM = 31 - SqlParserK_MIN = 32 - SqlParserK_MAX = 33 - SqlParserK_AVG = 34 - SqlParserIDENTIFIER = 35 - SqlParserBOOLEAN_LITERAL = 36 + SqlParserBOOLEAN_LITERAL = 7 + SqlParserK_SELECT = 8 + SqlParserK_WHERE = 9 + SqlParserK_WINDOW_TUMBLING = 10 + SqlParserK_GROUP_BY = 11 + SqlParserK_AND = 12 + SqlParserK_OR = 13 + SqlParserK_IS = 14 + SqlParserK_LIKE = 15 + SqlParserK_NOT_LIKE = 16 + SqlParserK_EQUAL = 17 + SqlParserK_GREATER = 18 + SqlParserK_LESS = 19 + SqlParserK_LESS_EQUAL = 20 + SqlParserK_GREATER_EQUAL = 21 + SqlParserK_NOT_EQUAL = 22 + SqlParserK_NULL = 23 + SqlParserK_IS_NULL = 24 + SqlParserK_IS_NOT_NULL = 25 + SqlParserK_NOT = 26 + SqlParserK_NOT_IN = 27 + SqlParserK_IN = 28 + SqlParserK_COUNT = 29 + SqlParserK_SUM = 30 + SqlParserK_MIN = 31 + SqlParserK_MAX = 32 + SqlParserK_AVG = 33 + SqlParserK_TRUE = 34 + SqlParserK_FALSE = 35 + SqlParserIDENTIFIER = 36 SqlParserNUMERIC_LITERAL = 37 SqlParserSTRING_LITERAL = 38 SqlParserSTAR = 39 @@ -186,17 +187,17 @@ const ( const ( SqlParserRULE_sqlQuery = 0 SqlParserRULE_selectQuery = 1 - SqlParserRULE_resultColumns = 2 - SqlParserRULE_aggregationColumns = 3 - SqlParserRULE_column = 4 - SqlParserRULE_whereStatement = 5 - SqlParserRULE_windowTumbling = 6 + SqlParserRULE_windowTumbling = 2 + SqlParserRULE_resultColumns = 3 + SqlParserRULE_aggregationColumns = 4 + SqlParserRULE_column = 5 + SqlParserRULE_whereStatement = 6 SqlParserRULE_expr = 7 - SqlParserRULE_compoundExpr = 8 - SqlParserRULE_comparisonOperator = 9 - SqlParserRULE_literalValue = 10 - SqlParserRULE_groupBy = 11 - SqlParserRULE_avg = 12 + SqlParserRULE_simpleExpr = 8 + SqlParserRULE_compoundExpr = 9 + SqlParserRULE_comparisonOperator = 10 + SqlParserRULE_literalValue = 11 + SqlParserRULE_groupBy = 12 ) // ISqlQueryContext is an interface to support dynamic dispatch. @@ -738,6 +739,106 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { return localctx } +// IWindowTumblingContext is an interface to support dynamic dispatch. +type IWindowTumblingContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsWindowTumblingContext differentiates from other interfaces. + IsWindowTumblingContext() +} + +type WindowTumblingContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyWindowTumblingContext() *WindowTumblingContext { + var p = new(WindowTumblingContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_windowTumbling + return p +} + +func (*WindowTumblingContext) IsWindowTumblingContext() {} + +func NewWindowTumblingContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *WindowTumblingContext { + var p = new(WindowTumblingContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_windowTumbling + + return p +} + +func (s *WindowTumblingContext) GetParser() antlr.Parser { return s.parser } + +func (s *WindowTumblingContext) K_WINDOW_TUMBLING() antlr.TerminalNode { + return s.GetToken(SqlParserK_WINDOW_TUMBLING, 0) +} + +func (s *WindowTumblingContext) NUMERIC_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserNUMERIC_LITERAL, 0) +} + +func (s *WindowTumblingContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *WindowTumblingContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *WindowTumblingContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitWindowTumbling(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *SqlParser) WindowTumbling() (localctx IWindowTumblingContext) { + this := p + _ = this + + localctx = NewWindowTumblingContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 4, SqlParserRULE_windowTumbling) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(55) + p.Match(SqlParserK_WINDOW_TUMBLING) + } + { + p.SetState(56) + p.Match(SqlParserNUMERIC_LITERAL) + } + + return localctx +} + // IResultColumnsContext is an interface to support dynamic dispatch. type IResultColumnsContext interface { antlr.ParserRuleContext @@ -902,7 +1003,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { _ = this localctx = NewResultColumnsContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 4, SqlParserRULE_resultColumns) + p.EnterRule(localctx, 6, SqlParserRULE_resultColumns) var _la int defer func() { @@ -921,7 +1022,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { } }() - p.SetState(64) + p.SetState(67) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { @@ -929,24 +1030,24 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectColumnsContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(55) + p.SetState(58) p.Column() } - p.SetState(60) + p.SetState(63) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for _la == SqlParserCOMMA { { - p.SetState(56) + p.SetState(59) p.Match(SqlParserCOMMA) } { - p.SetState(57) + p.SetState(60) p.Column() } - p.SetState(62) + p.SetState(65) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } @@ -955,7 +1056,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectStarContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(63) + p.SetState(66) p.Match(SqlParserSTAR) } @@ -1126,7 +1227,7 @@ func (p *SqlParser) AggregationColumns() (localctx IAggregationColumnsContext) { _ = this localctx = NewAggregationColumnsContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 6, SqlParserRULE_aggregationColumns) + p.EnterRule(localctx, 8, SqlParserRULE_aggregationColumns) var _la int defer func() { @@ -1147,26 +1248,26 @@ func (p *SqlParser) AggregationColumns() (localctx IAggregationColumnsContext) { localctx = NewSelectAVGContext(p, localctx) p.EnterOuterAlt(localctx, 1) - p.SetState(69) + p.SetState(72) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserIDENTIFIER { { - p.SetState(66) + p.SetState(69) p.Column() } { - p.SetState(67) + p.SetState(70) p.Match(SqlParserCOMMA) } } { - p.SetState(71) + p.SetState(74) _la = p.GetTokenStream().LA(1) - if !(((_la-30)&-(0x1f+1)) == 0 && ((1< Date: Mon, 15 Aug 2022 14:37:34 +0300 Subject: [PATCH 17/31] function support added --- processor/stream_processor/Sql.g4 | 7 +- processor/stream_processor/parser/Sql.interp | 6 +- processor/stream_processor/parser/Sql.tokens | 12 +- .../stream_processor/parser/SqlLexer.interp | 8 +- .../stream_processor/parser/SqlLexer.tokens | 12 +- .../parser/sql_base_visitor.go | 6 +- .../stream_processor/parser/sql_lexer.go | 407 +++++++++--------- .../stream_processor/parser/sql_parser.go | 300 +++++++++---- .../parser/sql_stream_function_test.go | 50 +++ .../parser/sql_stream_tumbling_test.go | 319 ++++++++++++++ .../parser/sql_stream_visitor.go | 27 +- .../stream_processor/parser/sql_visitor.go | 7 +- .../stream_processor/parser/visitor_utils.go | 56 ++- 13 files changed, 896 insertions(+), 321 deletions(-) create mode 100644 processor/stream_processor/parser/sql_stream_function_test.go create mode 100644 processor/stream_processor/parser/sql_stream_tumbling_test.go diff --git a/processor/stream_processor/Sql.g4 b/processor/stream_processor/Sql.g4 index 905dfb663f7b..0009067e82e1 100644 --- a/processor/stream_processor/Sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -28,9 +28,11 @@ aggregationColumns column - : IDENTIFIER + : IDENTIFIER #identifierCol + | (K_UPPER | K_LOWER ) L_BRACKET IDENTIFIER R_BRACKET #functionCol ; + whereStatement : K_WHERE expr #whereStmt ; @@ -113,6 +115,9 @@ K_MAX : M A X; K_AVG : A V G; K_TRUE : T R U E; K_FALSE : F A L S E; +// function +K_UPPER : U P P E R; +K_LOWER : L O W E R; IDENTIFIER : '"' (~'"' | '""')* '"' diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp index 55a9c2f5265e..c5e65823573c 100644 --- a/processor/stream_processor/parser/Sql.interp +++ b/processor/stream_processor/parser/Sql.interp @@ -38,6 +38,8 @@ null null null null +null +null '*' token symbolic names: @@ -77,6 +79,8 @@ K_MAX K_AVG K_TRUE K_FALSE +K_UPPER +K_LOWER IDENTIFIER NUMERIC_LITERAL STRING_LITERAL @@ -99,4 +103,4 @@ groupBy atn: -[4, 1, 39, 125, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 33, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 54, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 62, 8, 3, 10, 3, 12, 3, 65, 9, 3, 1, 3, 3, 3, 68, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 73, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 79, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 92, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 97, 8, 7, 1, 7, 3, 7, 100, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 105, 8, 7, 10, 7, 12, 7, 108, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 0, 1, 14, 13, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 0, 4, 1, 0, 29, 33, 1, 0, 12, 13, 2, 0, 14, 22, 27, 28, 2, 0, 7, 7, 37, 38, 125, 0, 26, 1, 0, 0, 0, 2, 53, 1, 0, 0, 0, 4, 55, 1, 0, 0, 0, 6, 67, 1, 0, 0, 0, 8, 72, 1, 0, 0, 0, 10, 82, 1, 0, 0, 0, 12, 84, 1, 0, 0, 0, 14, 99, 1, 0, 0, 0, 16, 109, 1, 0, 0, 0, 18, 113, 1, 0, 0, 0, 20, 117, 1, 0, 0, 0, 22, 119, 1, 0, 0, 0, 24, 121, 1, 0, 0, 0, 26, 27, 3, 2, 1, 0, 27, 28, 5, 0, 0, 1, 28, 1, 1, 0, 0, 0, 29, 30, 5, 8, 0, 0, 30, 32, 3, 6, 3, 0, 31, 33, 3, 12, 6, 0, 32, 31, 1, 0, 0, 0, 32, 33, 1, 0, 0, 0, 33, 34, 1, 0, 0, 0, 34, 35, 5, 6, 0, 0, 35, 54, 1, 0, 0, 0, 36, 37, 5, 8, 0, 0, 37, 38, 3, 8, 4, 0, 38, 40, 3, 4, 2, 0, 39, 41, 3, 12, 6, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 5, 6, 0, 0, 43, 54, 1, 0, 0, 0, 44, 45, 5, 8, 0, 0, 45, 46, 3, 8, 4, 0, 46, 48, 3, 4, 2, 0, 47, 49, 3, 12, 6, 0, 48, 47, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 3, 24, 12, 0, 51, 52, 5, 6, 0, 0, 52, 54, 1, 0, 0, 0, 53, 29, 1, 0, 0, 0, 53, 36, 1, 0, 0, 0, 53, 44, 1, 0, 0, 0, 54, 3, 1, 0, 0, 0, 55, 56, 5, 10, 0, 0, 56, 57, 5, 37, 0, 0, 57, 5, 1, 0, 0, 0, 58, 63, 3, 10, 5, 0, 59, 60, 5, 3, 0, 0, 60, 62, 3, 10, 5, 0, 61, 59, 1, 0, 0, 0, 62, 65, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 63, 64, 1, 0, 0, 0, 64, 68, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 66, 68, 5, 39, 0, 0, 67, 58, 1, 0, 0, 0, 67, 66, 1, 0, 0, 0, 68, 7, 1, 0, 0, 0, 69, 70, 3, 10, 5, 0, 70, 71, 5, 3, 0, 0, 71, 73, 1, 0, 0, 0, 72, 69, 1, 0, 0, 0, 72, 73, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 75, 7, 0, 0, 0, 75, 78, 5, 4, 0, 0, 76, 79, 3, 10, 5, 0, 77, 79, 5, 39, 0, 0, 78, 76, 1, 0, 0, 0, 78, 77, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 81, 5, 5, 0, 0, 81, 9, 1, 0, 0, 0, 82, 83, 5, 36, 0, 0, 83, 11, 1, 0, 0, 0, 84, 85, 5, 9, 0, 0, 85, 86, 3, 14, 7, 0, 86, 13, 1, 0, 0, 0, 87, 88, 6, 7, -1, 0, 88, 100, 3, 16, 8, 0, 89, 92, 3, 18, 9, 0, 90, 92, 3, 16, 8, 0, 91, 89, 1, 0, 0, 0, 91, 90, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 96, 7, 1, 0, 0, 94, 97, 3, 18, 9, 0, 95, 97, 3, 16, 8, 0, 96, 94, 1, 0, 0, 0, 96, 95, 1, 0, 0, 0, 97, 100, 1, 0, 0, 0, 98, 100, 3, 18, 9, 0, 99, 87, 1, 0, 0, 0, 99, 91, 1, 0, 0, 0, 99, 98, 1, 0, 0, 0, 100, 106, 1, 0, 0, 0, 101, 102, 10, 2, 0, 0, 102, 103, 7, 1, 0, 0, 103, 105, 3, 14, 7, 3, 104, 101, 1, 0, 0, 0, 105, 108, 1, 0, 0, 0, 106, 104, 1, 0, 0, 0, 106, 107, 1, 0, 0, 0, 107, 15, 1, 0, 0, 0, 108, 106, 1, 0, 0, 0, 109, 110, 5, 36, 0, 0, 110, 111, 3, 20, 10, 0, 111, 112, 3, 22, 11, 0, 112, 17, 1, 0, 0, 0, 113, 114, 5, 4, 0, 0, 114, 115, 3, 14, 7, 0, 115, 116, 5, 5, 0, 0, 116, 19, 1, 0, 0, 0, 117, 118, 7, 2, 0, 0, 118, 21, 1, 0, 0, 0, 119, 120, 7, 3, 0, 0, 120, 23, 1, 0, 0, 0, 121, 122, 5, 11, 0, 0, 122, 123, 3, 10, 5, 0, 123, 25, 1, 0, 0, 0, 12, 32, 40, 48, 53, 63, 67, 72, 78, 91, 96, 99, 106] \ No newline at end of file +[4, 1, 41, 130, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 33, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 54, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 62, 8, 3, 10, 3, 12, 3, 65, 9, 3, 1, 3, 3, 3, 68, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 73, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 79, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 88, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 97, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 102, 8, 7, 1, 7, 3, 7, 105, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 110, 8, 7, 10, 7, 12, 7, 113, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 0, 1, 14, 13, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 0, 5, 1, 0, 29, 33, 1, 0, 36, 37, 1, 0, 12, 13, 2, 0, 14, 22, 27, 28, 2, 0, 7, 7, 39, 40, 131, 0, 26, 1, 0, 0, 0, 2, 53, 1, 0, 0, 0, 4, 55, 1, 0, 0, 0, 6, 67, 1, 0, 0, 0, 8, 72, 1, 0, 0, 0, 10, 87, 1, 0, 0, 0, 12, 89, 1, 0, 0, 0, 14, 104, 1, 0, 0, 0, 16, 114, 1, 0, 0, 0, 18, 118, 1, 0, 0, 0, 20, 122, 1, 0, 0, 0, 22, 124, 1, 0, 0, 0, 24, 126, 1, 0, 0, 0, 26, 27, 3, 2, 1, 0, 27, 28, 5, 0, 0, 1, 28, 1, 1, 0, 0, 0, 29, 30, 5, 8, 0, 0, 30, 32, 3, 6, 3, 0, 31, 33, 3, 12, 6, 0, 32, 31, 1, 0, 0, 0, 32, 33, 1, 0, 0, 0, 33, 34, 1, 0, 0, 0, 34, 35, 5, 6, 0, 0, 35, 54, 1, 0, 0, 0, 36, 37, 5, 8, 0, 0, 37, 38, 3, 8, 4, 0, 38, 40, 3, 4, 2, 0, 39, 41, 3, 12, 6, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 5, 6, 0, 0, 43, 54, 1, 0, 0, 0, 44, 45, 5, 8, 0, 0, 45, 46, 3, 8, 4, 0, 46, 48, 3, 4, 2, 0, 47, 49, 3, 12, 6, 0, 48, 47, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 3, 24, 12, 0, 51, 52, 5, 6, 0, 0, 52, 54, 1, 0, 0, 0, 53, 29, 1, 0, 0, 0, 53, 36, 1, 0, 0, 0, 53, 44, 1, 0, 0, 0, 54, 3, 1, 0, 0, 0, 55, 56, 5, 10, 0, 0, 56, 57, 5, 39, 0, 0, 57, 5, 1, 0, 0, 0, 58, 63, 3, 10, 5, 0, 59, 60, 5, 3, 0, 0, 60, 62, 3, 10, 5, 0, 61, 59, 1, 0, 0, 0, 62, 65, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 63, 64, 1, 0, 0, 0, 64, 68, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 66, 68, 5, 41, 0, 0, 67, 58, 1, 0, 0, 0, 67, 66, 1, 0, 0, 0, 68, 7, 1, 0, 0, 0, 69, 70, 3, 10, 5, 0, 70, 71, 5, 3, 0, 0, 71, 73, 1, 0, 0, 0, 72, 69, 1, 0, 0, 0, 72, 73, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 75, 7, 0, 0, 0, 75, 78, 5, 4, 0, 0, 76, 79, 3, 10, 5, 0, 77, 79, 5, 41, 0, 0, 78, 76, 1, 0, 0, 0, 78, 77, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 81, 5, 5, 0, 0, 81, 9, 1, 0, 0, 0, 82, 88, 5, 38, 0, 0, 83, 84, 7, 1, 0, 0, 84, 85, 5, 4, 0, 0, 85, 86, 5, 38, 0, 0, 86, 88, 5, 5, 0, 0, 87, 82, 1, 0, 0, 0, 87, 83, 1, 0, 0, 0, 88, 11, 1, 0, 0, 0, 89, 90, 5, 9, 0, 0, 90, 91, 3, 14, 7, 0, 91, 13, 1, 0, 0, 0, 92, 93, 6, 7, -1, 0, 93, 105, 3, 16, 8, 0, 94, 97, 3, 18, 9, 0, 95, 97, 3, 16, 8, 0, 96, 94, 1, 0, 0, 0, 96, 95, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 101, 7, 2, 0, 0, 99, 102, 3, 18, 9, 0, 100, 102, 3, 16, 8, 0, 101, 99, 1, 0, 0, 0, 101, 100, 1, 0, 0, 0, 102, 105, 1, 0, 0, 0, 103, 105, 3, 18, 9, 0, 104, 92, 1, 0, 0, 0, 104, 96, 1, 0, 0, 0, 104, 103, 1, 0, 0, 0, 105, 111, 1, 0, 0, 0, 106, 107, 10, 2, 0, 0, 107, 108, 7, 2, 0, 0, 108, 110, 3, 14, 7, 3, 109, 106, 1, 0, 0, 0, 110, 113, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 15, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 114, 115, 5, 38, 0, 0, 115, 116, 3, 20, 10, 0, 116, 117, 3, 22, 11, 0, 117, 17, 1, 0, 0, 0, 118, 119, 5, 4, 0, 0, 119, 120, 3, 14, 7, 0, 120, 121, 5, 5, 0, 0, 121, 19, 1, 0, 0, 0, 122, 123, 7, 3, 0, 0, 123, 21, 1, 0, 0, 0, 124, 125, 7, 4, 0, 0, 125, 23, 1, 0, 0, 0, 126, 127, 5, 11, 0, 0, 127, 128, 3, 10, 5, 0, 128, 25, 1, 0, 0, 0, 13, 32, 40, 48, 53, 63, 67, 72, 78, 87, 96, 101, 104, 111] \ No newline at end of file diff --git a/processor/stream_processor/parser/Sql.tokens b/processor/stream_processor/parser/Sql.tokens index 27afef39448c..5d2f8ec0dc76 100644 --- a/processor/stream_processor/parser/Sql.tokens +++ b/processor/stream_processor/parser/Sql.tokens @@ -33,10 +33,12 @@ K_MAX=32 K_AVG=33 K_TRUE=34 K_FALSE=35 -IDENTIFIER=36 -NUMERIC_LITERAL=37 -STRING_LITERAL=38 -STAR=39 +K_UPPER=36 +K_LOWER=37 +IDENTIFIER=38 +NUMERIC_LITERAL=39 +STRING_LITERAL=40 +STAR=41 ','=3 '('=4 ')'=5 @@ -44,4 +46,4 @@ STAR=39 '='=17 '>'=18 '<'=19 -'*'=39 +'*'=41 diff --git a/processor/stream_processor/parser/SqlLexer.interp b/processor/stream_processor/parser/SqlLexer.interp index e2d97887a7c6..831aeb221146 100644 --- a/processor/stream_processor/parser/SqlLexer.interp +++ b/processor/stream_processor/parser/SqlLexer.interp @@ -38,6 +38,8 @@ null null null null +null +null '*' token symbolic names: @@ -77,6 +79,8 @@ K_MAX K_AVG K_TRUE K_FALSE +K_UPPER +K_LOWER IDENTIFIER NUMERIC_LITERAL STRING_LITERAL @@ -118,6 +122,8 @@ K_MAX K_AVG K_TRUE K_FALSE +K_UPPER +K_LOWER IDENTIFIER NUMERIC_LITERAL STRING_LITERAL @@ -158,4 +164,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 39, 441, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 139, 8, 1, 11, 1, 12, 1, 140, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 3, 6, 155, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 298, 8, 35, 10, 35, 12, 35, 301, 9, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 308, 8, 35, 10, 35, 12, 35, 311, 9, 35, 1, 35, 1, 35, 1, 35, 5, 35, 316, 8, 35, 10, 35, 12, 35, 319, 9, 35, 1, 35, 1, 35, 1, 35, 5, 35, 324, 8, 35, 10, 35, 12, 35, 327, 9, 35, 3, 35, 329, 8, 35, 1, 36, 4, 36, 332, 8, 36, 11, 36, 12, 36, 333, 1, 36, 1, 36, 5, 36, 338, 8, 36, 10, 36, 12, 36, 341, 9, 36, 3, 36, 343, 8, 36, 1, 36, 1, 36, 3, 36, 347, 8, 36, 1, 36, 4, 36, 350, 8, 36, 11, 36, 12, 36, 351, 3, 36, 354, 8, 36, 1, 36, 1, 36, 4, 36, 358, 8, 36, 11, 36, 12, 36, 359, 1, 36, 1, 36, 3, 36, 364, 8, 36, 1, 36, 4, 36, 367, 8, 36, 11, 36, 12, 36, 368, 3, 36, 371, 8, 36, 3, 36, 373, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 379, 8, 37, 10, 37, 12, 37, 382, 9, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 0, 0, 66, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 437, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 1, 133, 1, 0, 0, 0, 3, 138, 1, 0, 0, 0, 5, 144, 1, 0, 0, 0, 7, 146, 1, 0, 0, 0, 9, 148, 1, 0, 0, 0, 11, 150, 1, 0, 0, 0, 13, 154, 1, 0, 0, 0, 15, 156, 1, 0, 0, 0, 17, 163, 1, 0, 0, 0, 19, 169, 1, 0, 0, 0, 21, 185, 1, 0, 0, 0, 23, 194, 1, 0, 0, 0, 25, 198, 1, 0, 0, 0, 27, 201, 1, 0, 0, 0, 29, 204, 1, 0, 0, 0, 31, 209, 1, 0, 0, 0, 33, 218, 1, 0, 0, 0, 35, 220, 1, 0, 0, 0, 37, 222, 1, 0, 0, 0, 39, 224, 1, 0, 0, 0, 41, 227, 1, 0, 0, 0, 43, 230, 1, 0, 0, 0, 45, 233, 1, 0, 0, 0, 47, 238, 1, 0, 0, 0, 49, 242, 1, 0, 0, 0, 51, 248, 1, 0, 0, 0, 53, 252, 1, 0, 0, 0, 55, 257, 1, 0, 0, 0, 57, 260, 1, 0, 0, 0, 59, 266, 1, 0, 0, 0, 61, 270, 1, 0, 0, 0, 63, 274, 1, 0, 0, 0, 65, 278, 1, 0, 0, 0, 67, 282, 1, 0, 0, 0, 69, 287, 1, 0, 0, 0, 71, 328, 1, 0, 0, 0, 73, 372, 1, 0, 0, 0, 75, 374, 1, 0, 0, 0, 77, 385, 1, 0, 0, 0, 79, 387, 1, 0, 0, 0, 81, 389, 1, 0, 0, 0, 83, 391, 1, 0, 0, 0, 85, 393, 1, 0, 0, 0, 87, 395, 1, 0, 0, 0, 89, 397, 1, 0, 0, 0, 91, 399, 1, 0, 0, 0, 93, 401, 1, 0, 0, 0, 95, 403, 1, 0, 0, 0, 97, 405, 1, 0, 0, 0, 99, 407, 1, 0, 0, 0, 101, 409, 1, 0, 0, 0, 103, 411, 1, 0, 0, 0, 105, 413, 1, 0, 0, 0, 107, 415, 1, 0, 0, 0, 109, 417, 1, 0, 0, 0, 111, 419, 1, 0, 0, 0, 113, 421, 1, 0, 0, 0, 115, 423, 1, 0, 0, 0, 117, 425, 1, 0, 0, 0, 119, 427, 1, 0, 0, 0, 121, 429, 1, 0, 0, 0, 123, 431, 1, 0, 0, 0, 125, 433, 1, 0, 0, 0, 127, 435, 1, 0, 0, 0, 129, 437, 1, 0, 0, 0, 131, 439, 1, 0, 0, 0, 133, 134, 7, 0, 0, 0, 134, 135, 1, 0, 0, 0, 135, 136, 6, 0, 0, 0, 136, 2, 1, 0, 0, 0, 137, 139, 7, 1, 0, 0, 138, 137, 1, 0, 0, 0, 139, 140, 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 142, 1, 0, 0, 0, 142, 143, 6, 1, 1, 0, 143, 4, 1, 0, 0, 0, 144, 145, 5, 44, 0, 0, 145, 6, 1, 0, 0, 0, 146, 147, 5, 40, 0, 0, 147, 8, 1, 0, 0, 0, 148, 149, 5, 41, 0, 0, 149, 10, 1, 0, 0, 0, 150, 151, 5, 59, 0, 0, 151, 12, 1, 0, 0, 0, 152, 155, 3, 67, 33, 0, 153, 155, 3, 69, 34, 0, 154, 152, 1, 0, 0, 0, 154, 153, 1, 0, 0, 0, 155, 14, 1, 0, 0, 0, 156, 157, 3, 117, 58, 0, 157, 158, 3, 89, 44, 0, 158, 159, 3, 103, 51, 0, 159, 160, 3, 89, 44, 0, 160, 161, 3, 85, 42, 0, 161, 162, 3, 119, 59, 0, 162, 16, 1, 0, 0, 0, 163, 164, 3, 125, 62, 0, 164, 165, 3, 95, 47, 0, 165, 166, 3, 89, 44, 0, 166, 167, 3, 115, 57, 0, 167, 168, 3, 89, 44, 0, 168, 18, 1, 0, 0, 0, 169, 170, 3, 125, 62, 0, 170, 171, 3, 97, 48, 0, 171, 172, 3, 107, 53, 0, 172, 173, 3, 87, 43, 0, 173, 174, 3, 109, 54, 0, 174, 175, 3, 125, 62, 0, 175, 176, 3, 1, 0, 0, 176, 177, 3, 119, 59, 0, 177, 178, 3, 121, 60, 0, 178, 179, 3, 105, 52, 0, 179, 180, 3, 83, 41, 0, 180, 181, 3, 103, 51, 0, 181, 182, 3, 97, 48, 0, 182, 183, 3, 107, 53, 0, 183, 184, 3, 93, 46, 0, 184, 20, 1, 0, 0, 0, 185, 186, 3, 93, 46, 0, 186, 187, 3, 115, 57, 0, 187, 188, 3, 109, 54, 0, 188, 189, 3, 121, 60, 0, 189, 190, 3, 111, 55, 0, 190, 191, 3, 1, 0, 0, 191, 192, 3, 83, 41, 0, 192, 193, 3, 129, 64, 0, 193, 22, 1, 0, 0, 0, 194, 195, 3, 81, 40, 0, 195, 196, 3, 107, 53, 0, 196, 197, 3, 87, 43, 0, 197, 24, 1, 0, 0, 0, 198, 199, 3, 109, 54, 0, 199, 200, 3, 115, 57, 0, 200, 26, 1, 0, 0, 0, 201, 202, 3, 97, 48, 0, 202, 203, 3, 117, 58, 0, 203, 28, 1, 0, 0, 0, 204, 205, 3, 103, 51, 0, 205, 206, 3, 97, 48, 0, 206, 207, 3, 101, 50, 0, 207, 208, 3, 89, 44, 0, 208, 30, 1, 0, 0, 0, 209, 210, 3, 107, 53, 0, 210, 211, 3, 109, 54, 0, 211, 212, 3, 119, 59, 0, 212, 213, 3, 1, 0, 0, 213, 214, 3, 103, 51, 0, 214, 215, 3, 97, 48, 0, 215, 216, 3, 101, 50, 0, 216, 217, 3, 89, 44, 0, 217, 32, 1, 0, 0, 0, 218, 219, 5, 61, 0, 0, 219, 34, 1, 0, 0, 0, 220, 221, 5, 62, 0, 0, 221, 36, 1, 0, 0, 0, 222, 223, 5, 60, 0, 0, 223, 38, 1, 0, 0, 0, 224, 225, 3, 37, 18, 0, 225, 226, 3, 33, 16, 0, 226, 40, 1, 0, 0, 0, 227, 228, 3, 35, 17, 0, 228, 229, 3, 33, 16, 0, 229, 42, 1, 0, 0, 0, 230, 231, 5, 33, 0, 0, 231, 232, 3, 33, 16, 0, 232, 44, 1, 0, 0, 0, 233, 234, 3, 107, 53, 0, 234, 235, 3, 121, 60, 0, 235, 236, 3, 103, 51, 0, 236, 237, 3, 103, 51, 0, 237, 46, 1, 0, 0, 0, 238, 239, 3, 27, 13, 0, 239, 240, 3, 1, 0, 0, 240, 241, 3, 45, 22, 0, 241, 48, 1, 0, 0, 0, 242, 243, 3, 27, 13, 0, 243, 244, 3, 1, 0, 0, 244, 245, 3, 51, 25, 0, 245, 246, 3, 1, 0, 0, 246, 247, 3, 45, 22, 0, 247, 50, 1, 0, 0, 0, 248, 249, 3, 107, 53, 0, 249, 250, 3, 109, 54, 0, 250, 251, 3, 119, 59, 0, 251, 52, 1, 0, 0, 0, 252, 253, 3, 51, 25, 0, 253, 254, 3, 1, 0, 0, 254, 255, 3, 97, 48, 0, 255, 256, 3, 107, 53, 0, 256, 54, 1, 0, 0, 0, 257, 258, 3, 97, 48, 0, 258, 259, 3, 107, 53, 0, 259, 56, 1, 0, 0, 0, 260, 261, 3, 85, 42, 0, 261, 262, 3, 109, 54, 0, 262, 263, 3, 121, 60, 0, 263, 264, 3, 107, 53, 0, 264, 265, 3, 119, 59, 0, 265, 58, 1, 0, 0, 0, 266, 267, 3, 117, 58, 0, 267, 268, 3, 121, 60, 0, 268, 269, 3, 105, 52, 0, 269, 60, 1, 0, 0, 0, 270, 271, 3, 105, 52, 0, 271, 272, 3, 97, 48, 0, 272, 273, 3, 107, 53, 0, 273, 62, 1, 0, 0, 0, 274, 275, 3, 105, 52, 0, 275, 276, 3, 81, 40, 0, 276, 277, 3, 127, 63, 0, 277, 64, 1, 0, 0, 0, 278, 279, 3, 81, 40, 0, 279, 280, 3, 123, 61, 0, 280, 281, 3, 93, 46, 0, 281, 66, 1, 0, 0, 0, 282, 283, 3, 119, 59, 0, 283, 284, 3, 115, 57, 0, 284, 285, 3, 121, 60, 0, 285, 286, 3, 89, 44, 0, 286, 68, 1, 0, 0, 0, 287, 288, 3, 91, 45, 0, 288, 289, 3, 81, 40, 0, 289, 290, 3, 103, 51, 0, 290, 291, 3, 117, 58, 0, 291, 292, 3, 89, 44, 0, 292, 70, 1, 0, 0, 0, 293, 299, 5, 34, 0, 0, 294, 298, 8, 2, 0, 0, 295, 296, 5, 34, 0, 0, 296, 298, 5, 34, 0, 0, 297, 294, 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, 298, 301, 1, 0, 0, 0, 299, 297, 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 302, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 302, 329, 5, 34, 0, 0, 303, 309, 5, 96, 0, 0, 304, 308, 8, 3, 0, 0, 305, 306, 5, 96, 0, 0, 306, 308, 5, 96, 0, 0, 307, 304, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 311, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 309, 310, 1, 0, 0, 0, 310, 312, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 312, 329, 5, 96, 0, 0, 313, 317, 5, 91, 0, 0, 314, 316, 8, 4, 0, 0, 315, 314, 1, 0, 0, 0, 316, 319, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, 320, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 320, 329, 5, 93, 0, 0, 321, 325, 7, 5, 0, 0, 322, 324, 7, 6, 0, 0, 323, 322, 1, 0, 0, 0, 324, 327, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, 326, 329, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 328, 293, 1, 0, 0, 0, 328, 303, 1, 0, 0, 0, 328, 313, 1, 0, 0, 0, 328, 321, 1, 0, 0, 0, 329, 72, 1, 0, 0, 0, 330, 332, 3, 79, 39, 0, 331, 330, 1, 0, 0, 0, 332, 333, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 342, 1, 0, 0, 0, 335, 339, 5, 46, 0, 0, 336, 338, 3, 79, 39, 0, 337, 336, 1, 0, 0, 0, 338, 341, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 339, 340, 1, 0, 0, 0, 340, 343, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 342, 335, 1, 0, 0, 0, 342, 343, 1, 0, 0, 0, 343, 353, 1, 0, 0, 0, 344, 346, 3, 89, 44, 0, 345, 347, 7, 7, 0, 0, 346, 345, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347, 349, 1, 0, 0, 0, 348, 350, 3, 79, 39, 0, 349, 348, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 344, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 373, 1, 0, 0, 0, 355, 357, 5, 46, 0, 0, 356, 358, 3, 79, 39, 0, 357, 356, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 370, 1, 0, 0, 0, 361, 363, 3, 89, 44, 0, 362, 364, 7, 7, 0, 0, 363, 362, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 366, 1, 0, 0, 0, 365, 367, 3, 79, 39, 0, 366, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 371, 1, 0, 0, 0, 370, 361, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 373, 1, 0, 0, 0, 372, 331, 1, 0, 0, 0, 372, 355, 1, 0, 0, 0, 373, 74, 1, 0, 0, 0, 374, 380, 5, 39, 0, 0, 375, 379, 8, 8, 0, 0, 376, 377, 5, 39, 0, 0, 377, 379, 5, 39, 0, 0, 378, 375, 1, 0, 0, 0, 378, 376, 1, 0, 0, 0, 379, 382, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 383, 1, 0, 0, 0, 382, 380, 1, 0, 0, 0, 383, 384, 5, 39, 0, 0, 384, 76, 1, 0, 0, 0, 385, 386, 5, 42, 0, 0, 386, 78, 1, 0, 0, 0, 387, 388, 7, 9, 0, 0, 388, 80, 1, 0, 0, 0, 389, 390, 7, 10, 0, 0, 390, 82, 1, 0, 0, 0, 391, 392, 7, 11, 0, 0, 392, 84, 1, 0, 0, 0, 393, 394, 7, 12, 0, 0, 394, 86, 1, 0, 0, 0, 395, 396, 7, 13, 0, 0, 396, 88, 1, 0, 0, 0, 397, 398, 7, 14, 0, 0, 398, 90, 1, 0, 0, 0, 399, 400, 7, 15, 0, 0, 400, 92, 1, 0, 0, 0, 401, 402, 7, 16, 0, 0, 402, 94, 1, 0, 0, 0, 403, 404, 7, 17, 0, 0, 404, 96, 1, 0, 0, 0, 405, 406, 7, 18, 0, 0, 406, 98, 1, 0, 0, 0, 407, 408, 7, 19, 0, 0, 408, 100, 1, 0, 0, 0, 409, 410, 7, 20, 0, 0, 410, 102, 1, 0, 0, 0, 411, 412, 7, 21, 0, 0, 412, 104, 1, 0, 0, 0, 413, 414, 7, 22, 0, 0, 414, 106, 1, 0, 0, 0, 415, 416, 7, 23, 0, 0, 416, 108, 1, 0, 0, 0, 417, 418, 7, 24, 0, 0, 418, 110, 1, 0, 0, 0, 419, 420, 7, 25, 0, 0, 420, 112, 1, 0, 0, 0, 421, 422, 7, 26, 0, 0, 422, 114, 1, 0, 0, 0, 423, 424, 7, 27, 0, 0, 424, 116, 1, 0, 0, 0, 425, 426, 7, 28, 0, 0, 426, 118, 1, 0, 0, 0, 427, 428, 7, 29, 0, 0, 428, 120, 1, 0, 0, 0, 429, 430, 7, 30, 0, 0, 430, 122, 1, 0, 0, 0, 431, 432, 7, 31, 0, 0, 432, 124, 1, 0, 0, 0, 433, 434, 7, 32, 0, 0, 434, 126, 1, 0, 0, 0, 435, 436, 7, 33, 0, 0, 436, 128, 1, 0, 0, 0, 437, 438, 7, 34, 0, 0, 438, 130, 1, 0, 0, 0, 439, 440, 7, 35, 0, 0, 440, 132, 1, 0, 0, 0, 23, 0, 140, 154, 297, 299, 307, 309, 317, 325, 328, 333, 339, 342, 346, 351, 353, 359, 363, 368, 370, 372, 378, 380, 2, 0, 1, 0, 6, 0, 0] \ No newline at end of file +[4, 0, 41, 457, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 143, 8, 1, 11, 1, 12, 1, 144, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 3, 6, 159, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 314, 8, 37, 10, 37, 12, 37, 317, 9, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 324, 8, 37, 10, 37, 12, 37, 327, 9, 37, 1, 37, 1, 37, 1, 37, 5, 37, 332, 8, 37, 10, 37, 12, 37, 335, 9, 37, 1, 37, 1, 37, 1, 37, 5, 37, 340, 8, 37, 10, 37, 12, 37, 343, 9, 37, 3, 37, 345, 8, 37, 1, 38, 4, 38, 348, 8, 38, 11, 38, 12, 38, 349, 1, 38, 1, 38, 5, 38, 354, 8, 38, 10, 38, 12, 38, 357, 9, 38, 3, 38, 359, 8, 38, 1, 38, 1, 38, 3, 38, 363, 8, 38, 1, 38, 4, 38, 366, 8, 38, 11, 38, 12, 38, 367, 3, 38, 370, 8, 38, 1, 38, 1, 38, 4, 38, 374, 8, 38, 11, 38, 12, 38, 375, 1, 38, 1, 38, 3, 38, 380, 8, 38, 1, 38, 4, 38, 383, 8, 38, 11, 38, 12, 38, 384, 3, 38, 387, 8, 38, 3, 38, 389, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 395, 8, 39, 10, 39, 12, 39, 398, 9, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 0, 0, 68, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 133, 0, 135, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 453, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 1, 137, 1, 0, 0, 0, 3, 142, 1, 0, 0, 0, 5, 148, 1, 0, 0, 0, 7, 150, 1, 0, 0, 0, 9, 152, 1, 0, 0, 0, 11, 154, 1, 0, 0, 0, 13, 158, 1, 0, 0, 0, 15, 160, 1, 0, 0, 0, 17, 167, 1, 0, 0, 0, 19, 173, 1, 0, 0, 0, 21, 189, 1, 0, 0, 0, 23, 198, 1, 0, 0, 0, 25, 202, 1, 0, 0, 0, 27, 205, 1, 0, 0, 0, 29, 208, 1, 0, 0, 0, 31, 213, 1, 0, 0, 0, 33, 222, 1, 0, 0, 0, 35, 224, 1, 0, 0, 0, 37, 226, 1, 0, 0, 0, 39, 228, 1, 0, 0, 0, 41, 231, 1, 0, 0, 0, 43, 234, 1, 0, 0, 0, 45, 237, 1, 0, 0, 0, 47, 242, 1, 0, 0, 0, 49, 246, 1, 0, 0, 0, 51, 252, 1, 0, 0, 0, 53, 256, 1, 0, 0, 0, 55, 261, 1, 0, 0, 0, 57, 264, 1, 0, 0, 0, 59, 270, 1, 0, 0, 0, 61, 274, 1, 0, 0, 0, 63, 278, 1, 0, 0, 0, 65, 282, 1, 0, 0, 0, 67, 286, 1, 0, 0, 0, 69, 291, 1, 0, 0, 0, 71, 297, 1, 0, 0, 0, 73, 303, 1, 0, 0, 0, 75, 344, 1, 0, 0, 0, 77, 388, 1, 0, 0, 0, 79, 390, 1, 0, 0, 0, 81, 401, 1, 0, 0, 0, 83, 403, 1, 0, 0, 0, 85, 405, 1, 0, 0, 0, 87, 407, 1, 0, 0, 0, 89, 409, 1, 0, 0, 0, 91, 411, 1, 0, 0, 0, 93, 413, 1, 0, 0, 0, 95, 415, 1, 0, 0, 0, 97, 417, 1, 0, 0, 0, 99, 419, 1, 0, 0, 0, 101, 421, 1, 0, 0, 0, 103, 423, 1, 0, 0, 0, 105, 425, 1, 0, 0, 0, 107, 427, 1, 0, 0, 0, 109, 429, 1, 0, 0, 0, 111, 431, 1, 0, 0, 0, 113, 433, 1, 0, 0, 0, 115, 435, 1, 0, 0, 0, 117, 437, 1, 0, 0, 0, 119, 439, 1, 0, 0, 0, 121, 441, 1, 0, 0, 0, 123, 443, 1, 0, 0, 0, 125, 445, 1, 0, 0, 0, 127, 447, 1, 0, 0, 0, 129, 449, 1, 0, 0, 0, 131, 451, 1, 0, 0, 0, 133, 453, 1, 0, 0, 0, 135, 455, 1, 0, 0, 0, 137, 138, 7, 0, 0, 0, 138, 139, 1, 0, 0, 0, 139, 140, 6, 0, 0, 0, 140, 2, 1, 0, 0, 0, 141, 143, 7, 1, 0, 0, 142, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 142, 1, 0, 0, 0, 144, 145, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 147, 6, 1, 1, 0, 147, 4, 1, 0, 0, 0, 148, 149, 5, 44, 0, 0, 149, 6, 1, 0, 0, 0, 150, 151, 5, 40, 0, 0, 151, 8, 1, 0, 0, 0, 152, 153, 5, 41, 0, 0, 153, 10, 1, 0, 0, 0, 154, 155, 5, 59, 0, 0, 155, 12, 1, 0, 0, 0, 156, 159, 3, 67, 33, 0, 157, 159, 3, 69, 34, 0, 158, 156, 1, 0, 0, 0, 158, 157, 1, 0, 0, 0, 159, 14, 1, 0, 0, 0, 160, 161, 3, 121, 60, 0, 161, 162, 3, 93, 46, 0, 162, 163, 3, 107, 53, 0, 163, 164, 3, 93, 46, 0, 164, 165, 3, 89, 44, 0, 165, 166, 3, 123, 61, 0, 166, 16, 1, 0, 0, 0, 167, 168, 3, 129, 64, 0, 168, 169, 3, 99, 49, 0, 169, 170, 3, 93, 46, 0, 170, 171, 3, 119, 59, 0, 171, 172, 3, 93, 46, 0, 172, 18, 1, 0, 0, 0, 173, 174, 3, 129, 64, 0, 174, 175, 3, 101, 50, 0, 175, 176, 3, 111, 55, 0, 176, 177, 3, 91, 45, 0, 177, 178, 3, 113, 56, 0, 178, 179, 3, 129, 64, 0, 179, 180, 3, 1, 0, 0, 180, 181, 3, 123, 61, 0, 181, 182, 3, 125, 62, 0, 182, 183, 3, 109, 54, 0, 183, 184, 3, 87, 43, 0, 184, 185, 3, 107, 53, 0, 185, 186, 3, 101, 50, 0, 186, 187, 3, 111, 55, 0, 187, 188, 3, 97, 48, 0, 188, 20, 1, 0, 0, 0, 189, 190, 3, 97, 48, 0, 190, 191, 3, 119, 59, 0, 191, 192, 3, 113, 56, 0, 192, 193, 3, 125, 62, 0, 193, 194, 3, 115, 57, 0, 194, 195, 3, 1, 0, 0, 195, 196, 3, 87, 43, 0, 196, 197, 3, 133, 66, 0, 197, 22, 1, 0, 0, 0, 198, 199, 3, 85, 42, 0, 199, 200, 3, 111, 55, 0, 200, 201, 3, 91, 45, 0, 201, 24, 1, 0, 0, 0, 202, 203, 3, 113, 56, 0, 203, 204, 3, 119, 59, 0, 204, 26, 1, 0, 0, 0, 205, 206, 3, 101, 50, 0, 206, 207, 3, 121, 60, 0, 207, 28, 1, 0, 0, 0, 208, 209, 3, 107, 53, 0, 209, 210, 3, 101, 50, 0, 210, 211, 3, 105, 52, 0, 211, 212, 3, 93, 46, 0, 212, 30, 1, 0, 0, 0, 213, 214, 3, 111, 55, 0, 214, 215, 3, 113, 56, 0, 215, 216, 3, 123, 61, 0, 216, 217, 3, 1, 0, 0, 217, 218, 3, 107, 53, 0, 218, 219, 3, 101, 50, 0, 219, 220, 3, 105, 52, 0, 220, 221, 3, 93, 46, 0, 221, 32, 1, 0, 0, 0, 222, 223, 5, 61, 0, 0, 223, 34, 1, 0, 0, 0, 224, 225, 5, 62, 0, 0, 225, 36, 1, 0, 0, 0, 226, 227, 5, 60, 0, 0, 227, 38, 1, 0, 0, 0, 228, 229, 3, 37, 18, 0, 229, 230, 3, 33, 16, 0, 230, 40, 1, 0, 0, 0, 231, 232, 3, 35, 17, 0, 232, 233, 3, 33, 16, 0, 233, 42, 1, 0, 0, 0, 234, 235, 5, 33, 0, 0, 235, 236, 3, 33, 16, 0, 236, 44, 1, 0, 0, 0, 237, 238, 3, 111, 55, 0, 238, 239, 3, 125, 62, 0, 239, 240, 3, 107, 53, 0, 240, 241, 3, 107, 53, 0, 241, 46, 1, 0, 0, 0, 242, 243, 3, 27, 13, 0, 243, 244, 3, 1, 0, 0, 244, 245, 3, 45, 22, 0, 245, 48, 1, 0, 0, 0, 246, 247, 3, 27, 13, 0, 247, 248, 3, 1, 0, 0, 248, 249, 3, 51, 25, 0, 249, 250, 3, 1, 0, 0, 250, 251, 3, 45, 22, 0, 251, 50, 1, 0, 0, 0, 252, 253, 3, 111, 55, 0, 253, 254, 3, 113, 56, 0, 254, 255, 3, 123, 61, 0, 255, 52, 1, 0, 0, 0, 256, 257, 3, 51, 25, 0, 257, 258, 3, 1, 0, 0, 258, 259, 3, 101, 50, 0, 259, 260, 3, 111, 55, 0, 260, 54, 1, 0, 0, 0, 261, 262, 3, 101, 50, 0, 262, 263, 3, 111, 55, 0, 263, 56, 1, 0, 0, 0, 264, 265, 3, 89, 44, 0, 265, 266, 3, 113, 56, 0, 266, 267, 3, 125, 62, 0, 267, 268, 3, 111, 55, 0, 268, 269, 3, 123, 61, 0, 269, 58, 1, 0, 0, 0, 270, 271, 3, 121, 60, 0, 271, 272, 3, 125, 62, 0, 272, 273, 3, 109, 54, 0, 273, 60, 1, 0, 0, 0, 274, 275, 3, 109, 54, 0, 275, 276, 3, 101, 50, 0, 276, 277, 3, 111, 55, 0, 277, 62, 1, 0, 0, 0, 278, 279, 3, 109, 54, 0, 279, 280, 3, 85, 42, 0, 280, 281, 3, 131, 65, 0, 281, 64, 1, 0, 0, 0, 282, 283, 3, 85, 42, 0, 283, 284, 3, 127, 63, 0, 284, 285, 3, 97, 48, 0, 285, 66, 1, 0, 0, 0, 286, 287, 3, 123, 61, 0, 287, 288, 3, 119, 59, 0, 288, 289, 3, 125, 62, 0, 289, 290, 3, 93, 46, 0, 290, 68, 1, 0, 0, 0, 291, 292, 3, 95, 47, 0, 292, 293, 3, 85, 42, 0, 293, 294, 3, 107, 53, 0, 294, 295, 3, 121, 60, 0, 295, 296, 3, 93, 46, 0, 296, 70, 1, 0, 0, 0, 297, 298, 3, 125, 62, 0, 298, 299, 3, 115, 57, 0, 299, 300, 3, 115, 57, 0, 300, 301, 3, 93, 46, 0, 301, 302, 3, 119, 59, 0, 302, 72, 1, 0, 0, 0, 303, 304, 3, 107, 53, 0, 304, 305, 3, 113, 56, 0, 305, 306, 3, 129, 64, 0, 306, 307, 3, 93, 46, 0, 307, 308, 3, 119, 59, 0, 308, 74, 1, 0, 0, 0, 309, 315, 5, 34, 0, 0, 310, 314, 8, 2, 0, 0, 311, 312, 5, 34, 0, 0, 312, 314, 5, 34, 0, 0, 313, 310, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 314, 317, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 318, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 318, 345, 5, 34, 0, 0, 319, 325, 5, 96, 0, 0, 320, 324, 8, 3, 0, 0, 321, 322, 5, 96, 0, 0, 322, 324, 5, 96, 0, 0, 323, 320, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 324, 327, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, 326, 328, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 328, 345, 5, 96, 0, 0, 329, 333, 5, 91, 0, 0, 330, 332, 8, 4, 0, 0, 331, 330, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 336, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 345, 5, 93, 0, 0, 337, 341, 7, 5, 0, 0, 338, 340, 7, 6, 0, 0, 339, 338, 1, 0, 0, 0, 340, 343, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 341, 342, 1, 0, 0, 0, 342, 345, 1, 0, 0, 0, 343, 341, 1, 0, 0, 0, 344, 309, 1, 0, 0, 0, 344, 319, 1, 0, 0, 0, 344, 329, 1, 0, 0, 0, 344, 337, 1, 0, 0, 0, 345, 76, 1, 0, 0, 0, 346, 348, 3, 83, 41, 0, 347, 346, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 358, 1, 0, 0, 0, 351, 355, 5, 46, 0, 0, 352, 354, 3, 83, 41, 0, 353, 352, 1, 0, 0, 0, 354, 357, 1, 0, 0, 0, 355, 353, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 359, 1, 0, 0, 0, 357, 355, 1, 0, 0, 0, 358, 351, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 369, 1, 0, 0, 0, 360, 362, 3, 93, 46, 0, 361, 363, 7, 7, 0, 0, 362, 361, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 365, 1, 0, 0, 0, 364, 366, 3, 83, 41, 0, 365, 364, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 370, 1, 0, 0, 0, 369, 360, 1, 0, 0, 0, 369, 370, 1, 0, 0, 0, 370, 389, 1, 0, 0, 0, 371, 373, 5, 46, 0, 0, 372, 374, 3, 83, 41, 0, 373, 372, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 373, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 386, 1, 0, 0, 0, 377, 379, 3, 93, 46, 0, 378, 380, 7, 7, 0, 0, 379, 378, 1, 0, 0, 0, 379, 380, 1, 0, 0, 0, 380, 382, 1, 0, 0, 0, 381, 383, 3, 83, 41, 0, 382, 381, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 382, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 387, 1, 0, 0, 0, 386, 377, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 389, 1, 0, 0, 0, 388, 347, 1, 0, 0, 0, 388, 371, 1, 0, 0, 0, 389, 78, 1, 0, 0, 0, 390, 396, 5, 39, 0, 0, 391, 395, 8, 8, 0, 0, 392, 393, 5, 39, 0, 0, 393, 395, 5, 39, 0, 0, 394, 391, 1, 0, 0, 0, 394, 392, 1, 0, 0, 0, 395, 398, 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 396, 397, 1, 0, 0, 0, 397, 399, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 399, 400, 5, 39, 0, 0, 400, 80, 1, 0, 0, 0, 401, 402, 5, 42, 0, 0, 402, 82, 1, 0, 0, 0, 403, 404, 7, 9, 0, 0, 404, 84, 1, 0, 0, 0, 405, 406, 7, 10, 0, 0, 406, 86, 1, 0, 0, 0, 407, 408, 7, 11, 0, 0, 408, 88, 1, 0, 0, 0, 409, 410, 7, 12, 0, 0, 410, 90, 1, 0, 0, 0, 411, 412, 7, 13, 0, 0, 412, 92, 1, 0, 0, 0, 413, 414, 7, 14, 0, 0, 414, 94, 1, 0, 0, 0, 415, 416, 7, 15, 0, 0, 416, 96, 1, 0, 0, 0, 417, 418, 7, 16, 0, 0, 418, 98, 1, 0, 0, 0, 419, 420, 7, 17, 0, 0, 420, 100, 1, 0, 0, 0, 421, 422, 7, 18, 0, 0, 422, 102, 1, 0, 0, 0, 423, 424, 7, 19, 0, 0, 424, 104, 1, 0, 0, 0, 425, 426, 7, 20, 0, 0, 426, 106, 1, 0, 0, 0, 427, 428, 7, 21, 0, 0, 428, 108, 1, 0, 0, 0, 429, 430, 7, 22, 0, 0, 430, 110, 1, 0, 0, 0, 431, 432, 7, 23, 0, 0, 432, 112, 1, 0, 0, 0, 433, 434, 7, 24, 0, 0, 434, 114, 1, 0, 0, 0, 435, 436, 7, 25, 0, 0, 436, 116, 1, 0, 0, 0, 437, 438, 7, 26, 0, 0, 438, 118, 1, 0, 0, 0, 439, 440, 7, 27, 0, 0, 440, 120, 1, 0, 0, 0, 441, 442, 7, 28, 0, 0, 442, 122, 1, 0, 0, 0, 443, 444, 7, 29, 0, 0, 444, 124, 1, 0, 0, 0, 445, 446, 7, 30, 0, 0, 446, 126, 1, 0, 0, 0, 447, 448, 7, 31, 0, 0, 448, 128, 1, 0, 0, 0, 449, 450, 7, 32, 0, 0, 450, 130, 1, 0, 0, 0, 451, 452, 7, 33, 0, 0, 452, 132, 1, 0, 0, 0, 453, 454, 7, 34, 0, 0, 454, 134, 1, 0, 0, 0, 455, 456, 7, 35, 0, 0, 456, 136, 1, 0, 0, 0, 23, 0, 144, 158, 313, 315, 323, 325, 333, 341, 344, 349, 355, 358, 362, 367, 369, 375, 379, 384, 386, 388, 394, 396, 2, 0, 1, 0, 6, 0, 0] \ No newline at end of file diff --git a/processor/stream_processor/parser/SqlLexer.tokens b/processor/stream_processor/parser/SqlLexer.tokens index 27afef39448c..5d2f8ec0dc76 100644 --- a/processor/stream_processor/parser/SqlLexer.tokens +++ b/processor/stream_processor/parser/SqlLexer.tokens @@ -33,10 +33,12 @@ K_MAX=32 K_AVG=33 K_TRUE=34 K_FALSE=35 -IDENTIFIER=36 -NUMERIC_LITERAL=37 -STRING_LITERAL=38 -STAR=39 +K_UPPER=36 +K_LOWER=37 +IDENTIFIER=38 +NUMERIC_LITERAL=39 +STRING_LITERAL=40 +STAR=41 ','=3 '('=4 ')'=5 @@ -44,4 +46,4 @@ STAR=39 '='=17 '>'=18 '<'=19 -'*'=39 +'*'=41 diff --git a/processor/stream_processor/parser/sql_base_visitor.go b/processor/stream_processor/parser/sql_base_visitor.go index 25323a1a3cd2..38ca27c6dafe 100644 --- a/processor/stream_processor/parser/sql_base_visitor.go +++ b/processor/stream_processor/parser/sql_base_visitor.go @@ -40,7 +40,11 @@ func (v *BaseSqlVisitor) VisitSelectAVG(ctx *SelectAVGContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitColumn(ctx *ColumnContext) interface{} { +func (v *BaseSqlVisitor) VisitIdentifierCol(ctx *IdentifierColContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitFunctionCol(ctx *FunctionColContext) interface{} { return v.VisitChildren(ctx) } diff --git a/processor/stream_processor/parser/sql_lexer.go b/processor/stream_processor/parser/sql_lexer.go index fd89575f3a79..6cc847d1b6d5 100644 --- a/processor/stream_processor/parser/sql_lexer.go +++ b/processor/stream_processor/parser/sql_lexer.go @@ -46,7 +46,7 @@ func sqllexerLexerInit() { staticData.literalNames = []string{ "", "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", "", "", "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "'*'", + "", "", "", "", "", "", "", "", "", "", "", "", "'*'", } staticData.symbolicNames = []string{ "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "BOOLEAN_LITERAL", @@ -54,8 +54,8 @@ func sqllexerLexerInit() { "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", "K_IN", "K_COUNT", "K_SUM", "K_MIN", "K_MAX", "K_AVG", - "K_TRUE", "K_FALSE", "IDENTIFIER", "NUMERIC_LITERAL", "STRING_LITERAL", - "STAR", + "K_TRUE", "K_FALSE", "K_UPPER", "K_LOWER", "IDENTIFIER", "NUMERIC_LITERAL", + "STRING_LITERAL", "STAR", } staticData.ruleNames = []string{ "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "BOOLEAN_LITERAL", @@ -63,14 +63,14 @@ func sqllexerLexerInit() { "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", "K_IN", "K_COUNT", "K_SUM", "K_MIN", "K_MAX", "K_AVG", - "K_TRUE", "K_FALSE", "IDENTIFIER", "NUMERIC_LITERAL", "STRING_LITERAL", - "STAR", "DIGIT", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", - "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", - "Z", + "K_TRUE", "K_FALSE", "K_UPPER", "K_LOWER", "IDENTIFIER", "NUMERIC_LITERAL", + "STRING_LITERAL", "STAR", "DIGIT", "A", "B", "C", "D", "E", "F", "G", + "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", + "V", "W", "X", "Y", "Z", } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 0, 39, 441, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, + 4, 0, 41, 457, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, @@ -82,193 +82,200 @@ func sqllexerLexerInit() { 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, - 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 1, 0, 1, 0, 1, 0, 1, 0, 1, - 1, 4, 1, 139, 8, 1, 11, 1, 12, 1, 140, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, - 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 3, 6, 155, 8, 6, 1, 7, 1, 7, 1, - 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, - 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, - 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, - 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, - 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, - 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, - 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, - 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, - 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, - 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, - 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, - 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, - 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, - 298, 8, 35, 10, 35, 12, 35, 301, 9, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, - 35, 5, 35, 308, 8, 35, 10, 35, 12, 35, 311, 9, 35, 1, 35, 1, 35, 1, 35, - 5, 35, 316, 8, 35, 10, 35, 12, 35, 319, 9, 35, 1, 35, 1, 35, 1, 35, 5, - 35, 324, 8, 35, 10, 35, 12, 35, 327, 9, 35, 3, 35, 329, 8, 35, 1, 36, 4, - 36, 332, 8, 36, 11, 36, 12, 36, 333, 1, 36, 1, 36, 5, 36, 338, 8, 36, 10, - 36, 12, 36, 341, 9, 36, 3, 36, 343, 8, 36, 1, 36, 1, 36, 3, 36, 347, 8, - 36, 1, 36, 4, 36, 350, 8, 36, 11, 36, 12, 36, 351, 3, 36, 354, 8, 36, 1, - 36, 1, 36, 4, 36, 358, 8, 36, 11, 36, 12, 36, 359, 1, 36, 1, 36, 3, 36, - 364, 8, 36, 1, 36, 4, 36, 367, 8, 36, 11, 36, 12, 36, 368, 3, 36, 371, - 8, 36, 3, 36, 373, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 379, 8, 37, - 10, 37, 12, 37, 382, 9, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, - 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, - 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, - 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, - 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, - 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 0, 0, - 66, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, - 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, - 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, - 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, - 38, 77, 39, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, - 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, - 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, - 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, - 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, - 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, - 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, - 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, - 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, - 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, - 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, - 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, - 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, - 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, - 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 437, 0, 1, 1, 0, 0, 0, 0, - 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, - 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, - 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, - 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, - 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, - 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, - 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, - 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, - 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, - 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 1, 133, 1, - 0, 0, 0, 3, 138, 1, 0, 0, 0, 5, 144, 1, 0, 0, 0, 7, 146, 1, 0, 0, 0, 9, - 148, 1, 0, 0, 0, 11, 150, 1, 0, 0, 0, 13, 154, 1, 0, 0, 0, 15, 156, 1, - 0, 0, 0, 17, 163, 1, 0, 0, 0, 19, 169, 1, 0, 0, 0, 21, 185, 1, 0, 0, 0, - 23, 194, 1, 0, 0, 0, 25, 198, 1, 0, 0, 0, 27, 201, 1, 0, 0, 0, 29, 204, - 1, 0, 0, 0, 31, 209, 1, 0, 0, 0, 33, 218, 1, 0, 0, 0, 35, 220, 1, 0, 0, - 0, 37, 222, 1, 0, 0, 0, 39, 224, 1, 0, 0, 0, 41, 227, 1, 0, 0, 0, 43, 230, - 1, 0, 0, 0, 45, 233, 1, 0, 0, 0, 47, 238, 1, 0, 0, 0, 49, 242, 1, 0, 0, - 0, 51, 248, 1, 0, 0, 0, 53, 252, 1, 0, 0, 0, 55, 257, 1, 0, 0, 0, 57, 260, - 1, 0, 0, 0, 59, 266, 1, 0, 0, 0, 61, 270, 1, 0, 0, 0, 63, 274, 1, 0, 0, - 0, 65, 278, 1, 0, 0, 0, 67, 282, 1, 0, 0, 0, 69, 287, 1, 0, 0, 0, 71, 328, - 1, 0, 0, 0, 73, 372, 1, 0, 0, 0, 75, 374, 1, 0, 0, 0, 77, 385, 1, 0, 0, - 0, 79, 387, 1, 0, 0, 0, 81, 389, 1, 0, 0, 0, 83, 391, 1, 0, 0, 0, 85, 393, - 1, 0, 0, 0, 87, 395, 1, 0, 0, 0, 89, 397, 1, 0, 0, 0, 91, 399, 1, 0, 0, - 0, 93, 401, 1, 0, 0, 0, 95, 403, 1, 0, 0, 0, 97, 405, 1, 0, 0, 0, 99, 407, - 1, 0, 0, 0, 101, 409, 1, 0, 0, 0, 103, 411, 1, 0, 0, 0, 105, 413, 1, 0, - 0, 0, 107, 415, 1, 0, 0, 0, 109, 417, 1, 0, 0, 0, 111, 419, 1, 0, 0, 0, - 113, 421, 1, 0, 0, 0, 115, 423, 1, 0, 0, 0, 117, 425, 1, 0, 0, 0, 119, - 427, 1, 0, 0, 0, 121, 429, 1, 0, 0, 0, 123, 431, 1, 0, 0, 0, 125, 433, - 1, 0, 0, 0, 127, 435, 1, 0, 0, 0, 129, 437, 1, 0, 0, 0, 131, 439, 1, 0, - 0, 0, 133, 134, 7, 0, 0, 0, 134, 135, 1, 0, 0, 0, 135, 136, 6, 0, 0, 0, - 136, 2, 1, 0, 0, 0, 137, 139, 7, 1, 0, 0, 138, 137, 1, 0, 0, 0, 139, 140, - 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 142, 1, 0, - 0, 0, 142, 143, 6, 1, 1, 0, 143, 4, 1, 0, 0, 0, 144, 145, 5, 44, 0, 0, - 145, 6, 1, 0, 0, 0, 146, 147, 5, 40, 0, 0, 147, 8, 1, 0, 0, 0, 148, 149, - 5, 41, 0, 0, 149, 10, 1, 0, 0, 0, 150, 151, 5, 59, 0, 0, 151, 12, 1, 0, - 0, 0, 152, 155, 3, 67, 33, 0, 153, 155, 3, 69, 34, 0, 154, 152, 1, 0, 0, - 0, 154, 153, 1, 0, 0, 0, 155, 14, 1, 0, 0, 0, 156, 157, 3, 117, 58, 0, - 157, 158, 3, 89, 44, 0, 158, 159, 3, 103, 51, 0, 159, 160, 3, 89, 44, 0, - 160, 161, 3, 85, 42, 0, 161, 162, 3, 119, 59, 0, 162, 16, 1, 0, 0, 0, 163, - 164, 3, 125, 62, 0, 164, 165, 3, 95, 47, 0, 165, 166, 3, 89, 44, 0, 166, - 167, 3, 115, 57, 0, 167, 168, 3, 89, 44, 0, 168, 18, 1, 0, 0, 0, 169, 170, - 3, 125, 62, 0, 170, 171, 3, 97, 48, 0, 171, 172, 3, 107, 53, 0, 172, 173, - 3, 87, 43, 0, 173, 174, 3, 109, 54, 0, 174, 175, 3, 125, 62, 0, 175, 176, - 3, 1, 0, 0, 176, 177, 3, 119, 59, 0, 177, 178, 3, 121, 60, 0, 178, 179, - 3, 105, 52, 0, 179, 180, 3, 83, 41, 0, 180, 181, 3, 103, 51, 0, 181, 182, - 3, 97, 48, 0, 182, 183, 3, 107, 53, 0, 183, 184, 3, 93, 46, 0, 184, 20, - 1, 0, 0, 0, 185, 186, 3, 93, 46, 0, 186, 187, 3, 115, 57, 0, 187, 188, - 3, 109, 54, 0, 188, 189, 3, 121, 60, 0, 189, 190, 3, 111, 55, 0, 190, 191, - 3, 1, 0, 0, 191, 192, 3, 83, 41, 0, 192, 193, 3, 129, 64, 0, 193, 22, 1, - 0, 0, 0, 194, 195, 3, 81, 40, 0, 195, 196, 3, 107, 53, 0, 196, 197, 3, - 87, 43, 0, 197, 24, 1, 0, 0, 0, 198, 199, 3, 109, 54, 0, 199, 200, 3, 115, - 57, 0, 200, 26, 1, 0, 0, 0, 201, 202, 3, 97, 48, 0, 202, 203, 3, 117, 58, - 0, 203, 28, 1, 0, 0, 0, 204, 205, 3, 103, 51, 0, 205, 206, 3, 97, 48, 0, - 206, 207, 3, 101, 50, 0, 207, 208, 3, 89, 44, 0, 208, 30, 1, 0, 0, 0, 209, - 210, 3, 107, 53, 0, 210, 211, 3, 109, 54, 0, 211, 212, 3, 119, 59, 0, 212, - 213, 3, 1, 0, 0, 213, 214, 3, 103, 51, 0, 214, 215, 3, 97, 48, 0, 215, - 216, 3, 101, 50, 0, 216, 217, 3, 89, 44, 0, 217, 32, 1, 0, 0, 0, 218, 219, - 5, 61, 0, 0, 219, 34, 1, 0, 0, 0, 220, 221, 5, 62, 0, 0, 221, 36, 1, 0, - 0, 0, 222, 223, 5, 60, 0, 0, 223, 38, 1, 0, 0, 0, 224, 225, 3, 37, 18, - 0, 225, 226, 3, 33, 16, 0, 226, 40, 1, 0, 0, 0, 227, 228, 3, 35, 17, 0, - 228, 229, 3, 33, 16, 0, 229, 42, 1, 0, 0, 0, 230, 231, 5, 33, 0, 0, 231, - 232, 3, 33, 16, 0, 232, 44, 1, 0, 0, 0, 233, 234, 3, 107, 53, 0, 234, 235, - 3, 121, 60, 0, 235, 236, 3, 103, 51, 0, 236, 237, 3, 103, 51, 0, 237, 46, - 1, 0, 0, 0, 238, 239, 3, 27, 13, 0, 239, 240, 3, 1, 0, 0, 240, 241, 3, - 45, 22, 0, 241, 48, 1, 0, 0, 0, 242, 243, 3, 27, 13, 0, 243, 244, 3, 1, - 0, 0, 244, 245, 3, 51, 25, 0, 245, 246, 3, 1, 0, 0, 246, 247, 3, 45, 22, - 0, 247, 50, 1, 0, 0, 0, 248, 249, 3, 107, 53, 0, 249, 250, 3, 109, 54, - 0, 250, 251, 3, 119, 59, 0, 251, 52, 1, 0, 0, 0, 252, 253, 3, 51, 25, 0, - 253, 254, 3, 1, 0, 0, 254, 255, 3, 97, 48, 0, 255, 256, 3, 107, 53, 0, - 256, 54, 1, 0, 0, 0, 257, 258, 3, 97, 48, 0, 258, 259, 3, 107, 53, 0, 259, - 56, 1, 0, 0, 0, 260, 261, 3, 85, 42, 0, 261, 262, 3, 109, 54, 0, 262, 263, - 3, 121, 60, 0, 263, 264, 3, 107, 53, 0, 264, 265, 3, 119, 59, 0, 265, 58, - 1, 0, 0, 0, 266, 267, 3, 117, 58, 0, 267, 268, 3, 121, 60, 0, 268, 269, - 3, 105, 52, 0, 269, 60, 1, 0, 0, 0, 270, 271, 3, 105, 52, 0, 271, 272, - 3, 97, 48, 0, 272, 273, 3, 107, 53, 0, 273, 62, 1, 0, 0, 0, 274, 275, 3, - 105, 52, 0, 275, 276, 3, 81, 40, 0, 276, 277, 3, 127, 63, 0, 277, 64, 1, - 0, 0, 0, 278, 279, 3, 81, 40, 0, 279, 280, 3, 123, 61, 0, 280, 281, 3, - 93, 46, 0, 281, 66, 1, 0, 0, 0, 282, 283, 3, 119, 59, 0, 283, 284, 3, 115, - 57, 0, 284, 285, 3, 121, 60, 0, 285, 286, 3, 89, 44, 0, 286, 68, 1, 0, - 0, 0, 287, 288, 3, 91, 45, 0, 288, 289, 3, 81, 40, 0, 289, 290, 3, 103, - 51, 0, 290, 291, 3, 117, 58, 0, 291, 292, 3, 89, 44, 0, 292, 70, 1, 0, - 0, 0, 293, 299, 5, 34, 0, 0, 294, 298, 8, 2, 0, 0, 295, 296, 5, 34, 0, - 0, 296, 298, 5, 34, 0, 0, 297, 294, 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, 298, - 301, 1, 0, 0, 0, 299, 297, 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 302, - 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 302, 329, 5, 34, 0, 0, 303, 309, 5, 96, - 0, 0, 304, 308, 8, 3, 0, 0, 305, 306, 5, 96, 0, 0, 306, 308, 5, 96, 0, - 0, 307, 304, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 311, 1, 0, 0, 0, 309, - 307, 1, 0, 0, 0, 309, 310, 1, 0, 0, 0, 310, 312, 1, 0, 0, 0, 311, 309, - 1, 0, 0, 0, 312, 329, 5, 96, 0, 0, 313, 317, 5, 91, 0, 0, 314, 316, 8, - 4, 0, 0, 315, 314, 1, 0, 0, 0, 316, 319, 1, 0, 0, 0, 317, 315, 1, 0, 0, - 0, 317, 318, 1, 0, 0, 0, 318, 320, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 320, - 329, 5, 93, 0, 0, 321, 325, 7, 5, 0, 0, 322, 324, 7, 6, 0, 0, 323, 322, - 1, 0, 0, 0, 324, 327, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 325, 326, 1, 0, - 0, 0, 326, 329, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 328, 293, 1, 0, 0, 0, - 328, 303, 1, 0, 0, 0, 328, 313, 1, 0, 0, 0, 328, 321, 1, 0, 0, 0, 329, - 72, 1, 0, 0, 0, 330, 332, 3, 79, 39, 0, 331, 330, 1, 0, 0, 0, 332, 333, - 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 342, 1, 0, - 0, 0, 335, 339, 5, 46, 0, 0, 336, 338, 3, 79, 39, 0, 337, 336, 1, 0, 0, - 0, 338, 341, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 339, 340, 1, 0, 0, 0, 340, - 343, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 342, 335, 1, 0, 0, 0, 342, 343, - 1, 0, 0, 0, 343, 353, 1, 0, 0, 0, 344, 346, 3, 89, 44, 0, 345, 347, 7, - 7, 0, 0, 346, 345, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347, 349, 1, 0, 0, - 0, 348, 350, 3, 79, 39, 0, 349, 348, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, - 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, - 344, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 373, 1, 0, 0, 0, 355, 357, - 5, 46, 0, 0, 356, 358, 3, 79, 39, 0, 357, 356, 1, 0, 0, 0, 358, 359, 1, - 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 370, 1, 0, 0, - 0, 361, 363, 3, 89, 44, 0, 362, 364, 7, 7, 0, 0, 363, 362, 1, 0, 0, 0, - 363, 364, 1, 0, 0, 0, 364, 366, 1, 0, 0, 0, 365, 367, 3, 79, 39, 0, 366, - 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, - 1, 0, 0, 0, 369, 371, 1, 0, 0, 0, 370, 361, 1, 0, 0, 0, 370, 371, 1, 0, - 0, 0, 371, 373, 1, 0, 0, 0, 372, 331, 1, 0, 0, 0, 372, 355, 1, 0, 0, 0, - 373, 74, 1, 0, 0, 0, 374, 380, 5, 39, 0, 0, 375, 379, 8, 8, 0, 0, 376, - 377, 5, 39, 0, 0, 377, 379, 5, 39, 0, 0, 378, 375, 1, 0, 0, 0, 378, 376, - 1, 0, 0, 0, 379, 382, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 380, 381, 1, 0, - 0, 0, 381, 383, 1, 0, 0, 0, 382, 380, 1, 0, 0, 0, 383, 384, 5, 39, 0, 0, - 384, 76, 1, 0, 0, 0, 385, 386, 5, 42, 0, 0, 386, 78, 1, 0, 0, 0, 387, 388, - 7, 9, 0, 0, 388, 80, 1, 0, 0, 0, 389, 390, 7, 10, 0, 0, 390, 82, 1, 0, - 0, 0, 391, 392, 7, 11, 0, 0, 392, 84, 1, 0, 0, 0, 393, 394, 7, 12, 0, 0, - 394, 86, 1, 0, 0, 0, 395, 396, 7, 13, 0, 0, 396, 88, 1, 0, 0, 0, 397, 398, - 7, 14, 0, 0, 398, 90, 1, 0, 0, 0, 399, 400, 7, 15, 0, 0, 400, 92, 1, 0, - 0, 0, 401, 402, 7, 16, 0, 0, 402, 94, 1, 0, 0, 0, 403, 404, 7, 17, 0, 0, - 404, 96, 1, 0, 0, 0, 405, 406, 7, 18, 0, 0, 406, 98, 1, 0, 0, 0, 407, 408, - 7, 19, 0, 0, 408, 100, 1, 0, 0, 0, 409, 410, 7, 20, 0, 0, 410, 102, 1, - 0, 0, 0, 411, 412, 7, 21, 0, 0, 412, 104, 1, 0, 0, 0, 413, 414, 7, 22, - 0, 0, 414, 106, 1, 0, 0, 0, 415, 416, 7, 23, 0, 0, 416, 108, 1, 0, 0, 0, - 417, 418, 7, 24, 0, 0, 418, 110, 1, 0, 0, 0, 419, 420, 7, 25, 0, 0, 420, - 112, 1, 0, 0, 0, 421, 422, 7, 26, 0, 0, 422, 114, 1, 0, 0, 0, 423, 424, - 7, 27, 0, 0, 424, 116, 1, 0, 0, 0, 425, 426, 7, 28, 0, 0, 426, 118, 1, - 0, 0, 0, 427, 428, 7, 29, 0, 0, 428, 120, 1, 0, 0, 0, 429, 430, 7, 30, - 0, 0, 430, 122, 1, 0, 0, 0, 431, 432, 7, 31, 0, 0, 432, 124, 1, 0, 0, 0, - 433, 434, 7, 32, 0, 0, 434, 126, 1, 0, 0, 0, 435, 436, 7, 33, 0, 0, 436, - 128, 1, 0, 0, 0, 437, 438, 7, 34, 0, 0, 438, 130, 1, 0, 0, 0, 439, 440, - 7, 35, 0, 0, 440, 132, 1, 0, 0, 0, 23, 0, 140, 154, 297, 299, 307, 309, - 317, 325, 328, 333, 339, 342, 346, 351, 353, 359, 363, 368, 370, 372, 378, - 380, 2, 0, 1, 0, 6, 0, 0, + 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, + 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 143, 8, 1, 11, 1, 12, 1, 144, 1, 1, + 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 3, 6, + 159, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, + 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, + 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, + 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, + 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, + 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, + 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, + 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, + 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, + 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, + 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, + 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, + 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, + 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, + 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 314, 8, 37, 10, 37, 12, 37, 317, 9, + 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 324, 8, 37, 10, 37, 12, 37, + 327, 9, 37, 1, 37, 1, 37, 1, 37, 5, 37, 332, 8, 37, 10, 37, 12, 37, 335, + 9, 37, 1, 37, 1, 37, 1, 37, 5, 37, 340, 8, 37, 10, 37, 12, 37, 343, 9, + 37, 3, 37, 345, 8, 37, 1, 38, 4, 38, 348, 8, 38, 11, 38, 12, 38, 349, 1, + 38, 1, 38, 5, 38, 354, 8, 38, 10, 38, 12, 38, 357, 9, 38, 3, 38, 359, 8, + 38, 1, 38, 1, 38, 3, 38, 363, 8, 38, 1, 38, 4, 38, 366, 8, 38, 11, 38, + 12, 38, 367, 3, 38, 370, 8, 38, 1, 38, 1, 38, 4, 38, 374, 8, 38, 11, 38, + 12, 38, 375, 1, 38, 1, 38, 3, 38, 380, 8, 38, 1, 38, 4, 38, 383, 8, 38, + 11, 38, 12, 38, 384, 3, 38, 387, 8, 38, 3, 38, 389, 8, 38, 1, 39, 1, 39, + 1, 39, 1, 39, 5, 39, 395, 8, 39, 10, 39, 12, 39, 398, 9, 39, 1, 39, 1, + 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, + 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, + 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, + 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, + 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, + 1, 66, 1, 66, 1, 67, 1, 67, 0, 0, 68, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, + 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, + 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, + 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, + 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 0, + 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, + 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, + 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 133, 0, 135, 0, 1, 0, 36, 3, 0, + 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, + 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, + 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, + 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, + 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, + 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, + 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, + 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, + 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, + 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, + 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, + 121, 2, 0, 90, 90, 122, 122, 453, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, + 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, + 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, + 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, + 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, + 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, + 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, + 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, + 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, + 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, + 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, + 0, 0, 1, 137, 1, 0, 0, 0, 3, 142, 1, 0, 0, 0, 5, 148, 1, 0, 0, 0, 7, 150, + 1, 0, 0, 0, 9, 152, 1, 0, 0, 0, 11, 154, 1, 0, 0, 0, 13, 158, 1, 0, 0, + 0, 15, 160, 1, 0, 0, 0, 17, 167, 1, 0, 0, 0, 19, 173, 1, 0, 0, 0, 21, 189, + 1, 0, 0, 0, 23, 198, 1, 0, 0, 0, 25, 202, 1, 0, 0, 0, 27, 205, 1, 0, 0, + 0, 29, 208, 1, 0, 0, 0, 31, 213, 1, 0, 0, 0, 33, 222, 1, 0, 0, 0, 35, 224, + 1, 0, 0, 0, 37, 226, 1, 0, 0, 0, 39, 228, 1, 0, 0, 0, 41, 231, 1, 0, 0, + 0, 43, 234, 1, 0, 0, 0, 45, 237, 1, 0, 0, 0, 47, 242, 1, 0, 0, 0, 49, 246, + 1, 0, 0, 0, 51, 252, 1, 0, 0, 0, 53, 256, 1, 0, 0, 0, 55, 261, 1, 0, 0, + 0, 57, 264, 1, 0, 0, 0, 59, 270, 1, 0, 0, 0, 61, 274, 1, 0, 0, 0, 63, 278, + 1, 0, 0, 0, 65, 282, 1, 0, 0, 0, 67, 286, 1, 0, 0, 0, 69, 291, 1, 0, 0, + 0, 71, 297, 1, 0, 0, 0, 73, 303, 1, 0, 0, 0, 75, 344, 1, 0, 0, 0, 77, 388, + 1, 0, 0, 0, 79, 390, 1, 0, 0, 0, 81, 401, 1, 0, 0, 0, 83, 403, 1, 0, 0, + 0, 85, 405, 1, 0, 0, 0, 87, 407, 1, 0, 0, 0, 89, 409, 1, 0, 0, 0, 91, 411, + 1, 0, 0, 0, 93, 413, 1, 0, 0, 0, 95, 415, 1, 0, 0, 0, 97, 417, 1, 0, 0, + 0, 99, 419, 1, 0, 0, 0, 101, 421, 1, 0, 0, 0, 103, 423, 1, 0, 0, 0, 105, + 425, 1, 0, 0, 0, 107, 427, 1, 0, 0, 0, 109, 429, 1, 0, 0, 0, 111, 431, + 1, 0, 0, 0, 113, 433, 1, 0, 0, 0, 115, 435, 1, 0, 0, 0, 117, 437, 1, 0, + 0, 0, 119, 439, 1, 0, 0, 0, 121, 441, 1, 0, 0, 0, 123, 443, 1, 0, 0, 0, + 125, 445, 1, 0, 0, 0, 127, 447, 1, 0, 0, 0, 129, 449, 1, 0, 0, 0, 131, + 451, 1, 0, 0, 0, 133, 453, 1, 0, 0, 0, 135, 455, 1, 0, 0, 0, 137, 138, + 7, 0, 0, 0, 138, 139, 1, 0, 0, 0, 139, 140, 6, 0, 0, 0, 140, 2, 1, 0, 0, + 0, 141, 143, 7, 1, 0, 0, 142, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, + 142, 1, 0, 0, 0, 144, 145, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 147, + 6, 1, 1, 0, 147, 4, 1, 0, 0, 0, 148, 149, 5, 44, 0, 0, 149, 6, 1, 0, 0, + 0, 150, 151, 5, 40, 0, 0, 151, 8, 1, 0, 0, 0, 152, 153, 5, 41, 0, 0, 153, + 10, 1, 0, 0, 0, 154, 155, 5, 59, 0, 0, 155, 12, 1, 0, 0, 0, 156, 159, 3, + 67, 33, 0, 157, 159, 3, 69, 34, 0, 158, 156, 1, 0, 0, 0, 158, 157, 1, 0, + 0, 0, 159, 14, 1, 0, 0, 0, 160, 161, 3, 121, 60, 0, 161, 162, 3, 93, 46, + 0, 162, 163, 3, 107, 53, 0, 163, 164, 3, 93, 46, 0, 164, 165, 3, 89, 44, + 0, 165, 166, 3, 123, 61, 0, 166, 16, 1, 0, 0, 0, 167, 168, 3, 129, 64, + 0, 168, 169, 3, 99, 49, 0, 169, 170, 3, 93, 46, 0, 170, 171, 3, 119, 59, + 0, 171, 172, 3, 93, 46, 0, 172, 18, 1, 0, 0, 0, 173, 174, 3, 129, 64, 0, + 174, 175, 3, 101, 50, 0, 175, 176, 3, 111, 55, 0, 176, 177, 3, 91, 45, + 0, 177, 178, 3, 113, 56, 0, 178, 179, 3, 129, 64, 0, 179, 180, 3, 1, 0, + 0, 180, 181, 3, 123, 61, 0, 181, 182, 3, 125, 62, 0, 182, 183, 3, 109, + 54, 0, 183, 184, 3, 87, 43, 0, 184, 185, 3, 107, 53, 0, 185, 186, 3, 101, + 50, 0, 186, 187, 3, 111, 55, 0, 187, 188, 3, 97, 48, 0, 188, 20, 1, 0, + 0, 0, 189, 190, 3, 97, 48, 0, 190, 191, 3, 119, 59, 0, 191, 192, 3, 113, + 56, 0, 192, 193, 3, 125, 62, 0, 193, 194, 3, 115, 57, 0, 194, 195, 3, 1, + 0, 0, 195, 196, 3, 87, 43, 0, 196, 197, 3, 133, 66, 0, 197, 22, 1, 0, 0, + 0, 198, 199, 3, 85, 42, 0, 199, 200, 3, 111, 55, 0, 200, 201, 3, 91, 45, + 0, 201, 24, 1, 0, 0, 0, 202, 203, 3, 113, 56, 0, 203, 204, 3, 119, 59, + 0, 204, 26, 1, 0, 0, 0, 205, 206, 3, 101, 50, 0, 206, 207, 3, 121, 60, + 0, 207, 28, 1, 0, 0, 0, 208, 209, 3, 107, 53, 0, 209, 210, 3, 101, 50, + 0, 210, 211, 3, 105, 52, 0, 211, 212, 3, 93, 46, 0, 212, 30, 1, 0, 0, 0, + 213, 214, 3, 111, 55, 0, 214, 215, 3, 113, 56, 0, 215, 216, 3, 123, 61, + 0, 216, 217, 3, 1, 0, 0, 217, 218, 3, 107, 53, 0, 218, 219, 3, 101, 50, + 0, 219, 220, 3, 105, 52, 0, 220, 221, 3, 93, 46, 0, 221, 32, 1, 0, 0, 0, + 222, 223, 5, 61, 0, 0, 223, 34, 1, 0, 0, 0, 224, 225, 5, 62, 0, 0, 225, + 36, 1, 0, 0, 0, 226, 227, 5, 60, 0, 0, 227, 38, 1, 0, 0, 0, 228, 229, 3, + 37, 18, 0, 229, 230, 3, 33, 16, 0, 230, 40, 1, 0, 0, 0, 231, 232, 3, 35, + 17, 0, 232, 233, 3, 33, 16, 0, 233, 42, 1, 0, 0, 0, 234, 235, 5, 33, 0, + 0, 235, 236, 3, 33, 16, 0, 236, 44, 1, 0, 0, 0, 237, 238, 3, 111, 55, 0, + 238, 239, 3, 125, 62, 0, 239, 240, 3, 107, 53, 0, 240, 241, 3, 107, 53, + 0, 241, 46, 1, 0, 0, 0, 242, 243, 3, 27, 13, 0, 243, 244, 3, 1, 0, 0, 244, + 245, 3, 45, 22, 0, 245, 48, 1, 0, 0, 0, 246, 247, 3, 27, 13, 0, 247, 248, + 3, 1, 0, 0, 248, 249, 3, 51, 25, 0, 249, 250, 3, 1, 0, 0, 250, 251, 3, + 45, 22, 0, 251, 50, 1, 0, 0, 0, 252, 253, 3, 111, 55, 0, 253, 254, 3, 113, + 56, 0, 254, 255, 3, 123, 61, 0, 255, 52, 1, 0, 0, 0, 256, 257, 3, 51, 25, + 0, 257, 258, 3, 1, 0, 0, 258, 259, 3, 101, 50, 0, 259, 260, 3, 111, 55, + 0, 260, 54, 1, 0, 0, 0, 261, 262, 3, 101, 50, 0, 262, 263, 3, 111, 55, + 0, 263, 56, 1, 0, 0, 0, 264, 265, 3, 89, 44, 0, 265, 266, 3, 113, 56, 0, + 266, 267, 3, 125, 62, 0, 267, 268, 3, 111, 55, 0, 268, 269, 3, 123, 61, + 0, 269, 58, 1, 0, 0, 0, 270, 271, 3, 121, 60, 0, 271, 272, 3, 125, 62, + 0, 272, 273, 3, 109, 54, 0, 273, 60, 1, 0, 0, 0, 274, 275, 3, 109, 54, + 0, 275, 276, 3, 101, 50, 0, 276, 277, 3, 111, 55, 0, 277, 62, 1, 0, 0, + 0, 278, 279, 3, 109, 54, 0, 279, 280, 3, 85, 42, 0, 280, 281, 3, 131, 65, + 0, 281, 64, 1, 0, 0, 0, 282, 283, 3, 85, 42, 0, 283, 284, 3, 127, 63, 0, + 284, 285, 3, 97, 48, 0, 285, 66, 1, 0, 0, 0, 286, 287, 3, 123, 61, 0, 287, + 288, 3, 119, 59, 0, 288, 289, 3, 125, 62, 0, 289, 290, 3, 93, 46, 0, 290, + 68, 1, 0, 0, 0, 291, 292, 3, 95, 47, 0, 292, 293, 3, 85, 42, 0, 293, 294, + 3, 107, 53, 0, 294, 295, 3, 121, 60, 0, 295, 296, 3, 93, 46, 0, 296, 70, + 1, 0, 0, 0, 297, 298, 3, 125, 62, 0, 298, 299, 3, 115, 57, 0, 299, 300, + 3, 115, 57, 0, 300, 301, 3, 93, 46, 0, 301, 302, 3, 119, 59, 0, 302, 72, + 1, 0, 0, 0, 303, 304, 3, 107, 53, 0, 304, 305, 3, 113, 56, 0, 305, 306, + 3, 129, 64, 0, 306, 307, 3, 93, 46, 0, 307, 308, 3, 119, 59, 0, 308, 74, + 1, 0, 0, 0, 309, 315, 5, 34, 0, 0, 310, 314, 8, 2, 0, 0, 311, 312, 5, 34, + 0, 0, 312, 314, 5, 34, 0, 0, 313, 310, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, + 314, 317, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, + 318, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 318, 345, 5, 34, 0, 0, 319, 325, + 5, 96, 0, 0, 320, 324, 8, 3, 0, 0, 321, 322, 5, 96, 0, 0, 322, 324, 5, + 96, 0, 0, 323, 320, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 324, 327, 1, 0, 0, + 0, 325, 323, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, 326, 328, 1, 0, 0, 0, 327, + 325, 1, 0, 0, 0, 328, 345, 5, 96, 0, 0, 329, 333, 5, 91, 0, 0, 330, 332, + 8, 4, 0, 0, 331, 330, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331, 1, 0, + 0, 0, 333, 334, 1, 0, 0, 0, 334, 336, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, + 336, 345, 5, 93, 0, 0, 337, 341, 7, 5, 0, 0, 338, 340, 7, 6, 0, 0, 339, + 338, 1, 0, 0, 0, 340, 343, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 341, 342, + 1, 0, 0, 0, 342, 345, 1, 0, 0, 0, 343, 341, 1, 0, 0, 0, 344, 309, 1, 0, + 0, 0, 344, 319, 1, 0, 0, 0, 344, 329, 1, 0, 0, 0, 344, 337, 1, 0, 0, 0, + 345, 76, 1, 0, 0, 0, 346, 348, 3, 83, 41, 0, 347, 346, 1, 0, 0, 0, 348, + 349, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 358, + 1, 0, 0, 0, 351, 355, 5, 46, 0, 0, 352, 354, 3, 83, 41, 0, 353, 352, 1, + 0, 0, 0, 354, 357, 1, 0, 0, 0, 355, 353, 1, 0, 0, 0, 355, 356, 1, 0, 0, + 0, 356, 359, 1, 0, 0, 0, 357, 355, 1, 0, 0, 0, 358, 351, 1, 0, 0, 0, 358, + 359, 1, 0, 0, 0, 359, 369, 1, 0, 0, 0, 360, 362, 3, 93, 46, 0, 361, 363, + 7, 7, 0, 0, 362, 361, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 365, 1, 0, + 0, 0, 364, 366, 3, 83, 41, 0, 365, 364, 1, 0, 0, 0, 366, 367, 1, 0, 0, + 0, 367, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 370, 1, 0, 0, 0, 369, + 360, 1, 0, 0, 0, 369, 370, 1, 0, 0, 0, 370, 389, 1, 0, 0, 0, 371, 373, + 5, 46, 0, 0, 372, 374, 3, 83, 41, 0, 373, 372, 1, 0, 0, 0, 374, 375, 1, + 0, 0, 0, 375, 373, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 386, 1, 0, 0, + 0, 377, 379, 3, 93, 46, 0, 378, 380, 7, 7, 0, 0, 379, 378, 1, 0, 0, 0, + 379, 380, 1, 0, 0, 0, 380, 382, 1, 0, 0, 0, 381, 383, 3, 83, 41, 0, 382, + 381, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 382, 1, 0, 0, 0, 384, 385, + 1, 0, 0, 0, 385, 387, 1, 0, 0, 0, 386, 377, 1, 0, 0, 0, 386, 387, 1, 0, + 0, 0, 387, 389, 1, 0, 0, 0, 388, 347, 1, 0, 0, 0, 388, 371, 1, 0, 0, 0, + 389, 78, 1, 0, 0, 0, 390, 396, 5, 39, 0, 0, 391, 395, 8, 8, 0, 0, 392, + 393, 5, 39, 0, 0, 393, 395, 5, 39, 0, 0, 394, 391, 1, 0, 0, 0, 394, 392, + 1, 0, 0, 0, 395, 398, 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 396, 397, 1, 0, + 0, 0, 397, 399, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 399, 400, 5, 39, 0, 0, + 400, 80, 1, 0, 0, 0, 401, 402, 5, 42, 0, 0, 402, 82, 1, 0, 0, 0, 403, 404, + 7, 9, 0, 0, 404, 84, 1, 0, 0, 0, 405, 406, 7, 10, 0, 0, 406, 86, 1, 0, + 0, 0, 407, 408, 7, 11, 0, 0, 408, 88, 1, 0, 0, 0, 409, 410, 7, 12, 0, 0, + 410, 90, 1, 0, 0, 0, 411, 412, 7, 13, 0, 0, 412, 92, 1, 0, 0, 0, 413, 414, + 7, 14, 0, 0, 414, 94, 1, 0, 0, 0, 415, 416, 7, 15, 0, 0, 416, 96, 1, 0, + 0, 0, 417, 418, 7, 16, 0, 0, 418, 98, 1, 0, 0, 0, 419, 420, 7, 17, 0, 0, + 420, 100, 1, 0, 0, 0, 421, 422, 7, 18, 0, 0, 422, 102, 1, 0, 0, 0, 423, + 424, 7, 19, 0, 0, 424, 104, 1, 0, 0, 0, 425, 426, 7, 20, 0, 0, 426, 106, + 1, 0, 0, 0, 427, 428, 7, 21, 0, 0, 428, 108, 1, 0, 0, 0, 429, 430, 7, 22, + 0, 0, 430, 110, 1, 0, 0, 0, 431, 432, 7, 23, 0, 0, 432, 112, 1, 0, 0, 0, + 433, 434, 7, 24, 0, 0, 434, 114, 1, 0, 0, 0, 435, 436, 7, 25, 0, 0, 436, + 116, 1, 0, 0, 0, 437, 438, 7, 26, 0, 0, 438, 118, 1, 0, 0, 0, 439, 440, + 7, 27, 0, 0, 440, 120, 1, 0, 0, 0, 441, 442, 7, 28, 0, 0, 442, 122, 1, + 0, 0, 0, 443, 444, 7, 29, 0, 0, 444, 124, 1, 0, 0, 0, 445, 446, 7, 30, + 0, 0, 446, 126, 1, 0, 0, 0, 447, 448, 7, 31, 0, 0, 448, 128, 1, 0, 0, 0, + 449, 450, 7, 32, 0, 0, 450, 130, 1, 0, 0, 0, 451, 452, 7, 33, 0, 0, 452, + 132, 1, 0, 0, 0, 453, 454, 7, 34, 0, 0, 454, 134, 1, 0, 0, 0, 455, 456, + 7, 35, 0, 0, 456, 136, 1, 0, 0, 0, 23, 0, 144, 158, 313, 315, 323, 325, + 333, 341, 344, 349, 355, 358, 362, 367, 369, 375, 379, 384, 386, 388, 394, + 396, 2, 0, 1, 0, 6, 0, 0, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -344,8 +351,10 @@ const ( SqlLexerK_AVG = 33 SqlLexerK_TRUE = 34 SqlLexerK_FALSE = 35 - SqlLexerIDENTIFIER = 36 - SqlLexerNUMERIC_LITERAL = 37 - SqlLexerSTRING_LITERAL = 38 - SqlLexerSTAR = 39 + SqlLexerK_UPPER = 36 + SqlLexerK_LOWER = 37 + SqlLexerIDENTIFIER = 38 + SqlLexerNUMERIC_LITERAL = 39 + SqlLexerSTRING_LITERAL = 40 + SqlLexerSTAR = 41 ) diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index c474ab1e36e8..db6ba9fab951 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -35,7 +35,7 @@ func sqlParserInit() { staticData.literalNames = []string{ "", "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", "", "", "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "'*'", + "", "", "", "", "", "", "", "", "", "", "", "", "'*'", } staticData.symbolicNames = []string{ "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "BOOLEAN_LITERAL", @@ -43,8 +43,8 @@ func sqlParserInit() { "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", "K_IN", "K_COUNT", "K_SUM", "K_MIN", "K_MAX", "K_AVG", - "K_TRUE", "K_FALSE", "IDENTIFIER", "NUMERIC_LITERAL", "STRING_LITERAL", - "STAR", + "K_TRUE", "K_FALSE", "K_UPPER", "K_LOWER", "IDENTIFIER", "NUMERIC_LITERAL", + "STRING_LITERAL", "STAR", } staticData.ruleNames = []string{ "sqlQuery", "selectQuery", "windowTumbling", "resultColumns", "aggregationColumns", @@ -53,57 +53,59 @@ func sqlParserInit() { } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 39, 125, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 41, 130, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 33, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 54, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 62, 8, 3, 10, 3, 12, 3, 65, 9, 3, 1, 3, 3, 3, 68, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 73, 8, 4, 1, 4, - 1, 4, 1, 4, 1, 4, 3, 4, 79, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, - 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 92, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 97, - 8, 7, 1, 7, 3, 7, 100, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 105, 8, 7, 10, 7, - 12, 7, 108, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, - 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 0, 1, 14, 13, 0, 2, 4, - 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 0, 4, 1, 0, 29, 33, 1, 0, 12, 13, - 2, 0, 14, 22, 27, 28, 2, 0, 7, 7, 37, 38, 125, 0, 26, 1, 0, 0, 0, 2, 53, - 1, 0, 0, 0, 4, 55, 1, 0, 0, 0, 6, 67, 1, 0, 0, 0, 8, 72, 1, 0, 0, 0, 10, - 82, 1, 0, 0, 0, 12, 84, 1, 0, 0, 0, 14, 99, 1, 0, 0, 0, 16, 109, 1, 0, - 0, 0, 18, 113, 1, 0, 0, 0, 20, 117, 1, 0, 0, 0, 22, 119, 1, 0, 0, 0, 24, - 121, 1, 0, 0, 0, 26, 27, 3, 2, 1, 0, 27, 28, 5, 0, 0, 1, 28, 1, 1, 0, 0, - 0, 29, 30, 5, 8, 0, 0, 30, 32, 3, 6, 3, 0, 31, 33, 3, 12, 6, 0, 32, 31, - 1, 0, 0, 0, 32, 33, 1, 0, 0, 0, 33, 34, 1, 0, 0, 0, 34, 35, 5, 6, 0, 0, - 35, 54, 1, 0, 0, 0, 36, 37, 5, 8, 0, 0, 37, 38, 3, 8, 4, 0, 38, 40, 3, - 4, 2, 0, 39, 41, 3, 12, 6, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, - 42, 1, 0, 0, 0, 42, 43, 5, 6, 0, 0, 43, 54, 1, 0, 0, 0, 44, 45, 5, 8, 0, - 0, 45, 46, 3, 8, 4, 0, 46, 48, 3, 4, 2, 0, 47, 49, 3, 12, 6, 0, 48, 47, - 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 3, 24, 12, - 0, 51, 52, 5, 6, 0, 0, 52, 54, 1, 0, 0, 0, 53, 29, 1, 0, 0, 0, 53, 36, - 1, 0, 0, 0, 53, 44, 1, 0, 0, 0, 54, 3, 1, 0, 0, 0, 55, 56, 5, 10, 0, 0, - 56, 57, 5, 37, 0, 0, 57, 5, 1, 0, 0, 0, 58, 63, 3, 10, 5, 0, 59, 60, 5, - 3, 0, 0, 60, 62, 3, 10, 5, 0, 61, 59, 1, 0, 0, 0, 62, 65, 1, 0, 0, 0, 63, - 61, 1, 0, 0, 0, 63, 64, 1, 0, 0, 0, 64, 68, 1, 0, 0, 0, 65, 63, 1, 0, 0, - 0, 66, 68, 5, 39, 0, 0, 67, 58, 1, 0, 0, 0, 67, 66, 1, 0, 0, 0, 68, 7, - 1, 0, 0, 0, 69, 70, 3, 10, 5, 0, 70, 71, 5, 3, 0, 0, 71, 73, 1, 0, 0, 0, - 72, 69, 1, 0, 0, 0, 72, 73, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 75, 7, - 0, 0, 0, 75, 78, 5, 4, 0, 0, 76, 79, 3, 10, 5, 0, 77, 79, 5, 39, 0, 0, - 78, 76, 1, 0, 0, 0, 78, 77, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 81, 5, - 5, 0, 0, 81, 9, 1, 0, 0, 0, 82, 83, 5, 36, 0, 0, 83, 11, 1, 0, 0, 0, 84, - 85, 5, 9, 0, 0, 85, 86, 3, 14, 7, 0, 86, 13, 1, 0, 0, 0, 87, 88, 6, 7, - -1, 0, 88, 100, 3, 16, 8, 0, 89, 92, 3, 18, 9, 0, 90, 92, 3, 16, 8, 0, - 91, 89, 1, 0, 0, 0, 91, 90, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 96, 7, - 1, 0, 0, 94, 97, 3, 18, 9, 0, 95, 97, 3, 16, 8, 0, 96, 94, 1, 0, 0, 0, - 96, 95, 1, 0, 0, 0, 97, 100, 1, 0, 0, 0, 98, 100, 3, 18, 9, 0, 99, 87, - 1, 0, 0, 0, 99, 91, 1, 0, 0, 0, 99, 98, 1, 0, 0, 0, 100, 106, 1, 0, 0, - 0, 101, 102, 10, 2, 0, 0, 102, 103, 7, 1, 0, 0, 103, 105, 3, 14, 7, 3, - 104, 101, 1, 0, 0, 0, 105, 108, 1, 0, 0, 0, 106, 104, 1, 0, 0, 0, 106, - 107, 1, 0, 0, 0, 107, 15, 1, 0, 0, 0, 108, 106, 1, 0, 0, 0, 109, 110, 5, - 36, 0, 0, 110, 111, 3, 20, 10, 0, 111, 112, 3, 22, 11, 0, 112, 17, 1, 0, - 0, 0, 113, 114, 5, 4, 0, 0, 114, 115, 3, 14, 7, 0, 115, 116, 5, 5, 0, 0, - 116, 19, 1, 0, 0, 0, 117, 118, 7, 2, 0, 0, 118, 21, 1, 0, 0, 0, 119, 120, - 7, 3, 0, 0, 120, 23, 1, 0, 0, 0, 121, 122, 5, 11, 0, 0, 122, 123, 3, 10, - 5, 0, 123, 25, 1, 0, 0, 0, 12, 32, 40, 48, 53, 63, 67, 72, 78, 91, 96, - 99, 106, + 1, 4, 1, 4, 1, 4, 3, 4, 79, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, + 5, 3, 5, 88, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 97, + 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 102, 8, 7, 1, 7, 3, 7, 105, 8, 7, 1, 7, 1, + 7, 1, 7, 5, 7, 110, 8, 7, 10, 7, 12, 7, 113, 9, 7, 1, 8, 1, 8, 1, 8, 1, + 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, + 12, 1, 12, 0, 1, 14, 13, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, + 0, 5, 1, 0, 29, 33, 1, 0, 36, 37, 1, 0, 12, 13, 2, 0, 14, 22, 27, 28, 2, + 0, 7, 7, 39, 40, 131, 0, 26, 1, 0, 0, 0, 2, 53, 1, 0, 0, 0, 4, 55, 1, 0, + 0, 0, 6, 67, 1, 0, 0, 0, 8, 72, 1, 0, 0, 0, 10, 87, 1, 0, 0, 0, 12, 89, + 1, 0, 0, 0, 14, 104, 1, 0, 0, 0, 16, 114, 1, 0, 0, 0, 18, 118, 1, 0, 0, + 0, 20, 122, 1, 0, 0, 0, 22, 124, 1, 0, 0, 0, 24, 126, 1, 0, 0, 0, 26, 27, + 3, 2, 1, 0, 27, 28, 5, 0, 0, 1, 28, 1, 1, 0, 0, 0, 29, 30, 5, 8, 0, 0, + 30, 32, 3, 6, 3, 0, 31, 33, 3, 12, 6, 0, 32, 31, 1, 0, 0, 0, 32, 33, 1, + 0, 0, 0, 33, 34, 1, 0, 0, 0, 34, 35, 5, 6, 0, 0, 35, 54, 1, 0, 0, 0, 36, + 37, 5, 8, 0, 0, 37, 38, 3, 8, 4, 0, 38, 40, 3, 4, 2, 0, 39, 41, 3, 12, + 6, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, + 5, 6, 0, 0, 43, 54, 1, 0, 0, 0, 44, 45, 5, 8, 0, 0, 45, 46, 3, 8, 4, 0, + 46, 48, 3, 4, 2, 0, 47, 49, 3, 12, 6, 0, 48, 47, 1, 0, 0, 0, 48, 49, 1, + 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 3, 24, 12, 0, 51, 52, 5, 6, 0, 0, + 52, 54, 1, 0, 0, 0, 53, 29, 1, 0, 0, 0, 53, 36, 1, 0, 0, 0, 53, 44, 1, + 0, 0, 0, 54, 3, 1, 0, 0, 0, 55, 56, 5, 10, 0, 0, 56, 57, 5, 39, 0, 0, 57, + 5, 1, 0, 0, 0, 58, 63, 3, 10, 5, 0, 59, 60, 5, 3, 0, 0, 60, 62, 3, 10, + 5, 0, 61, 59, 1, 0, 0, 0, 62, 65, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 63, 64, + 1, 0, 0, 0, 64, 68, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 66, 68, 5, 41, 0, 0, + 67, 58, 1, 0, 0, 0, 67, 66, 1, 0, 0, 0, 68, 7, 1, 0, 0, 0, 69, 70, 3, 10, + 5, 0, 70, 71, 5, 3, 0, 0, 71, 73, 1, 0, 0, 0, 72, 69, 1, 0, 0, 0, 72, 73, + 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 75, 7, 0, 0, 0, 75, 78, 5, 4, 0, 0, + 76, 79, 3, 10, 5, 0, 77, 79, 5, 41, 0, 0, 78, 76, 1, 0, 0, 0, 78, 77, 1, + 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 81, 5, 5, 0, 0, 81, 9, 1, 0, 0, 0, 82, + 88, 5, 38, 0, 0, 83, 84, 7, 1, 0, 0, 84, 85, 5, 4, 0, 0, 85, 86, 5, 38, + 0, 0, 86, 88, 5, 5, 0, 0, 87, 82, 1, 0, 0, 0, 87, 83, 1, 0, 0, 0, 88, 11, + 1, 0, 0, 0, 89, 90, 5, 9, 0, 0, 90, 91, 3, 14, 7, 0, 91, 13, 1, 0, 0, 0, + 92, 93, 6, 7, -1, 0, 93, 105, 3, 16, 8, 0, 94, 97, 3, 18, 9, 0, 95, 97, + 3, 16, 8, 0, 96, 94, 1, 0, 0, 0, 96, 95, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, + 98, 101, 7, 2, 0, 0, 99, 102, 3, 18, 9, 0, 100, 102, 3, 16, 8, 0, 101, + 99, 1, 0, 0, 0, 101, 100, 1, 0, 0, 0, 102, 105, 1, 0, 0, 0, 103, 105, 3, + 18, 9, 0, 104, 92, 1, 0, 0, 0, 104, 96, 1, 0, 0, 0, 104, 103, 1, 0, 0, + 0, 105, 111, 1, 0, 0, 0, 106, 107, 10, 2, 0, 0, 107, 108, 7, 2, 0, 0, 108, + 110, 3, 14, 7, 3, 109, 106, 1, 0, 0, 0, 110, 113, 1, 0, 0, 0, 111, 109, + 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 15, 1, 0, 0, 0, 113, 111, 1, 0, + 0, 0, 114, 115, 5, 38, 0, 0, 115, 116, 3, 20, 10, 0, 116, 117, 3, 22, 11, + 0, 117, 17, 1, 0, 0, 0, 118, 119, 5, 4, 0, 0, 119, 120, 3, 14, 7, 0, 120, + 121, 5, 5, 0, 0, 121, 19, 1, 0, 0, 0, 122, 123, 7, 3, 0, 0, 123, 21, 1, + 0, 0, 0, 124, 125, 7, 4, 0, 0, 125, 23, 1, 0, 0, 0, 126, 127, 5, 11, 0, + 0, 127, 128, 3, 10, 5, 0, 128, 25, 1, 0, 0, 0, 13, 32, 40, 48, 53, 63, + 67, 72, 78, 87, 96, 101, 104, 111, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -177,10 +179,12 @@ const ( SqlParserK_AVG = 33 SqlParserK_TRUE = 34 SqlParserK_FALSE = 35 - SqlParserIDENTIFIER = 36 - SqlParserNUMERIC_LITERAL = 37 - SqlParserSTRING_LITERAL = 38 - SqlParserSTAR = 39 + SqlParserK_UPPER = 36 + SqlParserK_LOWER = 37 + SqlParserIDENTIFIER = 38 + SqlParserNUMERIC_LITERAL = 39 + SqlParserSTRING_LITERAL = 40 + SqlParserSTAR = 41 ) // SqlParser rules. @@ -1026,7 +1030,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { - case SqlParserIDENTIFIER: + case SqlParserK_UPPER, SqlParserK_LOWER, SqlParserIDENTIFIER: localctx = NewSelectColumnsContext(p, localctx) p.EnterOuterAlt(localctx, 1) { @@ -1252,7 +1256,7 @@ func (p *SqlParser) AggregationColumns() (localctx IAggregationColumnsContext) { p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - if _la == SqlParserIDENTIFIER { + if ((_la-36)&-(0x1f+1)) == 0 && ((1< 80 or name like '3';`, + value: 0, + res: false, + }, + { + name: "tumbling query", + query: `select max(price) window tumbling 3 where price > 4;`, + value: 3, + res: true, + }, + { + name: "incorrect tumbling query", + query: `select max(price) window tumbling kwa where price > 4;`, + value: 0, + res: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + res, val := IsTumblingQuery(tt.query) + assert.Equal(t, tt.value, val) + assert.Equal(t, tt.res, res) + }) + } +} + +func TestWindowTumblingLoop(t *testing.T) { + tests := []struct { + name string + query string + expected int + res float64 + }{ + { + name: "1 ms", + query: "select max(price) window tumbling 50 where price > 4;", + expected: 1, + res: 99.0, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + var ls plog.LogRecordSlice + var wg sync.WaitGroup + wg.Add(1) + visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + go func() { + defer wg.Done() + for { + ls = <-out + break + } + }() + in <- generateTestLogs() + <-time.After(1 * time.Millisecond) + in <- generateTestLogs() + <-time.After(1 * time.Millisecond) + in <- generateTestLogs() + <-time.After(1 * time.Millisecond) + wg.Wait() + + assert.Equal(t, tt.expected, ls.Len()) + val, ok := ls.At(0).Attributes().Get("price") + assert.True(t, ok) + assert.Equal(t, tt.res, val.DoubleVal()) + }) + } +} + +func TestWindowTumblingAvg(t *testing.T) { + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + query := "select avg(price) window tumbling 30 ;" + var ls plog.LogRecordSlice + + visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + in <- generateTestLogs() + ls = <-out + res, ok := ls.At(0).Attributes().Get("price") + assert.True(t, ok) + assert.Equal(t, pcommon.NewValueDouble(49.5), res) +} + +func TestWindowTumblingCount(t *testing.T) { + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + query := "select count(price) window tumbling 30 ;" + var ls plog.LogRecordSlice + + visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + in <- generateTestLogs() + ls = <-out + res, ok := ls.At(0).Attributes().Get("price") + assert.True(t, ok) + assert.Equal(t, pcommon.NewValueDouble(100.0), res) +} + +func TestWindowTumblingSum(t *testing.T) { + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + query := "select sum(price) window tumbling 30 ;" + var ls plog.LogRecordSlice + + visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + in <- generateTestLogs() + ls = <-out + res, ok := ls.At(0).Attributes().Get("price") + assert.True(t, ok) + assert.Equal(t, pcommon.NewValueDouble(4950.0), res) +} + +func TestWindowTumblingMin(t *testing.T) { + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + query := "select min(price) window tumbling 30 ;" + var ls plog.LogRecordSlice + + visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + in <- generateTestLogs() + ls = <-out + res, ok := ls.At(0).Attributes().Get("price") + assert.True(t, ok) + assert.Equal(t, pcommon.NewValueDouble(0.0), res) +} + +func TestWindowTumblingMax(t *testing.T) { + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + query := "select max(price) window tumbling 30 ;" + var ls plog.LogRecordSlice + + visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + in <- generateTestLogs() + ls = <-out + res, ok := ls.At(0).Attributes().Get("price") + assert.True(t, ok) + assert.Equal(t, pcommon.NewValueDouble(99.0), res) +} + +func TestAvgContext_K_MIN(t *testing.T) { + ls := generateTestLogs() + res, err := min(ls, "price") + assert.Nil(t, err) + assert.Equal(t, 0.0, res) + +} + +func TestAvgContext_K_MAX(t *testing.T) { + ls := generateTestLogs() + res, err := max(ls, "price") + assert.Nil(t, err) + assert.Equal(t, 99.0, res) +} + +func TestAvgContext_K_SUM(t *testing.T) { + ls := generateTestLogs() + res, err := sum(ls, "price") + assert.Nil(t, err) + assert.Equal(t, 4950.0, res) +} + +func TestAvgContext_K_COUNT(t *testing.T) { + ls := generateTestLogs() + count := count(ls) + assert.Equal(t, 100, count) +} + +func TestWindowTumblingGroupBy(t *testing.T) { + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + query := "select name, sum(price) window tumbling 30 group by name;" + + visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + in <- generateGroupByTestLogs() + ls := <-out + assert.Equal(t, ls.Len(), 10) +} + +func TestWindowTumblingFlow(t *testing.T) { + t.Skip() + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + query := "select avg(price) window tumbling 3000 ;" + + visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + var wg sync.WaitGroup + + wg.Add(1) + go func() { + for { + in <- generateRandomSplittedTestLogs() + <-time.After(500 * time.Millisecond) + } + }() + + go func() { + for { + ls := <-out + ls.At(0).Attributes().Range(func(k string, v pcommon.Value) bool { + fmt.Printf("%q: %q ", k, v.AsString()) + return true + }) + fmt.Print("\n") + } + }() + + wg.Wait() +} + +func TestWindowTumblingGroupByFlow(t *testing.T) { + t.Skip() + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + query := "select name, avg(price) window tumbling 3000 group by name;" + + visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + var wg sync.WaitGroup + + wg.Add(1) + go func() { + for { + in <- generateGroupByTestLogs() + <-time.After(500 * time.Millisecond) + } + }() + + go func() { + for { + ls := <-out + for i := 0; i < ls.Len(); i++ { + ls.At(i).Attributes().Range(func(k string, v pcommon.Value) bool { + fmt.Printf("%q: %q ", k, v.AsString()) + return true + }) + fmt.Print("\n") + } + } + }() + + wg.Wait() +} + +func generateRandomSplittedTestLogs() plog.LogRecordSlice { + + ld := plog.NewLogs() + sc := ld.ResourceLogs().AppendEmpty().ScopeLogs().AppendEmpty() + + r := rand.Intn(100) + + for i := 0; i < r; i++ { + record := sc.LogRecords().AppendEmpty() + record.Attributes().InsertString("name", "Test name "+strconv.Itoa(i)) + record.Attributes().InsertBool("IsAlive", i%2 == 0) + record.Attributes().InsertInt("price", int64(i)) + } + + return ld.ResourceLogs().At(0).ScopeLogs().At(0).LogRecords() +} + +func generateGroupByTestLogs() plog.LogRecordSlice { + ld := plog.NewLogs() + sc := ld.ResourceLogs().AppendEmpty().ScopeLogs().AppendEmpty() + + for i := 0; i < 100; i++ { + record := sc.LogRecords().AppendEmpty() + name := strconv.Itoa(i) + record.Attributes().InsertString("name", fmt.Sprint("Test name ", string(name[0]))) + record.Attributes().InsertBool("IsAlive", i%2 == 0) + record.Attributes().InsertInt("price", int64(i)) + } + + return ld.ResourceLogs().At(0).ScopeLogs().At(0).LogRecords() +} diff --git a/processor/stream_processor/parser/sql_stream_visitor.go b/processor/stream_processor/parser/sql_stream_visitor.go index 3d91f1eb9aa1..12724b212493 100644 --- a/processor/stream_processor/parser/sql_stream_visitor.go +++ b/processor/stream_processor/parser/sql_stream_visitor.go @@ -218,9 +218,13 @@ func (v *SqlStreamVisitor) VisitGroupBy(ctx *GroupByContext) interface{} { } func (v *SqlStreamVisitor) VisitSelectColumns(ctx *SelectColumnsContext) interface{} { + for _, column := range ctx.AllColumn() { v.logRecords.RemoveIf(func(record plog.LogRecord) bool { - _, ok := record.Attributes().Get(column.GetText()) + // apply scalar function + v.currentRecord = record + identifier := getColumnIdentifier(column) + _, ok := record.Attributes().Get(identifier) if ok { // Remove attributes which are not listed in value columns statement @@ -236,9 +240,11 @@ func (v *SqlStreamVisitor) VisitSelectColumns(ctx *SelectColumnsContext) interfa for _, removedKey := range removed { record.Attributes().Remove(removedKey) } + column.Accept(v) return false } + v.logger.Error("field is missing", zap.String("field", column.GetText())) return true }) @@ -248,6 +254,20 @@ func (v *SqlStreamVisitor) VisitSelectColumns(ctx *SelectColumnsContext) interfa } +func (v *SqlStreamVisitor) VisitIdentifierCol(ctx *IdentifierColContext) interface{} { + return nil +} + +func (v *SqlStreamVisitor) VisitFunctionCol(ctx *FunctionColContext) interface{} { + if ctx.K_LOWER() != nil { + return lower(v.currentRecord, ctx.IDENTIFIER().GetText()) + } + if ctx.K_UPPER() != nil { + return upper(v.currentRecord, ctx.IDENTIFIER().GetText()) + } + return nil +} + func (v *SqlStreamVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { var err error //if WHERE statement missed @@ -257,6 +277,7 @@ func (v *SqlStreamVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { v.logRecords.RemoveIf(func(record plog.LogRecord) bool { v.currentRecord = record + switch res := ctx.Expr().Accept(v).(type) { case error: err = res @@ -264,6 +285,7 @@ func (v *SqlStreamVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { case bool: return !res + } return false }) @@ -299,7 +321,6 @@ func (v *SqlStreamVisitor) VisitSelectAVG(ctx *SelectAVGContext) interface{} { func (v *SqlStreamVisitor) getSimpleAggregatedValue(ctx *SelectAVGContext, fieldName string, ls plog.LogRecordSlice) (plog.LogRecord, error) { - //fieldName := ctx.Column(1).GetText() resLs := plog.NewLogRecordSlice() aggrRecord := resLs.AppendEmpty() var res float64 @@ -333,7 +354,7 @@ func (v *SqlStreamVisitor) VisitSelectStar(ctx *SelectStarContext) interface{} { } func (v *SqlStreamVisitor) VisitColumn(ctx *ColumnContext) interface{} { - return v.VisitChildren(ctx) + return nil } func (v *SqlStreamVisitor) VisitSimpleCondition(ctx *SimpleConditionContext) interface{} { diff --git a/processor/stream_processor/parser/sql_visitor.go b/processor/stream_processor/parser/sql_visitor.go index 237c39f1d276..89a30e851a6f 100644 --- a/processor/stream_processor/parser/sql_visitor.go +++ b/processor/stream_processor/parser/sql_visitor.go @@ -32,8 +32,11 @@ type SqlVisitor interface { // Visit a parse tree produced by SqlParser#selectAVG. VisitSelectAVG(ctx *SelectAVGContext) interface{} - // Visit a parse tree produced by SqlParser#column. - VisitColumn(ctx *ColumnContext) interface{} + // Visit a parse tree produced by SqlParser#identifierCol. + VisitIdentifierCol(ctx *IdentifierColContext) interface{} + + // Visit a parse tree produced by SqlParser#functionCol. + VisitFunctionCol(ctx *FunctionColContext) interface{} // Visit a parse tree produced by SqlParser#whereStmt. VisitWhereStmt(ctx *WhereStmtContext) interface{} diff --git a/processor/stream_processor/parser/visitor_utils.go b/processor/stream_processor/parser/visitor_utils.go index baf60d10cc1a..263ae7b67db0 100644 --- a/processor/stream_processor/parser/visitor_utils.go +++ b/processor/stream_processor/parser/visitor_utils.go @@ -7,15 +7,6 @@ import ( "strings" ) -func KeyExists(key string, resultColumns []IColumnContext) bool { - for _, col := range resultColumns { - if key == col.GetText() { - return true - } - } - return false -} - func compareString(ctx *SimpleExpressionContext, fieldVal, comparisonVal string) bool { switch ctx.ComparisonOperator().GetStart().GetTokenType() { case SqlParserK_EQUAL: @@ -178,3 +169,50 @@ func avg(ls plog.LogRecordSlice, fieldName string) (float64, error) { func count(ls plog.LogRecordSlice) int { return ls.Len() } + +func lower(record plog.LogRecord, fieldName string) error { + val, ok := record.Attributes().Get(fieldName) + if !ok { + return fmt.Errorf("field %q missed", fieldName) + } + record.Attributes().UpdateString(fieldName, strings.ToLower(val.AsString())) + return nil +} + +func upper(record plog.LogRecord, fieldName string) error { + val, ok := record.Attributes().Get(fieldName) + if !ok { + return fmt.Errorf("field %q missed", fieldName) + } + record.Attributes().UpdateString(fieldName, strings.ToUpper(val.AsString())) + return nil +} + +func getColumnIdentifier(column IColumnContext) string { + switch col := column.GetRuleContext().(type) { + case *FunctionColContext: + return col.IDENTIFIER().GetText() + case *IdentifierColContext: + return col.IDENTIFIER().GetText() + default: + return "" + } +} + +func KeyExists(key string, resultColumns []IColumnContext) bool { + for _, col := range resultColumns { + var id string + switch col := col.GetRuleContext().(type) { + case *FunctionColContext: + id = col.IDENTIFIER().GetText() + case *IdentifierColContext: + id = col.IDENTIFIER().GetText() + default: + return false + } + if key == id { + return true + } + } + return false +} From 21c7e1a5a253d63077da4a5213a40642285f6116 Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Tue, 16 Aug 2022 15:22:31 +0300 Subject: [PATCH 18/31] go.mod --- go.mod | 202 ++++++++++++++++++++++++++++----------------------------- go.sum | 90 +++++++++++++++++++++++++ 2 files changed, 191 insertions(+), 101 deletions(-) diff --git a/go.mod b/go.mod index 2a7012bc7be9..0fd6b6731991 100644 --- a/go.mod +++ b/go.mod @@ -24,22 +24,22 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/exporter/honeycombexporter v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/humioexporter v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/influxdbexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerexporter v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerthrifthttpexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/logzioexporter v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/lokiexporter v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/mezmoexporter v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/opencensusexporter v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/parquetexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sapmexporter v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sentryexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/signalfxexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/signalfxexporter v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/skywalkingexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/splunkhecexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/splunkhecexporter v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sumologicexporter v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/tanzuobservabilityexporter v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/tencentcloudlogserviceexporter v0.53.0 @@ -58,16 +58,16 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/extension/oidcauthextension v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextension v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/extension/sigv4authextension v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatorateprocessor v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbyattrsprocessor v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sattributesprocessor v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricsgenerationprocessor v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricstransformprocessor v0.53.0 @@ -81,14 +81,14 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver v0.58.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsfirehosereceiver v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/bigipreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/carbonreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/carbonreceiver v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/cloudfoundryreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/collectdreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/collectdreceiver v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/couchdbreceiver v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dockerstatsreceiver v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dotnetdiagnosticsreceiver v0.53.0 @@ -101,7 +101,7 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/iisreceiver v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/influxdbreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/journaldreceiver v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver v0.53.0 @@ -115,11 +115,11 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mysqlreceiver v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nginxreceiver v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nsxtreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusreceiver v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/podmanreceiver v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/postgresqlreceiver v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusexecreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/rabbitmqreceiver v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/receivercreator v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver v0.53.0 @@ -139,26 +139,26 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/receiver/wavefrontreceiver v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/windowseventlogreceiver v0.53.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/windowsperfcountersreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zookeeperreceiver v0.53.0 - github.com/prometheus/prometheus v0.36.0 - github.com/stretchr/testify v1.7.2 - go.opentelemetry.io/collector v0.53.0 - go.opentelemetry.io/collector/pdata v0.53.0 + github.com/prometheus/prometheus v0.36.2 + github.com/stretchr/testify v1.8.0 + go.opentelemetry.io/collector v0.55.1-0.20220711160057-6133c820fd50 + go.opentelemetry.io/collector/pdata v0.55.1-0.20220711160057-6133c820fd50 go.uber.org/multierr v1.8.0 go.uber.org/zap v1.21.0 - golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a + golang.org/x/sys v0.0.0-20220624220833-87e55d714810 ) require ( bitbucket.org/atlassian/go-asap/v2 v2.6.0 // indirect - cloud.google.com/go v0.102.0 // indirect - cloud.google.com/go/compute v1.6.1 // indirect + cloud.google.com/go v0.102.1 // indirect + cloud.google.com/go/compute v1.7.0 // indirect cloud.google.com/go/iam v0.3.0 // indirect cloud.google.com/go/logging v1.4.2 // indirect cloud.google.com/go/monitoring v1.5.0 // indirect - cloud.google.com/go/pubsub v1.22.2 // indirect - cloud.google.com/go/spanner v1.33.0 // indirect + cloud.google.com/go/pubsub v1.23.1 // indirect + cloud.google.com/go/spanner v1.34.1 // indirect cloud.google.com/go/trace v1.2.0 // indirect code.cloudfoundry.org/clock v1.0.0 // indirect code.cloudfoundry.org/go-diodes v0.0.0-20211115184647-b584dd5df32c // indirect @@ -176,33 +176,33 @@ require ( github.com/Azure/go-autorest/logger v0.2.1 // indirect github.com/Azure/go-autorest/tracing v0.6.0 // indirect github.com/ClickHouse/clickhouse-go v1.5.4 // indirect - github.com/DataDog/agent-payload/v5 v5.0.22 // indirect - github.com/DataDog/datadog-agent/pkg/quantile v0.36.0-rc.4.0.20220426134022-b55bccd5073f // indirect + github.com/DataDog/agent-payload/v5 v5.0.23 // indirect + github.com/DataDog/datadog-agent/pkg/quantile v0.38.0-rc.5 // indirect github.com/DataDog/datadog-agent/pkg/trace/exportable v0.0.0-20201016145401-4646cf596b02 // indirect github.com/DataDog/datadog-agent/pkg/util/log v0.0.0-20201009092105-58e18918b2db // indirect github.com/DataDog/datadog-go v4.8.2+incompatible // indirect github.com/DataDog/sketches-go v1.4.1 // indirect github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.32.1 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.30.2-0.20220512190557-875976f87023 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.6.1 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.30.1 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.32.3 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.32.3 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.8.3 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.32.3 // indirect github.com/Microsoft/go-winio v0.5.2 // indirect github.com/ReneKroon/ttlcache/v2 v2.11.0 // indirect github.com/SAP/go-hdb v0.105.5 // indirect github.com/SermoDigital/jose v0.9.2-0.20161205224733-f6df55f235c2 // indirect - github.com/Shopify/sarama v1.34.0 // indirect + github.com/Shopify/sarama v1.34.1 // indirect github.com/Showmax/go-fqdn v1.0.0 // indirect github.com/StackExchange/wmi v1.2.1 // indirect github.com/VividCortex/gohistogram v1.0.0 // indirect github.com/alecthomas/participle/v2 v2.0.0-alpha9 // indirect github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect - github.com/aliyun/aliyun-log-go-sdk v0.1.36 // indirect + github.com/aliyun/aliyun-log-go-sdk v0.1.37 // indirect github.com/antonmedv/expr v1.9.0 // indirect github.com/apache/thrift v0.16.0 // indirect github.com/armon/go-metrics v0.3.10 // indirect github.com/avast/retry-go v3.0.0+incompatible // indirect - github.com/aws/aws-sdk-go v1.44.28 // indirect + github.com/aws/aws-sdk-go v1.44.54 // indirect github.com/aws/aws-sdk-go-v2 v1.9.2 // indirect github.com/aws/aws-sdk-go-v2/config v1.8.3 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.4.3 // indirect @@ -240,11 +240,11 @@ require ( github.com/dgraph-io/ristretto v0.1.0 // indirect github.com/digitalocean/godo v1.80.0 // indirect github.com/docker/distribution v2.8.1+incompatible // indirect - github.com/docker/docker v20.10.16+incompatible // indirect + github.com/docker/docker v20.10.17+incompatible // indirect github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11 // indirect github.com/docker/go-units v0.4.0 // indirect github.com/dustin/go-humanize v1.0.0 // indirect - github.com/dynatrace-oss/dynatrace-metric-utils-go v0.3.0 // indirect + github.com/dynatrace-oss/dynatrace-metric-utils-go v0.5.0 // indirect github.com/eapache/go-resiliency v1.2.0 // indirect github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect github.com/eapache/queue v1.1.0 // indirect @@ -298,7 +298,7 @@ require ( github.com/grobie/gomemcache v0.0.0-20180201122607-1f779c573665 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect - github.com/hashicorp/consul/api v1.12.0 // indirect + github.com/hashicorp/consul/api v1.13.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-hclog v1.2.1 // indirect @@ -307,13 +307,13 @@ require ( github.com/hashicorp/go-retryablehttp v0.7.1 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/go-uuid v1.0.2 // indirect - github.com/hashicorp/go-version v1.5.0 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/memberlist v0.3.1 // indirect github.com/hashicorp/serf v0.9.7 // indirect github.com/hetznercloud/hcloud-go v1.33.2 // indirect - github.com/honeycombio/libhoney-go v1.15.8 // indirect + github.com/honeycombio/libhoney-go v1.16.0 // indirect github.com/iancoleman/strcase v0.2.0 // indirect github.com/imdario/mergo v0.3.12 // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect @@ -322,7 +322,7 @@ require ( github.com/influxdata/influxdb-observability/influx2otel v0.2.21-0.20220517160208-05f925d616de // indirect github.com/influxdata/influxdb-observability/otel2influx v0.2.21-0.20220517160208-05f925d616de // indirect github.com/influxdata/line-protocol/v2 v2.2.1 // indirect - github.com/ionos-cloud/sdk-go/v6 v6.0.5851 // indirect + github.com/ionos-cloud/sdk-go/v6 v6.1.0 // indirect github.com/jackc/chunkreader/v2 v2.0.1 // indirect github.com/jackc/pgconn v1.12.1 // indirect github.com/jackc/pgio v1.0.0 // indirect @@ -331,7 +331,7 @@ require ( github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect github.com/jackc/pgtype v1.11.0 // indirect github.com/jackc/pgx/v4 v4.16.1 // indirect - github.com/jaegertracing/jaeger v1.35.1 // indirect + github.com/jaegertracing/jaeger v1.36.0 // indirect github.com/jcmturner/aescts/v2 v2.0.0 // indirect github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect github.com/jcmturner/gofork v1.0.0 // indirect @@ -343,8 +343,8 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/karrick/godirwalk v1.16.1 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect - github.com/klauspost/compress v1.15.6 // indirect - github.com/knadh/koanf v1.4.1 // indirect + github.com/klauspost/compress v1.15.8 // indirect + github.com/knadh/koanf v1.4.2 // indirect github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b // indirect github.com/leoluk/perflib_exporter v0.1.0 // indirect github.com/lib/pq v1.10.6 // indirect @@ -378,31 +378,31 @@ require ( github.com/nginxinc/nginx-prometheus-exporter v0.8.1-0.20201110005315-f5a5f8086c19 // indirect github.com/observiq/ctimefmt v1.0.0 // indirect github.com/olivere/elastic v6.2.37+incompatible // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/awsutil v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/containerinsight v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/cwlogs v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/k8s v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/metrics v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/proxy v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/docker v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/kubelet v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/metadataproviders v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/sharedcomponent v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/splunk v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchperresourceattr v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/experimentalmetricmetadata v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/opencensus v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/signalfx v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.53.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters v0.53.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/awsutil v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/containerinsight v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/cwlogs v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/k8s v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/metrics v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/proxy v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/docker v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/kubelet v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/metadataproviders v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/sharedcomponent v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/splunk v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchperresourceattr v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchpersignal v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/experimentalmetricmetadata v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/opencensus v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/signalfx v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters v0.55.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.0.2 // indirect github.com/opencontainers/runc v1.1.0 // indirect @@ -414,8 +414,8 @@ require ( github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/openzipkin/zipkin-go v0.4.0 // indirect github.com/patrickmn/go-cache v2.1.0+incompatible // indirect - github.com/pelletier/go-toml v1.9.4 // indirect - github.com/pelletier/go-toml/v2 v2.0.0-beta.8 // indirect + github.com/pelletier/go-toml v1.9.5 // indirect + github.com/pelletier/go-toml/v2 v2.0.1 // indirect github.com/philhofer/fwd v1.1.1 // indirect github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/pierrec/lz4/v4 v4.1.14 // indirect @@ -425,7 +425,7 @@ require ( github.com/pquerna/cachecontrol v0.1.0 // indirect github.com/prometheus/client_golang v1.12.2 // indirect github.com/prometheus/client_model v0.2.0 // indirect - github.com/prometheus/common v0.34.0 // indirect + github.com/prometheus/common v0.37.0 // indirect github.com/prometheus/common/sigv4 v0.1.0 // indirect github.com/prometheus/procfs v0.7.3 // indirect github.com/prometheus/statsd_exporter v0.21.0 // indirect @@ -434,25 +434,25 @@ require ( github.com/santhosh-tekuri/jsonschema v1.2.4 // indirect github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9 // indirect github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921 // indirect - github.com/shirou/gopsutil/v3 v3.22.5 // indirect + github.com/shirou/gopsutil/v3 v3.22.6 // indirect github.com/signalfx/com_signalfx_metrics_protobuf v0.0.3 // indirect github.com/signalfx/gohistogram v0.0.0-20160107210732-1ccfd2ff5083 // indirect github.com/signalfx/golib/v3 v3.3.13 // indirect - github.com/signalfx/sapm-proto v0.9.0 // indirect + github.com/signalfx/sapm-proto v0.11.0 // indirect github.com/signalfx/signalfx-agent/pkg/apm v0.0.0-20201202163743-65b4fa925fc8 // indirect github.com/sirupsen/logrus v1.8.1 // indirect github.com/soheilhy/cmux v0.1.5 // indirect github.com/spf13/afero v1.8.2 // indirect github.com/spf13/cast v1.5.0 // indirect - github.com/spf13/cobra v1.4.0 // indirect + github.com/spf13/cobra v1.5.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.11.0 // indirect - github.com/stretchr/objx v0.3.0 // indirect - github.com/subosito/gotenv v1.2.0 // indirect + github.com/spf13/viper v1.12.0 // indirect + github.com/stretchr/objx v0.4.0 // indirect + github.com/subosito/gotenv v1.3.0 // indirect github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect github.com/syndtr/goleveldb v1.0.0 // indirect - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.413 // indirect + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.440 // indirect github.com/tg123/go-htpasswd v1.2.0 // indirect github.com/tidwall/gjson v1.12.1 // indirect github.com/tidwall/match v1.1.1 // indirect @@ -484,33 +484,33 @@ require ( go.mongodb.org/atlas v0.16.0 // indirect go.mongodb.org/mongo-driver v1.9.1 // indirect go.opencensus.io v0.23.0 // indirect - go.opentelemetry.io/collector/semconv v0.53.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0 // indirect - go.opentelemetry.io/contrib/zpages v0.32.0 // indirect - go.opentelemetry.io/otel v1.7.0 // indirect - go.opentelemetry.io/otel/exporters/prometheus v0.30.0 // indirect - go.opentelemetry.io/otel/metric v0.30.0 // indirect - go.opentelemetry.io/otel/sdk v1.7.0 // indirect - go.opentelemetry.io/otel/sdk/metric v0.30.0 // indirect - go.opentelemetry.io/otel/trace v1.7.0 // indirect + go.opentelemetry.io/collector/semconv v0.55.1-0.20220711160057-6133c820fd50 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.33.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.33.0 // indirect + go.opentelemetry.io/contrib/zpages v0.33.0 // indirect + go.opentelemetry.io/otel v1.8.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.31.0 // indirect + go.opentelemetry.io/otel/metric v0.31.0 // indirect + go.opentelemetry.io/otel/sdk v1.8.0 // indirect + go.opentelemetry.io/otel/sdk/metric v0.31.0 // indirect + go.opentelemetry.io/otel/trace v1.8.0 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/goleak v1.1.12 // indirect golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122 // indirect golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect - golang.org/x/net v0.0.0-20220526153639-5463443f8c37 // indirect - golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401 // indirect - golang.org/x/sync v0.0.0-20220513210516-0976fa681c29 // indirect + golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e // indirect + golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2 // indirect + golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f // indirect golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect golang.org/x/text v0.3.7 // indirect - golang.org/x/time v0.0.0-20220411224347-583f2d630306 // indirect + golang.org/x/time v0.0.0-20220609170525-579cf78fd858 // indirect golang.org/x/tools v0.1.10 // indirect - golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df // indirect + golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect gonum.org/v1/gonum v0.11.0 // indirect - google.golang.org/api v0.82.0 // indirect + google.golang.org/api v0.87.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20220527130721-00d5c0f3be58 // indirect - google.golang.org/grpc v1.47.0 // indirect + google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f // indirect + google.golang.org/grpc v1.48.0 // indirect google.golang.org/protobuf v1.28.0 // indirect gopkg.in/DataDog/dd-trace-go.v1 v1.38.1 // indirect gopkg.in/alexcesaro/statsd.v2 v2.0.0 // indirect @@ -521,9 +521,9 @@ require ( gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gopkg.in/zorkian/go-datadog-api.v2 v2.30.0 // indirect - k8s.io/api v0.24.1 // indirect - k8s.io/apimachinery v0.24.1 // indirect - k8s.io/client-go v0.24.1 // indirect + k8s.io/api v0.24.3 // indirect + k8s.io/apimachinery v0.24.3 // indirect + k8s.io/client-go v0.24.3 // indirect k8s.io/klog v1.0.0 // indirect k8s.io/klog/v2 v2.60.1 // indirect k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42 // indirect diff --git a/go.sum b/go.sum index 300985d6554a..6763c51044fd 100644 --- a/go.sum +++ b/go.sum @@ -38,6 +38,7 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.101.1/go.mod h1:55HwjsGW4CHD3JrNuMdZtSDsgTs0CuCB/bBTugD+7AA= cloud.google.com/go v0.102.0 h1:DAq3r8y4mDgyB/ZPJ9v/5VJNqjgJAxTn6ZYLlUywOu8= cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -50,6 +51,7 @@ cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6m cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= cloud.google.com/go/compute v1.6.1 h1:2sMmt8prCn7DPaG4Pmh0N3Inmc8cT8ae5k1M6VJ9Wqc= cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= @@ -69,8 +71,10 @@ cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjp cloud.google.com/go/pubsub v1.4.0/go.mod h1:LFrqilwgdw4X2cJS9ALgzYmMu+ULyrUN6IHV3CPK4TM= cloud.google.com/go/pubsub v1.22.2 h1:e6A4rhtMX4opff/jDWApl4HwLtsCdV9VULVfpFRp6eo= cloud.google.com/go/pubsub v1.22.2/go.mod h1:LBHGrtgM7+SGKCDKQu2pKIRtGwbZyJvRDkMk0594xdU= +cloud.google.com/go/pubsub v1.23.1/go.mod h1:ttM6nEGYK/2CnB36ndNySU3ZxPwpBk8cXM6+iOlxH9U= cloud.google.com/go/spanner v1.33.0 h1:YlmTsdo9i8XQuFVYOFAMVtjQyi6Ipszpixlpb4X4yYw= cloud.google.com/go/spanner v1.33.0/go.mod h1:Gun/bT/uv5FTzD7suMOjSdd1OIowJjw5o6A+TEzrzk0= +cloud.google.com/go/spanner v1.34.1/go.mod h1:oVJCF8EBcPcAdjkQYTErfxZrr+o/JIwDebhFveE7CrU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= @@ -148,9 +152,11 @@ github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHg github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/agent-payload/v5 v5.0.22 h1:XaMYtdvdjRWLwvoQhZM3Se0YmOeMYgEvdKVLwPsxEaU= github.com/DataDog/agent-payload/v5 v5.0.22/go.mod h1:2gapp8p4Vd548JI+axD8kCExklNvVI6AMF5/+IfN/4g= +github.com/DataDog/agent-payload/v5 v5.0.23/go.mod h1:2gapp8p4Vd548JI+axD8kCExklNvVI6AMF5/+IfN/4g= github.com/DataDog/datadog-agent/pkg/obfuscate v0.0.0-20211129110424-6491aa3bf583/go.mod h1:EP9f4GqaDJyP1F5jTNMtzdIpw3JpNs3rMSJOnYywCiw= github.com/DataDog/datadog-agent/pkg/quantile v0.36.0-rc.4.0.20220426134022-b55bccd5073f h1:6TRm46/qdRBGcm9MJz3NRpk8ZnKhNyVTojNvgkCQkzc= github.com/DataDog/datadog-agent/pkg/quantile v0.36.0-rc.4.0.20220426134022-b55bccd5073f/go.mod h1:jVxOyv395Gf9weXNdmSF6Tp9k/DEc7u+nqYWudznQtQ= +github.com/DataDog/datadog-agent/pkg/quantile v0.38.0-rc.5/go.mod h1:jVxOyv395Gf9weXNdmSF6Tp9k/DEc7u+nqYWudznQtQ= github.com/DataDog/datadog-agent/pkg/trace/exportable v0.0.0-20201016145401-4646cf596b02 h1:N2BRKjJ/c+ipDwt5b+ijqEc2EsmK3zXq2lNeIPnSwMI= github.com/DataDog/datadog-agent/pkg/trace/exportable v0.0.0-20201016145401-4646cf596b02/go.mod h1:EalMiS87Guu6PkLdxz7gmWqi+dRs9sjYLTOyTrM/aVU= github.com/DataDog/datadog-agent/pkg/util/log v0.0.0-20201009091607-ce4e57cdf8f4/go.mod h1:cRy7lwapA3jcjnX74kU6NFkXaRGQyB0l/QZA0IwYGEQ= @@ -170,16 +176,21 @@ github.com/DataDog/zstd v1.3.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962 h1:KeNholpO2xKjgaaSyd+DyQRrsQjhbSeS7qe4nEw8aQw= github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962/go.mod h1:kC29dT1vFpj7py2OvG1khBdQpo3kInWP+6QipLbdngo= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.32.1 h1:v2ey6AUQFjj6vPMdXNL9K1R1/4V20qPBuL3os831jvw= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.32.1/go.mod h1:s7Gpwj0tk7XnVCm4BQEmx/mbS36SuTCY/vMB2SNxe8o= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.32.3/go.mod h1:s7Gpwj0tk7XnVCm4BQEmx/mbS36SuTCY/vMB2SNxe8o= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.30.2-0.20220512190557-875976f87023 h1:a5qaC/K40oknHppvTFqQZkLMY7XZSvWyxcG/T6W6DF8= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.30.2-0.20220512190557-875976f87023/go.mod h1:kXt5P2nDYWk6ltkQi+YmcGCNMwS54nnYfLm8jrU0APk= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.32.3/go.mod h1:CAeDUmnMG3urxkSYOIbreCYRsiAIo4pqprz8WZevx14= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.6.1 h1:LNl8Tg6N6qChoiM6lKC1Z44Z+CkPAdYx45L/lJDgThs= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.6.1/go.mod h1:ZFRHg4zuQuc6sQyx16A53fB7kxPvPguSeE8GFVpT6rQ= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.8.3/go.mod h1:3+qm+VCJbVmQ9uscVz+8h1rRkJEy9ZNFGgpT1XB9mPg= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.30.1 h1:JftlZfpIvptFTzSD/BXuoK9i0nT3D1GSz1EEBr+jjuM= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.30.1/go.mod h1:j+FS9VBW3mwtHBmm9KOJEy5Tq68fCp7fE/R9bV/flIM= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.32.3/go.mod h1:9a+Opaevo9fybhUvQkEG7fR6Zk7pYrW/s9NC4fODFIQ= github.com/HdrHistogram/hdrhistogram-go v0.9.0/go.mod h1:nxrse8/Tzg2tg3DZcZjm6qEclQKK70g0KxO61gFFZD4= github.com/HdrHistogram/hdrhistogram-go v1.0.1/go.mod h1:BWJ+nMSHY3L41Zj7CA3uXnloDp7xxV0YvstAE7nKTaM= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= @@ -237,11 +248,13 @@ github.com/Shopify/sarama v1.31.0/go.mod h1:BeW3gXRc/CxgAsrSly2RE9nIXUfC9ezb7QHB github.com/Shopify/sarama v1.32.0/go.mod h1:+EmJJKZWVT/faR9RcOxJerP+LId4iWdQPBGLy1Y1Njs= github.com/Shopify/sarama v1.34.0 h1:j4zTaFHFnfvuV2fdLZyXqIg0Tu4Mzl9f064Z5/H+o4o= github.com/Shopify/sarama v1.34.0/go.mod h1:V2ceE9UupUf4/oP1Z38SI49fAnD0/MtkqDDHvolIeeQ= +github.com/Shopify/sarama v1.34.1/go.mod h1:NZSNswsnStpq8TUdFaqnpXm2Do6KRzTIjdBdVlL1YRM= github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/Shopify/toxiproxy/v2 v2.1.6-0.20210914104332-15ea381dcdae/go.mod h1:/cvHQkZ1fst0EmZnA5dFtiQdWCNCFYzb+uE2vqVgvx0= github.com/Shopify/toxiproxy/v2 v2.3.0 h1:62YkpiP4bzdhKMH+6uC5E95y608k3zDwdzuBMsnn3uQ= github.com/Shopify/toxiproxy/v2 v2.3.0/go.mod h1:KvQTtB6RjCJY4zqNJn7C7JDFgsG5uoHYDirfUfpIm0c= +github.com/Shopify/toxiproxy/v2 v2.4.0/go.mod h1:3ilnjng821bkozDRxNoo64oI/DKqM+rOyJzb564+bvg= github.com/Showmax/go-fqdn v1.0.0 h1:0rG5IbmVliNT5O19Mfuvna9LL7zlHyRfsSvBPZmF9tM= github.com/Showmax/go-fqdn v1.0.0/go.mod h1:SfrFBzmDCtCGrnHhoDjuvFnKsWjEQX/Q9ARZvOrJAko= github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= @@ -266,6 +279,7 @@ github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:C github.com/alexflint/go-filemutex v1.1.0/go.mod h1:7P4iRhttt/nUvUOrYIhcpMzv2G6CY9UnI16Z+UJqRyk= github.com/aliyun/aliyun-log-go-sdk v0.1.36 h1:ZWhKl1tBOvRn3/sIrFy8gMX+Hfq2u8mee1DeU96jqjc= github.com/aliyun/aliyun-log-go-sdk v0.1.36/go.mod h1:1QQ59pEJiVVXqKgbHcU6FWIgxT5RKBt+CT8AiQ2bEts= +github.com/aliyun/aliyun-log-go-sdk v0.1.37/go.mod h1:1QQ59pEJiVVXqKgbHcU6FWIgxT5RKBt+CT8AiQ2bEts= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= @@ -308,6 +322,7 @@ github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2z github.com/aws/aws-sdk-go v1.38.68/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.44.28 h1:h/OAqEqY18wq//v6h4GNPMmCkxuzSDrWuGyrvSiRqf4= github.com/aws/aws-sdk-go v1.44.28/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.54/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.0.0/go.mod h1:smfAbmpW+tcRVuNUjo3MOArSZmW72t62rkCzc2i0TWM= github.com/aws/aws-sdk-go-v2 v1.7.0/go.mod h1:tb9wi5s61kTDA5qCkcDbt3KRVV74GGslQkl/DRdX/P4= @@ -568,6 +583,7 @@ github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwc github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -616,6 +632,7 @@ github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r github.com/docker/docker v20.10.12+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.16+incompatible h1:2Db6ZR/+FUR3hqPMwnogOPHFn405crbpxvWzKovETOQ= github.com/docker/docker v20.10.16+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.17+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11 h1:IPrmumsT9t5BS7XcPhgsCTlkWbYg80SEXUzDpReaU6Y= @@ -637,6 +654,7 @@ github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4 github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dynatrace-oss/dynatrace-metric-utils-go v0.3.0 h1:q2Ayh9s6Cr75bS5URiOUAoyFXemgKQaBJphbhAaJHCY= github.com/dynatrace-oss/dynatrace-metric-utils-go v0.3.0/go.mod h1:qw0E9EJ0PnSlhWawDNuqE0zhc1hqOBUCFIAj3dd9DNw= +github.com/dynatrace-oss/dynatrace-metric-utils-go v0.5.0/go.mod h1:PseHFo8Leko7J4A/TfZ6kkHdkzKBLUta6hRZR/OEbbc= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-resiliency v1.2.0 h1:v7g92e/KSN71Rq7vSThKaWIq68fL4YHvWyiUKorFR1Q= github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= @@ -1092,6 +1110,8 @@ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= @@ -1151,12 +1171,14 @@ github.com/hashicorp/consul/api v1.8.1/go.mod h1:sDjTOq0yUyv5G4h+BqSea7Fn6BU+Xbo github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/api v1.12.0 h1:k3y1FYv6nuKyNTqj6w9gXOx5r5CfLj/k/euUeBXj1OY= github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= +github.com/hashicorp/consul/api v1.13.1/go.mod h1:+1VcOos0TVdQFqXxphG4zmGcwQB4KVGkp1maPqnkDpE= github.com/hashicorp/consul/internal v0.1.0/go.mod h1:zi9bMZYbiPHyAjgBWo7kCUcy5l2NrTdrkVupCc7Oo6c= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.7.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM= github.com/hashicorp/consul/sdk v0.8.0 h1:OJtKBtEjboEZvG6AOUdh4Z1Zbyu0WcxQ0qatRrZHTVU= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= +github.com/hashicorp/consul/sdk v0.10.0/go.mod h1:yPkX5Q6CsxTFMjQQDJwzeNmUUF5NUGGbrDsv9wTb8cw= github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= @@ -1213,6 +1235,7 @@ github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09 github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.5.0 h1:O293SZ2Eg+AAYijkVK3jR786Am1bhDEh2GHT0tIVE5E= github.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -1247,6 +1270,7 @@ github.com/hetznercloud/hcloud-go v1.33.2 h1:ptWKVYLW7YtjXzsqTFKFxwpVo3iM9UMkVPB github.com/hetznercloud/hcloud-go v1.33.2/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME= github.com/honeycombio/libhoney-go v1.15.8 h1:TECEltZ48K6J4NG1JVYqmi0vCJNnHYooFor83fgKesA= github.com/honeycombio/libhoney-go v1.15.8/go.mod h1:+tnL2etFnJmVx30yqmoUkVyQjp7uRJw0a2QGu48lSyY= +github.com/honeycombio/libhoney-go v1.16.0/go.mod h1:izP4fbREuZ3vqC4HlCAmPrcPT9gxyxejRjGtCYpmBn0= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= @@ -1281,6 +1305,7 @@ github.com/influxdata/line-protocol/v2 v2.2.1/go.mod h1:DmB3Cnh+3oxmG6LOBIxce4oa github.com/intel/goresctrl v0.2.0/go.mod h1:+CZdzouYFn5EsxgqAQTEzMfwKwuc0fVdMrT9FCCAVRQ= github.com/ionos-cloud/sdk-go/v6 v6.0.5851 h1:Xjdta3uR5SDLXXl0oahgVIJ+AQNFCyOCuAwxPAXFUCM= github.com/ionos-cloud/sdk-go/v6 v6.0.5851/go.mod h1:UE3V/2DjnqD5doOqtjYqzJRMpI1RiwrvuuSEPX1pdnk= +github.com/ionos-cloud/sdk-go/v6 v6.1.0/go.mod h1:Ox3W0iiEz0GHnfY9e5LmAxwklsxguuNFEUSu0gVRTME= github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= github.com/j-keck/arping v1.0.2/go.mod h1:aJbELhR92bSk7tp79AWM/ftfc90EfEi2bQJrbBFOsPw= github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= @@ -1357,6 +1382,7 @@ github.com/jaegertracing/jaeger v1.24.0/go.mod h1:mqdtFDA447va5j0UewDaAWyNlGreGQ github.com/jaegertracing/jaeger v1.31.0/go.mod h1:KukZMhuamI3NVbzWmngcmXbcnxiB3WyaNf0nxio+sUw= github.com/jaegertracing/jaeger v1.35.1 h1:Jb7/5anKF70V4FQSJRJ3AYBcA/hJDfWy45kE/9nFSe8= github.com/jaegertracing/jaeger v1.35.1/go.mod h1:e7FBVZ14ptsRjwiHEnLyxvOa4bSnZA0BDFE1OcvNiHs= +github.com/jaegertracing/jaeger v1.36.0/go.mod h1:67uyR2zQgEk7EfguOR3eZOGvGDRzY5Yos6n2aaXxq1Y= github.com/jcchavezs/porto v0.1.0 h1:Xmxxn25zQMmgE7/yHYmh19KcItG81hIwfbEEFnd6w/Q= github.com/jcchavezs/porto v0.1.0/go.mod h1:fESH0gzDHiutHRdX2hv27ojnOVFco37hg1W6E9EZF4A= github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= @@ -1441,8 +1467,11 @@ github.com/klauspost/compress v1.15.0/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47e github.com/klauspost/compress v1.15.4/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.15.6 h1:6D9PcO8QWu0JyaQ2zUMmu16T1T+zjjEpP91guRsvDfY= github.com/klauspost/compress v1.15.6/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/compress v1.15.7/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/compress v1.15.8/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/knadh/koanf v1.4.1 h1:Z0VGW/uo8NJmjd+L1Dc3S5frq6c62w5xQ9Yf4Mg3wFQ= github.com/knadh/koanf v1.4.1/go.mod h1:1cfH5223ZeZUOs8FU2UdTmaNfHpqgtjV0+NHjRO43gs= +github.com/knadh/koanf v1.4.2/go.mod h1:4NCo0q4pmU398vF9vq2jStF9MWQZ8JEDcDMHlDCr4h0= github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b h1:iNjcivnc6lhbvJA3LD622NPrUponluJrBWPIwGG/3Bg= github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -1772,8 +1801,10 @@ github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrap github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.0.0-beta.8 h1:dy81yyLYJDwMTifq24Oi/IslOslRrDSb3jwDggjz3Z0= github.com/pelletier/go-toml/v2 v2.0.0-beta.8/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= +github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= @@ -1851,6 +1882,7 @@ github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+ github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.34.0 h1:RBmGO9d/FVjqHT0yUGQwBJhkwKV+wPCn7KGpvfab0uE= github.com/prometheus/common v0.34.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= +github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4= github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -1872,6 +1904,7 @@ github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0 github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/prometheus v0.36.0 h1:d1OWo3gTs5apWUMP5luhZTmXKmwrUUz9DqWlGCQJBAE= github.com/prometheus/prometheus v0.36.0/go.mod h1:g5VjDTKGDiTs249GQVBbbWdHLkkIOgme3HxyUwIzlwY= +github.com/prometheus/prometheus v0.36.2/go.mod h1:GBcYMr17Nr2/iDIrWmiy9wC5GKl0NOQ5R9XynB1HAG8= github.com/prometheus/statsd_exporter v0.21.0 h1:hA05Q5RFeIjgwKIYEdFd59xu5Wwaznf33yKI+pyX6T8= github.com/prometheus/statsd_exporter v0.21.0/go.mod h1:rbT83sZq2V+p73lHhPZfMc3MLCHmSHelCh9hSGYNLTQ= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= @@ -1935,6 +1968,7 @@ github.com/shirou/gopsutil/v3 v3.22.3/go.mod h1:D01hZJ4pVHPpCTZ3m3T2+wDF2YAGfd+H github.com/shirou/gopsutil/v3 v3.22.4/go.mod h1:D01hZJ4pVHPpCTZ3m3T2+wDF2YAGfd+H4ifUguaQzHM= github.com/shirou/gopsutil/v3 v3.22.5 h1:atX36I/IXgFiB81687vSiBI5zrMsxcIBkP9cQMJQoJA= github.com/shirou/gopsutil/v3 v3.22.5/go.mod h1:so9G9VzeHt/hsd0YwqprnjHnfARAUktauykSbr+y2gA= +github.com/shirou/gopsutil/v3 v3.22.6/go.mod h1:EdIubSnZhbAvBS1yJ7Xi+AShB/hxwLHOMz4MCYz7yMs= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= @@ -1952,6 +1986,7 @@ github.com/signalfx/gomemcache v0.0.0-20180823214636-4f7ef64c72a9/go.mod h1:Ytb8 github.com/signalfx/sapm-proto v0.4.0/go.mod h1:x3gtwJ1GRejtkghB4nYpwixh2zqJrLbPU959ZNhM0Fk= github.com/signalfx/sapm-proto v0.9.0 h1:x4EfhzOZtBGyt2x8gc/C23Id9B+3lf1zE59VUWLKbpQ= github.com/signalfx/sapm-proto v0.9.0/go.mod h1:OmhyyGyhBzoKQn6G2wM1vpEsGKGo0lym/kj0G41KqZk= +github.com/signalfx/sapm-proto v0.11.0/go.mod h1:bYZgdl2ZoMriE4arrRThWH8M6DkVbN7+xsxg4v2HP8Q= github.com/signalfx/signalfx-agent/pkg/apm v0.0.0-20201202163743-65b4fa925fc8 h1:pK1/PlwhBPVa2+SqAo7nVfwE/zbGz1p3WlcqwcoLSBk= github.com/signalfx/signalfx-agent/pkg/apm v0.0.0-20201202163743-65b4fa925fc8/go.mod h1:pNaqfprM2bSCBhE8sTT2NtasSWEsIJbrmnIF0ap/Cvg= github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= @@ -1997,6 +2032,7 @@ github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSW github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4= github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= +github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -2014,6 +2050,7 @@ github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8qy1rU= github.com/spf13/viper v1.11.0 h1:7OX/1FS6n7jHD1zGrZTM7WtY13ZELRyosK4k93oPr44= github.com/spf13/viper v1.11.0/go.mod h1:djo0X/bA5+tYVoCn+C7cAYJGcVn/qYLFTG8gdUsX7Zk= +github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -2027,6 +2064,8 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.3.0 h1:NGXK3lHquSN08v5vWalVI/L8XU9hdzE/G6xsrze47As= github.com/stretchr/objx v0.3.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -2039,8 +2078,12 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/subosito/gotenv v1.3.0/go.mod h1:YzJjq/33h7nrwdY+iHMhEOEEbW0ovIz0tB6t6PwAXzs= github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI= @@ -2051,6 +2094,7 @@ github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ github.com/tedsuo/ifrit v0.0.0-20180802180643-bea94bb476cc/go.mod h1:eyZnKCc955uh98WQvzOm0dgAeLnf2O0Rz0LPoC5ze+0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.413 h1:DvydszksqriOr0Zze9OREt8OrIrtMSFcVD8lz3xNAQA= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.413/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.440/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/testcontainers/testcontainers-go v0.13.0 h1:OUujSlEGsXVo/ykPVZk3KanBNGN0TYb/7oKIPVn15JA= github.com/tg123/go-htpasswd v1.2.0 h1:UKp34m9H467/xklxUxU15wKRru7fwXoTojtxg25ITF0= github.com/tg123/go-htpasswd v1.2.0/go.mod h1:h7IzlfpvIWnVJhNZ0nQ9HaFxHb7pn5uFJYLlEUJa2sM= @@ -2241,25 +2285,33 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/collector v0.52.0/go.mod h1:a9GvaOhyc0nVOUzqvdv5mxyWghCSso/WRO2GgRl4I1g= go.opentelemetry.io/collector v0.53.0 h1:p4XwnAltBnw/gCRTk+DHTJVGYLzD5cPHp+0XK/KKE/s= go.opentelemetry.io/collector v0.53.0/go.mod h1:MMSqz2ImXjLrZB26cC8vrtgnjsza3hpc760NNjsmjwE= +go.opentelemetry.io/collector v0.55.1-0.20220711160057-6133c820fd50 h1:f+lx7VPp3Y505buU7b/srAYESA3E3VDEeMLITsJChZ4= +go.opentelemetry.io/collector v0.55.1-0.20220711160057-6133c820fd50/go.mod h1:WGblGSkPop43LISmNshA8GzobQKqvvGM5M8vvq2zpfA= go.opentelemetry.io/collector/model v0.44.0/go.mod h1:4jo1R8uBDspLCxUGhQ0k3v/EFXFbW7s0AIy3LuGLbcU= go.opentelemetry.io/collector/model v0.45.0/go.mod h1:uyiyyq8lV45zrJ94MnLip26sorfNLP6J9XmOvaEmy7w= go.opentelemetry.io/collector/pdata v0.52.0/go.mod h1:GJUTfTv8mlYpHRjcmHXVbvJr48EW/q/P/HuBvpXAE58= go.opentelemetry.io/collector/pdata v0.53.0 h1:jezCyHu/LXs4P/GzKObCabU2/OUTivNBlQHGPAo/dZo= go.opentelemetry.io/collector/pdata v0.53.0/go.mod h1:25b+xH0uJwp8H3f0a1V+OQfxbhYVds6Rf1Ul+HFCGo4= +go.opentelemetry.io/collector/pdata v0.55.1-0.20220711160057-6133c820fd50 h1:9imQpmlt/0CAdigM8hhg1kvhM5bUqlwPiYNHdc5XUtk= +go.opentelemetry.io/collector/pdata v0.55.1-0.20220711160057-6133c820fd50/go.mod h1:f/jo/rDlHowf1T4XIAU+4XGhxaBDaAnKg+3tl3VnQGM= go.opentelemetry.io/collector/semconv v0.52.0/go.mod h1:SxK0rUnUP7YeDakexzbE/vhimTOHwE6m/4aKKd9e27Q= go.opentelemetry.io/collector/semconv v0.53.0 h1:J1lVnFp1VyNKU63rc7csY9/54Tjm9BlLylXLjPimf7s= go.opentelemetry.io/collector/semconv v0.53.0/go.mod h1:SxK0rUnUP7YeDakexzbE/vhimTOHwE6m/4aKKd9e27Q= +go.opentelemetry.io/collector/semconv v0.55.1-0.20220711160057-6133c820fd50/go.mod h1:EH1wbDvTyqKpKBBpoMIe0KQk2plCcFS66Mo17WtR7CQ= go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.28.0/go.mod h1:vEhqr0m4eTc+DWxfsXoXue2GBgV2uUwVznkGIHW/e5w= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0 h1:WenoaOMNP71oq3KkMZ/jnxI9xU/JSCLw8yZILSI2lfU= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0/go.mod h1:J0dBVrt7dPS/lKJyQoW0xzQiUr4r2Ik1VwPjAUWnofI= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.33.0/go.mod h1:y/SlJpJQPd2UzfBCj0E9Flk9FDCtTyqUmaCB41qFrWI= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.29.0/go.mod h1:tLYsuf2v8fZreBVwp9gVMhefZlLFZaUiNVSq8QxXRII= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0 h1:mac9BKRqwaX6zxHPDe3pvmWpwuuIM0vuXv2juCnQevE= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0/go.mod h1:5eCOqeGphOyz6TsY3ZDNjE33SM/TFAK3RGuCL2naTgY= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.33.0/go.mod h1:U5rUt7Rw6zuORsWNfpMRy8XMNKLrmIlv/4HgLVW/d5M= go.opentelemetry.io/contrib/zpages v0.32.0 h1:AVKTx5ppWDaem7A61HFsO1T3CK/t6kFRQoZQMj0/TW4= go.opentelemetry.io/contrib/zpages v0.32.0/go.mod h1:Jx75I61RDcZU3d/1WrP6UdINlzGGLAwFNdQ3bCTb+qw= +go.opentelemetry.io/contrib/zpages v0.33.0/go.mod h1:ddmD63NkBVE29GucaBBCR8/b/TRlY+PkpIbF3m2JF7Y= go.opentelemetry.io/otel v0.11.0/go.mod h1:G8UCk+KooF2HLkgo8RHX9epABH/aRGYET7gQOqBVdB0= go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= @@ -2267,6 +2319,7 @@ go.opentelemetry.io/otel v1.4.0/go.mod h1:jeAqMFKy2uLIxCtKxoFj0FAL5zAPKQagc3+GtB go.opentelemetry.io/otel v1.4.1/go.mod h1:StM6F/0fSwpd8dKWDCdRr7uRvEPYdW0hBSlbdTiUde4= go.opentelemetry.io/otel v1.7.0 h1:Z2lA3Tdch0iDcrhJXDIlC94XE+bxok1F9B+4Lz/lGsM= go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= +go.opentelemetry.io/otel v1.8.0/go.mod h1:2pkj+iMj0o03Y+cW6/m8Y4WkRdYN3AvCXCnzRMp9yvM= go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.3.0/go.mod h1:hO1KLR7jcKaDDKDkvI9dP/FIhpmna5lkqPUQdEjFAM8= @@ -2274,26 +2327,31 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.3.0/go.mod h1 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.3.0/go.mod h1:QNX1aly8ehqqX1LEa6YniTU7VY9I6R3X/oPxhGdTceE= go.opentelemetry.io/otel/exporters/prometheus v0.30.0 h1:YXo5ZY5nofaEYMCMTTMaRH2cLDZB8+0UGuk5RwMfIo0= go.opentelemetry.io/otel/exporters/prometheus v0.30.0/go.mod h1:qN5feW+0/d661KDtJuATEmHtw5bKBK7NSvNEP927zSs= +go.opentelemetry.io/otel/exporters/prometheus v0.31.0/go.mod h1:QarXIB8L79IwIPoNgG3A6zNvBgVmcppeFogV1d8612s= go.opentelemetry.io/otel/internal/metric v0.27.0/go.mod h1:n1CVxRqKqYZtqyTh9U/onvKapPGv7y/rpyOTI+LFNzw= go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= go.opentelemetry.io/otel/metric v0.27.0/go.mod h1:raXDJ7uP2/Jc0nVZWQjJtzoyssOYWu/+pjZqRzfvZ7g= go.opentelemetry.io/otel/metric v0.30.0 h1:Hs8eQZ8aQgs0U49diZoaS6Uaxw3+bBE3lcMUKBFIk3c= go.opentelemetry.io/otel/metric v0.30.0/go.mod h1:/ShZ7+TS4dHzDFmfi1kSXMhMVubNoP0oIaBp70J6UXU= +go.opentelemetry.io/otel/metric v0.31.0/go.mod h1:ohmwj9KTSIeBnDBm/ZwH2PSZxZzoOaG2xZeekTRzL5A= go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= go.opentelemetry.io/otel/sdk v1.7.0 h1:4OmStpcKVOfvDOgCt7UriAPtKolwIhxpnSNI/yK+1B0= go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU= +go.opentelemetry.io/otel/sdk v1.8.0/go.mod h1:uPSfc+yfDH2StDM/Rm35WE8gXSNdvCg023J6HeGNO0c= go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= go.opentelemetry.io/otel/sdk/metric v0.30.0 h1:XTqQ4y3erR2Oj8xSAOL5ovO5011ch2ELg51z4fVkpME= go.opentelemetry.io/otel/sdk/metric v0.30.0/go.mod h1:8AKFRi5HyvTR0RRty3paN1aMC9HMT+NzcEhw/BLkLX8= +go.opentelemetry.io/otel/sdk/metric v0.31.0/go.mod h1:fl0SmNnX9mN9xgU6OLYLMBMrNAsaZQi7qBwprwO3abk= go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk= go.opentelemetry.io/otel/trace v1.4.0/go.mod h1:uc3eRsqDfWs9R7b92xbQbU42/eTNz4N+gLP8qJCi4aE= go.opentelemetry.io/otel/trace v1.4.1/go.mod h1:iYEVbroFCNut9QkwEczV9vMRPHNKSSwYZjulEtsmhFc= go.opentelemetry.io/otel/trace v1.7.0 h1:O37Iogk1lEkMRXewVtZ1BBTVn5JEp8GrJvP92bJqC6o= go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= +go.opentelemetry.io/otel/trace v1.8.0/go.mod h1:0Bt3PXY8w+3pheS3hQUt+wow8b1ojPaTBoTCh2zIFI4= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg3NAKnUGl9YpQ= go.opentelemetry.io/proto/otlp v0.12.0/go.mod h1:TsIjwGWIx5VFYv9KGVlOpxoBl5Dy+63SUguV7GGvlSQ= @@ -2510,6 +2568,10 @@ golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220526153639-5463443f8c37 h1:lUkvobShwKsOesNfWWlCS5q7fnbG1MEliIzwu886fn8= golang.org/x/net v0.0.0-20220526153639-5463443f8c37/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e h1:TsQ7F31D3bUCLeqPT0u+yjp1guoArKaNKmCr22PYgTQ= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2534,6 +2596,9 @@ golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401 h1:zwrSfklXn0gxyLRX/aR+q6cgHbV/ItVyzbPlbA+dkAw= golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2 h1:+jnHzr9VPj32ykQVai5DNahi9+NSp7yYuCsl5eAQtL0= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2548,6 +2613,7 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220513210516-0976fa681c29 h1:w8s32wxx3sY+OjLlv9qltkLU5yvJzxjjgiHWLjdIcw4= golang.org/x/sync v0.0.0-20220513210516-0976fa681c29/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2698,6 +2764,10 @@ golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810 h1:rHZQSjJdAI4Xf5Qzeh2bBc5YJIkPFVM6oDtMFYmgws0= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -2729,6 +2799,8 @@ golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220411224347-583f2d630306 h1:+gHMid33q6pen7kv9xvT+JRinntgeXO2AeZVd0AWD3w= golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220609170525-579cf78fd858 h1:Dpdu/EMxGMFgq0CeYMh4fazTD2vtlZRYE7wyynxJb9U= +golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -2829,6 +2901,7 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df h1:5Pf6pFKu98ODmgnpvkJ3kFUOQGGLIzLIkbzUHp47618= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gonum.org/v1/gonum v0.11.0 h1:f1IJhK4Km5tBJmaiJXtk/PkL4cdVX6J+tGiM187uT5E= gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= @@ -2880,6 +2953,9 @@ google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3 google.golang.org/api v0.81.0/go.mod h1:FA6Mb/bZxj706H2j+j2d6mHEEaHBmbbWnkfvmorOCko= google.golang.org/api v0.82.0 h1:h6EGeZuzhoKSS7BUznzkW+2wHZ+4Ubd6rsVvvh3dRkw= google.golang.org/api v0.82.0/go.mod h1:Ld58BeTlL9DIYr2M2ajvoSqmGLei0BMn+kVBmkam1os= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.87.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2991,6 +3067,11 @@ google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220527130721-00d5c0f3be58 h1:a221mAAEAzq4Lz6ZWRkcS8ptb2mxoxYSt4N68aRyQHM= google.golang.org/genproto v0.0.0-20220527130721-00d5c0f3be58/go.mod h1:yKyY4AMRwFiC8yMMNaMi+RkCnjZJt9LoWuvhXjMs+To= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f h1:hJ/Y5SqPXbarffmAsApliUlcvMU+wScNGfyop4bZm8o= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -3037,6 +3118,8 @@ google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.47.0 h1:9n77onPX5F3qfFCqjy9dhn8PbNQsIKeVU04J9G7umt8= google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0 h1:rQOsyJ/8+ufEDJd/Gdsz7HG220Mh9HAhFHRGnIjda0w= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -3110,6 +3193,7 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/zorkian/go-datadog-api.v2 v2.30.0 h1:umQdVO0Ytx+kYadhuJNjFtDgIsIEBnKrOTvNuu8ClKI= @@ -3145,6 +3229,8 @@ k8s.io/api v0.22.5/go.mod h1:mEhXyLaSD1qTOf40rRiKXkc+2iCem09rWLlFwhCEiAs= k8s.io/api v0.24.0/go.mod h1:5Jl90IUrJHUJYEMANRURMiVvJ0g7Ax7r3R1bqO8zx8I= k8s.io/api v0.24.1 h1:BjCMRDcyEYz03joa3K1+rbshwh1Ay6oB53+iUx2H8UY= k8s.io/api v0.24.1/go.mod h1:JhoOvNiLXKTPQ60zh2g0ewpA+bnEYf5q44Flhquh4vQ= +k8s.io/api v0.24.3 h1:tt55QEmKd6L2k5DP6G/ZzdMQKvG5ro4H4teClqm0sTY= +k8s.io/api v0.24.3/go.mod h1:elGR/XSZrS7z7cSZPzVWaycpJuGIw57j9b95/1PdJNI= k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= @@ -3155,6 +3241,8 @@ k8s.io/apimachinery v0.22.5/go.mod h1:xziclGKwuuJ2RM5/rSFQSYAj0zdbci3DH8kj+WvyN0 k8s.io/apimachinery v0.24.0/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= k8s.io/apimachinery v0.24.1 h1:ShD4aDxTQKN5zNf8K1RQ2u98ELLdIW7jEnlO9uAMX/I= k8s.io/apimachinery v0.24.1/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= +k8s.io/apimachinery v0.24.3 h1:hrFiNSA2cBZqllakVYyH/VyEh4B581bQRmqATJSeQTg= +k8s.io/apimachinery v0.24.3/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= @@ -3168,6 +3256,8 @@ k8s.io/client-go v0.22.5/go.mod h1:cs6yf/61q2T1SdQL5Rdcjg9J1ElXSwbjSrW2vFImM4Y= k8s.io/client-go v0.24.0/go.mod h1:VFPQET+cAFpYxh6Bq6f4xyMY80G6jKKktU6G0m00VDw= k8s.io/client-go v0.24.1 h1:w1hNdI9PFrzu3OlovVeTnf4oHDt+FJLd9Ndluvnb42E= k8s.io/client-go v0.24.1/go.mod h1:f1kIDqcEYmwXS/vTbbhopMUbhKp2JhOeVTfxgaCIlF8= +k8s.io/client-go v0.24.3 h1:Nl1840+6p4JqkFWEW2LnMKU667BUxw03REfLAVhuKQY= +k8s.io/client-go v0.24.3/go.mod h1:AAovolf5Z9bY1wIg2FZ8LPQlEdKHjLI7ZD4rw920BJw= k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= k8s.io/code-generator v0.21.1/go.mod h1:hUlps5+9QaTrKx+jiM4rmq7YmH8wPOIko64uZCHDh6Q= k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= From f3c779d632b76d6c92efc4b021f17ceb1a9fd7a6 Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Tue, 16 Aug 2022 18:43:52 +0300 Subject: [PATCH 19/31] Sql streaming processor --- go.mod | 375 ++++---- go.sum | 876 ++++++++++-------- internal/components/components.go | 2 + processor/stream_processor/config.go | 25 + processor/stream_processor/config_test.go | 27 + processor/stream_processor/factory.go | 38 + processor/stream_processor/processor.go | 87 ++ .../stream_processor/testdata/config.yaml | 18 + 8 files changed, 909 insertions(+), 539 deletions(-) create mode 100644 processor/stream_processor/config.go create mode 100644 processor/stream_processor/config_test.go create mode 100644 processor/stream_processor/factory.go create mode 100644 processor/stream_processor/processor.go create mode 100644 processor/stream_processor/testdata/config.yaml diff --git a/go.mod b/go.mod index 0fd6b6731991..f84f8e9b6784 100644 --- a/go.mod +++ b/go.mod @@ -1,150 +1,160 @@ module github.com/open-telemetry/opentelemetry-collector-contrib -go 1.18 +go 1.17 require ( - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/alibabacloudlogserviceexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awscloudwatchlogsexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsemfexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awskinesisexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsprometheusremotewriteexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsxrayexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/azuremonitorexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/carbonexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/clickhouseexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/coralogixexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/datadogexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/dynatraceexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/f5cloudexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/googlecloudexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/googlecloudpubsubexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/honeycombexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/humioexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/influxdbexporter v0.53.0 + github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220816024939-bc8df83d7b9d + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/alibabacloudlogserviceexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awscloudwatchlogsexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsemfexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awskinesisexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsprometheusremotewriteexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsxrayexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/azuremonitorexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/carbonexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/clickhouseexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/coralogixexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/datadogexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/dynatraceexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/f5cloudexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/fileexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/googlecloudexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/googlecloudpubsubexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/googlemanagedprometheusexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/honeycombexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/humioexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/influxdbexporter v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerthrifthttpexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/jaegerthrifthttpexporter v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/logzioexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/lokiexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/mezmoexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/opencensusexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/parquetexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/logzioexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/lokiexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/mezmoexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/opencensusexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/opsrampotlpexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/parquetexporter v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sapmexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sentryexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/pulsarexporter v0.0.0-00010101000000-000000000000 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sapmexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sentryexporter v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/signalfxexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/skywalkingexporter v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/skywalkingexporter v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/splunkhecexporter v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sumologicexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/tanzuobservabilityexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/tencentcloudlogserviceexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/zipkinexporter v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/asapauthextension v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/awsproxy v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/bearertokenauthextension v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/fluentbitextension v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecstaskobserver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/hostobserver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/k8sobserver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/oidcauthextension v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextension v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/extension/sigv4authextension v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sumologicexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/tanzuobservabilityexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/tencentcloudlogserviceexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/zipkinexporter v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/asapauthextension v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/awsproxy v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/bearertokenauthextension v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/fluentbitextension v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecstaskobserver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/hostobserver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/k8sobserver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/oidcauthextension v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextension v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/extension/sigv4authextension v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatorateprocessor v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbyattrsprocessor v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.56.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/batchmemlimitprocessor v0.0.0-00010101000000-000000000000 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatorateprocessor v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbyattrsprocessor v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sattributesprocessor v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricsgenerationprocessor v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricstransformprocessor v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/probabilisticsamplerprocessor v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/routingprocessor v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver v0.58.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsfirehosereceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/bigipreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sattributesprocessor v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricsgenerationprocessor v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricstransformprocessor v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/probabilisticsamplerprocessor v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/routingprocessor v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/scrubbingprocessor v0.0.0-00010101000000-000000000000 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/aerospikereceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsfirehosereceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/bigipreceiver v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/carbonreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/cloudfoundryreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/cloudfoundryreceiver v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/collectdreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/couchdbreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dockerstatsreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dotnetdiagnosticsreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/elasticsearchreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/flinkmetricsreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/fluentforwardreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/googlecloudpubsubreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/googlecloudspannerreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/iisreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/influxdbreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/couchdbreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dockerstatsreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dotnetdiagnosticsreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/elasticsearchreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/expvarreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/flinkmetricsreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/fluentforwardreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/googlecloudpubsubreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/googlecloudspannerreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/iisreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/influxdbreceiver v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/journaldreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8seventsreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkametricsreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kubeletstatsreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/memcachedreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbatlasreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mysqlreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nginxreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nsxtreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/journaldreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8seventsreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkametricsreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kubeletstatsreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/memcachedreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbatlasreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mysqlreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nginxreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nsxtreceiver v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/opencensusreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/podmanreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/postgresqlreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusexecreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/podmanreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/postgresqlreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusexecreceiver v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/rabbitmqreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/receivercreator v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/riakreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/saphanareceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sapmreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/signalfxreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/simpleprometheusreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/skywalkingreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/splunkhecreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlserverreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/syslogreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/wavefrontreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/windowseventlogreceiver v0.53.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/windowsperfcountersreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/rabbitmqreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/receivercreator v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/riakreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/saphanareceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sapmreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/signalfxreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/simpleprometheusreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/skywalkingreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/solacereceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/splunkhecreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlqueryreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlserverreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/syslogreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/wavefrontreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/windowseventlogreceiver v0.55.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/windowsperfcountersreceiver v0.55.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.55.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zookeeperreceiver v0.53.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zookeeperreceiver v0.55.0 github.com/prometheus/prometheus v0.36.2 github.com/stretchr/testify v1.8.0 - go.opentelemetry.io/collector v0.55.1-0.20220711160057-6133c820fd50 - go.opentelemetry.io/collector/pdata v0.55.1-0.20220711160057-6133c820fd50 + go.opentelemetry.io/collector v0.56.0 + go.opentelemetry.io/collector/pdata v0.56.0 go.uber.org/multierr v1.8.0 go.uber.org/zap v1.21.0 golang.org/x/sys v0.0.0-20220624220833-87e55d714810 @@ -166,7 +176,12 @@ require ( code.cloudfoundry.org/rfc5424 v0.0.0-20201103192249-000122071b78 // indirect contrib.go.opencensus.io/exporter/prometheus v0.4.1 // indirect contrib.go.opencensus.io/exporter/stackdriver v0.13.13 // indirect + github.com/99designs/keyring v1.1.6 // indirect + github.com/AthenZ/athenz v1.10.39 // indirect + github.com/Azure/azure-pipeline-go v0.2.3 // indirect github.com/Azure/azure-sdk-for-go v65.0.0+incompatible // indirect + github.com/Azure/azure-storage-blob-go v0.14.0 // indirect + github.com/Azure/go-amqp v0.17.5 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest v0.11.27 // indirect github.com/Azure/go-autorest/autorest/adal v0.9.20 // indirect @@ -177,42 +192,55 @@ require ( github.com/Azure/go-autorest/tracing v0.6.0 // indirect github.com/ClickHouse/clickhouse-go v1.5.4 // indirect github.com/DataDog/agent-payload/v5 v5.0.23 // indirect + github.com/DataDog/datadog-agent/pkg/obfuscate v0.38.0-rc.5 // indirect + github.com/DataDog/datadog-agent/pkg/otlp/model v0.38.0-rc.5 // indirect github.com/DataDog/datadog-agent/pkg/quantile v0.38.0-rc.5 // indirect - github.com/DataDog/datadog-agent/pkg/trace/exportable v0.0.0-20201016145401-4646cf596b02 // indirect - github.com/DataDog/datadog-agent/pkg/util/log v0.0.0-20201009092105-58e18918b2db // indirect - github.com/DataDog/datadog-go v4.8.2+incompatible // indirect + github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.38.0-rc.5 // indirect + github.com/DataDog/datadog-agent/pkg/trace v0.38.0-rc.5 // indirect + github.com/DataDog/datadog-go/v5 v5.1.0 // indirect github.com/DataDog/sketches-go v1.4.1 // indirect + github.com/DataDog/zstd v1.5.2 // indirect github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.32.3 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.32.3 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector/googlemanagedprometheus v0.32.3 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.8.3 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.32.3 // indirect github.com/Microsoft/go-winio v0.5.2 // indirect github.com/ReneKroon/ttlcache/v2 v2.11.0 // indirect - github.com/SAP/go-hdb v0.105.5 // indirect + github.com/SAP/go-hdb v0.106.1 // indirect github.com/SermoDigital/jose v0.9.2-0.20161205224733-f6df55f235c2 // indirect github.com/Shopify/sarama v1.34.1 // indirect github.com/Showmax/go-fqdn v1.0.0 // indirect - github.com/StackExchange/wmi v1.2.1 // indirect github.com/VividCortex/gohistogram v1.0.0 // indirect + github.com/aerospike/aerospike-client-go/v5 v5.8.0 // indirect github.com/alecthomas/participle/v2 v2.0.0-alpha9 // indirect github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect github.com/aliyun/aliyun-log-go-sdk v0.1.37 // indirect github.com/antonmedv/expr v1.9.0 // indirect + github.com/apache/arrow/go/arrow v0.0.0-20211112161151-bc219186db40 // indirect + github.com/apache/pulsar-client-go v0.8.1 // indirect + github.com/apache/pulsar-client-go/oauth2 v0.0.0-20220120090717-25e59572242e // indirect github.com/apache/thrift v0.16.0 // indirect + github.com/ardielle/ardielle-go v1.5.2 // indirect github.com/armon/go-metrics v0.3.10 // indirect - github.com/avast/retry-go v3.0.0+incompatible // indirect github.com/aws/aws-sdk-go v1.44.54 // indirect - github.com/aws/aws-sdk-go-v2 v1.9.2 // indirect - github.com/aws/aws-sdk-go-v2/config v1.8.3 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.4.3 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.6.0 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.4.2 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.7.2 // indirect + github.com/aws/aws-sdk-go-v2 v1.11.0 // indirect + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.0.0 // indirect + github.com/aws/aws-sdk-go-v2/config v1.10.1 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.6.1 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.8.0 // indirect + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.7.1 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.0 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.0.0 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.3.0 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.5.0 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.5.0 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.9.0 // indirect + github.com/aws/aws-sdk-go-v2/service/s3 v1.19.0 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.6.0 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.10.0 // indirect github.com/aws/smithy-go v1.11.0 // indirect - github.com/beeker1121/goque v2.1.0+incompatible // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver v3.5.1+incompatible // indirect github.com/bmatcuk/doublestar/v3 v3.0.0 // indirect @@ -222,7 +250,6 @@ require ( github.com/census-instrumentation/opencensus-proto v0.3.0 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/checkpoint-restore/go-criu/v5 v5.3.0 // indirect - github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 // indirect github.com/cilium/ebpf v0.7.0 // indirect github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 // indirect github.com/cloudfoundry-incubator/uaago v0.0.0-20190307164349-8136b7bbe76e // indirect @@ -235,15 +262,19 @@ require ( github.com/coreos/go-oidc v2.2.1+incompatible // indirect github.com/coreos/go-systemd/v22 v22.3.2 // indirect github.com/cyphar/filepath-securejoin v0.2.3 // indirect + github.com/danieljoos/wincred v1.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/denisenkom/go-mssqldb v0.12.2 // indirect github.com/dennwc/varint v1.0.0 // indirect github.com/dgraph-io/ristretto v0.1.0 // indirect + github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/digitalocean/godo v1.80.0 // indirect github.com/docker/distribution v2.8.1+incompatible // indirect github.com/docker/docker v20.10.17+incompatible // indirect github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11 // indirect github.com/docker/go-units v0.4.0 // indirect github.com/dustin/go-humanize v1.0.0 // indirect + github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b // indirect github.com/dynatrace-oss/dynatrace-metric-utils-go v0.5.0 // indirect github.com/eapache/go-resiliency v1.2.0 // indirect github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect @@ -259,8 +290,11 @@ require ( github.com/facebookgo/muster v0.0.0-20150708232844-fd3d7953fd52 // indirect github.com/fatih/color v1.13.0 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect + github.com/form3tech-oss/jwt-go v3.2.5+incompatible // indirect github.com/fsnotify/fsnotify v1.5.4 // indirect + github.com/gabriel-vasile/mimetype v1.4.0 // indirect github.com/getsentry/sentry-go v0.13.0 // indirect + github.com/go-kit/kit v0.12.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.5.1 // indirect github.com/go-logr/logr v1.2.3 // indirect @@ -275,21 +309,27 @@ require ( github.com/go-stack/stack v1.8.1 // indirect github.com/go-zookeeper/zk v1.0.2 // indirect github.com/gobwas/glob v0.2.3 // indirect + github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/godbus/dbus/v5 v5.0.6 // indirect github.com/gofrs/uuid v4.2.0+incompatible // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang-jwt/jwt v3.2.2+incompatible // indirect github.com/golang-jwt/jwt/v4 v4.2.0 // indirect + github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe // indirect + github.com/golang-sql/sqlexp v0.1.0 // indirect github.com/golang/glog v1.0.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.2 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/cadvisor v0.44.1 // indirect + github.com/google/flatbuffers v2.0.0+incompatible // indirect github.com/google/gnostic v0.5.7-v3refs // indirect github.com/google/go-cmp v0.5.8 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/uuid v1.3.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.1.0 // indirect github.com/googleapis/gax-go/v2 v2.4.0 // indirect github.com/gophercloud/gophercloud v0.24.0 // indirect github.com/gorilla/handlers v1.5.1 // indirect @@ -298,6 +338,7 @@ require ( github.com/grobie/gomemcache v0.0.0-20180201122607-1f779c573665 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect + github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/hashicorp/consul/api v1.13.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect @@ -343,18 +384,19 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/karrick/godirwalk v1.16.1 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect + github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d // indirect github.com/klauspost/compress v1.15.8 // indirect github.com/knadh/koanf v1.4.2 // indirect github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b // indirect github.com/leoluk/perflib_exporter v0.1.0 // indirect github.com/lib/pq v1.10.6 // indirect + github.com/linkedin/goavro/v2 v2.9.8 // indirect github.com/linode/linodego v1.5.0 // indirect - github.com/logzio/jaeger-logzio v1.0.6 // indirect - github.com/logzio/logzio-go v1.0.6 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/magiconair/properties v1.8.6 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.12 // indirect + github.com/mattn/go-ieproxy v0.0.1 // indirect github.com/mattn/go-isatty v0.0.14 // indirect github.com/mattn/go-sqlite3 v2.0.3+incompatible // indirect github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect @@ -373,11 +415,11 @@ require ( github.com/mongodb-forks/digest v1.0.4 // indirect github.com/mostynb/go-grpc-compression v1.1.16 // indirect github.com/mrunalp/fileutils v0.5.0 // indirect + github.com/mtibben/percent v0.2.1 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect github.com/nginxinc/nginx-prometheus-exporter v0.8.1-0.20201110005315-f5a5f8086c19 // indirect github.com/observiq/ctimefmt v1.0.0 // indirect - github.com/olivere/elastic v6.2.37+incompatible // indirect github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer v0.55.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/awsutil v0.55.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/containerinsight v0.55.0 // indirect @@ -399,6 +441,7 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.55.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.55.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/opencensus v0.55.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.55.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.55.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/signalfx v0.55.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.55.0 // indirect @@ -419,6 +462,7 @@ require ( github.com/philhofer/fwd v1.1.1 // indirect github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/pierrec/lz4/v4 v4.1.14 // indirect + github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect @@ -434,14 +478,19 @@ require ( github.com/santhosh-tekuri/jsonschema v1.2.4 // indirect github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9 // indirect github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921 // indirect + github.com/secure-systems-lab/go-securesystemslib v0.3.1 // indirect github.com/shirou/gopsutil/v3 v3.22.6 // indirect github.com/signalfx/com_signalfx_metrics_protobuf v0.0.3 // indirect github.com/signalfx/gohistogram v0.0.0-20160107210732-1ccfd2ff5083 // indirect github.com/signalfx/golib/v3 v3.3.13 // indirect github.com/signalfx/sapm-proto v0.11.0 // indirect github.com/signalfx/signalfx-agent/pkg/apm v0.0.0-20201202163743-65b4fa925fc8 // indirect + github.com/sijms/go-ora/v2 v2.4.26 // indirect github.com/sirupsen/logrus v1.8.1 // indirect + github.com/smartystreets/assertions v1.0.1 // indirect + github.com/snowflakedb/gosnowflake v1.6.10 // indirect github.com/soheilhy/cmux v0.1.5 // indirect + github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/afero v1.8.2 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/cobra v1.5.0 // indirect @@ -451,9 +500,9 @@ require ( github.com/stretchr/objx v0.4.0 // indirect github.com/subosito/gotenv v1.3.0 // indirect github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect - github.com/syndtr/goleveldb v1.0.0 // indirect github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.440 // indirect github.com/tg123/go-htpasswd v1.2.0 // indirect + github.com/theupdateframework/go-tuf v0.3.0 // indirect github.com/tidwall/gjson v1.12.1 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect @@ -477,6 +526,7 @@ require ( github.com/xdg-go/scram v1.1.1 // indirect github.com/xdg-go/stringprep v1.0.3 // indirect github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect + github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect go.elastic.co/apm v1.15.0 // indirect go.elastic.co/fastjson v1.1.0 // indirect @@ -484,7 +534,7 @@ require ( go.mongodb.org/atlas v0.16.0 // indirect go.mongodb.org/mongo-driver v1.9.1 // indirect go.opencensus.io v0.23.0 // indirect - go.opentelemetry.io/collector/semconv v0.55.1-0.20220711160057-6133c820fd50 // indirect + go.opentelemetry.io/collector/semconv v0.56.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.33.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.33.0 // indirect go.opentelemetry.io/contrib/zpages v0.33.0 // indirect @@ -497,6 +547,7 @@ require ( go.uber.org/atomic v1.9.0 // indirect go.uber.org/goleak v1.1.12 // indirect golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122 // indirect + golang.org/x/exp v0.0.0-20200908183739-ae8ad444f925 // indirect golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e // indirect golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2 // indirect @@ -509,10 +560,9 @@ require ( gonum.org/v1/gonum v0.11.0 // indirect google.golang.org/api v0.87.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f // indirect + google.golang.org/genproto v0.0.0-20220718134204-073382fd740c // indirect google.golang.org/grpc v1.48.0 // indirect google.golang.org/protobuf v1.28.0 // indirect - gopkg.in/DataDog/dd-trace-go.v1 v1.38.1 // indirect gopkg.in/alexcesaro/statsd.v2 v2.0.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.66.4 // indirect @@ -535,13 +585,6 @@ require ( skywalking.apache.org/repo/goapi v0.0.0-20220121092418-9c455d0dda3f // indirect ) -require ( - github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220626175859-9abda183db8e - github.com/go-kit/kit v0.12.0 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect - github.com/shirou/gopsutil v3.21.10+incompatible // indirect -) - // Replace references to modules that are in this repository with their relateive paths // so that we always build with current (latest) version of the source code. @@ -611,6 +654,8 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/filee replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/googlecloudexporter => ./exporter/googlecloudexporter +replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/googlemanagedprometheusexporter => ./exporter/googlemanagedprometheusexporter + replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/googlecloudpubsubexporter => ./exporter/googlecloudpubsubexporter replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/honeycombexporter => ./exporter/honeycombexporter @@ -641,6 +686,8 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prome replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter => ./exporter/prometheusremotewriteexporter +replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/pulsarexporter => ./exporter/pulsarexporter + replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sapmexporter => ./exporter/sapmexporter replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sentryexporter => ./exporter/sentryexporter @@ -663,6 +710,8 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elast replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/zipkinexporter => ./exporter/zipkinexporter +replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/opsrampotlpexporter => ./exporter/opsrampotlpexporter + replace github.com/open-telemetry/opentelemetry-collector-contrib/extension/asapauthextension => ./extension/asapauthextension replace github.com/open-telemetry/opentelemetry-collector-contrib/extension/awsproxy => ./extension/awsproxy @@ -709,16 +758,22 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourceto replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza => ./pkg/stanza +replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/telemetryquerylanguage => ./pkg/telemetryquerylanguage + replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger => ./pkg/translator/jaeger replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/opencensus => ./pkg/translator/opencensus +replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus => ./pkg/translator/prometheus + replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite => ./pkg/translator/prometheusremotewrite replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/signalfx => ./pkg/translator/signalfx replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin => ./pkg/translator/zipkin +replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/batchmemlimitprocessor => ./processor/batchmemlimitprocessor + replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor => ./processor/attributesprocessor replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor => ./processor/cumulativetodeltaprocessor/ @@ -755,8 +810,12 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/tran replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/schemaprocessor => ./processor/schemaprocessor +replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/scrubbingprocessor => ./processor/scrubbingprocessor + replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver => ./receiver/activedirectorydsreceiver +replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/aerospikereceiver => ./receiver/aerospikereceiver + replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver => ./receiver/apachereceiver replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver => ./receiver/awscontainerinsightreceiver @@ -785,6 +844,8 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dotne replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/elasticsearchreceiver => ./receiver/elasticsearchreceiver +replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/expvarreceiver => ./receiver/expvarreceiver + replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filelogreceiver => ./receiver/filelogreceiver replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/fluentforwardreceiver => ./receiver/fluentforwardreceiver @@ -855,8 +916,12 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/simpl replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/skywalkingreceiver => ./receiver/skywalkingreceiver +replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/solacereceiver => ./receiver/solacereceiver + replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/splunkhecreceiver => ./receiver/splunkhecreceiver +replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlqueryreceiver => ./receiver/sqlqueryreceiver + replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlserverreceiver => ./receiver/sqlserverreceiver replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver => ./receiver/statsdreceiver diff --git a/go.sum b/go.sum index 6763c51044fd..c37e2664b471 100644 --- a/go.sum +++ b/go.sum @@ -31,13 +31,11 @@ cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aD cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.101.1/go.mod h1:55HwjsGW4CHD3JrNuMdZtSDsgTs0CuCB/bBTugD+7AA= -cloud.google.com/go v0.102.0 h1:DAq3r8y4mDgyB/ZPJ9v/5VJNqjgJAxTn6ZYLlUywOu8= cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1 h1:vpK6iQWv/2uUeFJth4/cBHsQAGjn1iIE6AAlxipRaA0= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= @@ -49,12 +47,13 @@ cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTB cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1 h1:2sMmt8prCn7DPaG4Pmh0N3Inmc8cT8ae5k1M6VJ9Wqc= cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0 h1:v/k9Eueb8aAJ0vZuxKMrgm6kPhCLZU9HxFU+AFDs9Uk= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= cloud.google.com/go/iam v0.3.0 h1:exkAomrVUuzx9kWFI1wm3KI0uoDeUFPB4kKGzx6x+Gc= @@ -62,18 +61,17 @@ cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= cloud.google.com/go/logging v1.4.2 h1:Mu2Q75VBDQlW1HlBMjTX4X84UFR73G1TiLlRYc/b7tA= cloud.google.com/go/logging v1.4.2/go.mod h1:jco9QZSx8HiVVqLJReq7z7bVdj0P1Jb9PDFs63T+axo= +cloud.google.com/go/monitoring v1.1.0/go.mod h1:L81pzz7HKn14QCMaCs6NTQkdBnE87TElyanS95vIcl4= +cloud.google.com/go/monitoring v1.4.0/go.mod h1:y6xnxfwI3hTFWOdkOaD7nfJVlwuC3/mS/5kvtT131p4= cloud.google.com/go/monitoring v1.5.0 h1:ZltYv8e69fJVga7RTthUBGdx4+Pwz6GRF1V3zylERl4= cloud.google.com/go/monitoring v1.5.0/go.mod h1:/o9y8NYX5j91JjD/JvGLYbi86kL11OjyJXq2XziLJu4= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/pubsub v1.4.0/go.mod h1:LFrqilwgdw4X2cJS9ALgzYmMu+ULyrUN6IHV3CPK4TM= -cloud.google.com/go/pubsub v1.22.2 h1:e6A4rhtMX4opff/jDWApl4HwLtsCdV9VULVfpFRp6eo= -cloud.google.com/go/pubsub v1.22.2/go.mod h1:LBHGrtgM7+SGKCDKQu2pKIRtGwbZyJvRDkMk0594xdU= +cloud.google.com/go/pubsub v1.23.1 h1:eVtkabVa+1M5ai67fGU+idws0hVb/KEPXiDmSS17+qc= cloud.google.com/go/pubsub v1.23.1/go.mod h1:ttM6nEGYK/2CnB36ndNySU3ZxPwpBk8cXM6+iOlxH9U= -cloud.google.com/go/spanner v1.33.0 h1:YlmTsdo9i8XQuFVYOFAMVtjQyi6Ipszpixlpb4X4yYw= -cloud.google.com/go/spanner v1.33.0/go.mod h1:Gun/bT/uv5FTzD7suMOjSdd1OIowJjw5o6A+TEzrzk0= +cloud.google.com/go/spanner v1.34.1 h1:cPGv32sx9zsz72qO4DY4fljIyoBVDS0gsWax7GE02Xc= cloud.google.com/go/spanner v1.34.1/go.mod h1:oVJCF8EBcPcAdjkQYTErfxZrr+o/JIwDebhFveE7CrU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= @@ -81,8 +79,8 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.22.0/go.mod h1:GbaLEoMqbVm6sx3Z0R++gSiBlgMv6yUi2q1DeGFKQgE= cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/trace v1.0.0/go.mod h1:4iErSByzxkyHWzzlAj63/Gmjz0NH1ASqhJguHpGcr6A= cloud.google.com/go/trace v1.2.0 h1:oIaB4KahkIUOpLSAAjEJ8y2desbjY/x/RfP4O3KAtTI= cloud.google.com/go/trace v1.2.0/go.mod h1:Wc8y/uYyOhPy12KEnXG9XGrvfMz5F5SrYecQlbW1rwM= code.cloudfoundry.org/bytefmt v0.0.0-20190710193110-1eb035ffe2b6/go.mod h1:wN/zk7mhREp/oviagqUXY3EwuHhWyOvAdsn5Y4CzOrc= @@ -100,10 +98,27 @@ contrib.go.opencensus.io/exporter/prometheus v0.4.1/go.mod h1:t9wvfitlUjGXG2IXAZ contrib.go.opencensus.io/exporter/stackdriver v0.13.13 h1:3KLhsPyyFp1pfZPicg8e1VMSeztIyWm+aE+iZQ8b9Kg= contrib.go.opencensus.io/exporter/stackdriver v0.13.13/go.mod h1:5pSSGY0Bhuk7waTHuDf4aQ8D2DrhgETRo9fy6k3Xlzc= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= +git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= +github.com/99designs/keyring v1.1.6 h1:kVDC2uCgVwecxCk+9zoCt2uEL6dt+dfVzMvGgnVcIuM= +github.com/99designs/keyring v1.1.6/go.mod h1:16e0ds7LGQQcT59QqkTg72Hh5ShM51Byv5PEmW6uoRU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= +github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= +github.com/AthenZ/athenz v1.10.39 h1:mtwHTF/v62ewY2Z5KWhuZgVXftBej1/Tn80zx4DcawY= +github.com/AthenZ/athenz v1.10.39/go.mod h1:3Tg8HLsiQZp81BJY58JBeU2BR6B/H4/0MQGfCwhHNEA= +github.com/Azure/azure-pipeline-go v0.2.3 h1:7U9HBg1JFK3jHl5qmo4CTZKFTVgMwdFHMVtCdfBE21U= +github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v63.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v65.0.0+incompatible h1:HzKLt3kIwMm4KeJYTdx9EbjRYTySD/t8i1Ee/W5EGXw= github.com/Azure/azure-sdk-for-go v65.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0= +github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8= +github.com/Azure/azure-storage-blob-go v0.14.0 h1:1BCg74AmVdYwO3dlKwtFU1V0wU2PZdREkXvAmZJRUlM= +github.com/Azure/azure-storage-blob-go v0.14.0/go.mod h1:SMqIBi+SuiQH32bvyjngEewEeXoPfKMgWlBDaYf6fck= +github.com/Azure/go-amqp v0.17.5 h1:7Lsi9H9ijCAfqOaMiNmQ4c+GL9bdrpCjebNKhV/eQ+c= +github.com/Azure/go-amqp v0.17.5/go.mod h1:9YJ3RhxRT1gquYnzpZO1vcYMMpAdJT+QEg6fwmw9Zlg= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= @@ -111,24 +126,20 @@ github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg6 github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= github.com/Azure/go-autorest/autorest v0.11.12/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= +github.com/Azure/go-autorest/autorest v0.11.25/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U= github.com/Azure/go-autorest/autorest v0.11.27 h1:F3R3q42aWytozkV8ihzcgMO4OA4cuqr3bNlsEuF6//A= github.com/Azure/go-autorest/autorest v0.11.27/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= github.com/Azure/go-autorest/autorest/adal v0.9.20 h1:gJ3E98kMpFB1MFqQCvA1yFab8vthOeD4VlFRQULxahg= github.com/Azure/go-autorest/autorest/adal v0.9.20/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw= @@ -137,11 +148,9 @@ github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+X github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= github.com/Azure/go-autorest/autorest/validation v0.3.1 h1:AgyqjAd94fwNAoTjl/WQXg4VvFeRFpO+UhNyRXqF1ac= github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= @@ -149,51 +158,50 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0= github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= +github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= +github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/DataDog/agent-payload/v5 v5.0.22 h1:XaMYtdvdjRWLwvoQhZM3Se0YmOeMYgEvdKVLwPsxEaU= -github.com/DataDog/agent-payload/v5 v5.0.22/go.mod h1:2gapp8p4Vd548JI+axD8kCExklNvVI6AMF5/+IfN/4g= +github.com/DataDog/agent-payload/v5 v5.0.23 h1:T+xalP3F9XOMZRSokcG4pK1hqyDBbEDPxp68tSBmfhc= github.com/DataDog/agent-payload/v5 v5.0.23/go.mod h1:2gapp8p4Vd548JI+axD8kCExklNvVI6AMF5/+IfN/4g= -github.com/DataDog/datadog-agent/pkg/obfuscate v0.0.0-20211129110424-6491aa3bf583/go.mod h1:EP9f4GqaDJyP1F5jTNMtzdIpw3JpNs3rMSJOnYywCiw= -github.com/DataDog/datadog-agent/pkg/quantile v0.36.0-rc.4.0.20220426134022-b55bccd5073f h1:6TRm46/qdRBGcm9MJz3NRpk8ZnKhNyVTojNvgkCQkzc= -github.com/DataDog/datadog-agent/pkg/quantile v0.36.0-rc.4.0.20220426134022-b55bccd5073f/go.mod h1:jVxOyv395Gf9weXNdmSF6Tp9k/DEc7u+nqYWudznQtQ= +github.com/DataDog/datadog-agent/pkg/obfuscate v0.38.0-rc.5 h1:ETdyRocB4FWxbR8NecdFFvi0C1ryDf1wzu84m+7b06Q= +github.com/DataDog/datadog-agent/pkg/obfuscate v0.38.0-rc.5/go.mod h1:MxVcCIC42tBIjPm93BHdh9/vw2LivRiptj3HygI+GGQ= +github.com/DataDog/datadog-agent/pkg/otlp/model v0.38.0-rc.5 h1:pFNUFrc/1FCdAJ2yVP2NKw4WJdNJdSJKFZwxUhcTDr8= +github.com/DataDog/datadog-agent/pkg/otlp/model v0.38.0-rc.5/go.mod h1:ynMGvihEUJt/JRJy0hGtYCWFW2Hu/fHQ9FmCgLfbKN0= +github.com/DataDog/datadog-agent/pkg/quantile v0.38.0-rc.5 h1:5dB1sDujVuDCOS0dHLalc0oXg2jpGY2OlIiXn9Hfwm4= github.com/DataDog/datadog-agent/pkg/quantile v0.38.0-rc.5/go.mod h1:jVxOyv395Gf9weXNdmSF6Tp9k/DEc7u+nqYWudznQtQ= -github.com/DataDog/datadog-agent/pkg/trace/exportable v0.0.0-20201016145401-4646cf596b02 h1:N2BRKjJ/c+ipDwt5b+ijqEc2EsmK3zXq2lNeIPnSwMI= -github.com/DataDog/datadog-agent/pkg/trace/exportable v0.0.0-20201016145401-4646cf596b02/go.mod h1:EalMiS87Guu6PkLdxz7gmWqi+dRs9sjYLTOyTrM/aVU= -github.com/DataDog/datadog-agent/pkg/util/log v0.0.0-20201009091607-ce4e57cdf8f4/go.mod h1:cRy7lwapA3jcjnX74kU6NFkXaRGQyB0l/QZA0IwYGEQ= -github.com/DataDog/datadog-agent/pkg/util/log v0.0.0-20201009092105-58e18918b2db h1:anQGy1tCkgx8uhOWks3KDhW5/S2mZ3pqFVoIT1XWaCk= -github.com/DataDog/datadog-agent/pkg/util/log v0.0.0-20201009092105-58e18918b2db/go.mod h1:cRy7lwapA3jcjnX74kU6NFkXaRGQyB0l/QZA0IwYGEQ= -github.com/DataDog/datadog-agent/pkg/util/winutil v0.0.0-20201009092105-58e18918b2db/go.mod h1:EtS4X73GXAyrpVddkLQ4SewSQX+zv284e8iIkVBXgtk= +github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.38.0-rc.5 h1:4kPuQxJXGXpJ6xNARDF5bvZypCZzS+oWkP5Sr9viB50= +github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.38.0-rc.5/go.mod h1:3fXOPVYRWzX0lRcoOlFXCGrI12dorDVuwQ9U7+TmaX4= +github.com/DataDog/datadog-agent/pkg/trace v0.38.0-rc.5 h1:n3g2MXsAzc7Mj/mvv7bNOU2VUh7Wfp3KXpUAl8HWI7k= +github.com/DataDog/datadog-agent/pkg/trace v0.38.0-rc.5/go.mod h1:D1h3mwrRUt+IjKABfY/65urUIv6/knW+DqseiY8Hctk= +github.com/DataDog/datadog-go v3.2.0+incompatible h1:qSG2N4FghB1He/r2mFrWKCaL7dXCilEuNEeAn20fdD4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/datadog-go v3.5.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/datadog-go v4.8.2+incompatible h1:qbcKSx29aBLD+5QLvlQZlGmRMF/FfGqFLFev/1TDzRo= -github.com/DataDog/datadog-go v4.8.2+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/datadog-go/v5 v5.0.2/go.mod h1:ZI9JFB4ewXbw1sBnF4sxsR2k1H3xjV+PUAOUsHvKpcU= -github.com/DataDog/gostackparse v0.5.0/go.mod h1:lTfqcJKqS9KnXQGnyQMCugq3u1FP6UZMfWR0aitKFMM= -github.com/DataDog/sketches-go v1.0.0/go.mod h1:O+XkJHWk9w4hDwY2ZUDU31ZC9sNYlYo8DiFsxjYeo1k= +github.com/DataDog/datadog-go/v5 v5.1.0 h1:Zmq3tCk9+Tdq8Du73M71Zo6Dyx+cEo9QkCSCqQlHFaQ= +github.com/DataDog/datadog-go/v5 v5.1.0/go.mod h1:KhiYb2Badlv9/rofz+OznKoEF5XKTonWyhx5K83AP8E= +github.com/DataDog/mmh3 v0.0.0-20200805151601-30884ca2197a/go.mod h1:SvsjzyJlSg0rKsqYgdcFxeEVflx3ZNAyFfkUHP0TxXg= github.com/DataDog/sketches-go v1.4.1 h1:j5G6as+9FASM2qC36lvpvQAj9qsv/jUs3FtO8CwZNAY= github.com/DataDog/sketches-go v1.4.1/go.mod h1:xJIXldczJyyjnbDop7ZZcLxJdV3+7Kra7H1KMgpgkLk= -github.com/DataDog/zstd v1.3.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= +github.com/DataDog/zstd v1.4.8/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f/go.mod h1:oXfOhM/Kr8OvqS6tVqJwxPBornV0yrx3bc+l0BDr7PQ= github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962 h1:KeNholpO2xKjgaaSyd+DyQRrsQjhbSeS7qe4nEw8aQw= github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962/go.mod h1:kC29dT1vFpj7py2OvG1khBdQpo3kInWP+6QipLbdngo= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.32.1 h1:v2ey6AUQFjj6vPMdXNL9K1R1/4V20qPBuL3os831jvw= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.32.1/go.mod h1:s7Gpwj0tk7XnVCm4BQEmx/mbS36SuTCY/vMB2SNxe8o= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.32.3 h1:fiyErF/p5fz79DvMCca9ayvYiWYsFP1oJbskt9fjo8I= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.32.3/go.mod h1:s7Gpwj0tk7XnVCm4BQEmx/mbS36SuTCY/vMB2SNxe8o= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.30.2-0.20220512190557-875976f87023 h1:a5qaC/K40oknHppvTFqQZkLMY7XZSvWyxcG/T6W6DF8= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.30.2-0.20220512190557-875976f87023/go.mod h1:kXt5P2nDYWk6ltkQi+YmcGCNMwS54nnYfLm8jrU0APk= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.32.3 h1:lH3MlsWLJrCZWtXBFPm3x13qGShQZyWN4724Xd5k8tw= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.32.3/go.mod h1:CAeDUmnMG3urxkSYOIbreCYRsiAIo4pqprz8WZevx14= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.6.1 h1:LNl8Tg6N6qChoiM6lKC1Z44Z+CkPAdYx45L/lJDgThs= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.6.1/go.mod h1:ZFRHg4zuQuc6sQyx16A53fB7kxPvPguSeE8GFVpT6rQ= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector/googlemanagedprometheus v0.32.3 h1:WH/XKMguEBZ8lEj/zG4itQHyUFpcw3Qgj2w1iV2UUJ8= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector/googlemanagedprometheus v0.32.3/go.mod h1:w1Uf3fFiijR5jFRnb80E3cAVyZxFpUM0N/Q/+Biu/Xo= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.8.3 h1:i84ZOPT35YCJROyuf97VP/VEdYhQce/8NTLOWq5tqJw= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.8.3/go.mod h1:3+qm+VCJbVmQ9uscVz+8h1rRkJEy9ZNFGgpT1XB9mPg= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.30.1 h1:JftlZfpIvptFTzSD/BXuoK9i0nT3D1GSz1EEBr+jjuM= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.30.1/go.mod h1:j+FS9VBW3mwtHBmm9KOJEy5Tq68fCp7fE/R9bV/flIM= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.32.3 h1:FhsH8qgWFkkPlPXBZ68uuT/FH/R+DLTtVPxjLEBs1v4= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.32.3/go.mod h1:9a+Opaevo9fybhUvQkEG7fR6Zk7pYrW/s9NC4fODFIQ= -github.com/HdrHistogram/hdrhistogram-go v0.9.0/go.mod h1:nxrse8/Tzg2tg3DZcZjm6qEclQKK70g0KxO61gFFZD4= github.com/HdrHistogram/hdrhistogram-go v1.0.1/go.mod h1:BWJ+nMSHY3L41Zj7CA3uXnloDp7xxV0YvstAE7nKTaM= +github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= +github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= +github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= @@ -235,35 +243,39 @@ github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdko github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/ReneKroon/ttlcache/v2 v2.11.0 h1:OvlcYFYi941SBN3v9dsDcC2N8vRxyHcCmJb3Vl4QMoM= github.com/ReneKroon/ttlcache/v2 v2.11.0/go.mod h1:mBxvsNY+BT8qLLd6CuAJubbKo6r0jh3nb5et22bbfGY= -github.com/SAP/go-hdb v0.105.5 h1:mop9KOZU1ro9PjJLgqseHUZzwoOJh4d7f8Nrvf1a2Uo= github.com/SAP/go-hdb v0.105.5/go.mod h1:xbtJDvjqm9MQhIAnalynGNAbqxolS9W02qQo/vBqyaU= +github.com/SAP/go-hdb v0.106.1 h1:u/pwpiBobIAu+LfhlLhc4tGq6KmdQVnQv3IYONRtyLs= +github.com/SAP/go-hdb v0.106.1/go.mod h1:198ykfuonYvyg7dUUre4lQkokK/kUbhORXpRIuhrL2A= github.com/SermoDigital/jose v0.9.2-0.20161205224733-f6df55f235c2 h1:koK7z0nSsRiRiBWwa+E714Puh+DO+ZRdIyAXiXzL+lg= github.com/SermoDigital/jose v0.9.2-0.20161205224733-f6df55f235c2/go.mod h1:ARgCUhI1MHQH+ONky/PAtmVHQrP5JlGY0F3poXOp/fA= +github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/sarama v1.22.0/go.mod h1:lm3THZ8reqBDBQKQyb5HB3sY1lKp3grEbQ81aWSgPp4= -github.com/Shopify/sarama v1.29.1/go.mod h1:mdtqvCSg8JOxk8PmpTNGyo6wzd4BMm4QXSfDnTXmgkE= github.com/Shopify/sarama v1.30.0/go.mod h1:zujlQQx1kzHsh4jfV1USnptCQrHAEZ2Hk8fTKCulPVs= -github.com/Shopify/sarama v1.31.0/go.mod h1:BeW3gXRc/CxgAsrSly2RE9nIXUfC9ezb7QHBPVhvzjI= github.com/Shopify/sarama v1.32.0/go.mod h1:+EmJJKZWVT/faR9RcOxJerP+LId4iWdQPBGLy1Y1Njs= -github.com/Shopify/sarama v1.34.0 h1:j4zTaFHFnfvuV2fdLZyXqIg0Tu4Mzl9f064Z5/H+o4o= -github.com/Shopify/sarama v1.34.0/go.mod h1:V2ceE9UupUf4/oP1Z38SI49fAnD0/MtkqDDHvolIeeQ= +github.com/Shopify/sarama v1.34.1 h1:pVCQO7BMAK3s1jWhgi5v1W6lwZ6Veiekfc2vsgRS06Y= github.com/Shopify/sarama v1.34.1/go.mod h1:NZSNswsnStpq8TUdFaqnpXm2Do6KRzTIjdBdVlL1YRM= github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/Shopify/toxiproxy/v2 v2.1.6-0.20210914104332-15ea381dcdae/go.mod h1:/cvHQkZ1fst0EmZnA5dFtiQdWCNCFYzb+uE2vqVgvx0= -github.com/Shopify/toxiproxy/v2 v2.3.0 h1:62YkpiP4bzdhKMH+6uC5E95y608k3zDwdzuBMsnn3uQ= github.com/Shopify/toxiproxy/v2 v2.3.0/go.mod h1:KvQTtB6RjCJY4zqNJn7C7JDFgsG5uoHYDirfUfpIm0c= +github.com/Shopify/toxiproxy/v2 v2.4.0 h1:O1e4Jfvr/hefNTNu+8VtdEG5lSeamJRo4aKhMOKNM64= github.com/Shopify/toxiproxy/v2 v2.4.0/go.mod h1:3ilnjng821bkozDRxNoo64oI/DKqM+rOyJzb564+bvg= github.com/Showmax/go-fqdn v1.0.0 h1:0rG5IbmVliNT5O19Mfuvna9LL7zlHyRfsSvBPZmF9tM= github.com/Showmax/go-fqdn v1.0.0/go.mod h1:SfrFBzmDCtCGrnHhoDjuvFnKsWjEQX/Q9ARZvOrJAko= github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= -github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/a8m/tree v0.0.0-20210115125333-10a5fd5b637d/go.mod h1:FSdwKX97koS5efgm8WevNf7XS3PqtyFkKDDXrz778cg= +github.com/aerospike/aerospike-client-go/v5 v5.8.0 h1:EUV2wG80yIenQqOyUlf5NfyhagPIwoeL09MJIE+xILE= +github.com/aerospike/aerospike-client-go/v5 v5.8.0/go.mod h1:rJ/KpmClE7kiBPfvAPrGw9WuNOiz8v2uKbQaUyYPXtI= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= +github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= +github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= github.com/alecthomas/participle/v2 v2.0.0-alpha9 h1:TnflwDbtf5/aG6JMbmdiA+YB3bLg0sc6yRtmAfedfN4= github.com/alecthomas/participle/v2 v2.0.0-alpha9/go.mod h1:NumScqsC42o9x+dGj8/YqsIfhrIQjFEOFovxotbBirA= github.com/alecthomas/repr v0.0.0-20181024024818-d37bc2a10ba1 h1:GDQdwm/gAcJcLAKQQZGOJ4knlw+7rfEQQcmwTbt4p5E= @@ -277,26 +289,33 @@ github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAu github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= github.com/alexflint/go-filemutex v1.1.0/go.mod h1:7P4iRhttt/nUvUOrYIhcpMzv2G6CY9UnI16Z+UJqRyk= -github.com/aliyun/aliyun-log-go-sdk v0.1.36 h1:ZWhKl1tBOvRn3/sIrFy8gMX+Hfq2u8mee1DeU96jqjc= -github.com/aliyun/aliyun-log-go-sdk v0.1.36/go.mod h1:1QQ59pEJiVVXqKgbHcU6FWIgxT5RKBt+CT8AiQ2bEts= +github.com/aliyun/aliyun-log-go-sdk v0.1.37 h1:GvswbgLqVOHNeMWssQ9zA+R7YVDP6arLUP92bKyGZNw= github.com/aliyun/aliyun-log-go-sdk v0.1.37/go.mod h1:1QQ59pEJiVVXqKgbHcU6FWIgxT5RKBt+CT8AiQ2bEts= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= -github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220626175859-9abda183db8e h1:bt6SW1eSSvdmmsG0KqyxYXorcTnFBTX7hfVR1+68+jg= -github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220626175859-9abda183db8e/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220816024939-bc8df83d7b9d h1:0xIrH2lJbraclvJT3pvTf3u2oCAL60cAqiv4qRpz4EI= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220816024939-bc8df83d7b9d/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/antonmedv/expr v1.9.0 h1:j4HI3NHEdgDnN9p6oI6Ndr0G5QryMY0FNxT4ONrFDGU= github.com/antonmedv/expr v1.9.0/go.mod h1:5qsM3oLGDND7sDmQGDXHkYfkjYMUX14qsgqmHhwGEk8= +github.com/apache/arrow/go/arrow v0.0.0-20211112161151-bc219186db40 h1:q4dksr6ICHXqG5hm0ZW5IHyeEJXoIJSOZeBLmWPNeIQ= +github.com/apache/arrow/go/arrow v0.0.0-20211112161151-bc219186db40/go.mod h1:Q7yQnSMnLvcXlZ8RV+jwz/6y1rQTqbX6C82SndT52Zs= +github.com/apache/pulsar-client-go v0.8.1 h1:UZINLbH3I5YtNzqkju7g9vrl4CKrEgYSx2rbpvGufrE= +github.com/apache/pulsar-client-go v0.8.1/go.mod h1:yJNcvn/IurarFDxwmoZvb2Ieylg630ifxeO/iXpk27I= +github.com/apache/pulsar-client-go/oauth2 v0.0.0-20220120090717-25e59572242e h1:EqiJ0Xil8NmcXyupNqXV9oYDBeWntEIegxLahrTr8DY= +github.com/apache/pulsar-client-go/oauth2 v0.0.0-20220120090717-25e59572242e/go.mod h1:Xee4tgYLFpYcPMcTfBYWE1uKRzeciodGTSEDMzsR6i8= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.14.2/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.15.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/apache/thrift v0.16.0 h1:qEy6UW60iVOlUy+b9ZR0d5WzUWYGOo4HfopoyBaNmoY= github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= +github.com/ardielle/ardielle-go v1.5.2 h1:TilHTpHIQJ27R1Tl/iITBzMwiUGSlVfiVhwDNGM3Zj4= +github.com/ardielle/ardielle-go v1.5.2/go.mod h1:I4hy1n795cUhaVt/ojz83SNVCYIGsAFAONtv2Dr7HUI= +github.com/ardielle/ardielle-tools v1.5.4/go.mod h1:oZN+JRMnqGiIhrzkRN9l26Cej9dEx4jeNG6A+AdkShk= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.3.0/go.mod h1:zXjbSimjXTd7vOpY8B0/2LpvNvDoXBuplAD+gJD3GYs= +github.com/armon/go-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-metrics v0.3.10 h1:FR+drcQStOe+32sYyJYyZ7FIdgoGGBnwLl+flodp8Uo= github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= @@ -310,54 +329,73 @@ github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:o github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/avast/retry-go v3.0.0+incompatible h1:4SOWQ7Qs+oroOTQOYnAHqelpCO0biHSxpiH9JdtuBj0= -github.com/avast/retry-go v3.0.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= -github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.32.6/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= github.com/aws/aws-sdk-go v1.35.24/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.38.68/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/aws/aws-sdk-go v1.44.28 h1:h/OAqEqY18wq//v6h4GNPMmCkxuzSDrWuGyrvSiRqf4= -github.com/aws/aws-sdk-go v1.44.28/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= +github.com/aws/aws-sdk-go v1.43.11/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.43.31/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.20/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.54 h1:zfFptZ0iLuk+psnRLk+o0NMgd/pBsALlNE7i40iOmFA= github.com/aws/aws-sdk-go v1.44.54/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/aws/aws-sdk-go-v2 v1.0.0/go.mod h1:smfAbmpW+tcRVuNUjo3MOArSZmW72t62rkCzc2i0TWM= github.com/aws/aws-sdk-go-v2 v1.7.0/go.mod h1:tb9wi5s61kTDA5qCkcDbt3KRVV74GGslQkl/DRdX/P4= -github.com/aws/aws-sdk-go-v2 v1.9.2 h1:dUFQcMNZMLON4BOe273pl0filK9RqyQMhCK/6xssL6s= +github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= -github.com/aws/aws-sdk-go-v2/config v1.0.0/go.mod h1:WysE/OpUgE37tjtmtJd8GXgT8s1euilE5XtUkRNUQ1w= -github.com/aws/aws-sdk-go-v2/config v1.8.3 h1:o5583X4qUfuRrOGOgmOcDgvr5gJVSu57NK08cWAhIDk= +github.com/aws/aws-sdk-go-v2 v1.11.0 h1:HxyD62DyNhCfiFGUHqJ/xITD6rAjJ7Dm/2nLxLmO4Ag= +github.com/aws/aws-sdk-go-v2 v1.11.0/go.mod h1:SQfA+m2ltnu1cA0soUkj4dRSsmITiVQUJvBIZjzfPyQ= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.0.0 h1:yVUAwvJC/0WNPbyl0nA3j1L6CW1CN8wBubCRqtG7JLI= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.0.0/go.mod h1:Xn6sxgRuIDflLRJFj5Ev7UxABIkNbccFPV/p8itDReM= github.com/aws/aws-sdk-go-v2/config v1.8.3/go.mod h1:4AEiLtAb8kLs7vgw2ZV3p2VZ1+hBavOc84hqxVNpCyw= -github.com/aws/aws-sdk-go-v2/credentials v1.0.0/go.mod h1:/SvsiqBf509hG4Bddigr3NB12MIpfHhZapyBurJe8aY= -github.com/aws/aws-sdk-go-v2/credentials v1.4.3 h1:LTdD5QhK073MpElh9umLLP97wxphkgVC/OjQaEbBwZA= +github.com/aws/aws-sdk-go-v2/config v1.10.1 h1:z/ViqIjW6ZeuLWgTWMTSyZzaVWo/1cWeVf1Uu+RF01E= +github.com/aws/aws-sdk-go-v2/config v1.10.1/go.mod h1:auIv5pIIn3jIBHNRcVQcsczn6Pfa6Dyv80Fai0ueoJU= github.com/aws/aws-sdk-go-v2/credentials v1.4.3/go.mod h1:FNNC6nQZQUuyhq5aE5c7ata8o9e4ECGmS4lAXC7o1mQ= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.0/go.mod h1:wpMHDCXvOXZxGCRSidyepa8uJHY4vaBGfY2/+oKU/Bc= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.6.0 h1:9tfxW/icbSu98C2pcNynm5jmDwU3/741F11688B6QnU= +github.com/aws/aws-sdk-go-v2/credentials v1.6.1 h1:A39JYth2fFCx+omN/gib/jIppx3rRnt2r7UKPq7Mh5Y= +github.com/aws/aws-sdk-go-v2/credentials v1.6.1/go.mod h1:QyvQk1IYTqBWSi1T6UgT/W8DMxBVa5pVuLFSRLLhGf8= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.6.0/go.mod h1:gqlclDEZp4aqJOancXK6TN24aKhT0W0Ae9MHk3wzTMM= -github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4 h1:leSJ6vCqtPpTmBIgE7044B1wql1E4n//McF+mEgNrYg= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.8.0 h1:OpZjuUy8Jt3CA1WgJgBC5Bz+uOjE5Ppx4NFTRaooUuA= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.8.0/go.mod h1:5E1J3/TTYy6z909QNR0QnXGBpfESYGDqd3O0zqONghU= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.7.1 h1:p9Dys1g2YdaqMalnp6AwCA+tpMMdJNGw5YYKP/u3sUk= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.7.1/go.mod h1:wN/mvkow08GauDwJ70jnzJ1e+hE+Q3Q7TwpYLXOe9oI= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.0 h1:zY8cNmbBXt3pzjgWgdIbzpQ6qxoCwt+Nx9JbrAf2mbY= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.0/go.mod h1:NO3Q5ZTTQtO2xIg2+xTXYDiT7knSejfeDm7WGDaOo0U= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.0.0 h1:Z3aR/OXBnkYK9zXkNkfitHX6SmUBzSsx8VMHbH4Lvhw= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.0.0/go.mod h1:anlUzBoEWglcUxUQwZA7HQOEVEnQALVZsizAapB2hq8= github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4/go.mod h1:ZcBrrI3zBKlhGFNYWvju0I3TR93I7YIgAfy82Fh4lcQ= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.0 h1:c10Z7fWxtJCoyc8rv06jdh9xrKnu7bAJiRaKWvTb2mU= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.0/go.mod h1:6oXGy4GLpypD3uCh8wcqztigGgmhLToMfjavgh+VySg= github.com/aws/aws-sdk-go-v2/service/appconfig v1.4.2/go.mod h1:FZ3HkCe+b10uFZZkFdvf98LHW21k49W8o8J366lqVKY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.5.0/go.mod h1:acH3+MQoiMzozT/ivU+DbRg7Ooo2298RdRaWcOv+4vM= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.0/go.mod h1:3jExOmpbjgPnz2FJaMOfbSk1heTkZ66aD3yNtVhnjvI= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2 h1:r7jel2aa4d9Duys7wEmWqDd5ebpC9w6Kxu6wIjjp18E= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.5.0 h1:lPLbw4Gn59uoKqvOfSnkJr54XWk5Ak1NK20ZEiSWb3U= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.5.0/go.mod h1:80NaCIH9YU3rzTTs/J/ECATjXuRqzo/wB6ukO6MZ0XY= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72HRZDLMtmVQiLG2tLfQcaWLCssELvGl+Zf2WVxMmR8= -github.com/aws/aws-sdk-go-v2/service/sqs v1.0.0/go.mod h1:w5BclCU8ptTbagzXS/fHBr+vAyXUjggg/72qDIURKMk= -github.com/aws/aws-sdk-go-v2/service/sso v1.4.2 h1:pZwkxZbspdqRGzddDB92bkZBoB7lg85sMRE7OqdB3V0= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.5.0 h1:qGZWS/WgiFY+Zgad2u0gwBHpJxz6Ne401JE7iQI1nKs= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.5.0/go.mod h1:Mq6AEc+oEjCUlBuLiK5YwW4shSOAKCQ3tXN0sQeYoBA= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.9.0 h1:0BOlTqnNnrEO04oYKzDxMMe68t107pmIotn18HtVonY= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.9.0/go.mod h1:xKCZ4YFSF2s4Hnb/J0TLeOsKuGzICzcElaOKNGrVnx4= +github.com/aws/aws-sdk-go-v2/service/s3 v1.19.0 h1:5mRAms4TjSTOGYsqKYte5kHr1PzpMJSyLThjF3J+hw0= +github.com/aws/aws-sdk-go-v2/service/s3 v1.19.0/go.mod h1:Gwz3aVctJe6mUY9T//bcALArPUaFmNAy2rTB9qN4No8= github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk= -github.com/aws/aws-sdk-go-v2/service/sts v1.0.0/go.mod h1:5f+cELGATgill5Pu3/vK3Ebuigstc+qYEHW5MvGWZO4= -github.com/aws/aws-sdk-go-v2/service/sts v1.7.2 h1:ol2Y5DWqnJeKqNd8th7JWzBtqu63xpOfs1Is+n1t8/4= +github.com/aws/aws-sdk-go-v2/service/sso v1.6.0 h1:JDgKIUZOmLFu/Rv6zXLrVTWCmzA0jcTdvsT8iFIKrAI= +github.com/aws/aws-sdk-go-v2/service/sso v1.6.0/go.mod h1:Q/l0ON1annSU+mc0JybDy1Gy6dnJxIcWjphO6qJPzvM= github.com/aws/aws-sdk-go-v2/service/sts v1.7.2/go.mod h1:8EzeIqfWt2wWT4rJVu3f21TfrhJ8AEMzVybRNSb/b4g= -github.com/aws/smithy-go v1.0.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= +github.com/aws/aws-sdk-go-v2/service/sts v1.10.0 h1:1jh8J+JjYRp+QWKOsaZt7rGUgoyrqiiVwIm+w0ymeUw= +github.com/aws/aws-sdk-go-v2/service/sts v1.10.0/go.mod h1:jLKCFqS+1T4i7HDqCP9GM4Uk75YW1cS0o82LdxpMyOE= github.com/aws/smithy-go v1.5.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/aws/smithy-go v1.9.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= github.com/aws/smithy-go v1.11.0 h1:nOfSDwiiH232f90OuevPnAEQO5ZqH+xnn8uGVsvBCw4= github.com/aws/smithy-go v1.11.0/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM= +github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/basgys/goxml2json v1.1.0 h1:4ln5i4rseYfXNd86lGEB+Vi652IsIXIvggKM/BhUKVw= -github.com/beeker1121/goque v2.1.0+incompatible h1:m5pZ5b8nqzojS2DF2ioZphFYQUqGYsDORq6uefUItPM= -github.com/beeker1121/goque v2.1.0+incompatible/go.mod h1:L6dOWBhDOnxUVQsb0wkLve0VCnt2xJW/MI8pdRX4ANw= +github.com/basgys/goxml2json v1.1.0/go.mod h1:wH7a5Np/Q4QoECFIU8zTQlZwZkrilY0itPfecMw41Dw= +github.com/beefsack/go-rate v0.0.0-20220214233405-116f4ca011a0/go.mod h1:6YNgTHLutezwnBvyneBbwvB8C82y3dcoOj5EQJIdGXA= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= @@ -382,7 +420,9 @@ github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2y github.com/bmatcuk/doublestar/v3 v3.0.0 h1:TQtVPlDnAYwcrVNB2JiGuMc++H5qzWZd9PhkNo5WyHI= github.com/bmatcuk/doublestar/v3 v3.0.0/go.mod h1:6PcTVMw80pCY1RVuoqu3V++99uQB3vsSYKPTd8AWA0k= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= -github.com/bradfitz/gomemcache v0.0.0-20220106215444-fb4bf637b56d/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= +github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b/go.mod h1:ac9efd0D1fsDb3EJvhqgXRbFx7bs2wqZ10HQPeU8U/Q= +github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= github.com/bsm/sarama-cluster v2.1.13+incompatible/go.mod h1:r7ao+4tTNXvWm+VRpRJchr2kQhqxgmAp2iEX5W96gMM= github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= @@ -394,6 +434,7 @@ github.com/caio/go-tdigest v3.1.0+incompatible h1:uoVMJ3Q5lXmVLCCqaMGHLBWnbGoN6L github.com/caio/go-tdigest v3.1.0+incompatible/go.mod h1:sHQM/ubZStBUmF1WbB8FAm8q9GjDajLC5T7ydxE3JHI= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/casbin/casbin/v2 v2.31.6/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= +github.com/casbin/casbin/v2 v2.37.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= @@ -405,6 +446,7 @@ github.com/census-instrumentation/opencensus-proto v0.3.0 h1:t/LhUZLVitR1Ow2YOnd github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= @@ -414,10 +456,11 @@ github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d8 github.com/checkpoint-restore/go-criu/v5 v5.3.0 h1:wpFFOoomK3389ue2lAb0Boag6XPht5QYpipxmSNL4d8= github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 h1:kHaBemcxl8o/pQ5VM1c8PVE1PubbNx3mjUr09OqWGCs= -github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575/go.mod h1:9d6lWj8KzO/fd/NrVaLscBKmPigpZpn5YawRPw+e3Yo= +github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= @@ -427,6 +470,7 @@ github.com/cilium/ebpf v0.7.0 h1:1k/q3ATgxSXRdrmPfH8d7YK0GfqVsEKZAX9dQZvs56k= github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 h1:F1EaeKL/ta07PY/k9Os/UFtwERei2/XzGemhpGnBKNg= @@ -452,7 +496,8 @@ github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/confluentinc/confluent-kafka-go v1.4.0/go.mod h1:u2zNLny2xq+5rWeTQjFHbDzzNuba4P1vo31r9r4uAdg= +github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4= +github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= @@ -493,6 +538,7 @@ github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoT github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= github.com/containerd/containerd v1.5.8/go.mod h1:YdFSv5bTFLpG2HIYmfqDpSYYTDX+mc5qtSuYx1YUb/s= +github.com/containerd/containerd v1.5.9/go.mod h1:fvQqCfadDGga5HZyn3j4+dx56qj2I9YwBrlSdalvJYQ= github.com/containerd/containerd v1.6.1 h1:oa2uY0/0G+JX4X7hpGCYvkp9FjUancz56kSNnb1sG3o= github.com/containerd/containerd v1.6.1/go.mod h1:1nJz5xCZPusx6jJU8Frfct988y0NpumIq9ODB0kLtoE= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= @@ -572,6 +618,7 @@ github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= @@ -595,20 +642,19 @@ github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1S github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU= +github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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/denisenkom/go-mssqldb v0.0.0-20200428022330-06a60b6afbbc/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= -github.com/denisenkom/go-mssqldb v0.11.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= +github.com/denisenkom/go-mssqldb v0.12.2 h1:1OcPn5GBIobjWNd+8yjfHNIaFX14B1pWI3F9HZy5KXw= +github.com/denisenkom/go-mssqldb v0.12.2/go.mod h1:lnIw1mZukFRZDJYQ0Pb833QS2IaC3l5HkEfra2LJ+sk= github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE= github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= -github.com/dgraph-io/badger/v3 v3.2103.0/go.mod h1:GHMCYxuDWyzbHkh4k3yyg4PM61tJPFfEGSMbE3Vd5QE= +github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= github.com/dgraph-io/badger/v3 v3.2103.2/go.mod h1:RHo4/GmYcKKh5Lxu63wLEMHJ70Pac2JqZRYGhlyAo2M= -github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgraph-io/ristretto v0.0.4-0.20210309073149-3836124cdc5a/go.mod h1:MIonLggsKgZLUSt414ExgwNtlOL5MuEoAJP514mwGe8= github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI= github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug= github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= @@ -616,22 +662,30 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/digitalocean/godo v1.78.0/go.mod h1:GBmu8MkjZmNARE7IXRPmkbbnocNN8+uBm0xbEVw2LCs= github.com/digitalocean/godo v1.80.0 h1:ZULJ/fWDM97YtO7Fa+K6hzJLd7+smCu4N+0n+B/xtj4= github.com/digitalocean/godo v1.80.0/go.mod h1:BPCqvwbjbGqxuUnIKB4EvS/AX7IDnNmt5fwvIkWo+ew= +github.com/dimfeld/httptreemux v5.0.1+incompatible h1:Qj3gVcDNoOthBAqftuD596rm4wg/adLLz5xh5CmpiCA= +github.com/dimfeld/httptreemux v5.0.1+incompatible/go.mod h1:rbUlSV+CCpv/SuqUTP/8Bk2O3LyUV436/yaRGkhP6Z0= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/dnephin/pflag v1.0.7/go.mod h1:uxE91IoWURlOiTUIA8Mq5ZZkAv3dPUfZNaT80Zm7OQE= github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.8.0-beta.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68= github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.11+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.12+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.16+incompatible h1:2Db6ZR/+FUR3hqPMwnogOPHFn405crbpxvWzKovETOQ= +github.com/docker/docker v20.10.14+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.16+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.17+incompatible h1:JYCuMrWaVNophQTOrMMoSwudOVEfcegoZZrleKc1xwE= github.com/docker/docker v20.10.17+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= @@ -647,13 +701,15 @@ github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dougm/pretty v0.0.0-20171025230240-2ee9d7453c02/go.mod h1:7NQ3kWOx2cZOSjtcveTa5nqupVr2s6/83sG+rTlI7uA= github.com/dropbox/godropbox v0.0.0-20180512210157-31879d3884b9 h1:NAvZb7gqQfLSNBPzVsvI7eZMosXtg2g2kxXrei90CtU= github.com/dropbox/godropbox v0.0.0-20180512210157-31879d3884b9/go.mod h1:glr97hP/JuXb+WMYCizc4PIFuzw1lCR97mwbe1VVXhQ= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dynatrace-oss/dynatrace-metric-utils-go v0.3.0 h1:q2Ayh9s6Cr75bS5URiOUAoyFXemgKQaBJphbhAaJHCY= -github.com/dynatrace-oss/dynatrace-metric-utils-go v0.3.0/go.mod h1:qw0E9EJ0PnSlhWawDNuqE0zhc1hqOBUCFIAj3dd9DNw= +github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b h1:HBah4D48ypg3J7Np4N+HY/ZR76fx3HEUGxDU6Uk39oQ= +github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= +github.com/dynatrace-oss/dynatrace-metric-utils-go v0.5.0 h1:wHGPJSXvwKQVf/XfhjUPyrhpcPKWNy8F3ikH+eiwoBg= github.com/dynatrace-oss/dynatrace-metric-utils-go v0.5.0/go.mod h1:PseHFo8Leko7J4A/TfZ6kkHdkzKBLUta6hRZR/OEbbc= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-resiliency v1.2.0 h1:v7g92e/KSN71Rq7vSThKaWIq68fL4YHvWyiUKorFR1Q= @@ -663,7 +719,8 @@ github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1 github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/elastic/go-elasticsearch/v6 v6.8.5/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI= +github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= +github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= github.com/elastic/go-elasticsearch/v7 v7.17.1 h1:49mHcHx7lpCL8cW1aioEwSEVKQF3s+Igi4Ye/QTWwmk= github.com/elastic/go-elasticsearch/v7 v7.17.1/go.mod h1:OJ4wdbtDNk5g503kvlHLyErCgQwwzmDtaFC4XyOxXA4= github.com/elastic/go-licenser v0.3.1 h1:RmRukU/JUmts+rpexAw0Fvt2ly7VVu6mw8z4HrEzObU= @@ -674,7 +731,6 @@ github.com/elastic/go-sysinfo v1.1.1 h1:ZVlaLDyhVkDfjwPGU55CQRCRolNpc7P0BbyhhQZQ github.com/elastic/go-sysinfo v1.1.1/go.mod h1:i1ZYdU10oLNfRzq4vq62BEwD2fH8KaWh6eh0ikPT9F0= github.com/elastic/go-windows v1.0.0 h1:qLURgZFkkrYyTTkvYpsZIgf83AUsdIHfvlJaqaZ7aSY= github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6CcloAxnPgU= -github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible h1:spTtZBk5DYEvbxMVutUuTyh1Ao2r4iyvLdACqsl/Ljk= @@ -695,10 +751,9 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= github.com/envoyproxy/protoc-gen-validate v0.6.7 h1:qcZcULcd/abmQg6dwigimCNEyi4gg31M/xaciQlDml8= github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= -github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= +github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= github.com/euank/go-kmsg-parser v2.0.0+incompatible h1:cHD53+PLQuuQyLZeriD1V/esuG4MuU0Pjs5y6iknohY= github.com/euank/go-kmsg-parser v2.0.0+incompatible/go.mod h1:MhmAMZ8V4CYH4ybgdRwPr2TU5ThnS43puaKEMpja1uw= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= @@ -719,6 +774,8 @@ github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpm github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= @@ -726,11 +783,17 @@ github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/flynn/go-docopt v0.0.0-20140912013429-f6dd2ebbb31e/go.mod h1:HyVoz1Mz5Co8TFO8EupIdlcpwShBmY98dkT2xeHkvEI= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/form3tech-oss/jwt-go v3.2.5+incompatible h1:/l4kBbb4/vGSsdtB5nUe8L7B9mImVMaBPw9L/0TBHU8= +github.com/form3tech-oss/jwt-go v3.2.5+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goblin v0.0.0-20210519012713-85d372ac71e2/go.mod h1:VzmDKDJVZI3aJmnRI9VjAn9nJ8qPPsN1fqzr9dqInIo= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.4.0/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= github.com/frankban/quicktest v1.10.2/go.mod h1:K+q6oSqb0W0Ininfk863uOk1lMy69l/P6txr3mVT54s= @@ -748,8 +811,10 @@ github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5 github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= +github.com/gabriel-vasile/mimetype v1.4.0 h1:Cn9dkdYsMIu56tGho+fqzh7XmvY2YyGU0FnbhiOsEro= +github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8= github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= -github.com/garyburd/redigo v1.6.3/go.mod h1:rTb6epsqigu3kYKBnaF028A7Tf/Aw5s0cqA47doKKqw= +github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= github.com/gdamore/tcell v1.3.0/go.mod h1:Hjvr+Ofd+gLglo7RYKxxnzCBmev3BzsS67MebKS4zMM= github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= @@ -760,13 +825,17 @@ github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2H github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= -github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= +github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= -github.com/go-chi/chi v1.5.0/go.mod h1:REp24E+25iKvxgeTfHmdUoL5x15kBiDBlnIl5bCwe2k= -github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= +github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= +github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= +github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -781,8 +850,9 @@ github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vb github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= +github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= -github.com/go-ldap/ldap/v3 v3.1.3/go.mod h1:3rbOH3jRS2u6jg2rJnKAMLE/xQyCKIveG2Sa/Cohzb8= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= @@ -800,8 +870,8 @@ github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jT github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= +github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= -github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= @@ -823,7 +893,6 @@ github.com/go-openapi/errors v0.19.6/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpX github.com/go-openapi/errors v0.19.7/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.20.0/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.20.1/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= @@ -860,8 +929,8 @@ github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29g github.com/go-openapi/runtime v0.19.15/go.mod h1:dhGWCTKRXlAfGnQG0ONViOZpjfg0m2gUt9nTQPQZuoo= github.com/go-openapi/runtime v0.19.16/go.mod h1:5P9104EJgYcizotuXhEuUrzVc+j1RiSjahULvYmlv98= github.com/go-openapi/runtime v0.19.24/go.mod h1:Lm9YGCeecBnUUkFTxPC4s1+lwrkJ0pthx8YvyjCfkgk= -github.com/go-openapi/runtime v0.19.28/go.mod h1:BvrQtn6iVb2QmiVXRsFAm6ZCAZBpbVKFfN6QWCp582M= -github.com/go-openapi/runtime v0.22.0/go.mod h1:aQg+kaIQEn+A2CRSY1TxbM8+sT9g2V3aLc1FbIAnbbs= +github.com/go-openapi/runtime v0.21.0/go.mod h1:aQg+kaIQEn+A2CRSY1TxbM8+sT9g2V3aLc1FbIAnbbs= +github.com/go-openapi/runtime v0.23.1/go.mod h1:AKurw9fNre+h3ELZfk6ILsfvPN+bvvlaU/M9q/r9hpk= github.com/go-openapi/runtime v0.23.3/go.mod h1:AKurw9fNre+h3ELZfk6ILsfvPN+bvvlaU/M9q/r9hpk= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= @@ -877,6 +946,7 @@ github.com/go-openapi/spec v0.20.1/go.mod h1:93x7oh+d+FQsmsieroS4cmR3u0p/ywH649a github.com/go-openapi/spec v0.20.3/go.mod h1:gG4F8wdEDN+YPBMVnzE85Rbhf+Th2DTvA9nFPQ5AYEg= github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= github.com/go-openapi/spec v0.20.5/go.mod h1:QbfOSIVt3/sac+a1wzmKbbcLXm5NdZnyBZYtCijp43o= +github.com/go-openapi/spec v0.20.6/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= @@ -886,7 +956,6 @@ github.com/go-openapi/strfmt v0.19.4/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= github.com/go-openapi/strfmt v0.19.11/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc= github.com/go-openapi/strfmt v0.20.0/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc= -github.com/go-openapi/strfmt v0.20.1/go.mod h1:43urheQI9dNtE5lTZQfuFJvjYJKPrxicATpEfZwHUNk= github.com/go-openapi/strfmt v0.20.2/go.mod h1:43urheQI9dNtE5lTZQfuFJvjYJKPrxicATpEfZwHUNk= github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg= github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= @@ -911,22 +980,21 @@ github.com/go-openapi/validate v0.19.10/go.mod h1:RKEZTUWDkxKQxN2jDT7ZnZi2bhZlbN github.com/go-openapi/validate v0.19.12/go.mod h1:Rzou8hA/CBw8donlS6WNEUQupNvUZ0waH08tGe6kAQ4= github.com/go-openapi/validate v0.19.15/go.mod h1:tbn/fdOwYHgrhPBzidZfJC2MIVvs9GA7monOmWBbeCI= github.com/go-openapi/validate v0.20.1/go.mod h1:b60iJT+xNNLfaQJUqLI7946tYiFEOuE9E4k54HpKcJ0= -github.com/go-openapi/validate v0.20.2/go.mod h1:e7OJoKNgd0twXZwIn0A43tHbvIcr/rZIVCbJBpTUoY0= github.com/go-openapi/validate v0.20.3/go.mod h1:goDdqVGiigM3jChcrYJxD2joalke3ZXeftD16byIjA4= github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= -github.com/go-pg/pg/v10 v10.0.0/go.mod h1:XHU1AkQW534GFuUdSiQ46+Xw6Ah+9+b8DlT4YwhiXL8= -github.com/go-pg/zerochecker v0.2.0/go.mod h1:NJZ4wKL0NmTtz0GKCoJ8kym6Xn/EQzXRl2OnAe7MmDo= +github.com/go-openapi/validate v0.22.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= +github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= +github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg= github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= -github.com/go-redis/redis/v7 v7.1.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= github.com/go-redis/redis/v7 v7.4.1 h1:PASvf36gyUpr2zdOUS/9Zqc80GbM+9BDyiJSJDDOrTI= github.com/go-redis/redis/v7 v7.4.1/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= -github.com/go-redis/redis/v8 v8.0.0/go.mod h1:isLoQT/NFSP7V67lyvM9GmdvLdyZ7pEhsXvvyQtnQTo= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48 h1:JVrqSeQfdhYRFk24TvhTZWU0q8lfCojxZQFi3Ou7+uY= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= @@ -938,7 +1006,6 @@ github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/go-zookeeper/zk v1.0.2 h1:4mx0EYENAdX/B/rbunjlt5+4RTA/a9SMHBRuSKdGxPM= @@ -969,18 +1036,21 @@ github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/V github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-yaml v1.9.5/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA= github.com/gocql/gocql v0.0.0-20200228163523-cd4b606dd2fb/go.mod h1:DL0ekTmBSTdlNF25Orwt/JMzqIq3EJ4MVa/J/uK64OY= github.com/gocql/gocql v0.0.0-20211222173705-d73e6b1002a7/go.mod h1:3gM2c4D3AnkISwBxGnMMsS8Oy4y2lhbPRsH4xnJrHG8= -github.com/gocql/gocql v0.0.0-20220224095938-0eacd3183625/go.mod h1:3gM2c4D3AnkISwBxGnMMsS8Oy4y2lhbPRsH4xnJrHG8= github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.6 h1:mkgN1ofwASrYnJ5W6U/BxG15eXXXjirgZc7CLqkcaro= github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofiber/fiber/v2 v2.11.0/go.mod h1:oZTLWqYnqpMMuF922SjGbsYZsdpE1MCfh416HNdweIM= -github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0= @@ -991,6 +1061,7 @@ github.com/gogo/googleapis v1.3.1/go.mod h1:d+q1s/xVJxZGKWwC/6UfPIF33J+G1Tq4GYv9 github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= +github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= @@ -999,10 +1070,17 @@ github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXP github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= +github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= +github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= @@ -1022,7 +1100,6 @@ github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -1047,7 +1124,7 @@ github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomodule/redigo v1.7.0/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/addlicense v0.0.0-20190510175307-22550fa7c1b0/go.mod h1:QtPG26W17m+OIQgE6gQ24gC1M6pUaMBAbFrTIDtwG/E= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -1055,8 +1132,9 @@ github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/cadvisor v0.44.1 h1:hsAxDZOY+5xSCXH12d/G9cxYTfP+32cMT3J7aatrgDY= github.com/google/cadvisor v0.44.1/go.mod h1:GQ9KQfz0iNHQk3D6ftzJWK4TXabfIgM10Oy3FkR+Gzg= -github.com/google/flatbuffers v1.12.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v2.0.0+incompatible h1:dicJ2oXwypfwUGnB2/TYWYEKiuk9eYQlQO/AnOHl5mI= +github.com/google/flatbuffers v2.0.0+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -1075,9 +1153,9 @@ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8 github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= @@ -1086,7 +1164,6 @@ github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXi github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -1099,11 +1176,14 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210423192551-a2663126120b/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= +github.com/google/pprof v0.0.0-20220520215854-d04f2422c8a1/go.mod h1:gSuNB+gJaOiQKLEZ+q+PK9Mq3SOzhRcw2GsGS/FhYDk= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -1111,6 +1191,7 @@ github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0 h1:zO8WHNx/MYiAKJ3d5spxZXZE6KHmIQGQcAzwUzV7qQw= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= @@ -1120,14 +1201,13 @@ github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/Oth github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= github.com/googleapis/gax-go/v2 v2.4.0 h1:dS9eYAjhrE2RjmzYw2XAPvcXfmcQLtFEQWn0CR82awk= github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/googleinterns/cloud-operations-api-mock v0.0.0-20200709193332-a1e58c29bdd3 h1:eHv/jVY/JNop1xg2J9cBb4EzyMpWZoNCP1BslSAIkOI= -github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= +github.com/googleinterns/cloud-operations-api-mock v0.0.0-20200709193332-a1e58c29bdd3/go.mod h1:h/KNeRx7oYU4SpA4SoY7W2/NxDKEEVuwA6j9A27L4OI= github.com/gophercloud/gophercloud v0.24.0 h1:jDsIMGJ1KZpAjYfQgGI2coNQj5Q83oPzuiGJRFWgMzw= github.com/gophercloud/gophercloud v0.24.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= @@ -1136,20 +1216,20 @@ github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51 github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= -github.com/gorilla/mux v1.5.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2 h1:uirlL/j72L93RhV4+mkWhjv0cov2I0MIgPOG9rMDr1k= github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= -github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grobie/gomemcache v0.0.0-20180201122607-1f779c573665 h1:LONJvPBBd9wBmzSUmNHI7XpLE2qQ5tzUimeBadiVDuA= github.com/grobie/gomemcache v0.0.0-20180201122607-1f779c573665/go.mod h1:L69/dBlPQlWkcnU76WgcppK5e4rrxzQdi6LhLnK/ytA= @@ -1162,22 +1242,24 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.2/go.mod h1:chrfS3YoLAlKTRE5cFWvCbt8uGAjshktT4PveTUpsFQ= github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= -github.com/hashicorp/consul/api v1.0.0/go.mod h1:mbFwfRxOTDHZpT3iUsMAFcLNoVm6Xbe1xZ6KiSm8FY0= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/api v1.8.1/go.mod h1:sDjTOq0yUyv5G4h+BqSea7Fn6BU+XbolEz1952UB+mk= -github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= -github.com/hashicorp/consul/api v1.12.0 h1:k3y1FYv6nuKyNTqj6w9gXOx5r5CfLj/k/euUeBXj1OY= +github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= +github.com/hashicorp/consul/api v1.13.1 h1:r5cPdVFUy+pFF7nt+0ArLD9hm+E39OewJkvNdjKXcL4= github.com/hashicorp/consul/api v1.13.1/go.mod h1:+1VcOos0TVdQFqXxphG4zmGcwQB4KVGkp1maPqnkDpE= -github.com/hashicorp/consul/internal v0.1.0/go.mod h1:zi9bMZYbiPHyAjgBWo7kCUcy5l2NrTdrkVupCc7Oo6c= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.7.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM= -github.com/hashicorp/consul/sdk v0.8.0 h1:OJtKBtEjboEZvG6AOUdh4Z1Zbyu0WcxQ0qatRrZHTVU= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= +github.com/hashicorp/consul/sdk v0.10.0 h1:rGLEh2AWK4K0KCMvqWAz2EYxQqgciIfMagWZ0nVe5MI= github.com/hashicorp/consul/sdk v0.10.0/go.mod h1:yPkX5Q6CsxTFMjQQDJwzeNmUUF5NUGGbrDsv9wTb8cw= github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -1191,32 +1273,29 @@ github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9 github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v0.12.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.16.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v1.1.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v1.2.1 h1:YQsLlGDJgwhXFpucSPyVbCBviQtjlHv3jLTlp8YmtEw= github.com/hashicorp/go-hclog v1.2.1/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.2.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-kms-wrapping/entropy v0.1.0/go.mod h1:d1g9WGtAunDNpek8jUIEJnBlbgKS1N2Q61QkHiZyR1g= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-msgpack v0.5.5 h1:i9R9JSrqIz0QVLz3sz+i3YJdT7TTSLcfLLzJi9aZTuI= +github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= -github.com/hashicorp/go-plugin v1.4.2/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ= github.com/hashicorp/go-plugin v1.4.3/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ= github.com/hashicorp/go-plugin v1.4.4/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-retryablehttp v0.7.1 h1:sUiuQAnLlbvmExtFQs72iFW/HXeUn8Z1aJLQ4LJJbTQ= github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= @@ -1233,8 +1312,7 @@ github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2I github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.5.0 h1:O293SZ2Eg+AAYijkVK3jR786Am1bhDEh2GHT0tIVE5E= -github.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -1248,45 +1326,46 @@ github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0m github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.1.6/go.mod h1:5VDNHjqFMgEcclnwmkCnC99IPwxBmIsxwY8qn+Nl0H4= github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/memberlist v0.3.1 h1:MXgUXLqva1QvpVEDQW1IQLG0wivQAtmFlHRQ+1vWZfM= github.com/hashicorp/memberlist v0.3.1/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/serf v0.8.6/go.mod h1:P/AVgr4UHsUYqVHG1y9eFhz8S35pqhGhLZaDpfGKIMo= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hashicorp/serf v0.9.7 h1:hkdgbqizGQHuU5IPqYM1JdSMV8nKfpuOnZYXssk9muY= github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q= -github.com/hashicorp/vault/api v1.1.0/go.mod h1:R3Umvhlxi2TN7Ex2hzOowyeNb+SfbVWI973N+ctaFMk= github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= -github.com/hashicorp/vault/sdk v0.1.14-0.20200519221838-e0cfd64bc267/go.mod h1:WX57W2PwkrOPQ6rVQk+dy5/htHIaB4aBM70EwKThu10= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20190923154419-df201c70410d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hetznercloud/hcloud-go v1.33.1/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME= github.com/hetznercloud/hcloud-go v1.33.2 h1:ptWKVYLW7YtjXzsqTFKFxwpVo3iM9UMkVPBYQE4teLU= github.com/hetznercloud/hcloud-go v1.33.2/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME= -github.com/honeycombio/libhoney-go v1.15.8 h1:TECEltZ48K6J4NG1JVYqmi0vCJNnHYooFor83fgKesA= -github.com/honeycombio/libhoney-go v1.15.8/go.mod h1:+tnL2etFnJmVx30yqmoUkVyQjp7uRJw0a2QGu48lSyY= +github.com/honeycombio/libhoney-go v1.16.0 h1:kPpqoz6vbOzgp7jC6SR7SkNj7rua7rgxvznI6M3KdHc= github.com/honeycombio/libhoney-go v1.16.0/go.mod h1:izP4fbREuZ3vqC4HlCAmPrcPT9gxyxejRjGtCYpmBn0= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= +github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/go-syslog/v3 v3.0.1-0.20210608084020-ac565dc76ba6 h1:s9ZL6ZhFF8y6ebnm1FLvobkzoIu5xwDQUcRPk/IEhpM= github.com/influxdata/go-syslog/v3 v3.0.1-0.20210608084020-ac565dc76ba6/go.mod h1:aXdIdfn2OcGnMhOTojXmwZqXKgC3MU5riiNvzwwG9OY= +github.com/influxdata/influxdb-observability/common v0.2.20/go.mod h1:9t4MDkYRImBa4Wuatb3URr6tlimGT1JUYv9O8y5L/C8= github.com/influxdata/influxdb-observability/common v0.2.21-0.20220517160208-05f925d616de h1:f9p3iKS31+/p6cvqdmTJ45lrTlH+GDj2sK4EdVbuMI4= github.com/influxdata/influxdb-observability/common v0.2.21-0.20220517160208-05f925d616de/go.mod h1:9t4MDkYRImBa4Wuatb3URr6tlimGT1JUYv9O8y5L/C8= github.com/influxdata/influxdb-observability/influx2otel v0.2.21-0.20220517160208-05f925d616de h1:Ycgp+v47g/qaK70x54GuOBUkZinVmztEIg3dHdinKpo= @@ -1303,11 +1382,17 @@ github.com/influxdata/line-protocol/v2 v2.1.0/go.mod h1:QKw43hdUBg3GTk2iC3iyCxks github.com/influxdata/line-protocol/v2 v2.2.1 h1:EAPkqJ9Km4uAxtMRgUubJyqAr6zgWM0dznKMLRauQRE= github.com/influxdata/line-protocol/v2 v2.2.1/go.mod h1:DmB3Cnh+3oxmG6LOBIxce4oaL4CPj3OmMPgvauXh+tM= github.com/intel/goresctrl v0.2.0/go.mod h1:+CZdzouYFn5EsxgqAQTEzMfwKwuc0fVdMrT9FCCAVRQ= -github.com/ionos-cloud/sdk-go/v6 v6.0.5851 h1:Xjdta3uR5SDLXXl0oahgVIJ+AQNFCyOCuAwxPAXFUCM= github.com/ionos-cloud/sdk-go/v6 v6.0.5851/go.mod h1:UE3V/2DjnqD5doOqtjYqzJRMpI1RiwrvuuSEPX1pdnk= +github.com/ionos-cloud/sdk-go/v6 v6.1.0 h1:0EZz5H+t6W23zHt6dgHYkKavr72/30O9nA97E3FZaS4= github.com/ionos-cloud/sdk-go/v6 v6.1.0/go.mod h1:Ox3W0iiEz0GHnfY9e5LmAxwklsxguuNFEUSu0gVRTME= +github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= +github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= +github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= +github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= +github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= github.com/j-keck/arping v1.0.2/go.mod h1:aJbELhR92bSk7tp79AWM/ftfc90EfEi2bQJrbBFOsPw= +github.com/jackc/chunkreader v1.0.0 h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0= github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= @@ -1315,14 +1400,9 @@ github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgO github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= -github.com/jackc/pgconn v1.4.0/go.mod h1:Y2O3ZDF0q4mMacyWV3AstPJpeHXWGEetiFttmq5lahk= -github.com/jackc/pgconn v1.5.0/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI= -github.com/jackc/pgconn v1.5.1-0.20200601181101-fa742c524853/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI= -github.com/jackc/pgconn v1.6.4/go.mod h1:w2pne1C2tZgP+TvjqLpOigGzNqjBgQW9dUw/4Chex78= github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= -github.com/jackc/pgconn v1.10.1/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= github.com/jackc/pgconn v1.12.1 h1:rsDFzIpRk7xT4B8FufgpCCeyjdNpKyghZeSefViE5W8= github.com/jackc/pgconn v1.12.1/go.mod h1:ZkhRC59Llhrq3oSfrikvwQ5NaxYExr6twkdkMLaKono= github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= @@ -1333,56 +1413,41 @@ github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5W github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgproto3 v1.1.0 h1:FYYE4yRw+AgI8wXIinMlNjBbp/UitDJwfj5LqqewP1A= github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= -github.com/jackc/pgproto3/v2 v2.0.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgproto3/v2 v2.0.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgproto3/v2 v2.2.0/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgproto3/v2 v2.3.0 h1:brH0pCGBDkBW07HWlN/oSBXrmo3WB0UvZd1pIuDcL8Y= github.com/jackc/pgproto3/v2 v2.3.0/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg= github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= -github.com/jackc/pgtype v1.2.0/go.mod h1:5m2OfMh1wTK7x+Fk952IDmI4nw3nPrvtQdM0ZT4WpC0= -github.com/jackc/pgtype v1.3.1-0.20200510190516-8cd94a14c75a/go.mod h1:vaogEUkALtxZMCH411K+tKzNpwzCKU+AnPzBKZ+I+Po= -github.com/jackc/pgtype v1.3.1-0.20200606141011-f6355165a91c/go.mod h1:cvk9Bgu/VzJ9/lxTO5R5sf80p0DiucVtN7ZxvaC4GmQ= -github.com/jackc/pgtype v1.4.2/go.mod h1:JCULISAZBFGrHaOXIIFiyfzW5VY0GRitRr8NeJsrdig= github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= -github.com/jackc/pgtype v1.9.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= github.com/jackc/pgtype v1.11.0 h1:u4uiGPz/1hryuXzyaBhSk6dnIyyG2683olG2OV+UUgs= github.com/jackc/pgtype v1.11.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= -github.com/jackc/pgx/v4 v4.5.0/go.mod h1:EpAKPLdnTorwmPUUsqrPxy5fphV18j9q3wrfRXgo+kA= -github.com/jackc/pgx/v4 v4.6.1-0.20200510190926-94ba730bb1e9/go.mod h1:t3/cdRQl6fOLDxqtlyhe9UWgfIi9R8+8v8GKV5TRA/o= -github.com/jackc/pgx/v4 v4.6.1-0.20200606145419-4e5062306904/go.mod h1:ZDaNWkt9sW1JMiNn0kdYBaLelIhw7Pg4qd+Vk6tw7Hg= -github.com/jackc/pgx/v4 v4.8.1/go.mod h1:4HOLxrl8wToZJReD04/yB20GDwf4KBYETvlHciCnwW0= github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= -github.com/jackc/pgx/v4 v4.14.0/go.mod h1:jT3ibf/A0ZVCp89rtCIN0zCJxcE74ypROmHEZYsG/j8= github.com/jackc/pgx/v4 v4.16.1 h1:JzTglcal01DrghUqt+PmzWsZx/Yh7SC/CTQmSBMTd0Y= github.com/jackc/pgx/v4 v4.16.1/go.mod h1:SIhx0D5hoADaiXZVyv+3gSm3LCIIINTVO0PficsvWGQ= github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v1.1.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v1.2.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v1.2.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jaegertracing/jaeger v1.15.1/go.mod h1:LUWPSnzNPGRubM8pk0inANGitpiMOOxihXx0+53llXI= -github.com/jaegertracing/jaeger v1.24.0/go.mod h1:mqdtFDA447va5j0UewDaAWyNlGreGQyhGxXVhbF58gQ= -github.com/jaegertracing/jaeger v1.31.0/go.mod h1:KukZMhuamI3NVbzWmngcmXbcnxiB3WyaNf0nxio+sUw= -github.com/jaegertracing/jaeger v1.35.1 h1:Jb7/5anKF70V4FQSJRJ3AYBcA/hJDfWy45kE/9nFSe8= -github.com/jaegertracing/jaeger v1.35.1/go.mod h1:e7FBVZ14ptsRjwiHEnLyxvOa4bSnZA0BDFE1OcvNiHs= +github.com/jaegertracing/jaeger v1.28.0/go.mod h1:CfqVll05gkdPxNc5xrCnR44UmeVYZoYJtO4Ub8qn2wI= +github.com/jaegertracing/jaeger v1.35.2/go.mod h1:e7FBVZ14ptsRjwiHEnLyxvOa4bSnZA0BDFE1OcvNiHs= +github.com/jaegertracing/jaeger v1.36.0 h1:2S7otDbeCUXvOBieTIcxHfuj3x+WvHYZzizr4wzQfOo= github.com/jaegertracing/jaeger v1.36.0/go.mod h1:67uyR2zQgEk7EfguOR3eZOGvGDRzY5Yos6n2aaXxq1Y= +github.com/jawher/mow.cli v1.0.4/go.mod h1:5hQj2V8g+qYmLUVWqu4Wuja1pI57M83EChYLVZ0sMKk= +github.com/jawher/mow.cli v1.2.0/go.mod h1:y+pcA3jBAdo/GIZx/0rFjw/K2bVEODP9rfZOfaiq8Ko= github.com/jcchavezs/porto v0.1.0 h1:Xmxxn25zQMmgE7/yHYmh19KcItG81hIwfbEEFnd6w/Q= github.com/jcchavezs/porto v0.1.0/go.mod h1:fESH0gzDHiutHRdX2hv27ojnOVFco37hg1W6E9EZF4A= github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= @@ -1398,14 +1463,12 @@ github.com/jcmturner/gokrb5/v8 v8.4.2/go.mod h1:sb+Xq/fTY5yktf/VxLsE3wlfPqQjp0aW github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY= github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= -github.com/jinzhu/gorm v1.9.1/go.mod h1:Vla75njaFJ8clLU1W44h34PjIkijhjHIYnZxMqCdxqo= -github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= -github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/jinzhu/now v1.1.3/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= @@ -1422,7 +1485,6 @@ github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8Hm github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -1439,38 +1501,48 @@ github.com/juju/errors v0.0.0-20181012004132-a4583d0a56ea h1:g2k+8WR7cHch4g0tBDh github.com/juju/errors v0.0.0-20181012004132-a4583d0a56ea/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= github.com/juju/testing v0.0.0-20191001232224-ce9dec17d28b/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= -github.com/julienschmidt/httprouter v1.1.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= +github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= +github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= +github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= +github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= +github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= +github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM= +github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.10.8/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.12/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.12.2/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.14.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.14.2/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.14.4/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.15.0/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.15.4/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/klauspost/compress v1.15.6 h1:6D9PcO8QWu0JyaQ2zUMmu16T1T+zjjEpP91guRsvDfY= github.com/klauspost/compress v1.15.6/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.15.7/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/compress v1.15.8 h1:JahtItbkWjf2jzm/T+qgMxkP9EMHsqEUA6vCMGmXvhA= github.com/klauspost/compress v1.15.8/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/knadh/koanf v1.4.1 h1:Z0VGW/uo8NJmjd+L1Dc3S5frq6c62w5xQ9Yf4Mg3wFQ= +github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/knadh/koanf v1.4.1/go.mod h1:1cfH5223ZeZUOs8FU2UdTmaNfHpqgtjV0+NHjRO43gs= +github.com/knadh/koanf v1.4.2 h1:2itp+cdC6miId4pO4Jw7c/3eiYD26Z/Sz3ATJMwHxIs= github.com/knadh/koanf v1.4.2/go.mod h1:4NCo0q4pmU398vF9vq2jStF9MWQZ8JEDcDMHlDCr4h0= github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b h1:iNjcivnc6lhbvJA3LD622NPrUponluJrBWPIwGG/3Bg= github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= @@ -1490,11 +1562,11 @@ github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/labstack/echo v3.3.10+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s= -github.com/labstack/echo/v4 v4.2.0/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= -github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= github.com/leesper/go_rng v0.0.0-20190531154944-a612b043e353 h1:X/79QL0b4YJVO5+OsPH9rF2u428CIrGL/jLmPsoOQQ4= +github.com/leesper/go_rng v0.0.0-20190531154944-a612b043e353/go.mod h1:N0SVk0uhy+E1PZ3C9ctsPRlvOPAFPkCNlcPBDkt0N3U= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/ragel-machinery v0.0.0-20181214104525-299bdde78165/go.mod h1:WZxr2/6a/Ar9bMDc2rN/LJrE/hF6bXE4LPyDSIxwAfg= @@ -1503,19 +1575,17 @@ github.com/leoluk/perflib_exporter v0.1.0/go.mod h1:rpV0lYj7lemdTm31t7zpCqYqPnw7 github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linkedin/goavro/v2 v2.9.8 h1:jN50elxBsGBDGVDEKqUlDuU1cFwJ11K/yrJCBMe/7Wg= +github.com/linkedin/goavro/v2 v2.9.8/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA= +github.com/linode/linodego v1.4.0/go.mod h1:PVsRxSlOiJyvG4/scTszpmZDTdgS+to3X6eS8pRrWI8= github.com/linode/linodego v1.5.0 h1:p1TgkDsz0ubaIPLNviZBTIjlsX3PdvqZQ4eO2r0L1Hk= github.com/linode/linodego v1.5.0/go.mod h1:9lmhBsOupR6ke7D9Ioj1bq/ny9pfgFkCLiX7ubq0r08= github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= -github.com/logzio/jaeger-logzio v1.0.6 h1:Xh6pw7jDUseVy1MjW/hojPj+SW+CZskvebQsOGLsgM0= -github.com/logzio/jaeger-logzio v1.0.6/go.mod h1:yNkT0BX0pn/ZLTiotRRpaU4pgqpDtsdYH/yTLsoScYQ= -github.com/logzio/logzio-go v1.0.6 h1:BIVu5TWDZc0vlEkwSDjoxPlV/aMJV2LdM3k+CjdzFDg= -github.com/logzio/logzio-go v1.0.6/go.mod h1:ljlI3Zfi3hntJiHqCqWSUPT9cZP6yvDHUzDl5ZLGYRE= github.com/lucasb-eyer/go-colorful v1.0.2/go.mod h1:0MS4r+7BZKSJ5mw4/S5MPN+qHFF1fYclkSPilDOKW0s= github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= @@ -1529,7 +1599,6 @@ github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPK github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20180730094502-03f2033d19d5/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -1547,11 +1616,13 @@ github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcncea github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-ieproxy v0.0.1 h1:qiyop7gCflfhwCzGyeT0gro3sF9AIg9HU98JORTkqfI= +github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= @@ -1570,25 +1641,29 @@ github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vq github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U= github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= +github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= +github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= github.com/microsoft/ApplicationInsights-Go v0.4.4 h1:G4+H9WNs6ygSCe6sUyxRc2U81TI5Es90b2t/MwX5KqY= github.com/microsoft/ApplicationInsights-Go v0.4.4/go.mod h1:fKRUseBqkw6bDiXTs3ESTiU/4YTIHsQS4W3fP2ieF4U= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.25/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= +github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= +github.com/miekg/dns v1.1.48/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= github.com/miekg/dns v1.1.49 h1:qe0mQU3Z/XpFeE+AEBo2rqaS1IPBJ3anmqZ4XiZJVG8= github.com/miekg/dns v1.1.49/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989 h1:PS1dLCGtD8bb9RPKJrc8bS7qHL6JnW1CZvwzH9dPoUs= github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989/go.mod h1:2eu9pRWp8mo84xCg6KswZ+USQHjwgRhNp06sozOdsTY= github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible h1:aKW/4cBs+yK6gpqU3K/oIwk9Q/XICqd3zOX/UFuvqmk= github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= @@ -1602,8 +1677,6 @@ github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/hashstructure v1.1.0 h1:P6P1hdjqAAknpY/M1CGipelZgp+4y9ja9kmUZPXP+H0= @@ -1623,10 +1696,10 @@ github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQ github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/mjibson/esc v0.2.0/go.mod h1:9Hw9gxxfHulMF5OJKCyhYD7PzlSdhzXyaGEBRPH1OPs= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/sys/mount v0.2.0 h1:WhCW5B355jtxndN5ovugJlMFJawbUODuW8fSnEH6SSM= +github.com/moby/sys/mount v0.2.0/go.mod h1:aAivFE2LB3W4bACsUXChRHQ0qKWsetY4Y9V7sxOougM= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.5.0 h1:2Ks8/r6lopsxWi9m58nlwjaeSzUX9iiL1vj5qB/9ObI= @@ -1641,21 +1714,24 @@ github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6U github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= github.com/mongodb-forks/digest v1.0.4 h1:9FrGTc7MGAchgaQBcXBnEwUM/Oo8obW7OGWxnsSvZ64= github.com/mongodb-forks/digest v1.0.4/go.mod h1:eHRfgovT+dvSFfltrOa27hy1oR/rcwyDdp5H1ZQxEMA= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mostynb/go-grpc-compression v1.1.16 h1:D9tGUINmcII049pxOj9dl32Fzhp26TrDVQXECoKJqQg= github.com/mostynb/go-grpc-compression v1.1.16/go.mod h1:xxa6UoYynYS2h+5HB/Hglu81iYAp87ARaNmhhwi0s1s= -github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= +github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/mrunalp/fileutils v0.5.0 h1:NKzVxiH7eSk+OQ4M+ZYW1K6h27RUV3MI6NUTsHhU6Z4= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= +github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= +github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= @@ -1667,16 +1743,18 @@ github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5Vgl github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= github.com/nats-io/jwt v1.2.2/go.mod h1:/xX356yQA6LuXI9xWW7mZNpxgF2mBmGecH+Fj34sP5Q= github.com/nats-io/jwt/v2 v2.0.2/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= +github.com/nats-io/jwt/v2 v2.0.3/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= github.com/nats-io/nats-server/v2 v2.2.6/go.mod h1:sEnFaxqe09cDmfMgACxZbziXnhQFhwk+aKkZjBBRYrI= +github.com/nats-io/nats-server/v2 v2.5.0/go.mod h1:Kj86UtrXAL6LwYRA6H4RqzkHhK0Vcv2ZnKD5WbQ1t3g= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= github.com/nats-io/nats.go v1.11.0/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= +github.com/nats-io/nats.go v1.12.1/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.2.0/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= github.com/nginxinc/nginx-plus-go-client v0.6.0/go.mod h1:DBAmdDP71tOhgFPdCMVusegzdKmLVpVL0nVcMX17pbY= github.com/nginxinc/nginx-prometheus-exporter v0.8.1-0.20201110005315-f5a5f8086c19 h1:jR4KbeVA+KYmPq+amRe6AdB4mIfEaSOZGY2zCpqt/p8= @@ -1689,15 +1767,13 @@ github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+ github.com/observiq/ctimefmt v1.0.0 h1:r7vTJ+Slkrt9fZ67mkf+mA6zAdR5nGIJRMTzkUyvilk= github.com/observiq/ctimefmt v1.0.0/go.mod h1:mxi62//WbSpG/roCO1c6MqZ7zQTvjVtYheqHN3eOjvc= github.com/observiq/nanojack v0.0.0-20201106172433-343928847ebc h1:49ewVBwLcy+eYqI4R0ICilCI4dPjddpFXWv3liXzUxM= +github.com/observiq/nanojack v0.0.0-20201106172433-343928847ebc/go.mod h1:WXIHwGy+c7/IK2PiJ4oxuTHkpnkSut7TNFpKnI5llPU= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olivere/elastic v6.2.35+incompatible/go.mod h1:J+q1zQJTgAz9woqsbVRqGeB5G1iqDKVBWLNSYW8yfJ8= -github.com/olivere/elastic v6.2.36+incompatible/go.mod h1:J+q1zQJTgAz9woqsbVRqGeB5G1iqDKVBWLNSYW8yfJ8= -github.com/olivere/elastic v6.2.37+incompatible h1:UfSGJem5czY+x/LqxgeCBgjDn6St+z8OnsCuxwD3L0U= github.com/olivere/elastic v6.2.37+incompatible/go.mod h1:J+q1zQJTgAz9woqsbVRqGeB5G1iqDKVBWLNSYW8yfJ8= github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -1716,6 +1792,7 @@ github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvw github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -1729,7 +1806,9 @@ github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDs github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/onsi/gomega v1.17.0 h1:9Luw4uT5HTjHTN8+aNcSThgH1vdXnmdJ8xIfZ4wyTRE= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= +github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -1748,6 +1827,7 @@ github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= +github.com/opencontainers/runc v1.0.3/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= github.com/opencontainers/runc v1.1.0 h1:O9+X96OcDjkmmZyfaG996kV7yq8HsoU2h1XRRQcefG8= github.com/opencontainers/runc v1.1.0/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= @@ -1772,7 +1852,6 @@ github.com/openshift/client-go v0.0.0-20210521082421-73d9475a9142 h1:ZHRIMCFIJN1 github.com/openshift/client-go v0.0.0-20210521082421-73d9475a9142/go.mod h1:fjS8r9mqDVsPb5td3NehsNOAWa4uiFkYEfVZioQ2gH0= github.com/opentracing-contrib/go-grpc v0.0.0-20191001143057-db30781987df/go.mod h1:DYR5Eij8rJl8h7gblRrOZ8g0kW1umSpKqYIBTgeDtLo= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing-contrib/go-stdlib v0.0.0-20190519235532-cf7a6c988dc9/go.mod h1:PLldrQSroqzH70Xl+1DQcGnefIbqsKR7UDaiux3zV+w= github.com/opentracing-contrib/go-stdlib v1.0.0/go.mod h1:qtI1ogk+2JhVPIXVc6q+NHziSmy2W5GbdQZFUHADCBU= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -1799,29 +1878,37 @@ github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUr github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.0.0-beta.8 h1:dy81yyLYJDwMTifq24Oi/IslOslRrDSb3jwDggjz3Z0= github.com/pelletier/go-toml/v2 v2.0.0-beta.8/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= +github.com/pelletier/go-toml/v2 v2.0.1 h1:8e3L2cCQzLFi2CR4g7vGFuFxX7Jl1kKX8gW+iV0GUKU= github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/philhofer/fwd v1.1.1 h1:GdGcTjf5RNAxwS4QLsiMzJYj5KEvPJD3Abr261yRQXQ= github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= +github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/pierrec/cmdflag v0.0.2/go.mod h1:a3zKGZ3cdQUfxjd0RGMLZr8xI3nvpJOB+m6o/1X5BmU= -github.com/pierrec/lz4 v0.0.0-20190327172049-315a67e90e41/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4 v2.5.2+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.6.0+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4/v3 v3.3.4/go.mod h1:280XNCGS8jAcG++AHdd6SeWnzyJ1w9oow2vbORyey8Q= +github.com/pierrec/lz4/v4 v4.1.8/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pierrec/lz4/v4 v4.1.11/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pierrec/lz4/v4 v4.1.14 h1:+fL8AQEZtz/ijeNnpduH0bROTu0O3NZAlPjQxGn8LwE= github.com/pierrec/lz4/v4 v4.1.14/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -1841,6 +1928,7 @@ github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prY github.com/pquerna/cachecontrol v0.1.0 h1:yJMy84ti9h/+OEWa752kBTKv4XC30OtVVHYv/8cTqKc= github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= +github.com/prometheus/alertmanager v0.24.0/go.mod h1:r6fy/D7FRuZh5YbnX6J3MBY0eI4Pb5yPYS7/bPSXXqI= github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= @@ -1880,11 +1968,15 @@ github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+ github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.34.0 h1:RBmGO9d/FVjqHT0yUGQwBJhkwKV+wPCn7KGpvfab0uE= github.com/prometheus/common v0.34.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= +github.com/prometheus/common v0.35.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= +github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE= github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= +github.com/prometheus/common/assets v0.1.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= +github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4= github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= +github.com/prometheus/exporter-toolkit v0.7.1/go.mod h1:ZUBIj498ePooX9t/2xtDjeQYwvRpiPP2lh5u4iblj2g= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -1902,13 +1994,15 @@ github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/prometheus v0.36.0 h1:d1OWo3gTs5apWUMP5luhZTmXKmwrUUz9DqWlGCQJBAE= -github.com/prometheus/prometheus v0.36.0/go.mod h1:g5VjDTKGDiTs249GQVBbbWdHLkkIOgme3HxyUwIzlwY= +github.com/prometheus/prometheus v0.35.0/go.mod h1:7HaLx5kEPKJ0GDgbODG0fZgXbQ8K/XjZNJXQmbmgQlY= +github.com/prometheus/prometheus v0.36.2 h1:ZMqiEKdamv/YgI/7V5WtQGWbwEerCsXJ26CZgeXDUXM= github.com/prometheus/prometheus v0.36.2/go.mod h1:GBcYMr17Nr2/iDIrWmiy9wC5GKl0NOQ5R9XynB1HAG8= github.com/prometheus/statsd_exporter v0.21.0 h1:hA05Q5RFeIjgwKIYEdFd59xu5Wwaznf33yKI+pyX6T8= github.com/prometheus/statsd_exporter v0.21.0/go.mod h1:rbT83sZq2V+p73lHhPZfMc3MLCHmSHelCh9hSGYNLTQ= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rabbitmq/amqp091-go v1.1.0/go.mod h1:ogQDLSOACsLPsIq0NpbtiifNZi2YOz0VTJ0kHRghqbM= +github.com/rakyll/embedmd v0.0.0-20171029212350-c8060a0752a2/go.mod h1:7jOTMgqac46PZcF54q6l2hkLEG8op93fZu61KmxWDV4= +github.com/rasky/go-xdr v0.0.0-20170217172119-4930550ba2e2/go.mod h1:Nfe4efndBz4TibWycNE+lqyJZiMX4ycx+QKV8Ta0f/o= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= @@ -1923,7 +2017,9 @@ github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= +github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rs/cors v1.8.0/go.mod h1:EBwu+T5AvHOcXwvZIkQFjUN6s8Czyqw12GL/Y0tUyRM= github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= @@ -1933,14 +2029,16 @@ github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThC github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= +github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= -github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig= -github.com/sagikazarmark/crypt v0.4.0/go.mod h1:ALv2SRj7GxYV4HO9elxH9nS6M9gW+xDNxqmyJ6RfDFM= +github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= github.com/sagikazarmark/crypt v0.5.0/go.mod h1:l+nzl7KWh51rpzp2h7t4MZWyiEWdhNpOAnclKvg+mdA= +github.com/sagikazarmark/crypt v0.6.0/go.mod h1:U8+INwJo3nBv1m6A/8OBXAq7Jnpspk5AxSgDyEQcea8= github.com/samuel/go-zookeeper v0.0.0-20190810000440-0ceca61e4d75/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sanity-io/litter v1.2.0/go.mod h1:JF6pZUFgu2Q0sBZ+HSV35P8TVPI1TTzEwyu9FXAw2W4= @@ -1949,6 +2047,7 @@ github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHi github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9 h1:0roa6gXKgyta64uqh52AQG3wzZXH21unn+ltzQSXML0= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= +github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/schollz/progressbar/v2 v2.13.2/go.mod h1:6YZjqdthH6SCZKv2rqGryrxPtfmRB/DWZxSMfCXPyD8= github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= @@ -1957,24 +2056,23 @@ github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921 h1:58EBmR2dMNL2n/FnbQewK3D14nXr0V9CObDSvMJLq+Y= github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= -github.com/securego/gosec v0.0.0-20200203094520-d13bb6d2420c/go.mod h1:gp0gaHj0WlmPh9BdsTmo1aq6C27yIPWdxCKGFGdVKBE= -github.com/segmentio/kafka-go v0.4.29/go.mod h1:m1lXeqJtIFYZayv0shM/tjrAFljvWLTprxBHd+3PnaU= +github.com/secure-systems-lab/go-securesystemslib v0.3.1 h1:LJuyMziazadwmQRRu1M7GMUo5S1oH1+YxU9FjuSFU8k= +github.com/secure-systems-lab/go-securesystemslib v0.3.1/go.mod h1:o8hhjkbNl2gOamKUA/eNW3xUrntHT9L4W89W1nfj43U= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shirou/gopsutil v2.18.10+incompatible h1:cy84jW6EVRPa5g9HAHrlbxMSIjBhDSX0OFYyMYminYs= github.com/shirou/gopsutil v2.18.10+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/gopsutil v2.20.9+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/gopsutil v3.21.10+incompatible h1:AL2kpVykjkqeN+MFe1WcwSBVUjGjvdU8/ubvCuXAjrU= -github.com/shirou/gopsutil v3.21.10+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil/v3 v3.22.3/go.mod h1:D01hZJ4pVHPpCTZ3m3T2+wDF2YAGfd+H4ifUguaQzHM= github.com/shirou/gopsutil/v3 v3.22.4/go.mod h1:D01hZJ4pVHPpCTZ3m3T2+wDF2YAGfd+H4ifUguaQzHM= -github.com/shirou/gopsutil/v3 v3.22.5 h1:atX36I/IXgFiB81687vSiBI5zrMsxcIBkP9cQMJQoJA= github.com/shirou/gopsutil/v3 v3.22.5/go.mod h1:so9G9VzeHt/hsd0YwqprnjHnfARAUktauykSbr+y2gA= +github.com/shirou/gopsutil/v3 v3.22.6 h1:FnHOFOh+cYAM0C30P+zysPISzlknLC5Z1G4EAElznfQ= github.com/shirou/gopsutil/v3 v3.22.6/go.mod h1:EdIubSnZhbAvBS1yJ7Xi+AShB/hxwLHOMz4MCYz7yMs= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= -github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= github.com/signalfx/com_signalfx_metrics_protobuf v0.0.1/go.mod h1:QkslgLDW0N9qRi9qkxcNDaf812gg0kWcf3ZZORE5/FI= github.com/signalfx/com_signalfx_metrics_protobuf v0.0.3 h1:32k2QLgsKhcEs55q4REPKyIadvid5FPy2+VMgvbmKJ0= github.com/signalfx/com_signalfx_metrics_protobuf v0.0.3/go.mod h1:gJrXWi7wSGXfiC7+VheQaz+ypdCt5SmZNL+BRxUe7y4= @@ -1984,11 +2082,12 @@ github.com/signalfx/golib/v3 v3.3.13 h1:Q+WDU2CeOGAJ2uZtb3Ov5cIUKS6tyvR2KU87SjVl github.com/signalfx/golib/v3 v3.3.13/go.mod h1:LKKCrEw4rU8ZL/8dVwX5i1+kqm4utB7uaHQpRx587rs= github.com/signalfx/gomemcache v0.0.0-20180823214636-4f7ef64c72a9/go.mod h1:Ytb8KfCSyuwy/VILnROdgCvbQLA5ch0nkbG7lKT0BXw= github.com/signalfx/sapm-proto v0.4.0/go.mod h1:x3gtwJ1GRejtkghB4nYpwixh2zqJrLbPU959ZNhM0Fk= -github.com/signalfx/sapm-proto v0.9.0 h1:x4EfhzOZtBGyt2x8gc/C23Id9B+3lf1zE59VUWLKbpQ= -github.com/signalfx/sapm-proto v0.9.0/go.mod h1:OmhyyGyhBzoKQn6G2wM1vpEsGKGo0lym/kj0G41KqZk= +github.com/signalfx/sapm-proto v0.11.0 h1:TIbJNKJ/J00yyASLlbF1DlVZv+X1bY4/BiaYSU7wfxc= github.com/signalfx/sapm-proto v0.11.0/go.mod h1:bYZgdl2ZoMriE4arrRThWH8M6DkVbN7+xsxg4v2HP8Q= github.com/signalfx/signalfx-agent/pkg/apm v0.0.0-20201202163743-65b4fa925fc8 h1:pK1/PlwhBPVa2+SqAo7nVfwE/zbGz1p3WlcqwcoLSBk= github.com/signalfx/signalfx-agent/pkg/apm v0.0.0-20201202163743-65b4fa925fc8/go.mod h1:pNaqfprM2bSCBhE8sTT2NtasSWEsIJbrmnIF0ap/Cvg= +github.com/sijms/go-ora/v2 v2.4.26 h1:nHDCq1jROHU5r+hGh0wxrIJ32qTUtDuEoo3x/XTGNRY= +github.com/sijms/go-ora/v2 v2.4.26/go.mod h1:EHxlY6x7y9HAsdfumurRfTd+v8NrEOTR3Xl4FWlH6xk= github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -1999,18 +2098,21 @@ github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrf github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= +github.com/smartystreets/assertions v1.0.1 h1:voD4ITNjPL5jjBfgR/r8fPIIBrliWrWHeiJApdr3r4w= +github.com/smartystreets/assertions v1.0.1/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4-0.20190306220146-200a235640ff/go.mod h1:KSQcGKpxUMHk3nbYzs/tIBAM2iDooCn0BmttHOJEbLs= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/snowflakedb/gosnowflake v1.6.10 h1:pEppkXSSkN7F2eyEjGiMp8LC6Dm2cToU2RV9RzNBOZ8= +github.com/snowflakedb/gosnowflake v1.6.10/go.mod h1:BoZ0gnLERaUEiziH4Dumim10LN8cvoaCKovsAfhxzrE= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= @@ -2026,12 +2128,11 @@ github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155 github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v0.0.7/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4= -github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= +github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= +github.com/spf13/cobra v1.5.0 h1:X+jTBEBqF0bHN+9cSMgmfuvv2VHJ9ezmFNf9Y/XstYU= github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= @@ -2046,10 +2147,9 @@ github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DM github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= -github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM= -github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8qy1rU= -github.com/spf13/viper v1.11.0 h1:7OX/1FS6n7jHD1zGrZTM7WtY13ZELRyosK4k93oPr44= +github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= github.com/spf13/viper v1.11.0/go.mod h1:djo0X/bA5+tYVoCn+C7cAYJGcVn/qYLFTG8gdUsX7Zk= +github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= @@ -2062,11 +2162,8 @@ github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/objx v0.3.0 h1:NGXK3lHquSN08v5vWalVI/L8XU9hdzE/G6xsrze47As= -github.com/stretchr/objx v0.3.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -2076,52 +2173,41 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/subosito/gotenv v1.3.0 h1:mjC+YW8QpAdXibNi+vNWgzmgBH4+5l5dCXv8cNysBLI= github.com/subosito/gotenv v1.3.0/go.mod h1:YzJjq/33h7nrwdY+iHMhEOEEbW0ovIz0tB6t6PwAXzs= github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE= -github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= github.com/tedsuo/ifrit v0.0.0-20180802180643-bea94bb476cc/go.mod h1:eyZnKCc955uh98WQvzOm0dgAeLnf2O0Rz0LPoC5ze+0= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.413 h1:DvydszksqriOr0Zze9OREt8OrIrtMSFcVD8lz3xNAQA= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.413/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.440 h1:/Rne//HadzOso7yJ9UbvI2E8l6b+n79ZKGXgBC5hBmY= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.440/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/testcontainers/testcontainers-go v0.13.0 h1:OUujSlEGsXVo/ykPVZk3KanBNGN0TYb/7oKIPVn15JA= +github.com/testcontainers/testcontainers-go v0.13.0/go.mod h1:z1abufU633Eb/FmSBTzV6ntZAC1eZBYPtaFsn4nPuDk= github.com/tg123/go-htpasswd v1.2.0 h1:UKp34m9H467/xklxUxU15wKRru7fwXoTojtxg25ITF0= github.com/tg123/go-htpasswd v1.2.0/go.mod h1:h7IzlfpvIWnVJhNZ0nQ9HaFxHb7pn5uFJYLlEUJa2sM= -github.com/tidwall/btree v0.3.0/go.mod h1:huei1BkDWJ3/sLXmO+bsCNELL+Bp2Kks9OLyQFkzvA8= -github.com/tidwall/btree v1.1.0/go.mod h1:TzIRzen6yHbibdSfK6t8QimqbUnoxUSrZfeW7Uob0q4= -github.com/tidwall/buntdb v1.2.0/go.mod h1:XLza/dhlwzO6dc5o/KWor4kfZSt3BP8QV+77ZMKfI58= -github.com/tidwall/gjson v1.6.7/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI= -github.com/tidwall/gjson v1.6.8/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI= +github.com/theupdateframework/go-tuf v0.3.0 h1:od2sc5+BSkKZhmUG2o2rmruy0BGSmhrbDhCnpxh87X8= +github.com/theupdateframework/go-tuf v0.3.0/go.mod h1:E5XP0wXitrFUHe4b8cUcAAdxBW4LbfnqF4WXXGLgWNo= github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.12.1 h1:ikuZsLdhr8Ws0IdROXUS1Gi4v9Z4pGqpX/CvJkxvfpo= github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/grect v0.1.0/go.mod h1:sa5O42oP6jWfTShL9ka6Sgmg3TgIK649veZe05B7+J8= -github.com/tidwall/grect v0.1.4/go.mod h1:9FBsaYRaR0Tcy4UwefBX/UDcDcDy9V5jUcxHzv2jd5Q= -github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tidwall/rtred v0.1.2/go.mod h1:hd69WNXQ5RP9vHd7dqekAz+RIdtfBogmglkZSRxCHFQ= github.com/tidwall/tinylru v1.1.0 h1:XY6IUfzVTU9rpwdhKUF6nQdChgCdGjkMfLzbWyiau6I= github.com/tidwall/tinylru v1.1.0/go.mod h1:3+bX+TJ2baOLMWTnlyNWHh4QMnFyARg2TLTQ6OFbzw8= -github.com/tidwall/tinyqueue v0.1.1/go.mod h1:O/QNHwrnjqr6IHItYrzoHAKYhBkLI67Q096fQP5zMYw= github.com/tidwall/wal v1.1.7 h1:emc1TRjIVsdKKSnpwGBAcsAGg0767SvUk8+ygx7Bb+4= github.com/tidwall/wal v1.1.7/go.mod h1:r6lR1j27W9EPalgHiB7zLJDYu3mzW5BQP5KrzBpYY/E= -github.com/tinylib/msgp v1.1.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tinylib/msgp v1.1.6 h1:i+SbKraHhnrf9M5MYmvQhFnbLhAXSDWF8WWsuyRdocw= github.com/tinylib/msgp v1.1.6/go.mod h1:75BAfg2hauQhs3qedfdDZmWAPcFMAvJE5b9rGOMufyw= github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw= @@ -2131,10 +2217,8 @@ github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hM github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc/go.mod h1:bciPuU6GHm1iF1pBvUfxfsH0Wmnc2VbpgvbI9ZWuIRs= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= -github.com/twitchtv/twirp v8.1.1+incompatible/go.mod h1:RRJoFSAmTEh2weEqWtpPE3vFK5YBhA6bqp2l1kfCC5A= github.com/uber/jaeger-client-go v2.29.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= @@ -2151,14 +2235,12 @@ github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.26.0/go.mod h1:cmWIqlu99AO/RKcp1HWaViTqc57FswJOfYYdPJBl8BA= -github.com/valyala/fasthttp v1.32.0/go.mod h1:2rsYD01CKFrjjsvFxx75KlEUNpWNBY9JWD3K/7o2Cus= +github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= +github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/vaughan0/go-ini v0.0.0-20130923145212-a98ad7ee00ec/go.mod h1:owBmyHYMLkxyrugmfwE/DLJyW8Ro9mkphwuVErQ0iUw= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= -github.com/vektra/mockery v0.0.0-20181123154057-e78b021dcbb5/go.mod h1:ppEjwdhyy7Y31EnHRDm1JkChoC7LXIJ7Ex0VYLWtZtQ= github.com/vincent-petithory/dataurl v1.0.0 h1:cXw+kPto8NLuJtlMsI152irrVw9fRDX8AbShPRpg2CI= github.com/vincent-petithory/dataurl v1.0.0/go.mod h1:FHafX5vmDzyP+1CQATJn7WFKc9CvnvxyvZy6I1MrG/U= github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= @@ -2171,12 +2253,8 @@ github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17 github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f h1:p4VB7kIXpOQvVn1ZaTIVp+3vuYAXFe3OJEvjbUYJLaA= github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= -github.com/vmihailenco/bufpool v0.1.11/go.mod h1:AFf/MOy3l2CFTKbxwt0mp2MwnqjNEs5H/UxrkA5jxTQ= -github.com/vmihailenco/msgpack/v4 v4.3.11/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= -github.com/vmihailenco/msgpack/v5 v5.0.0-beta.1/go.mod h1:xlngVLeyQ/Qi05oQxhQ+oTuqa03RjMwMfk/7/TCs+QI= -github.com/vmihailenco/msgpack/v5 v5.3.4/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU= github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= @@ -2188,9 +2266,9 @@ github.com/vmware/go-vmware-nsxt v0.0.0-20220328155605-f49a14c1ef5f h1:NbC9yOr5A github.com/vmware/go-vmware-nsxt v0.0.0-20220328155605-f49a14c1ef5f/go.mod h1:VEqcmf4Sp7gPB7z05QGyKVmn6xWppr7Nz8cVNvyC80o= github.com/vmware/govmomi v0.28.0 h1:VgeQ/Rvz79U9G8QIKLdgpsN9AndHJL+5iMJLgYIrBGI= github.com/vmware/govmomi v0.28.0/go.mod h1:F7adsVewLNHsW/IIm7ziFURaXDaHEwcc+ym4r3INMdY= +github.com/vmware/vmw-guestinfo v0.0.0-20170707015358-25eff159a728/go.mod h1:x9oS4Wk2s2u4tS29nEaDLdzvuHdB19CvSGJjPgkZJNk= github.com/vultr/govultr/v2 v2.17.0 h1:BHa6MQvQn4YNOw+ecfrbISOf4+3cvgofEQHKBSXt6t0= github.com/vultr/govultr/v2 v2.17.0/go.mod h1:ZFOKGWmgjytfyjeyAdhQlSWwTjh2ig+X49cAp50dzXI= -github.com/wadey/gocovmerge v0.0.0-20160331181800-b5bfa59ec0ad/go.mod h1:Hy8o65+MXnS6EwGElrSRjUzQDLXreJlzYLlWiHtt8hM= github.com/wavefronthq/wavefront-sdk-go v0.9.11 h1:3qv/yyNNyLKPQftQWFrfHGUv50e/gMxKlUQnILlvHKw= github.com/wavefronthq/wavefront-sdk-go v0.9.11/go.mod h1:AcW8zJJcYodB7B9KYzoxVH6K0fmYd6MgpmXE1LMo+OU= github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= @@ -2205,31 +2283,35 @@ github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6 github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCOIs= github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= -github.com/xdg/scram v1.0.3/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= -github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= -github.com/xdg/stringprep v1.0.3/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= +github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da h1:NimzV1aGyq29m5ukMK0AMWEhFaL/lrEOaephfuoiARg= +github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= -github.com/zenazn/goji v1.0.1/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/zorkian/go-datadog-api v2.30.0+incompatible h1:R4ryGocppDqZZbnNc5EDR8xGWF/z/MxzWnqTUijDQes= +github.com/zorkian/go-datadog-api v2.30.0+incompatible/go.mod h1:PkXwHX9CUQa/FpB9ZwAD45N1uhCW4MT/Wj7m36PbKss= go.elastic.co/apm v1.15.0 h1:uPk2g/whK7c7XiZyz/YCUnAUBNPiyNeE3ARX3G6Gx7Q= go.elastic.co/apm v1.15.0/go.mod h1:dylGv2HKR0tiCV+wliJz1KHtDyuD8SPe69oV7VyK6WY= go.elastic.co/fastjson v1.1.0 h1:3MrGBWWVIxe/xvsbpghtkFoPciPhOCmjsR/HfwEeQR4= @@ -2243,15 +2325,16 @@ go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/api/v3 v3.5.2/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= +go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/pkg/v3 v3.5.2/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= go.etcd.io/etcd/client/v2 v2.305.2/go.mod h1:2D7ZejHVMIfog1221iLSYlQRzrtECw3kz4I4VAQm3qI= +go.etcd.io/etcd/client/v2 v2.305.4/go.mod h1:Ud+VUwIi9/uQHOMA+4ekToJ12lTxlv0zB/+DHwTGEbU= go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= +go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= @@ -2265,7 +2348,6 @@ go.mongodb.org/mongo-driver v1.4.3/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4S go.mongodb.org/mongo-driver v1.4.4/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= go.mongodb.org/mongo-driver v1.4.6/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= go.mongodb.org/mongo-driver v1.5.1/go.mod h1:gRXCHX4Jo7J0IJ1oDQyUxF7jfy19UfxniMS4xxMmUqw= -go.mongodb.org/mongo-driver v1.5.2/go.mod h1:gRXCHX4Jo7J0IJ1oDQyUxF7jfy19UfxniMS4xxMmUqw= go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= @@ -2283,78 +2365,94 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/collector v0.52.0/go.mod h1:a9GvaOhyc0nVOUzqvdv5mxyWghCSso/WRO2GgRl4I1g= -go.opentelemetry.io/collector v0.53.0 h1:p4XwnAltBnw/gCRTk+DHTJVGYLzD5cPHp+0XK/KKE/s= go.opentelemetry.io/collector v0.53.0/go.mod h1:MMSqz2ImXjLrZB26cC8vrtgnjsza3hpc760NNjsmjwE= -go.opentelemetry.io/collector v0.55.1-0.20220711160057-6133c820fd50 h1:f+lx7VPp3Y505buU7b/srAYESA3E3VDEeMLITsJChZ4= +go.opentelemetry.io/collector v0.54.0/go.mod h1:FgNzyfb4sAGb5cqusB5znETJ8Pz4OQUBGbOeGIZ2rlQ= +go.opentelemetry.io/collector v0.55.0/go.mod h1:q12RmApzWIfOc+ao73+UmSyTy6X8pHXi2B7CeLJxnbk= go.opentelemetry.io/collector v0.55.1-0.20220711160057-6133c820fd50/go.mod h1:WGblGSkPop43LISmNshA8GzobQKqvvGM5M8vvq2zpfA= -go.opentelemetry.io/collector/model v0.44.0/go.mod h1:4jo1R8uBDspLCxUGhQ0k3v/EFXFbW7s0AIy3LuGLbcU= -go.opentelemetry.io/collector/model v0.45.0/go.mod h1:uyiyyq8lV45zrJ94MnLip26sorfNLP6J9XmOvaEmy7w= +go.opentelemetry.io/collector v0.56.0 h1:p9lLKYyWgX0PBdNP4EScZfMpk8XYSj+MuIhS0dSWzq8= +go.opentelemetry.io/collector v0.56.0/go.mod h1:zYv4Ds01+96vPhYIwhYb3unemGriZ4OQBWeMT6JoVEQ= +go.opentelemetry.io/collector/model v0.38.0/go.mod h1:gS8A27wi+8gM3hrXL+dEjTbrbLxktjHjAwwqI31ELgQ= +go.opentelemetry.io/collector/pdata v0.51.0/go.mod h1:FsowYKNmf8CgsHgOfJv8V3KjALmy6FYQRHtXAOY3fho= go.opentelemetry.io/collector/pdata v0.52.0/go.mod h1:GJUTfTv8mlYpHRjcmHXVbvJr48EW/q/P/HuBvpXAE58= -go.opentelemetry.io/collector/pdata v0.53.0 h1:jezCyHu/LXs4P/GzKObCabU2/OUTivNBlQHGPAo/dZo= go.opentelemetry.io/collector/pdata v0.53.0/go.mod h1:25b+xH0uJwp8H3f0a1V+OQfxbhYVds6Rf1Ul+HFCGo4= -go.opentelemetry.io/collector/pdata v0.55.1-0.20220711160057-6133c820fd50 h1:9imQpmlt/0CAdigM8hhg1kvhM5bUqlwPiYNHdc5XUtk= +go.opentelemetry.io/collector/pdata v0.54.0/go.mod h1:1nSelv/YqGwdHHaIKNW9ZOHSMqicDX7W4/7TjNCm6N8= +go.opentelemetry.io/collector/pdata v0.55.0/go.mod h1:f/jo/rDlHowf1T4XIAU+4XGhxaBDaAnKg+3tl3VnQGM= go.opentelemetry.io/collector/pdata v0.55.1-0.20220711160057-6133c820fd50/go.mod h1:f/jo/rDlHowf1T4XIAU+4XGhxaBDaAnKg+3tl3VnQGM= +go.opentelemetry.io/collector/pdata v0.56.0 h1:JD8KjQ7dNZ441xMuVZVu5NRYmkA4vOYGV7w8tkCdyrE= +go.opentelemetry.io/collector/pdata v0.56.0/go.mod h1:mYcCREWiIJyHss0dbU+GSiz2tmGZ6u09vtfkKTciog4= go.opentelemetry.io/collector/semconv v0.52.0/go.mod h1:SxK0rUnUP7YeDakexzbE/vhimTOHwE6m/4aKKd9e27Q= -go.opentelemetry.io/collector/semconv v0.53.0 h1:J1lVnFp1VyNKU63rc7csY9/54Tjm9BlLylXLjPimf7s= go.opentelemetry.io/collector/semconv v0.53.0/go.mod h1:SxK0rUnUP7YeDakexzbE/vhimTOHwE6m/4aKKd9e27Q= +go.opentelemetry.io/collector/semconv v0.54.0/go.mod h1:HAGkPKNMhc4kEHevEqVIEtUuvsRQMIbUWBb8yBrqEwk= go.opentelemetry.io/collector/semconv v0.55.1-0.20220711160057-6133c820fd50/go.mod h1:EH1wbDvTyqKpKBBpoMIe0KQk2plCcFS66Mo17WtR7CQ= +go.opentelemetry.io/collector/semconv v0.56.0 h1:zpQ6IBimBsiVsJibsSM2/13vKtaeteFFIx4bmIiOS6E= +go.opentelemetry.io/collector/semconv v0.56.0/go.mod h1:EH1wbDvTyqKpKBBpoMIe0KQk2plCcFS66Mo17WtR7CQ= +go.opentelemetry.io/contrib v0.20.0 h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9p0= go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.28.0/go.mod h1:vEhqr0m4eTc+DWxfsXoXue2GBgV2uUwVznkGIHW/e5w= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0 h1:WenoaOMNP71oq3KkMZ/jnxI9xU/JSCLw8yZILSI2lfU= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0/go.mod h1:J0dBVrt7dPS/lKJyQoW0xzQiUr4r2Ik1VwPjAUWnofI= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.33.0 h1:z6rnla1Asjzn0FrhohzIbDi4bxbtc6EMmQ7f5ZPn+pA= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.33.0/go.mod h1:y/SlJpJQPd2UzfBCj0E9Flk9FDCtTyqUmaCB41qFrWI= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.29.0/go.mod h1:tLYsuf2v8fZreBVwp9gVMhefZlLFZaUiNVSq8QxXRII= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0 h1:mac9BKRqwaX6zxHPDe3pvmWpwuuIM0vuXv2juCnQevE= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.31.0/go.mod h1:PFmBsWbldL1kiWZk9+0LBZz2brhByaGsvp6pRICMlPE= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0/go.mod h1:5eCOqeGphOyz6TsY3ZDNjE33SM/TFAK3RGuCL2naTgY= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.33.0 h1:Z0lVKLXU+jxGf3ANoh+UWx9Ai5bjpQVnZXI1zEzvqS0= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.33.0/go.mod h1:U5rUt7Rw6zuORsWNfpMRy8XMNKLrmIlv/4HgLVW/d5M= -go.opentelemetry.io/contrib/zpages v0.32.0 h1:AVKTx5ppWDaem7A61HFsO1T3CK/t6kFRQoZQMj0/TW4= go.opentelemetry.io/contrib/zpages v0.32.0/go.mod h1:Jx75I61RDcZU3d/1WrP6UdINlzGGLAwFNdQ3bCTb+qw= +go.opentelemetry.io/contrib/zpages v0.33.0 h1:0JATTp4rT56Mrfrq1icN9GqrI+1uFjq2NwJJRl8m3fk= go.opentelemetry.io/contrib/zpages v0.33.0/go.mod h1:ddmD63NkBVE29GucaBBCR8/b/TRlY+PkpIbF3m2JF7Y= -go.opentelemetry.io/otel v0.11.0/go.mod h1:G8UCk+KooF2HLkgo8RHX9epABH/aRGYET7gQOqBVdB0= go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= -go.opentelemetry.io/otel v1.4.0/go.mod h1:jeAqMFKy2uLIxCtKxoFj0FAL5zAPKQagc3+GtBWakzk= -go.opentelemetry.io/otel v1.4.1/go.mod h1:StM6F/0fSwpd8dKWDCdRr7uRvEPYdW0hBSlbdTiUde4= -go.opentelemetry.io/otel v1.7.0 h1:Z2lA3Tdch0iDcrhJXDIlC94XE+bxok1F9B+4Lz/lGsM= +go.opentelemetry.io/otel v1.6.0/go.mod h1:bfJD2DZVw0LBxghOTlgnlI0CV3hLDu9XF/QKOUXMTQQ= +go.opentelemetry.io/otel v1.6.1/go.mod h1:blzUabWHkX6LJewxvadmzafgh/wnvBSDBdOuwkAtrWQ= go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= +go.opentelemetry.io/otel v1.8.0 h1:zcvBFizPbpa1q7FehvFiHbQwGzmPILebO0tyqIR5Djg= go.opentelemetry.io/otel v1.8.0/go.mod h1:2pkj+iMj0o03Y+cW6/m8Y4WkRdYN3AvCXCnzRMp9yvM= go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.6.1/go.mod h1:NEu79Xo32iVb+0gVNV8PMd7GoWqnyDXRlj04yFjqz40= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.7.0/go.mod h1:M1hVZHNxcbkAlcvrOMlpQ4YOO3Awf+4N2dxkZL3xm04= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.3.0/go.mod h1:hO1KLR7jcKaDDKDkvI9dP/FIhpmna5lkqPUQdEjFAM8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.6.1/go.mod h1:YJ/JbY5ag/tSQFXzH3mtDmHqzF3aFn3DI/aB1n7pt4w= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.7.0/go.mod h1:ceUgdyfNv4h4gLxHR0WNfDiiVmZFodZhZSbOLhpxqXE= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.3.0/go.mod h1:keUU7UfnwWTWpJ+FWnyqmogPa82nuU5VUANFq49hlMY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.6.1/go.mod h1:UJJXJj0rltNIemDMwkOJyggsvyMG9QHfJeFH0HS5JjM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.7.0/go.mod h1:E+/KKhwOSw8yoPxSSuUHG6vKppkvhN+S1Jc7Nib3k3o= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.3.0/go.mod h1:QNX1aly8ehqqX1LEa6YniTU7VY9I6R3X/oPxhGdTceE= -go.opentelemetry.io/otel/exporters/prometheus v0.30.0 h1:YXo5ZY5nofaEYMCMTTMaRH2cLDZB8+0UGuk5RwMfIo0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.6.1/go.mod h1:DAKwdo06hFLc0U88O10x4xnb5sc7dDRDqRuiN+io8JE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.7.0/go.mod h1:aFXT9Ng2seM9eizF+LfKiyPBGy8xIZKwhusC1gIu3hA= go.opentelemetry.io/otel/exporters/prometheus v0.30.0/go.mod h1:qN5feW+0/d661KDtJuATEmHtw5bKBK7NSvNEP927zSs= +go.opentelemetry.io/otel/exporters/prometheus v0.31.0 h1:jwtnOGBM8dIty5AVZ+9ZCzZexCea3aVKmUfZAQcHqxs= go.opentelemetry.io/otel/exporters/prometheus v0.31.0/go.mod h1:QarXIB8L79IwIPoNgG3A6zNvBgVmcppeFogV1d8612s= -go.opentelemetry.io/otel/internal/metric v0.27.0/go.mod h1:n1CVxRqKqYZtqyTh9U/onvKapPGv7y/rpyOTI+LFNzw= go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/metric v0.27.0/go.mod h1:raXDJ7uP2/Jc0nVZWQjJtzoyssOYWu/+pjZqRzfvZ7g= -go.opentelemetry.io/otel/metric v0.30.0 h1:Hs8eQZ8aQgs0U49diZoaS6Uaxw3+bBE3lcMUKBFIk3c= +go.opentelemetry.io/otel/metric v0.28.0/go.mod h1:TrzsfQAmQaB1PDcdhBauLMk7nyyg9hm+GoQq/ekE9Iw= go.opentelemetry.io/otel/metric v0.30.0/go.mod h1:/ShZ7+TS4dHzDFmfi1kSXMhMVubNoP0oIaBp70J6UXU= +go.opentelemetry.io/otel/metric v0.31.0 h1:6SiklT+gfWAwWUR0meEMxQBtihpiEs4c+vL9spDTqUs= go.opentelemetry.io/otel/metric v0.31.0/go.mod h1:ohmwj9KTSIeBnDBm/ZwH2PSZxZzoOaG2xZeekTRzL5A= go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= -go.opentelemetry.io/otel/sdk v1.7.0 h1:4OmStpcKVOfvDOgCt7UriAPtKolwIhxpnSNI/yK+1B0= +go.opentelemetry.io/otel/sdk v1.6.1/go.mod h1:IVYrddmFZ+eJqu2k38qD3WezFR2pymCzm8tdxyh3R4E= go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU= +go.opentelemetry.io/otel/sdk v1.8.0 h1:xwu69/fNuwbSHWe/0PGS888RmjWY181OmcXDQKu7ZQk= go.opentelemetry.io/otel/sdk v1.8.0/go.mod h1:uPSfc+yfDH2StDM/Rm35WE8gXSNdvCg023J6HeGNO0c= go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= -go.opentelemetry.io/otel/sdk/metric v0.30.0 h1:XTqQ4y3erR2Oj8xSAOL5ovO5011ch2ELg51z4fVkpME= go.opentelemetry.io/otel/sdk/metric v0.30.0/go.mod h1:8AKFRi5HyvTR0RRty3paN1aMC9HMT+NzcEhw/BLkLX8= +go.opentelemetry.io/otel/sdk/metric v0.31.0 h1:2sZx4R43ZMhJdteKAlKoHvRgrMp53V1aRxvEf5lCq8Q= go.opentelemetry.io/otel/sdk/metric v0.31.0/go.mod h1:fl0SmNnX9mN9xgU6OLYLMBMrNAsaZQi7qBwprwO3abk= go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk= -go.opentelemetry.io/otel/trace v1.4.0/go.mod h1:uc3eRsqDfWs9R7b92xbQbU42/eTNz4N+gLP8qJCi4aE= -go.opentelemetry.io/otel/trace v1.4.1/go.mod h1:iYEVbroFCNut9QkwEczV9vMRPHNKSSwYZjulEtsmhFc= -go.opentelemetry.io/otel/trace v1.7.0 h1:O37Iogk1lEkMRXewVtZ1BBTVn5JEp8GrJvP92bJqC6o= +go.opentelemetry.io/otel/trace v1.6.0/go.mod h1:qs7BrU5cZ8dXQHBGxHMOxwME/27YH2qEp4/+tZLLwJE= +go.opentelemetry.io/otel/trace v1.6.1/go.mod h1:RkFRM1m0puWIq10oxImnGEduNBzxiN7TXluRBtE+5j0= go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= +go.opentelemetry.io/otel/trace v1.8.0 h1:cSy0DF9eGI5WIfNwZ1q2iUyGj00tGzP24dE1lOlHrfY= go.opentelemetry.io/otel/trace v1.8.0/go.mod h1:0Bt3PXY8w+3pheS3hQUt+wow8b1ojPaTBoTCh2zIFI4= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg3NAKnUGl9YpQ= -go.opentelemetry.io/proto/otlp v0.12.0/go.mod h1:TsIjwGWIx5VFYv9KGVlOpxoBl5Dy+63SUguV7GGvlSQ= +go.opentelemetry.io/proto/otlp v0.12.1/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.16.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.18.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -2366,6 +2464,7 @@ go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/automaxprocs v1.4.0/go.mod h1:/mTEdr7LvHhs0v7mjdxDreTz1OG5zdZGqgOnhWiR/+Q= go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= @@ -2381,27 +2480,20 @@ go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.20.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= +go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= -golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= -golang.org/x/crypto v0.0.0-20190506204251-e1dfcc566284/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -2409,15 +2501,15 @@ golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= @@ -2425,34 +2517,51 @@ golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210915214749-c084706c2272/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20211202192323-5770296d904e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122 h1:NvGWuYG8dkDHFSKksI1P9faiVJ9rayE6l0+ouWVIDs8= golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20200901203048-c4f52b2c50aa/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/exp v0.0.0-20200908183739-ae8ad444f925 h1:5XVKs2rlCg8EFyRcvO8/XFwYxh1oKJO1Q3X5vttIf9c= golang.org/x/exp v0.0.0-20200908183739-ae8ad444f925/go.mod h1:1phAWC201xIgDyaFpmDeZkgf70Q4Pd/CNqfRtVPtxNw= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -2479,9 +2588,9 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2497,6 +2606,7 @@ golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -2512,6 +2622,7 @@ golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190921015927-1a5e07d1ff72/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -2527,8 +2638,8 @@ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -2545,29 +2656,29 @@ golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211020060615-d418f374d309/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211108170745-6635138e15ea/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211118161319-6a13c67c3ce4/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220105145211-5b0dc2dfae98/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220526153639-5463443f8c37 h1:lUkvobShwKsOesNfWWlCS5q7fnbG1MEliIzwu886fn8= -golang.org/x/net v0.0.0-20220526153639-5463443f8c37/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e h1:TsQ7F31D3bUCLeqPT0u+yjp1guoArKaNKmCr22PYgTQ= @@ -2594,8 +2705,6 @@ golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401 h1:zwrSfklXn0gxyLRX/aR+q6cgHbV/ItVyzbPlbA+dkAw= -golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2 h1:+jnHzr9VPj32ykQVai5DNahi9+NSp7yYuCsl5eAQtL0= golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= @@ -2611,10 +2720,9 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220513210516-0976fa681c29 h1:w8s32wxx3sY+OjLlv9qltkLU5yvJzxjjgiHWLjdIcw4= golang.org/x/sync v0.0.0-20220513210516-0976fa681c29/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f h1:Ax0t5p6N38Ga0dThY21weqDEyz2oklo4IvDkpigvkD8= golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2626,7 +2734,7 @@ golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2648,6 +2756,7 @@ golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626150813-e07cf5db2756/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2664,6 +2773,7 @@ golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191025021431-6c3a3bfe00ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2694,8 +2804,9 @@ golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200828194041-157a740278f4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2716,6 +2827,7 @@ golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2733,6 +2845,7 @@ golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210611083646-a4fc73990273/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2748,21 +2861,20 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2774,7 +2886,6 @@ golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9sn golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2794,25 +2905,28 @@ golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220411224347-583f2d630306 h1:+gHMid33q6pen7kv9xvT+JRinntgeXO2AeZVd0AWD3w= +golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220609170525-579cf78fd858 h1:Dpdu/EMxGMFgq0CeYMh4fazTD2vtlZRYE7wyynxJb9U= golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181112210238-4b1f3b6b1646/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -2834,6 +2948,7 @@ golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20190906203814-12febf440ab1/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -2850,7 +2965,6 @@ golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200203023011-6f24f261dadb/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -2864,10 +2978,10 @@ golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200527183253-8e7acdbce89d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200701151220-7cb253f4c4f8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= @@ -2889,6 +3003,7 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.10-0.20220218145154-897bd77cd717/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= @@ -2899,11 +3014,19 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df h1:5Pf6pFKu98ODmgnpvkJ3kFUOQGGLIzLIkbzUHp47618= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz0MXhXXS1KgF41eUdBNvxK0= golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.7.0/go.mod h1:L02bwd0sqlsvRv41G7wGWFCsVNZFv/k1xzGIxeANHGM= +gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= gonum.org/v1/gonum v0.11.0 h1:f1IJhK4Km5tBJmaiJXtk/PkL4cdVX6J+tGiM187uT5E= gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= +gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= @@ -2919,7 +3042,6 @@ google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/ google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.25.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= @@ -2938,23 +3060,21 @@ google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6 google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.58.0/go.mod h1:cAbP2FsxoGVNwtgNAmmn3y5G1TWAiVYRmg4yku3lv+E= google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= google.golang.org/api v0.81.0/go.mod h1:FA6Mb/bZxj706H2j+j2d6mHEEaHBmbbWnkfvmorOCko= -google.golang.org/api v0.82.0 h1:h6EGeZuzhoKSS7BUznzkW+2wHZ+4Ubd6rsVvvh3dRkw= -google.golang.org/api v0.82.0/go.mod h1:Ld58BeTlL9DIYr2M2ajvoSqmGLei0BMn+kVBmkam1os= google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.87.0 h1:pUQVF/F+X7Tl1lo4LJoJf5BOpjtmINU80p9XpYTU2p4= google.golang.org/api v0.87.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2999,9 +3119,8 @@ google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200528110217-3d3490e7e671/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200605102947-12044bf5ea91/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200726014623-da3ae01ef02d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -3027,6 +3146,7 @@ google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxH google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210630183607-d20f26d13c79/go.mod h1:yiaVoXHpRzHGyxV3o4DktVWY4mSUErTKaeEOq6C3t3U= google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= @@ -3037,12 +3157,13 @@ google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEc google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210921142501-181ce0d877f6/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211018162055-cf77aa76bad2/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= @@ -3060,18 +3181,17 @@ google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220527130721-00d5c0f3be58 h1:a221mAAEAzq4Lz6ZWRkcS8ptb2mxoxYSt4N68aRyQHM= -google.golang.org/genproto v0.0.0-20220527130721-00d5c0f3be58/go.mod h1:yKyY4AMRwFiC8yMMNaMi+RkCnjZJt9LoWuvhXjMs+To= +google.golang.org/genproto v0.0.0-20220524023933-508584e28198/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f h1:hJ/Y5SqPXbarffmAsApliUlcvMU+wScNGfyop4bZm8o= google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220718134204-073382fd740c h1:xDUAhRezFnKF6wopxkOfdWYvz2XCiRQzndyDdpwFgbc= +google.golang.org/genproto v0.0.0-20220718134204-073382fd740c/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -3095,7 +3215,6 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= @@ -3116,7 +3235,6 @@ google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ5 google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0 h1:9n77onPX5F3qfFCqjy9dhn8PbNQsIKeVU04J9G7umt8= google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.48.0 h1:rQOsyJ/8+ufEDJd/Gdsz7HG220Mh9HAhFHRGnIjda0w= google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= @@ -3136,8 +3254,6 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -gopkg.in/DataDog/dd-trace-go.v1 v1.38.1 h1:nAKgcpJLXRHF56cKCP3bN8gTTQmmNAZFEblbyGKhKTo= -gopkg.in/DataDog/dd-trace-go.v1 v1.38.1/go.mod h1:GBhK4yaMJ1h329ivtKAqRNe1EZ944UnZwtz5lh7CnJc= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/statsd.v2 v2.0.0 h1:FXkZSCZIH17vLCO5sO2UucTHsH9pc+17F6pl3JVCwMc= @@ -3161,21 +3277,22 @@ gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:a gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4= gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/jinzhu/gorm.v1 v1.9.1/go.mod h1:56JJPUzbikvTVnoyP1nppSkbJ2L8sunqTBDY2fDrmFg= +gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/olivere/elastic.v3 v3.0.75/go.mod h1:yDEuSnrM51Pc8dM5ov7U8aI/ToR3PG0llA8aRv2qmw0= -gopkg.in/olivere/elastic.v5 v5.0.84/go.mod h1:LXF6q9XNBxpMqrcgax95C6xyARXWbbCXUrtTxrNrxJI= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.4.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w= gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/telebot.v3 v3.0.0/go.mod h1:7rExV8/0mDDNu9epSrDm/8j22KLaActH1Tbee6YjzWg= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= @@ -3189,6 +3306,7 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= @@ -3198,17 +3316,14 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/zorkian/go-datadog-api.v2 v2.30.0 h1:umQdVO0Ytx+kYadhuJNjFtDgIsIEBnKrOTvNuu8ClKI= gopkg.in/zorkian/go-datadog-api.v2 v2.30.0/go.mod h1:kx0CSMRpzEZfx/nFH62GLU4stZjparh/BRpM89t4XCQ= -gorm.io/driver/mysql v1.0.1/go.mod h1:KtqSthtg55lFp3S5kUXqlGaelnWpKitn4k1xZTnoiPw= -gorm.io/driver/postgres v1.0.0/go.mod h1:wtMFcOzmuA5QigNsgEIb7O5lhvH1tHAF1RbWmLWV4to= -gorm.io/driver/sqlserver v1.0.4/go.mod h1:ciEo5btfITTBCj9BkoUVDvgQbUdLWQNqdFY5OGuGnRg= -gorm.io/gorm v1.9.19/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= -gorm.io/gorm v1.20.0/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= -gorm.io/gorm v1.20.6/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/gotestsum v1.7.0/go.mod h1:V1m4Jw3eBerhI/A6qCxUE07RnCg7ACkKj9BYcAm09V8= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= +gotest.tools/v3 v3.1.0/go.mod h1:fHy7eyTmJFO5bQbUsEGQ1v4m2J3Jz9eWL54TP2/ZuYQ= gotest.tools/v3 v3.2.0 h1:I0DwBVMGAx26dttAj1BtJLAkVGncrkkUXfJLC4Flt/I= +gotest.tools/v3 v3.2.0/go.mod h1:Mcr9QNxkg0uMvy/YElmo4SpXgJKWgQvYrT7Kw5RzJ1A= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -3217,45 +3332,40 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.2.0/go.mod h1:lPVVZ2BS5TfnjLyizF7o7hv7j9/L+8cZY2hLyjP9cGY= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= howett.net/plist v0.0.0-20181124034731-591f970eefbb h1:jhnBjNi9UFpfpl8YZhA9CrOqpnJdvzuiHsl/dnxl11M= howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= -k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= k8s.io/api v0.21.1/go.mod h1:FstGROTmsSHBarKc8bylzXih8BLNYTiS3TZcsoEDg2s= k8s.io/api v0.22.5/go.mod h1:mEhXyLaSD1qTOf40rRiKXkc+2iCem09rWLlFwhCEiAs= +k8s.io/api v0.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8= k8s.io/api v0.24.0/go.mod h1:5Jl90IUrJHUJYEMANRURMiVvJ0g7Ax7r3R1bqO8zx8I= -k8s.io/api v0.24.1 h1:BjCMRDcyEYz03joa3K1+rbshwh1Ay6oB53+iUx2H8UY= -k8s.io/api v0.24.1/go.mod h1:JhoOvNiLXKTPQ60zh2g0ewpA+bnEYf5q44Flhquh4vQ= k8s.io/api v0.24.3 h1:tt55QEmKd6L2k5DP6G/ZzdMQKvG5ro4H4teClqm0sTY= k8s.io/api v0.24.3/go.mod h1:elGR/XSZrS7z7cSZPzVWaycpJuGIw57j9b95/1PdJNI= -k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= k8s.io/apimachinery v0.21.1/go.mod h1:jbreFvJo3ov9rj7eWT7+sYiRx+qZuCYXwWT1bcDswPY= +k8s.io/apimachinery v0.21.5/go.mod h1:3PfBV+4PPXNs0aueD+7fHcGyhdkFFYqXeshQtsKCi+4= k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= k8s.io/apimachinery v0.22.5/go.mod h1:xziclGKwuuJ2RM5/rSFQSYAj0zdbci3DH8kj+WvyN0U= +k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= k8s.io/apimachinery v0.24.0/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= -k8s.io/apimachinery v0.24.1 h1:ShD4aDxTQKN5zNf8K1RQ2u98ELLdIW7jEnlO9uAMX/I= -k8s.io/apimachinery v0.24.1/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= k8s.io/apimachinery v0.24.3 h1:hrFiNSA2cBZqllakVYyH/VyEh4B581bQRmqATJSeQTg= k8s.io/apimachinery v0.24.3/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= k8s.io/apiserver v0.22.5/go.mod h1:s2WbtgZAkTKt679sYtSudEQrTGWUSQAPe6MupLnlmaQ= -k8s.io/client-go v0.17.0/go.mod h1:TYgR6EUHs6k45hb6KWjVD6jFZvJV4gHDikv/It0xz+k= k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= k8s.io/client-go v0.21.1/go.mod h1:/kEw4RgW+3xnBGzvp9IWxKSNA+lXn3A7AuH3gdOAzLs= k8s.io/client-go v0.22.5/go.mod h1:cs6yf/61q2T1SdQL5Rdcjg9J1ElXSwbjSrW2vFImM4Y= +k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4= k8s.io/client-go v0.24.0/go.mod h1:VFPQET+cAFpYxh6Bq6f4xyMY80G6jKKktU6G0m00VDw= -k8s.io/client-go v0.24.1 h1:w1hNdI9PFrzu3OlovVeTnf4oHDt+FJLd9Ndluvnb42E= -k8s.io/client-go v0.24.1/go.mod h1:f1kIDqcEYmwXS/vTbbhopMUbhKp2JhOeVTfxgaCIlF8= k8s.io/client-go v0.24.3 h1:Nl1840+6p4JqkFWEW2LnMKU667BUxw03REfLAVhuKQY= k8s.io/client-go v0.24.3/go.mod h1:AAovolf5Z9bY1wIg2FZ8LPQlEdKHjLI7ZD4rw920BJw= k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= @@ -3270,14 +3380,11 @@ k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= k8s.io/cri-api v0.23.1/go.mod h1:REJE3PSU0h/LOV1APBrupxrEJqnoxZC8KWzkBUHwrK4= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= @@ -3286,20 +3393,20 @@ k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.8.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.60.1 h1:VW25q3bZx9uE3vvdL6M8ezOX79vA2Aq1nEWLqNQclHc= k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42 h1:Gii5eqf+GmIEwGNKQYQClCayuJCe2/4fZUvF7VG99sU= k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= k8s.io/kubelet v0.24.0 h1:fH+D6mSr4DGIeHp/O2+mCEJhkVq3Gpgv9BVOHI+GrWY= k8s.io/kubelet v0.24.0/go.mod h1:p3BBacmHTCMpUf+nluhlyzuGHmONKAspqCvpu9oPAyA= k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= -k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= @@ -3307,16 +3414,16 @@ k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/ k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc= k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -mellium.im/sasl v0.2.1/go.mod h1:ROaEDLQNuf9vjKqE1SrAfnsobm2YKXT1gnN1uDp1PjQ= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 h1:kDi4JBNAsJWfz1aEXhO8Jg87JJaPNLh5tIzYHgStQ9Y= sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= @@ -3328,6 +3435,7 @@ sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= +skywalking.apache.org/repo/goapi v0.0.0-20211122071111-ffc517fbfe21/go.mod h1:4KrWd+Oi4lkB+PtxZgIlf+3T6EECPru4fOWNMEHjxRk= skywalking.apache.org/repo/goapi v0.0.0-20220121092418-9c455d0dda3f h1:i0cL/mhLt8xVO05SCKshkzWNUkXOkiW+zRIIuVWjPko= skywalking.apache.org/repo/goapi v0.0.0-20220121092418-9c455d0dda3f/go.mod h1:4KrWd+Oi4lkB+PtxZgIlf+3T6EECPru4fOWNMEHjxRk= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/internal/components/components.go b/internal/components/components.go index e51f31190be2..37d465ea11d4 100644 --- a/internal/components/components.go +++ b/internal/components/components.go @@ -18,6 +18,7 @@ import ( "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/opsrampotlpexporter" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/batchmemlimitprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/scrubbingprocessor" + "github.com/open-telemetry/opentelemetry-collector-contrib/processor/stream_processor" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/exporter/loggingexporter" "go.opentelemetry.io/collector/exporter/otlpexporter" @@ -351,6 +352,7 @@ func Components() (component.Factories, error) { transformprocessor.NewFactory(), scrubbingprocessor.NewFactory(), batchmemlimitprocessor.NewFactory(), + stream_processor.NewFactory(), } factories.Processors, err = component.MakeProcessorFactoryMap(processors...) if err != nil { diff --git a/processor/stream_processor/config.go b/processor/stream_processor/config.go new file mode 100644 index 000000000000..ea728fec239e --- /dev/null +++ b/processor/stream_processor/config.go @@ -0,0 +1,25 @@ +package stream_processor + +import ( + "fmt" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/adapter" + "go.opentelemetry.io/collector/config" +) + +// Config defines configuration for Resource processor. +type Config struct { + config.ProcessorSettings `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct + adapter.BaseConfig `mapstructure:",squash"` + Query string `mapstructure:"query"` +} + +var _ config.Processor = (*Config)(nil) + +// Validate checks if the processor configuration is valid +func (cfg *Config) Validate() error { + if len(cfg.Query) == 0 { + return fmt.Errorf("correct sql query missed") + } + + return nil +} diff --git a/processor/stream_processor/config_test.go b/processor/stream_processor/config_test.go new file mode 100644 index 000000000000..ae10af7c87b8 --- /dev/null +++ b/processor/stream_processor/config_test.go @@ -0,0 +1,27 @@ +package stream_processor + +import ( + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component/componenttest" + "go.opentelemetry.io/collector/config" + "go.opentelemetry.io/collector/service/servicetest" +) + +func TestConfigLoad(t *testing.T) { + factories, err := componenttest.NopFactories() + assert.Nil(t, err) + + factory := NewFactory() + factories.Processors[typeStr] = factory + cfg, err := servicetest.LoadConfigAndValidate(filepath.Join("testdata", "config.yaml"), factories) + assert.Nil(t, err) + require.NotNil(t, cfg) + id := config.NewComponentIDWithName(typeStr, "") + component := cfg.Processors[id] + assert.Equal(t, component.(*Config).Query, "select * where price = 5;") + +} diff --git a/processor/stream_processor/factory.go b/processor/stream_processor/factory.go new file mode 100644 index 000000000000..aad608098492 --- /dev/null +++ b/processor/stream_processor/factory.go @@ -0,0 +1,38 @@ +package stream_processor + +import ( + "context" + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/config" + "go.opentelemetry.io/collector/consumer" +) + +const ( + // The value of "type" key in configuration. + typeStr = "sqlStream" + // The stability level of the processor. + stability = component.StabilityLevelInDevelopment +) + +var processorCapabilities = consumer.Capabilities{MutatesData: true} + +func NewFactory() component.ProcessorFactory { + return component.NewProcessorFactory(typeStr, createDefaultConfig, + component.WithLogsProcessorAndStabilityLevel(createSqlStreamProcessor, + stability)) +} + +func createDefaultConfig() config.Processor { + return &Config{ + ProcessorSettings: config.NewProcessorSettings(config.NewComponentID(typeStr)), + } +} + +func createSqlStreamProcessor( + _ context.Context, + set component.ProcessorCreateSettings, + cfg config.Processor, + nextConsumer consumer.Logs, +) (component.LogsProcessor, error) { + return newSqlStreamProcessor(nextConsumer, set.Logger, cfg.(*Config)), nil +} diff --git a/processor/stream_processor/processor.go b/processor/stream_processor/processor.go new file mode 100644 index 000000000000..af4d23117d11 --- /dev/null +++ b/processor/stream_processor/processor.go @@ -0,0 +1,87 @@ +package stream_processor + +import ( + "context" + "fmt" + "time" + + "github.com/open-telemetry/opentelemetry-collector-contrib/processor/stream_processor/parser" + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/consumer" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/plog" + "go.uber.org/zap" +) + +type sqlStreamProcessor struct { + logger *zap.Logger + config *Config + nextConsumer consumer.Logs + in, out chan plog.LogRecordSlice + outErr chan error + processor *parser.SqlStreamVisitor +} + +func newSqlStreamProcessor(next consumer.Logs, logger *zap.Logger, cfg *Config) *sqlStreamProcessor { + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + processor := parser.NewSqlStreamVisitor(cfg.Query, in, out, outErr, logger) + + return &sqlStreamProcessor{ + logger: logger, + config: cfg, + nextConsumer: next, + in: in, + out: out, + outErr: outErr, + processor: processor, + } +} + +func (sp *sqlStreamProcessor) processorLoop() { + for { + select { + case ls := <-sp.out: + printLogs(ls) + case err := <-sp.outErr: + sp.logger.Error("error", zap.Error(err)) + sp.processor.Stop() + } + } +} + +func printLogs(ls plog.LogRecordSlice) { + if ls.Len() == 0 { + return + } + for i := 0; i < ls.Len(); i++ { + ls.At(i).Attributes().Range(func(k string, v pcommon.Value) bool { + fmt.Printf("%q: %q ", k, v.AsString()) + return true + }) + fmt.Print("\n") + } + fmt.Println("END OF THIS BATCH") +} + +func (sp *sqlStreamProcessor) ConsumeLogs(ctx context.Context, ld plog.Logs) error { + <-time.After(1 * time.Second) + sp.in <- ld.ResourceLogs().At(0).ScopeLogs().At(0).LogRecords() + return nil +} + +func (sp *sqlStreamProcessor) Capabilities() consumer.Capabilities { + return consumer.Capabilities{MutatesData: true} +} + +// Start is invoked during service startup. +func (sp *sqlStreamProcessor) Start(context.Context, component.Host) error { + go sp.processorLoop() + return nil +} + +// Shutdown is invoked during service shutdown. +func (sp *sqlStreamProcessor) Shutdown(context.Context) error { + return nil +} diff --git a/processor/stream_processor/testdata/config.yaml b/processor/stream_processor/testdata/config.yaml new file mode 100644 index 000000000000..1d3b231ca67d --- /dev/null +++ b/processor/stream_processor/testdata/config.yaml @@ -0,0 +1,18 @@ +receivers: + nop: + + +processors: + sqlStream: + query: "select * where price = 5;" + +exporters: + nop: + + +service: + pipelines: + logs: + receivers: [nop] + processors: [sqlStream] + exporters: [nop] \ No newline at end of file From 118ce30eedd4804a2743b20fcf10a1131bcc80d5 Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Tue, 23 Aug 2022 19:40:26 +0300 Subject: [PATCH 20/31] nested queries support --- pkg/stanza/operator/helper/input.go | 21 + pkg/stanza/operator/input/windows/operator.go | 14 +- processor/batchmemlimitprocessor/config.go | 2 +- processor/scrubbingprocessor/config.go | 2 +- processor/stream_processor/Sql.g4 | 2 + processor/stream_processor/config.go | 2 +- processor/stream_processor/doc.go | 1 + processor/stream_processor/factory.go | 2 +- processor/stream_processor/parser/Sql.interp | 4 +- processor/stream_processor/parser/Sql.tokens | 84 +-- .../stream_processor/parser/SqlLexer.interp | 5 +- .../stream_processor/parser/SqlLexer.tokens | 84 +-- .../parser/sql_base_visitor.go | 4 + .../stream_processor/parser/sql_lexer.go | 483 +++++++++--------- .../stream_processor/parser/sql_parser.go | 329 ++++++++---- .../parser/sql_stream_nested_test.go | 214 ++++++++ .../parser/sql_stream_tumbling_test.go | 4 +- .../parser/sql_stream_visitor.go | 59 ++- .../parser/sql_stream_visitor_test.go | 68 +-- .../stream_processor/parser/sql_visitor.go | 3 + .../stream_processor/parser/visitor_utils.go | 46 +- processor/stream_processor/processor.go | 18 +- 22 files changed, 939 insertions(+), 512 deletions(-) create mode 100644 processor/stream_processor/doc.go create mode 100644 processor/stream_processor/parser/sql_stream_nested_test.go diff --git a/pkg/stanza/operator/helper/input.go b/pkg/stanza/operator/helper/input.go index d965b802112b..1dd5b6a5b10a 100644 --- a/pkg/stanza/operator/helper/input.go +++ b/pkg/stanza/operator/helper/input.go @@ -16,6 +16,7 @@ package helper // import "github.com/open-telemetry/opentelemetry-collector-cont import ( "context" + "fmt" "go.uber.org/zap" @@ -88,6 +89,26 @@ func (i *InputOperator) NewEntry(value interface{}) (*entry.Entry, error) { return entry, nil } +func (i *InputOperator) NewEntryWithAttr(value interface{}) (*entry.Entry, error) { + entry := entry.New() + + converted, ok := value.(map[string]interface{}) + if !ok { + return nil, fmt.Errorf("value type is not map") + } + entry.Attributes = converted + + if err := i.Attribute(entry); err != nil { + return nil, errors.Wrap(err, "add attributes to entry") + } + + if err := i.Identify(entry); err != nil { + return nil, errors.Wrap(err, "add resource keys to entry") + } + + return entry, nil +} + // CanProcess will always return false for an input operator. func (i *InputOperator) CanProcess() bool { return false diff --git a/pkg/stanza/operator/input/windows/operator.go b/pkg/stanza/operator/input/windows/operator.go index 1ae50471367c..2d5532ae2ed3 100644 --- a/pkg/stanza/operator/input/windows/operator.go +++ b/pkg/stanza/operator/input/windows/operator.go @@ -20,6 +20,7 @@ package windows // import "github.com/open-telemetry/opentelemetry-collector-con import ( "context" "fmt" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/entry" "sync" "time" @@ -39,6 +40,7 @@ type Config struct { Channel string `mapstructure:"channel" json:"channel" yaml:"channel"` MaxReads int `mapstructure:"max_reads,omitempty" json:"max_reads,omitempty" yaml:"max_reads,omitempty"` StartAt string `mapstructure:"start_at,omitempty" json:"start_at,omitempty" yaml:"start_at,omitempty"` + BodyToAttr bool `mapstructure:"body_to_attr" json:"body_to_attr" yaml:"body_to_attr"` PollInterval helper.Duration `mapstructure:"poll_interval,omitempty" json:"poll_interval,omitempty" yaml:"poll_interval,omitempty"` } @@ -68,6 +70,7 @@ func (c *Config) Build(logger *zap.SugaredLogger) (operator.Operator, error) { maxReads: c.MaxReads, startAt: c.StartAt, pollInterval: c.PollInterval, + bodyToAttr: c.BodyToAttr, }, nil } @@ -92,6 +95,7 @@ type Input struct { channel string maxReads int startAt string + bodyToAttr bool pollInterval helper.Duration persister operator.Persister cancel context.CancelFunc @@ -223,7 +227,15 @@ func (e *Input) processEvent(ctx context.Context, event Event) { // sendEvent will send EventXML as an entry to the operator's output. func (e *Input) sendEvent(ctx context.Context, eventXML EventXML) { body := eventXML.parseBody() - entry, err := e.NewEntry(body) + var entry *entry.Entry + var err error + + if e.bodyToAttr { + entry, err = e.NewEntryWithAttr(body) + } else { + entry, err = e.NewEntry(body) + } + if err != nil { e.Errorf("Failed to create entry: %s", err) return diff --git a/processor/batchmemlimitprocessor/config.go b/processor/batchmemlimitprocessor/config.go index fbab4de421a1..6c523a5da0f5 100644 --- a/processor/batchmemlimitprocessor/config.go +++ b/processor/batchmemlimitprocessor/config.go @@ -5,7 +5,7 @@ import ( "go.opentelemetry.io/collector/config" ) -// Config defines configuration for Resource processor. +// Config defines configuration for batch memory limit processor. type Config struct { config.ProcessorSettings `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct adapter.BaseConfig `mapstructure:",squash"` diff --git a/processor/scrubbingprocessor/config.go b/processor/scrubbingprocessor/config.go index 1219225da7d0..ea1a7427f137 100644 --- a/processor/scrubbingprocessor/config.go +++ b/processor/scrubbingprocessor/config.go @@ -20,7 +20,7 @@ type MaskingSettings struct { Placeholder string `mapstructure:"placeholder"` } -// Config defines configuration for Resource processor. +// Config defines configuration for scrubbing processor. type Config struct { config.ProcessorSettings `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct adapter.BaseConfig `mapstructure:",squash"` diff --git a/processor/stream_processor/Sql.g4 b/processor/stream_processor/Sql.g4 index 0009067e82e1..28499aa0535b 100644 --- a/processor/stream_processor/Sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -48,6 +48,7 @@ expr simpleExpr : IDENTIFIER comparisonOperator literalValue #simpleExpression + | IDENTIFIER DOT IDENTIFIER comparisonOperator literalValue #nestedExpression ; compoundExpr @@ -80,6 +81,7 @@ WS : [ \t]+ -> skip ; COMMA : ',' ; L_BRACKET : '(' ; R_BRACKET : ')' ; +DOT : '.'; EOQ: ';'; diff --git a/processor/stream_processor/config.go b/processor/stream_processor/config.go index ea728fec239e..70cb4876f633 100644 --- a/processor/stream_processor/config.go +++ b/processor/stream_processor/config.go @@ -6,7 +6,7 @@ import ( "go.opentelemetry.io/collector/config" ) -// Config defines configuration for Resource processor. +// Config defines configuration for stream processor. type Config struct { config.ProcessorSettings `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct adapter.BaseConfig `mapstructure:",squash"` diff --git a/processor/stream_processor/doc.go b/processor/stream_processor/doc.go new file mode 100644 index 000000000000..84d3606cf41d --- /dev/null +++ b/processor/stream_processor/doc.go @@ -0,0 +1 @@ +package stream_processor diff --git a/processor/stream_processor/factory.go b/processor/stream_processor/factory.go index aad608098492..2c47ad19ef2b 100644 --- a/processor/stream_processor/factory.go +++ b/processor/stream_processor/factory.go @@ -9,7 +9,7 @@ import ( const ( // The value of "type" key in configuration. - typeStr = "sqlStream" + typeStr = "sql_stream" // The stability level of the processor. stability = component.StabilityLevelInDevelopment ) diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp index c5e65823573c..0161b412c45b 100644 --- a/processor/stream_processor/parser/Sql.interp +++ b/processor/stream_processor/parser/Sql.interp @@ -5,6 +5,7 @@ null ',' '(' ')' +'.' ';' null null @@ -49,6 +50,7 @@ WS COMMA L_BRACKET R_BRACKET +DOT EOQ BOOLEAN_LITERAL K_SELECT @@ -103,4 +105,4 @@ groupBy atn: -[4, 1, 41, 130, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 33, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 54, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 62, 8, 3, 10, 3, 12, 3, 65, 9, 3, 1, 3, 3, 3, 68, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 73, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 79, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 88, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 97, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 102, 8, 7, 1, 7, 3, 7, 105, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 110, 8, 7, 10, 7, 12, 7, 113, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 0, 1, 14, 13, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 0, 5, 1, 0, 29, 33, 1, 0, 36, 37, 1, 0, 12, 13, 2, 0, 14, 22, 27, 28, 2, 0, 7, 7, 39, 40, 131, 0, 26, 1, 0, 0, 0, 2, 53, 1, 0, 0, 0, 4, 55, 1, 0, 0, 0, 6, 67, 1, 0, 0, 0, 8, 72, 1, 0, 0, 0, 10, 87, 1, 0, 0, 0, 12, 89, 1, 0, 0, 0, 14, 104, 1, 0, 0, 0, 16, 114, 1, 0, 0, 0, 18, 118, 1, 0, 0, 0, 20, 122, 1, 0, 0, 0, 22, 124, 1, 0, 0, 0, 24, 126, 1, 0, 0, 0, 26, 27, 3, 2, 1, 0, 27, 28, 5, 0, 0, 1, 28, 1, 1, 0, 0, 0, 29, 30, 5, 8, 0, 0, 30, 32, 3, 6, 3, 0, 31, 33, 3, 12, 6, 0, 32, 31, 1, 0, 0, 0, 32, 33, 1, 0, 0, 0, 33, 34, 1, 0, 0, 0, 34, 35, 5, 6, 0, 0, 35, 54, 1, 0, 0, 0, 36, 37, 5, 8, 0, 0, 37, 38, 3, 8, 4, 0, 38, 40, 3, 4, 2, 0, 39, 41, 3, 12, 6, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 5, 6, 0, 0, 43, 54, 1, 0, 0, 0, 44, 45, 5, 8, 0, 0, 45, 46, 3, 8, 4, 0, 46, 48, 3, 4, 2, 0, 47, 49, 3, 12, 6, 0, 48, 47, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 3, 24, 12, 0, 51, 52, 5, 6, 0, 0, 52, 54, 1, 0, 0, 0, 53, 29, 1, 0, 0, 0, 53, 36, 1, 0, 0, 0, 53, 44, 1, 0, 0, 0, 54, 3, 1, 0, 0, 0, 55, 56, 5, 10, 0, 0, 56, 57, 5, 39, 0, 0, 57, 5, 1, 0, 0, 0, 58, 63, 3, 10, 5, 0, 59, 60, 5, 3, 0, 0, 60, 62, 3, 10, 5, 0, 61, 59, 1, 0, 0, 0, 62, 65, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 63, 64, 1, 0, 0, 0, 64, 68, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 66, 68, 5, 41, 0, 0, 67, 58, 1, 0, 0, 0, 67, 66, 1, 0, 0, 0, 68, 7, 1, 0, 0, 0, 69, 70, 3, 10, 5, 0, 70, 71, 5, 3, 0, 0, 71, 73, 1, 0, 0, 0, 72, 69, 1, 0, 0, 0, 72, 73, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 75, 7, 0, 0, 0, 75, 78, 5, 4, 0, 0, 76, 79, 3, 10, 5, 0, 77, 79, 5, 41, 0, 0, 78, 76, 1, 0, 0, 0, 78, 77, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 81, 5, 5, 0, 0, 81, 9, 1, 0, 0, 0, 82, 88, 5, 38, 0, 0, 83, 84, 7, 1, 0, 0, 84, 85, 5, 4, 0, 0, 85, 86, 5, 38, 0, 0, 86, 88, 5, 5, 0, 0, 87, 82, 1, 0, 0, 0, 87, 83, 1, 0, 0, 0, 88, 11, 1, 0, 0, 0, 89, 90, 5, 9, 0, 0, 90, 91, 3, 14, 7, 0, 91, 13, 1, 0, 0, 0, 92, 93, 6, 7, -1, 0, 93, 105, 3, 16, 8, 0, 94, 97, 3, 18, 9, 0, 95, 97, 3, 16, 8, 0, 96, 94, 1, 0, 0, 0, 96, 95, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 101, 7, 2, 0, 0, 99, 102, 3, 18, 9, 0, 100, 102, 3, 16, 8, 0, 101, 99, 1, 0, 0, 0, 101, 100, 1, 0, 0, 0, 102, 105, 1, 0, 0, 0, 103, 105, 3, 18, 9, 0, 104, 92, 1, 0, 0, 0, 104, 96, 1, 0, 0, 0, 104, 103, 1, 0, 0, 0, 105, 111, 1, 0, 0, 0, 106, 107, 10, 2, 0, 0, 107, 108, 7, 2, 0, 0, 108, 110, 3, 14, 7, 3, 109, 106, 1, 0, 0, 0, 110, 113, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 15, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 114, 115, 5, 38, 0, 0, 115, 116, 3, 20, 10, 0, 116, 117, 3, 22, 11, 0, 117, 17, 1, 0, 0, 0, 118, 119, 5, 4, 0, 0, 119, 120, 3, 14, 7, 0, 120, 121, 5, 5, 0, 0, 121, 19, 1, 0, 0, 0, 122, 123, 7, 3, 0, 0, 123, 21, 1, 0, 0, 0, 124, 125, 7, 4, 0, 0, 125, 23, 1, 0, 0, 0, 126, 127, 5, 11, 0, 0, 127, 128, 3, 10, 5, 0, 128, 25, 1, 0, 0, 0, 13, 32, 40, 48, 53, 63, 67, 72, 78, 87, 96, 101, 104, 111] \ No newline at end of file +[4, 1, 42, 138, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 33, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 54, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 62, 8, 3, 10, 3, 12, 3, 65, 9, 3, 1, 3, 3, 3, 68, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 73, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 79, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 88, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 97, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 102, 8, 7, 1, 7, 3, 7, 105, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 110, 8, 7, 10, 7, 12, 7, 113, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 125, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 0, 1, 14, 13, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 0, 5, 1, 0, 30, 34, 1, 0, 37, 38, 1, 0, 13, 14, 2, 0, 15, 23, 28, 29, 2, 0, 8, 8, 40, 41, 140, 0, 26, 1, 0, 0, 0, 2, 53, 1, 0, 0, 0, 4, 55, 1, 0, 0, 0, 6, 67, 1, 0, 0, 0, 8, 72, 1, 0, 0, 0, 10, 87, 1, 0, 0, 0, 12, 89, 1, 0, 0, 0, 14, 104, 1, 0, 0, 0, 16, 124, 1, 0, 0, 0, 18, 126, 1, 0, 0, 0, 20, 130, 1, 0, 0, 0, 22, 132, 1, 0, 0, 0, 24, 134, 1, 0, 0, 0, 26, 27, 3, 2, 1, 0, 27, 28, 5, 0, 0, 1, 28, 1, 1, 0, 0, 0, 29, 30, 5, 9, 0, 0, 30, 32, 3, 6, 3, 0, 31, 33, 3, 12, 6, 0, 32, 31, 1, 0, 0, 0, 32, 33, 1, 0, 0, 0, 33, 34, 1, 0, 0, 0, 34, 35, 5, 7, 0, 0, 35, 54, 1, 0, 0, 0, 36, 37, 5, 9, 0, 0, 37, 38, 3, 8, 4, 0, 38, 40, 3, 4, 2, 0, 39, 41, 3, 12, 6, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 5, 7, 0, 0, 43, 54, 1, 0, 0, 0, 44, 45, 5, 9, 0, 0, 45, 46, 3, 8, 4, 0, 46, 48, 3, 4, 2, 0, 47, 49, 3, 12, 6, 0, 48, 47, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 3, 24, 12, 0, 51, 52, 5, 7, 0, 0, 52, 54, 1, 0, 0, 0, 53, 29, 1, 0, 0, 0, 53, 36, 1, 0, 0, 0, 53, 44, 1, 0, 0, 0, 54, 3, 1, 0, 0, 0, 55, 56, 5, 11, 0, 0, 56, 57, 5, 40, 0, 0, 57, 5, 1, 0, 0, 0, 58, 63, 3, 10, 5, 0, 59, 60, 5, 3, 0, 0, 60, 62, 3, 10, 5, 0, 61, 59, 1, 0, 0, 0, 62, 65, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 63, 64, 1, 0, 0, 0, 64, 68, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 66, 68, 5, 42, 0, 0, 67, 58, 1, 0, 0, 0, 67, 66, 1, 0, 0, 0, 68, 7, 1, 0, 0, 0, 69, 70, 3, 10, 5, 0, 70, 71, 5, 3, 0, 0, 71, 73, 1, 0, 0, 0, 72, 69, 1, 0, 0, 0, 72, 73, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 75, 7, 0, 0, 0, 75, 78, 5, 4, 0, 0, 76, 79, 3, 10, 5, 0, 77, 79, 5, 42, 0, 0, 78, 76, 1, 0, 0, 0, 78, 77, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 81, 5, 5, 0, 0, 81, 9, 1, 0, 0, 0, 82, 88, 5, 39, 0, 0, 83, 84, 7, 1, 0, 0, 84, 85, 5, 4, 0, 0, 85, 86, 5, 39, 0, 0, 86, 88, 5, 5, 0, 0, 87, 82, 1, 0, 0, 0, 87, 83, 1, 0, 0, 0, 88, 11, 1, 0, 0, 0, 89, 90, 5, 10, 0, 0, 90, 91, 3, 14, 7, 0, 91, 13, 1, 0, 0, 0, 92, 93, 6, 7, -1, 0, 93, 105, 3, 16, 8, 0, 94, 97, 3, 18, 9, 0, 95, 97, 3, 16, 8, 0, 96, 94, 1, 0, 0, 0, 96, 95, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 101, 7, 2, 0, 0, 99, 102, 3, 18, 9, 0, 100, 102, 3, 16, 8, 0, 101, 99, 1, 0, 0, 0, 101, 100, 1, 0, 0, 0, 102, 105, 1, 0, 0, 0, 103, 105, 3, 18, 9, 0, 104, 92, 1, 0, 0, 0, 104, 96, 1, 0, 0, 0, 104, 103, 1, 0, 0, 0, 105, 111, 1, 0, 0, 0, 106, 107, 10, 2, 0, 0, 107, 108, 7, 2, 0, 0, 108, 110, 3, 14, 7, 3, 109, 106, 1, 0, 0, 0, 110, 113, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 15, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 114, 115, 5, 39, 0, 0, 115, 116, 3, 20, 10, 0, 116, 117, 3, 22, 11, 0, 117, 125, 1, 0, 0, 0, 118, 119, 5, 39, 0, 0, 119, 120, 5, 6, 0, 0, 120, 121, 5, 39, 0, 0, 121, 122, 3, 20, 10, 0, 122, 123, 3, 22, 11, 0, 123, 125, 1, 0, 0, 0, 124, 114, 1, 0, 0, 0, 124, 118, 1, 0, 0, 0, 125, 17, 1, 0, 0, 0, 126, 127, 5, 4, 0, 0, 127, 128, 3, 14, 7, 0, 128, 129, 5, 5, 0, 0, 129, 19, 1, 0, 0, 0, 130, 131, 7, 3, 0, 0, 131, 21, 1, 0, 0, 0, 132, 133, 7, 4, 0, 0, 133, 23, 1, 0, 0, 0, 134, 135, 5, 12, 0, 0, 135, 136, 3, 10, 5, 0, 136, 25, 1, 0, 0, 0, 14, 32, 40, 48, 53, 63, 67, 72, 78, 87, 96, 101, 104, 111, 124] \ No newline at end of file diff --git a/processor/stream_processor/parser/Sql.tokens b/processor/stream_processor/parser/Sql.tokens index 5d2f8ec0dc76..f00c22ab66a0 100644 --- a/processor/stream_processor/parser/Sql.tokens +++ b/processor/stream_processor/parser/Sql.tokens @@ -3,47 +3,49 @@ WS=2 COMMA=3 L_BRACKET=4 R_BRACKET=5 -EOQ=6 -BOOLEAN_LITERAL=7 -K_SELECT=8 -K_WHERE=9 -K_WINDOW_TUMBLING=10 -K_GROUP_BY=11 -K_AND=12 -K_OR=13 -K_IS=14 -K_LIKE=15 -K_NOT_LIKE=16 -K_EQUAL=17 -K_GREATER=18 -K_LESS=19 -K_LESS_EQUAL=20 -K_GREATER_EQUAL=21 -K_NOT_EQUAL=22 -K_NULL=23 -K_IS_NULL=24 -K_IS_NOT_NULL=25 -K_NOT=26 -K_NOT_IN=27 -K_IN=28 -K_COUNT=29 -K_SUM=30 -K_MIN=31 -K_MAX=32 -K_AVG=33 -K_TRUE=34 -K_FALSE=35 -K_UPPER=36 -K_LOWER=37 -IDENTIFIER=38 -NUMERIC_LITERAL=39 -STRING_LITERAL=40 -STAR=41 +DOT=6 +EOQ=7 +BOOLEAN_LITERAL=8 +K_SELECT=9 +K_WHERE=10 +K_WINDOW_TUMBLING=11 +K_GROUP_BY=12 +K_AND=13 +K_OR=14 +K_IS=15 +K_LIKE=16 +K_NOT_LIKE=17 +K_EQUAL=18 +K_GREATER=19 +K_LESS=20 +K_LESS_EQUAL=21 +K_GREATER_EQUAL=22 +K_NOT_EQUAL=23 +K_NULL=24 +K_IS_NULL=25 +K_IS_NOT_NULL=26 +K_NOT=27 +K_NOT_IN=28 +K_IN=29 +K_COUNT=30 +K_SUM=31 +K_MIN=32 +K_MAX=33 +K_AVG=34 +K_TRUE=35 +K_FALSE=36 +K_UPPER=37 +K_LOWER=38 +IDENTIFIER=39 +NUMERIC_LITERAL=40 +STRING_LITERAL=41 +STAR=42 ','=3 '('=4 ')'=5 -';'=6 -'='=17 -'>'=18 -'<'=19 -'*'=41 +'.'=6 +';'=7 +'='=18 +'>'=19 +'<'=20 +'*'=42 diff --git a/processor/stream_processor/parser/SqlLexer.interp b/processor/stream_processor/parser/SqlLexer.interp index 831aeb221146..b23aa6552caf 100644 --- a/processor/stream_processor/parser/SqlLexer.interp +++ b/processor/stream_processor/parser/SqlLexer.interp @@ -5,6 +5,7 @@ null ',' '(' ')' +'.' ';' null null @@ -49,6 +50,7 @@ WS COMMA L_BRACKET R_BRACKET +DOT EOQ BOOLEAN_LITERAL K_SELECT @@ -92,6 +94,7 @@ WS COMMA L_BRACKET R_BRACKET +DOT EOQ BOOLEAN_LITERAL K_SELECT @@ -164,4 +167,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 41, 457, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 143, 8, 1, 11, 1, 12, 1, 144, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 3, 6, 159, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 314, 8, 37, 10, 37, 12, 37, 317, 9, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 324, 8, 37, 10, 37, 12, 37, 327, 9, 37, 1, 37, 1, 37, 1, 37, 5, 37, 332, 8, 37, 10, 37, 12, 37, 335, 9, 37, 1, 37, 1, 37, 1, 37, 5, 37, 340, 8, 37, 10, 37, 12, 37, 343, 9, 37, 3, 37, 345, 8, 37, 1, 38, 4, 38, 348, 8, 38, 11, 38, 12, 38, 349, 1, 38, 1, 38, 5, 38, 354, 8, 38, 10, 38, 12, 38, 357, 9, 38, 3, 38, 359, 8, 38, 1, 38, 1, 38, 3, 38, 363, 8, 38, 1, 38, 4, 38, 366, 8, 38, 11, 38, 12, 38, 367, 3, 38, 370, 8, 38, 1, 38, 1, 38, 4, 38, 374, 8, 38, 11, 38, 12, 38, 375, 1, 38, 1, 38, 3, 38, 380, 8, 38, 1, 38, 4, 38, 383, 8, 38, 11, 38, 12, 38, 384, 3, 38, 387, 8, 38, 3, 38, 389, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 395, 8, 39, 10, 39, 12, 39, 398, 9, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 0, 0, 68, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 133, 0, 135, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 453, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 1, 137, 1, 0, 0, 0, 3, 142, 1, 0, 0, 0, 5, 148, 1, 0, 0, 0, 7, 150, 1, 0, 0, 0, 9, 152, 1, 0, 0, 0, 11, 154, 1, 0, 0, 0, 13, 158, 1, 0, 0, 0, 15, 160, 1, 0, 0, 0, 17, 167, 1, 0, 0, 0, 19, 173, 1, 0, 0, 0, 21, 189, 1, 0, 0, 0, 23, 198, 1, 0, 0, 0, 25, 202, 1, 0, 0, 0, 27, 205, 1, 0, 0, 0, 29, 208, 1, 0, 0, 0, 31, 213, 1, 0, 0, 0, 33, 222, 1, 0, 0, 0, 35, 224, 1, 0, 0, 0, 37, 226, 1, 0, 0, 0, 39, 228, 1, 0, 0, 0, 41, 231, 1, 0, 0, 0, 43, 234, 1, 0, 0, 0, 45, 237, 1, 0, 0, 0, 47, 242, 1, 0, 0, 0, 49, 246, 1, 0, 0, 0, 51, 252, 1, 0, 0, 0, 53, 256, 1, 0, 0, 0, 55, 261, 1, 0, 0, 0, 57, 264, 1, 0, 0, 0, 59, 270, 1, 0, 0, 0, 61, 274, 1, 0, 0, 0, 63, 278, 1, 0, 0, 0, 65, 282, 1, 0, 0, 0, 67, 286, 1, 0, 0, 0, 69, 291, 1, 0, 0, 0, 71, 297, 1, 0, 0, 0, 73, 303, 1, 0, 0, 0, 75, 344, 1, 0, 0, 0, 77, 388, 1, 0, 0, 0, 79, 390, 1, 0, 0, 0, 81, 401, 1, 0, 0, 0, 83, 403, 1, 0, 0, 0, 85, 405, 1, 0, 0, 0, 87, 407, 1, 0, 0, 0, 89, 409, 1, 0, 0, 0, 91, 411, 1, 0, 0, 0, 93, 413, 1, 0, 0, 0, 95, 415, 1, 0, 0, 0, 97, 417, 1, 0, 0, 0, 99, 419, 1, 0, 0, 0, 101, 421, 1, 0, 0, 0, 103, 423, 1, 0, 0, 0, 105, 425, 1, 0, 0, 0, 107, 427, 1, 0, 0, 0, 109, 429, 1, 0, 0, 0, 111, 431, 1, 0, 0, 0, 113, 433, 1, 0, 0, 0, 115, 435, 1, 0, 0, 0, 117, 437, 1, 0, 0, 0, 119, 439, 1, 0, 0, 0, 121, 441, 1, 0, 0, 0, 123, 443, 1, 0, 0, 0, 125, 445, 1, 0, 0, 0, 127, 447, 1, 0, 0, 0, 129, 449, 1, 0, 0, 0, 131, 451, 1, 0, 0, 0, 133, 453, 1, 0, 0, 0, 135, 455, 1, 0, 0, 0, 137, 138, 7, 0, 0, 0, 138, 139, 1, 0, 0, 0, 139, 140, 6, 0, 0, 0, 140, 2, 1, 0, 0, 0, 141, 143, 7, 1, 0, 0, 142, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 142, 1, 0, 0, 0, 144, 145, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 147, 6, 1, 1, 0, 147, 4, 1, 0, 0, 0, 148, 149, 5, 44, 0, 0, 149, 6, 1, 0, 0, 0, 150, 151, 5, 40, 0, 0, 151, 8, 1, 0, 0, 0, 152, 153, 5, 41, 0, 0, 153, 10, 1, 0, 0, 0, 154, 155, 5, 59, 0, 0, 155, 12, 1, 0, 0, 0, 156, 159, 3, 67, 33, 0, 157, 159, 3, 69, 34, 0, 158, 156, 1, 0, 0, 0, 158, 157, 1, 0, 0, 0, 159, 14, 1, 0, 0, 0, 160, 161, 3, 121, 60, 0, 161, 162, 3, 93, 46, 0, 162, 163, 3, 107, 53, 0, 163, 164, 3, 93, 46, 0, 164, 165, 3, 89, 44, 0, 165, 166, 3, 123, 61, 0, 166, 16, 1, 0, 0, 0, 167, 168, 3, 129, 64, 0, 168, 169, 3, 99, 49, 0, 169, 170, 3, 93, 46, 0, 170, 171, 3, 119, 59, 0, 171, 172, 3, 93, 46, 0, 172, 18, 1, 0, 0, 0, 173, 174, 3, 129, 64, 0, 174, 175, 3, 101, 50, 0, 175, 176, 3, 111, 55, 0, 176, 177, 3, 91, 45, 0, 177, 178, 3, 113, 56, 0, 178, 179, 3, 129, 64, 0, 179, 180, 3, 1, 0, 0, 180, 181, 3, 123, 61, 0, 181, 182, 3, 125, 62, 0, 182, 183, 3, 109, 54, 0, 183, 184, 3, 87, 43, 0, 184, 185, 3, 107, 53, 0, 185, 186, 3, 101, 50, 0, 186, 187, 3, 111, 55, 0, 187, 188, 3, 97, 48, 0, 188, 20, 1, 0, 0, 0, 189, 190, 3, 97, 48, 0, 190, 191, 3, 119, 59, 0, 191, 192, 3, 113, 56, 0, 192, 193, 3, 125, 62, 0, 193, 194, 3, 115, 57, 0, 194, 195, 3, 1, 0, 0, 195, 196, 3, 87, 43, 0, 196, 197, 3, 133, 66, 0, 197, 22, 1, 0, 0, 0, 198, 199, 3, 85, 42, 0, 199, 200, 3, 111, 55, 0, 200, 201, 3, 91, 45, 0, 201, 24, 1, 0, 0, 0, 202, 203, 3, 113, 56, 0, 203, 204, 3, 119, 59, 0, 204, 26, 1, 0, 0, 0, 205, 206, 3, 101, 50, 0, 206, 207, 3, 121, 60, 0, 207, 28, 1, 0, 0, 0, 208, 209, 3, 107, 53, 0, 209, 210, 3, 101, 50, 0, 210, 211, 3, 105, 52, 0, 211, 212, 3, 93, 46, 0, 212, 30, 1, 0, 0, 0, 213, 214, 3, 111, 55, 0, 214, 215, 3, 113, 56, 0, 215, 216, 3, 123, 61, 0, 216, 217, 3, 1, 0, 0, 217, 218, 3, 107, 53, 0, 218, 219, 3, 101, 50, 0, 219, 220, 3, 105, 52, 0, 220, 221, 3, 93, 46, 0, 221, 32, 1, 0, 0, 0, 222, 223, 5, 61, 0, 0, 223, 34, 1, 0, 0, 0, 224, 225, 5, 62, 0, 0, 225, 36, 1, 0, 0, 0, 226, 227, 5, 60, 0, 0, 227, 38, 1, 0, 0, 0, 228, 229, 3, 37, 18, 0, 229, 230, 3, 33, 16, 0, 230, 40, 1, 0, 0, 0, 231, 232, 3, 35, 17, 0, 232, 233, 3, 33, 16, 0, 233, 42, 1, 0, 0, 0, 234, 235, 5, 33, 0, 0, 235, 236, 3, 33, 16, 0, 236, 44, 1, 0, 0, 0, 237, 238, 3, 111, 55, 0, 238, 239, 3, 125, 62, 0, 239, 240, 3, 107, 53, 0, 240, 241, 3, 107, 53, 0, 241, 46, 1, 0, 0, 0, 242, 243, 3, 27, 13, 0, 243, 244, 3, 1, 0, 0, 244, 245, 3, 45, 22, 0, 245, 48, 1, 0, 0, 0, 246, 247, 3, 27, 13, 0, 247, 248, 3, 1, 0, 0, 248, 249, 3, 51, 25, 0, 249, 250, 3, 1, 0, 0, 250, 251, 3, 45, 22, 0, 251, 50, 1, 0, 0, 0, 252, 253, 3, 111, 55, 0, 253, 254, 3, 113, 56, 0, 254, 255, 3, 123, 61, 0, 255, 52, 1, 0, 0, 0, 256, 257, 3, 51, 25, 0, 257, 258, 3, 1, 0, 0, 258, 259, 3, 101, 50, 0, 259, 260, 3, 111, 55, 0, 260, 54, 1, 0, 0, 0, 261, 262, 3, 101, 50, 0, 262, 263, 3, 111, 55, 0, 263, 56, 1, 0, 0, 0, 264, 265, 3, 89, 44, 0, 265, 266, 3, 113, 56, 0, 266, 267, 3, 125, 62, 0, 267, 268, 3, 111, 55, 0, 268, 269, 3, 123, 61, 0, 269, 58, 1, 0, 0, 0, 270, 271, 3, 121, 60, 0, 271, 272, 3, 125, 62, 0, 272, 273, 3, 109, 54, 0, 273, 60, 1, 0, 0, 0, 274, 275, 3, 109, 54, 0, 275, 276, 3, 101, 50, 0, 276, 277, 3, 111, 55, 0, 277, 62, 1, 0, 0, 0, 278, 279, 3, 109, 54, 0, 279, 280, 3, 85, 42, 0, 280, 281, 3, 131, 65, 0, 281, 64, 1, 0, 0, 0, 282, 283, 3, 85, 42, 0, 283, 284, 3, 127, 63, 0, 284, 285, 3, 97, 48, 0, 285, 66, 1, 0, 0, 0, 286, 287, 3, 123, 61, 0, 287, 288, 3, 119, 59, 0, 288, 289, 3, 125, 62, 0, 289, 290, 3, 93, 46, 0, 290, 68, 1, 0, 0, 0, 291, 292, 3, 95, 47, 0, 292, 293, 3, 85, 42, 0, 293, 294, 3, 107, 53, 0, 294, 295, 3, 121, 60, 0, 295, 296, 3, 93, 46, 0, 296, 70, 1, 0, 0, 0, 297, 298, 3, 125, 62, 0, 298, 299, 3, 115, 57, 0, 299, 300, 3, 115, 57, 0, 300, 301, 3, 93, 46, 0, 301, 302, 3, 119, 59, 0, 302, 72, 1, 0, 0, 0, 303, 304, 3, 107, 53, 0, 304, 305, 3, 113, 56, 0, 305, 306, 3, 129, 64, 0, 306, 307, 3, 93, 46, 0, 307, 308, 3, 119, 59, 0, 308, 74, 1, 0, 0, 0, 309, 315, 5, 34, 0, 0, 310, 314, 8, 2, 0, 0, 311, 312, 5, 34, 0, 0, 312, 314, 5, 34, 0, 0, 313, 310, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 314, 317, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 318, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 318, 345, 5, 34, 0, 0, 319, 325, 5, 96, 0, 0, 320, 324, 8, 3, 0, 0, 321, 322, 5, 96, 0, 0, 322, 324, 5, 96, 0, 0, 323, 320, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 324, 327, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, 326, 328, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 328, 345, 5, 96, 0, 0, 329, 333, 5, 91, 0, 0, 330, 332, 8, 4, 0, 0, 331, 330, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 336, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 345, 5, 93, 0, 0, 337, 341, 7, 5, 0, 0, 338, 340, 7, 6, 0, 0, 339, 338, 1, 0, 0, 0, 340, 343, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 341, 342, 1, 0, 0, 0, 342, 345, 1, 0, 0, 0, 343, 341, 1, 0, 0, 0, 344, 309, 1, 0, 0, 0, 344, 319, 1, 0, 0, 0, 344, 329, 1, 0, 0, 0, 344, 337, 1, 0, 0, 0, 345, 76, 1, 0, 0, 0, 346, 348, 3, 83, 41, 0, 347, 346, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 358, 1, 0, 0, 0, 351, 355, 5, 46, 0, 0, 352, 354, 3, 83, 41, 0, 353, 352, 1, 0, 0, 0, 354, 357, 1, 0, 0, 0, 355, 353, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 359, 1, 0, 0, 0, 357, 355, 1, 0, 0, 0, 358, 351, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 369, 1, 0, 0, 0, 360, 362, 3, 93, 46, 0, 361, 363, 7, 7, 0, 0, 362, 361, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 365, 1, 0, 0, 0, 364, 366, 3, 83, 41, 0, 365, 364, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 370, 1, 0, 0, 0, 369, 360, 1, 0, 0, 0, 369, 370, 1, 0, 0, 0, 370, 389, 1, 0, 0, 0, 371, 373, 5, 46, 0, 0, 372, 374, 3, 83, 41, 0, 373, 372, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 373, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 386, 1, 0, 0, 0, 377, 379, 3, 93, 46, 0, 378, 380, 7, 7, 0, 0, 379, 378, 1, 0, 0, 0, 379, 380, 1, 0, 0, 0, 380, 382, 1, 0, 0, 0, 381, 383, 3, 83, 41, 0, 382, 381, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 382, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 387, 1, 0, 0, 0, 386, 377, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 389, 1, 0, 0, 0, 388, 347, 1, 0, 0, 0, 388, 371, 1, 0, 0, 0, 389, 78, 1, 0, 0, 0, 390, 396, 5, 39, 0, 0, 391, 395, 8, 8, 0, 0, 392, 393, 5, 39, 0, 0, 393, 395, 5, 39, 0, 0, 394, 391, 1, 0, 0, 0, 394, 392, 1, 0, 0, 0, 395, 398, 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 396, 397, 1, 0, 0, 0, 397, 399, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 399, 400, 5, 39, 0, 0, 400, 80, 1, 0, 0, 0, 401, 402, 5, 42, 0, 0, 402, 82, 1, 0, 0, 0, 403, 404, 7, 9, 0, 0, 404, 84, 1, 0, 0, 0, 405, 406, 7, 10, 0, 0, 406, 86, 1, 0, 0, 0, 407, 408, 7, 11, 0, 0, 408, 88, 1, 0, 0, 0, 409, 410, 7, 12, 0, 0, 410, 90, 1, 0, 0, 0, 411, 412, 7, 13, 0, 0, 412, 92, 1, 0, 0, 0, 413, 414, 7, 14, 0, 0, 414, 94, 1, 0, 0, 0, 415, 416, 7, 15, 0, 0, 416, 96, 1, 0, 0, 0, 417, 418, 7, 16, 0, 0, 418, 98, 1, 0, 0, 0, 419, 420, 7, 17, 0, 0, 420, 100, 1, 0, 0, 0, 421, 422, 7, 18, 0, 0, 422, 102, 1, 0, 0, 0, 423, 424, 7, 19, 0, 0, 424, 104, 1, 0, 0, 0, 425, 426, 7, 20, 0, 0, 426, 106, 1, 0, 0, 0, 427, 428, 7, 21, 0, 0, 428, 108, 1, 0, 0, 0, 429, 430, 7, 22, 0, 0, 430, 110, 1, 0, 0, 0, 431, 432, 7, 23, 0, 0, 432, 112, 1, 0, 0, 0, 433, 434, 7, 24, 0, 0, 434, 114, 1, 0, 0, 0, 435, 436, 7, 25, 0, 0, 436, 116, 1, 0, 0, 0, 437, 438, 7, 26, 0, 0, 438, 118, 1, 0, 0, 0, 439, 440, 7, 27, 0, 0, 440, 120, 1, 0, 0, 0, 441, 442, 7, 28, 0, 0, 442, 122, 1, 0, 0, 0, 443, 444, 7, 29, 0, 0, 444, 124, 1, 0, 0, 0, 445, 446, 7, 30, 0, 0, 446, 126, 1, 0, 0, 0, 447, 448, 7, 31, 0, 0, 448, 128, 1, 0, 0, 0, 449, 450, 7, 32, 0, 0, 450, 130, 1, 0, 0, 0, 451, 452, 7, 33, 0, 0, 452, 132, 1, 0, 0, 0, 453, 454, 7, 34, 0, 0, 454, 134, 1, 0, 0, 0, 455, 456, 7, 35, 0, 0, 456, 136, 1, 0, 0, 0, 23, 0, 144, 158, 313, 315, 323, 325, 333, 341, 344, 349, 355, 358, 362, 367, 369, 375, 379, 384, 386, 388, 394, 396, 2, 0, 1, 0, 6, 0, 0] \ No newline at end of file +[4, 0, 42, 461, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 145, 8, 1, 11, 1, 12, 1, 146, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 3, 7, 163, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 318, 8, 38, 10, 38, 12, 38, 321, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 328, 8, 38, 10, 38, 12, 38, 331, 9, 38, 1, 38, 1, 38, 1, 38, 5, 38, 336, 8, 38, 10, 38, 12, 38, 339, 9, 38, 1, 38, 1, 38, 1, 38, 5, 38, 344, 8, 38, 10, 38, 12, 38, 347, 9, 38, 3, 38, 349, 8, 38, 1, 39, 4, 39, 352, 8, 39, 11, 39, 12, 39, 353, 1, 39, 1, 39, 5, 39, 358, 8, 39, 10, 39, 12, 39, 361, 9, 39, 3, 39, 363, 8, 39, 1, 39, 1, 39, 3, 39, 367, 8, 39, 1, 39, 4, 39, 370, 8, 39, 11, 39, 12, 39, 371, 3, 39, 374, 8, 39, 1, 39, 1, 39, 4, 39, 378, 8, 39, 11, 39, 12, 39, 379, 1, 39, 1, 39, 3, 39, 384, 8, 39, 1, 39, 4, 39, 387, 8, 39, 11, 39, 12, 39, 388, 3, 39, 391, 8, 39, 3, 39, 393, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 5, 40, 399, 8, 40, 10, 40, 12, 40, 402, 9, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 0, 0, 69, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 133, 0, 135, 0, 137, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 457, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 1, 139, 1, 0, 0, 0, 3, 144, 1, 0, 0, 0, 5, 150, 1, 0, 0, 0, 7, 152, 1, 0, 0, 0, 9, 154, 1, 0, 0, 0, 11, 156, 1, 0, 0, 0, 13, 158, 1, 0, 0, 0, 15, 162, 1, 0, 0, 0, 17, 164, 1, 0, 0, 0, 19, 171, 1, 0, 0, 0, 21, 177, 1, 0, 0, 0, 23, 193, 1, 0, 0, 0, 25, 202, 1, 0, 0, 0, 27, 206, 1, 0, 0, 0, 29, 209, 1, 0, 0, 0, 31, 212, 1, 0, 0, 0, 33, 217, 1, 0, 0, 0, 35, 226, 1, 0, 0, 0, 37, 228, 1, 0, 0, 0, 39, 230, 1, 0, 0, 0, 41, 232, 1, 0, 0, 0, 43, 235, 1, 0, 0, 0, 45, 238, 1, 0, 0, 0, 47, 241, 1, 0, 0, 0, 49, 246, 1, 0, 0, 0, 51, 250, 1, 0, 0, 0, 53, 256, 1, 0, 0, 0, 55, 260, 1, 0, 0, 0, 57, 265, 1, 0, 0, 0, 59, 268, 1, 0, 0, 0, 61, 274, 1, 0, 0, 0, 63, 278, 1, 0, 0, 0, 65, 282, 1, 0, 0, 0, 67, 286, 1, 0, 0, 0, 69, 290, 1, 0, 0, 0, 71, 295, 1, 0, 0, 0, 73, 301, 1, 0, 0, 0, 75, 307, 1, 0, 0, 0, 77, 348, 1, 0, 0, 0, 79, 392, 1, 0, 0, 0, 81, 394, 1, 0, 0, 0, 83, 405, 1, 0, 0, 0, 85, 407, 1, 0, 0, 0, 87, 409, 1, 0, 0, 0, 89, 411, 1, 0, 0, 0, 91, 413, 1, 0, 0, 0, 93, 415, 1, 0, 0, 0, 95, 417, 1, 0, 0, 0, 97, 419, 1, 0, 0, 0, 99, 421, 1, 0, 0, 0, 101, 423, 1, 0, 0, 0, 103, 425, 1, 0, 0, 0, 105, 427, 1, 0, 0, 0, 107, 429, 1, 0, 0, 0, 109, 431, 1, 0, 0, 0, 111, 433, 1, 0, 0, 0, 113, 435, 1, 0, 0, 0, 115, 437, 1, 0, 0, 0, 117, 439, 1, 0, 0, 0, 119, 441, 1, 0, 0, 0, 121, 443, 1, 0, 0, 0, 123, 445, 1, 0, 0, 0, 125, 447, 1, 0, 0, 0, 127, 449, 1, 0, 0, 0, 129, 451, 1, 0, 0, 0, 131, 453, 1, 0, 0, 0, 133, 455, 1, 0, 0, 0, 135, 457, 1, 0, 0, 0, 137, 459, 1, 0, 0, 0, 139, 140, 7, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 142, 6, 0, 0, 0, 142, 2, 1, 0, 0, 0, 143, 145, 7, 1, 0, 0, 144, 143, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 144, 1, 0, 0, 0, 146, 147, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0, 148, 149, 6, 1, 1, 0, 149, 4, 1, 0, 0, 0, 150, 151, 5, 44, 0, 0, 151, 6, 1, 0, 0, 0, 152, 153, 5, 40, 0, 0, 153, 8, 1, 0, 0, 0, 154, 155, 5, 41, 0, 0, 155, 10, 1, 0, 0, 0, 156, 157, 5, 46, 0, 0, 157, 12, 1, 0, 0, 0, 158, 159, 5, 59, 0, 0, 159, 14, 1, 0, 0, 0, 160, 163, 3, 69, 34, 0, 161, 163, 3, 71, 35, 0, 162, 160, 1, 0, 0, 0, 162, 161, 1, 0, 0, 0, 163, 16, 1, 0, 0, 0, 164, 165, 3, 123, 61, 0, 165, 166, 3, 95, 47, 0, 166, 167, 3, 109, 54, 0, 167, 168, 3, 95, 47, 0, 168, 169, 3, 91, 45, 0, 169, 170, 3, 125, 62, 0, 170, 18, 1, 0, 0, 0, 171, 172, 3, 131, 65, 0, 172, 173, 3, 101, 50, 0, 173, 174, 3, 95, 47, 0, 174, 175, 3, 121, 60, 0, 175, 176, 3, 95, 47, 0, 176, 20, 1, 0, 0, 0, 177, 178, 3, 131, 65, 0, 178, 179, 3, 103, 51, 0, 179, 180, 3, 113, 56, 0, 180, 181, 3, 93, 46, 0, 181, 182, 3, 115, 57, 0, 182, 183, 3, 131, 65, 0, 183, 184, 3, 1, 0, 0, 184, 185, 3, 125, 62, 0, 185, 186, 3, 127, 63, 0, 186, 187, 3, 111, 55, 0, 187, 188, 3, 89, 44, 0, 188, 189, 3, 109, 54, 0, 189, 190, 3, 103, 51, 0, 190, 191, 3, 113, 56, 0, 191, 192, 3, 99, 49, 0, 192, 22, 1, 0, 0, 0, 193, 194, 3, 99, 49, 0, 194, 195, 3, 121, 60, 0, 195, 196, 3, 115, 57, 0, 196, 197, 3, 127, 63, 0, 197, 198, 3, 117, 58, 0, 198, 199, 3, 1, 0, 0, 199, 200, 3, 89, 44, 0, 200, 201, 3, 135, 67, 0, 201, 24, 1, 0, 0, 0, 202, 203, 3, 87, 43, 0, 203, 204, 3, 113, 56, 0, 204, 205, 3, 93, 46, 0, 205, 26, 1, 0, 0, 0, 206, 207, 3, 115, 57, 0, 207, 208, 3, 121, 60, 0, 208, 28, 1, 0, 0, 0, 209, 210, 3, 103, 51, 0, 210, 211, 3, 123, 61, 0, 211, 30, 1, 0, 0, 0, 212, 213, 3, 109, 54, 0, 213, 214, 3, 103, 51, 0, 214, 215, 3, 107, 53, 0, 215, 216, 3, 95, 47, 0, 216, 32, 1, 0, 0, 0, 217, 218, 3, 113, 56, 0, 218, 219, 3, 115, 57, 0, 219, 220, 3, 125, 62, 0, 220, 221, 3, 1, 0, 0, 221, 222, 3, 109, 54, 0, 222, 223, 3, 103, 51, 0, 223, 224, 3, 107, 53, 0, 224, 225, 3, 95, 47, 0, 225, 34, 1, 0, 0, 0, 226, 227, 5, 61, 0, 0, 227, 36, 1, 0, 0, 0, 228, 229, 5, 62, 0, 0, 229, 38, 1, 0, 0, 0, 230, 231, 5, 60, 0, 0, 231, 40, 1, 0, 0, 0, 232, 233, 3, 39, 19, 0, 233, 234, 3, 35, 17, 0, 234, 42, 1, 0, 0, 0, 235, 236, 3, 37, 18, 0, 236, 237, 3, 35, 17, 0, 237, 44, 1, 0, 0, 0, 238, 239, 5, 33, 0, 0, 239, 240, 3, 35, 17, 0, 240, 46, 1, 0, 0, 0, 241, 242, 3, 113, 56, 0, 242, 243, 3, 127, 63, 0, 243, 244, 3, 109, 54, 0, 244, 245, 3, 109, 54, 0, 245, 48, 1, 0, 0, 0, 246, 247, 3, 29, 14, 0, 247, 248, 3, 1, 0, 0, 248, 249, 3, 47, 23, 0, 249, 50, 1, 0, 0, 0, 250, 251, 3, 29, 14, 0, 251, 252, 3, 1, 0, 0, 252, 253, 3, 53, 26, 0, 253, 254, 3, 1, 0, 0, 254, 255, 3, 47, 23, 0, 255, 52, 1, 0, 0, 0, 256, 257, 3, 113, 56, 0, 257, 258, 3, 115, 57, 0, 258, 259, 3, 125, 62, 0, 259, 54, 1, 0, 0, 0, 260, 261, 3, 53, 26, 0, 261, 262, 3, 1, 0, 0, 262, 263, 3, 103, 51, 0, 263, 264, 3, 113, 56, 0, 264, 56, 1, 0, 0, 0, 265, 266, 3, 103, 51, 0, 266, 267, 3, 113, 56, 0, 267, 58, 1, 0, 0, 0, 268, 269, 3, 91, 45, 0, 269, 270, 3, 115, 57, 0, 270, 271, 3, 127, 63, 0, 271, 272, 3, 113, 56, 0, 272, 273, 3, 125, 62, 0, 273, 60, 1, 0, 0, 0, 274, 275, 3, 123, 61, 0, 275, 276, 3, 127, 63, 0, 276, 277, 3, 111, 55, 0, 277, 62, 1, 0, 0, 0, 278, 279, 3, 111, 55, 0, 279, 280, 3, 103, 51, 0, 280, 281, 3, 113, 56, 0, 281, 64, 1, 0, 0, 0, 282, 283, 3, 111, 55, 0, 283, 284, 3, 87, 43, 0, 284, 285, 3, 133, 66, 0, 285, 66, 1, 0, 0, 0, 286, 287, 3, 87, 43, 0, 287, 288, 3, 129, 64, 0, 288, 289, 3, 99, 49, 0, 289, 68, 1, 0, 0, 0, 290, 291, 3, 125, 62, 0, 291, 292, 3, 121, 60, 0, 292, 293, 3, 127, 63, 0, 293, 294, 3, 95, 47, 0, 294, 70, 1, 0, 0, 0, 295, 296, 3, 97, 48, 0, 296, 297, 3, 87, 43, 0, 297, 298, 3, 109, 54, 0, 298, 299, 3, 123, 61, 0, 299, 300, 3, 95, 47, 0, 300, 72, 1, 0, 0, 0, 301, 302, 3, 127, 63, 0, 302, 303, 3, 117, 58, 0, 303, 304, 3, 117, 58, 0, 304, 305, 3, 95, 47, 0, 305, 306, 3, 121, 60, 0, 306, 74, 1, 0, 0, 0, 307, 308, 3, 109, 54, 0, 308, 309, 3, 115, 57, 0, 309, 310, 3, 131, 65, 0, 310, 311, 3, 95, 47, 0, 311, 312, 3, 121, 60, 0, 312, 76, 1, 0, 0, 0, 313, 319, 5, 34, 0, 0, 314, 318, 8, 2, 0, 0, 315, 316, 5, 34, 0, 0, 316, 318, 5, 34, 0, 0, 317, 314, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 318, 321, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 322, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 349, 5, 34, 0, 0, 323, 329, 5, 96, 0, 0, 324, 328, 8, 3, 0, 0, 325, 326, 5, 96, 0, 0, 326, 328, 5, 96, 0, 0, 327, 324, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 328, 331, 1, 0, 0, 0, 329, 327, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 332, 1, 0, 0, 0, 331, 329, 1, 0, 0, 0, 332, 349, 5, 96, 0, 0, 333, 337, 5, 91, 0, 0, 334, 336, 8, 4, 0, 0, 335, 334, 1, 0, 0, 0, 336, 339, 1, 0, 0, 0, 337, 335, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 340, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 340, 349, 5, 93, 0, 0, 341, 345, 7, 5, 0, 0, 342, 344, 7, 6, 0, 0, 343, 342, 1, 0, 0, 0, 344, 347, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 349, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 348, 313, 1, 0, 0, 0, 348, 323, 1, 0, 0, 0, 348, 333, 1, 0, 0, 0, 348, 341, 1, 0, 0, 0, 349, 78, 1, 0, 0, 0, 350, 352, 3, 85, 42, 0, 351, 350, 1, 0, 0, 0, 352, 353, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 362, 1, 0, 0, 0, 355, 359, 5, 46, 0, 0, 356, 358, 3, 85, 42, 0, 357, 356, 1, 0, 0, 0, 358, 361, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 363, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 362, 355, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 373, 1, 0, 0, 0, 364, 366, 3, 95, 47, 0, 365, 367, 7, 7, 0, 0, 366, 365, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 369, 1, 0, 0, 0, 368, 370, 3, 85, 42, 0, 369, 368, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 369, 1, 0, 0, 0, 371, 372, 1, 0, 0, 0, 372, 374, 1, 0, 0, 0, 373, 364, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 393, 1, 0, 0, 0, 375, 377, 5, 46, 0, 0, 376, 378, 3, 85, 42, 0, 377, 376, 1, 0, 0, 0, 378, 379, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 379, 380, 1, 0, 0, 0, 380, 390, 1, 0, 0, 0, 381, 383, 3, 95, 47, 0, 382, 384, 7, 7, 0, 0, 383, 382, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 386, 1, 0, 0, 0, 385, 387, 3, 85, 42, 0, 386, 385, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 391, 1, 0, 0, 0, 390, 381, 1, 0, 0, 0, 390, 391, 1, 0, 0, 0, 391, 393, 1, 0, 0, 0, 392, 351, 1, 0, 0, 0, 392, 375, 1, 0, 0, 0, 393, 80, 1, 0, 0, 0, 394, 400, 5, 39, 0, 0, 395, 399, 8, 8, 0, 0, 396, 397, 5, 39, 0, 0, 397, 399, 5, 39, 0, 0, 398, 395, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 399, 402, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 400, 401, 1, 0, 0, 0, 401, 403, 1, 0, 0, 0, 402, 400, 1, 0, 0, 0, 403, 404, 5, 39, 0, 0, 404, 82, 1, 0, 0, 0, 405, 406, 5, 42, 0, 0, 406, 84, 1, 0, 0, 0, 407, 408, 7, 9, 0, 0, 408, 86, 1, 0, 0, 0, 409, 410, 7, 10, 0, 0, 410, 88, 1, 0, 0, 0, 411, 412, 7, 11, 0, 0, 412, 90, 1, 0, 0, 0, 413, 414, 7, 12, 0, 0, 414, 92, 1, 0, 0, 0, 415, 416, 7, 13, 0, 0, 416, 94, 1, 0, 0, 0, 417, 418, 7, 14, 0, 0, 418, 96, 1, 0, 0, 0, 419, 420, 7, 15, 0, 0, 420, 98, 1, 0, 0, 0, 421, 422, 7, 16, 0, 0, 422, 100, 1, 0, 0, 0, 423, 424, 7, 17, 0, 0, 424, 102, 1, 0, 0, 0, 425, 426, 7, 18, 0, 0, 426, 104, 1, 0, 0, 0, 427, 428, 7, 19, 0, 0, 428, 106, 1, 0, 0, 0, 429, 430, 7, 20, 0, 0, 430, 108, 1, 0, 0, 0, 431, 432, 7, 21, 0, 0, 432, 110, 1, 0, 0, 0, 433, 434, 7, 22, 0, 0, 434, 112, 1, 0, 0, 0, 435, 436, 7, 23, 0, 0, 436, 114, 1, 0, 0, 0, 437, 438, 7, 24, 0, 0, 438, 116, 1, 0, 0, 0, 439, 440, 7, 25, 0, 0, 440, 118, 1, 0, 0, 0, 441, 442, 7, 26, 0, 0, 442, 120, 1, 0, 0, 0, 443, 444, 7, 27, 0, 0, 444, 122, 1, 0, 0, 0, 445, 446, 7, 28, 0, 0, 446, 124, 1, 0, 0, 0, 447, 448, 7, 29, 0, 0, 448, 126, 1, 0, 0, 0, 449, 450, 7, 30, 0, 0, 450, 128, 1, 0, 0, 0, 451, 452, 7, 31, 0, 0, 452, 130, 1, 0, 0, 0, 453, 454, 7, 32, 0, 0, 454, 132, 1, 0, 0, 0, 455, 456, 7, 33, 0, 0, 456, 134, 1, 0, 0, 0, 457, 458, 7, 34, 0, 0, 458, 136, 1, 0, 0, 0, 459, 460, 7, 35, 0, 0, 460, 138, 1, 0, 0, 0, 23, 0, 146, 162, 317, 319, 327, 329, 337, 345, 348, 353, 359, 362, 366, 371, 373, 379, 383, 388, 390, 392, 398, 400, 2, 0, 1, 0, 6, 0, 0] \ No newline at end of file diff --git a/processor/stream_processor/parser/SqlLexer.tokens b/processor/stream_processor/parser/SqlLexer.tokens index 5d2f8ec0dc76..f00c22ab66a0 100644 --- a/processor/stream_processor/parser/SqlLexer.tokens +++ b/processor/stream_processor/parser/SqlLexer.tokens @@ -3,47 +3,49 @@ WS=2 COMMA=3 L_BRACKET=4 R_BRACKET=5 -EOQ=6 -BOOLEAN_LITERAL=7 -K_SELECT=8 -K_WHERE=9 -K_WINDOW_TUMBLING=10 -K_GROUP_BY=11 -K_AND=12 -K_OR=13 -K_IS=14 -K_LIKE=15 -K_NOT_LIKE=16 -K_EQUAL=17 -K_GREATER=18 -K_LESS=19 -K_LESS_EQUAL=20 -K_GREATER_EQUAL=21 -K_NOT_EQUAL=22 -K_NULL=23 -K_IS_NULL=24 -K_IS_NOT_NULL=25 -K_NOT=26 -K_NOT_IN=27 -K_IN=28 -K_COUNT=29 -K_SUM=30 -K_MIN=31 -K_MAX=32 -K_AVG=33 -K_TRUE=34 -K_FALSE=35 -K_UPPER=36 -K_LOWER=37 -IDENTIFIER=38 -NUMERIC_LITERAL=39 -STRING_LITERAL=40 -STAR=41 +DOT=6 +EOQ=7 +BOOLEAN_LITERAL=8 +K_SELECT=9 +K_WHERE=10 +K_WINDOW_TUMBLING=11 +K_GROUP_BY=12 +K_AND=13 +K_OR=14 +K_IS=15 +K_LIKE=16 +K_NOT_LIKE=17 +K_EQUAL=18 +K_GREATER=19 +K_LESS=20 +K_LESS_EQUAL=21 +K_GREATER_EQUAL=22 +K_NOT_EQUAL=23 +K_NULL=24 +K_IS_NULL=25 +K_IS_NOT_NULL=26 +K_NOT=27 +K_NOT_IN=28 +K_IN=29 +K_COUNT=30 +K_SUM=31 +K_MIN=32 +K_MAX=33 +K_AVG=34 +K_TRUE=35 +K_FALSE=36 +K_UPPER=37 +K_LOWER=38 +IDENTIFIER=39 +NUMERIC_LITERAL=40 +STRING_LITERAL=41 +STAR=42 ','=3 '('=4 ')'=5 -';'=6 -'='=17 -'>'=18 -'<'=19 -'*'=41 +'.'=6 +';'=7 +'='=18 +'>'=19 +'<'=20 +'*'=42 diff --git a/processor/stream_processor/parser/sql_base_visitor.go b/processor/stream_processor/parser/sql_base_visitor.go index 38ca27c6dafe..b04a176df489 100644 --- a/processor/stream_processor/parser/sql_base_visitor.go +++ b/processor/stream_processor/parser/sql_base_visitor.go @@ -72,6 +72,10 @@ func (v *BaseSqlVisitor) VisitSimpleExpression(ctx *SimpleExpressionContext) int return v.VisitChildren(ctx) } +func (v *BaseSqlVisitor) VisitNestedExpression(ctx *NestedExpressionContext) interface{} { + return v.VisitChildren(ctx) +} + func (v *BaseSqlVisitor) VisitCompoundExpression(ctx *CompoundExpressionContext) interface{} { return v.VisitChildren(ctx) } diff --git a/processor/stream_processor/parser/sql_lexer.go b/processor/stream_processor/parser/sql_lexer.go index 6cc847d1b6d5..9c83fb99afe0 100644 --- a/processor/stream_processor/parser/sql_lexer.go +++ b/processor/stream_processor/parser/sql_lexer.go @@ -44,21 +44,21 @@ func sqllexerLexerInit() { "DEFAULT_MODE", } staticData.literalNames = []string{ - "", "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", - "", "", "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "'*'", + "", "", "", "','", "'('", "')'", "'.'", "';'", "", "", "", "", "", "", + "", "", "", "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "'*'", } staticData.symbolicNames = []string{ - "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "BOOLEAN_LITERAL", - "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", - "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", - "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", - "K_NOT", "K_NOT_IN", "K_IN", "K_COUNT", "K_SUM", "K_MIN", "K_MAX", "K_AVG", - "K_TRUE", "K_FALSE", "K_UPPER", "K_LOWER", "IDENTIFIER", "NUMERIC_LITERAL", - "STRING_LITERAL", "STAR", + "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "DOT", "EOQ", + "BOOLEAN_LITERAL", "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", + "K_AND", "K_OR", "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", + "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", + "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", "K_IN", "K_COUNT", + "K_SUM", "K_MIN", "K_MAX", "K_AVG", "K_TRUE", "K_FALSE", "K_UPPER", + "K_LOWER", "IDENTIFIER", "NUMERIC_LITERAL", "STRING_LITERAL", "STAR", } staticData.ruleNames = []string{ - "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "BOOLEAN_LITERAL", + "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "DOT", "EOQ", "BOOLEAN_LITERAL", "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", @@ -70,7 +70,7 @@ func sqllexerLexerInit() { } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 0, 41, 457, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, + 4, 0, 42, 461, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, @@ -83,199 +83,201 @@ func sqllexerLexerInit() { 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, - 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 143, 8, 1, 11, 1, 12, 1, 144, 1, 1, - 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 3, 6, - 159, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, - 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, - 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, - 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, - 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, - 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, - 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, - 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, - 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, - 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, - 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, - 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, - 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, + 2, 68, 7, 68, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 145, 8, 1, 11, 1, 12, + 1, 146, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, + 6, 1, 6, 1, 7, 1, 7, 3, 7, 163, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, + 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, + 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, + 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, + 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, + 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, + 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, + 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, + 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, + 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, + 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, + 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, + 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, - 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 314, 8, 37, 10, 37, 12, 37, 317, 9, - 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 324, 8, 37, 10, 37, 12, 37, - 327, 9, 37, 1, 37, 1, 37, 1, 37, 5, 37, 332, 8, 37, 10, 37, 12, 37, 335, - 9, 37, 1, 37, 1, 37, 1, 37, 5, 37, 340, 8, 37, 10, 37, 12, 37, 343, 9, - 37, 3, 37, 345, 8, 37, 1, 38, 4, 38, 348, 8, 38, 11, 38, 12, 38, 349, 1, - 38, 1, 38, 5, 38, 354, 8, 38, 10, 38, 12, 38, 357, 9, 38, 3, 38, 359, 8, - 38, 1, 38, 1, 38, 3, 38, 363, 8, 38, 1, 38, 4, 38, 366, 8, 38, 11, 38, - 12, 38, 367, 3, 38, 370, 8, 38, 1, 38, 1, 38, 4, 38, 374, 8, 38, 11, 38, - 12, 38, 375, 1, 38, 1, 38, 3, 38, 380, 8, 38, 1, 38, 4, 38, 383, 8, 38, - 11, 38, 12, 38, 384, 3, 38, 387, 8, 38, 3, 38, 389, 8, 38, 1, 39, 1, 39, - 1, 39, 1, 39, 5, 39, 395, 8, 39, 10, 39, 12, 39, 398, 9, 39, 1, 39, 1, - 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, - 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, - 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, - 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, - 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, - 1, 66, 1, 66, 1, 67, 1, 67, 0, 0, 68, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, - 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, - 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, - 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, - 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 0, - 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, - 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, - 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 133, 0, 135, 0, 1, 0, 36, 3, 0, - 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, - 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, - 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, - 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, - 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, - 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, - 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, - 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, - 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, - 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, - 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, - 121, 2, 0, 90, 90, 122, 122, 453, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, - 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, - 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, - 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, - 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, - 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, - 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, - 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, - 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, - 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, - 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, - 0, 0, 1, 137, 1, 0, 0, 0, 3, 142, 1, 0, 0, 0, 5, 148, 1, 0, 0, 0, 7, 150, - 1, 0, 0, 0, 9, 152, 1, 0, 0, 0, 11, 154, 1, 0, 0, 0, 13, 158, 1, 0, 0, - 0, 15, 160, 1, 0, 0, 0, 17, 167, 1, 0, 0, 0, 19, 173, 1, 0, 0, 0, 21, 189, - 1, 0, 0, 0, 23, 198, 1, 0, 0, 0, 25, 202, 1, 0, 0, 0, 27, 205, 1, 0, 0, - 0, 29, 208, 1, 0, 0, 0, 31, 213, 1, 0, 0, 0, 33, 222, 1, 0, 0, 0, 35, 224, - 1, 0, 0, 0, 37, 226, 1, 0, 0, 0, 39, 228, 1, 0, 0, 0, 41, 231, 1, 0, 0, - 0, 43, 234, 1, 0, 0, 0, 45, 237, 1, 0, 0, 0, 47, 242, 1, 0, 0, 0, 49, 246, - 1, 0, 0, 0, 51, 252, 1, 0, 0, 0, 53, 256, 1, 0, 0, 0, 55, 261, 1, 0, 0, - 0, 57, 264, 1, 0, 0, 0, 59, 270, 1, 0, 0, 0, 61, 274, 1, 0, 0, 0, 63, 278, - 1, 0, 0, 0, 65, 282, 1, 0, 0, 0, 67, 286, 1, 0, 0, 0, 69, 291, 1, 0, 0, - 0, 71, 297, 1, 0, 0, 0, 73, 303, 1, 0, 0, 0, 75, 344, 1, 0, 0, 0, 77, 388, - 1, 0, 0, 0, 79, 390, 1, 0, 0, 0, 81, 401, 1, 0, 0, 0, 83, 403, 1, 0, 0, - 0, 85, 405, 1, 0, 0, 0, 87, 407, 1, 0, 0, 0, 89, 409, 1, 0, 0, 0, 91, 411, - 1, 0, 0, 0, 93, 413, 1, 0, 0, 0, 95, 415, 1, 0, 0, 0, 97, 417, 1, 0, 0, - 0, 99, 419, 1, 0, 0, 0, 101, 421, 1, 0, 0, 0, 103, 423, 1, 0, 0, 0, 105, - 425, 1, 0, 0, 0, 107, 427, 1, 0, 0, 0, 109, 429, 1, 0, 0, 0, 111, 431, - 1, 0, 0, 0, 113, 433, 1, 0, 0, 0, 115, 435, 1, 0, 0, 0, 117, 437, 1, 0, - 0, 0, 119, 439, 1, 0, 0, 0, 121, 441, 1, 0, 0, 0, 123, 443, 1, 0, 0, 0, - 125, 445, 1, 0, 0, 0, 127, 447, 1, 0, 0, 0, 129, 449, 1, 0, 0, 0, 131, - 451, 1, 0, 0, 0, 133, 453, 1, 0, 0, 0, 135, 455, 1, 0, 0, 0, 137, 138, - 7, 0, 0, 0, 138, 139, 1, 0, 0, 0, 139, 140, 6, 0, 0, 0, 140, 2, 1, 0, 0, - 0, 141, 143, 7, 1, 0, 0, 142, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, - 142, 1, 0, 0, 0, 144, 145, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 147, - 6, 1, 1, 0, 147, 4, 1, 0, 0, 0, 148, 149, 5, 44, 0, 0, 149, 6, 1, 0, 0, - 0, 150, 151, 5, 40, 0, 0, 151, 8, 1, 0, 0, 0, 152, 153, 5, 41, 0, 0, 153, - 10, 1, 0, 0, 0, 154, 155, 5, 59, 0, 0, 155, 12, 1, 0, 0, 0, 156, 159, 3, - 67, 33, 0, 157, 159, 3, 69, 34, 0, 158, 156, 1, 0, 0, 0, 158, 157, 1, 0, - 0, 0, 159, 14, 1, 0, 0, 0, 160, 161, 3, 121, 60, 0, 161, 162, 3, 93, 46, - 0, 162, 163, 3, 107, 53, 0, 163, 164, 3, 93, 46, 0, 164, 165, 3, 89, 44, - 0, 165, 166, 3, 123, 61, 0, 166, 16, 1, 0, 0, 0, 167, 168, 3, 129, 64, - 0, 168, 169, 3, 99, 49, 0, 169, 170, 3, 93, 46, 0, 170, 171, 3, 119, 59, - 0, 171, 172, 3, 93, 46, 0, 172, 18, 1, 0, 0, 0, 173, 174, 3, 129, 64, 0, - 174, 175, 3, 101, 50, 0, 175, 176, 3, 111, 55, 0, 176, 177, 3, 91, 45, - 0, 177, 178, 3, 113, 56, 0, 178, 179, 3, 129, 64, 0, 179, 180, 3, 1, 0, - 0, 180, 181, 3, 123, 61, 0, 181, 182, 3, 125, 62, 0, 182, 183, 3, 109, - 54, 0, 183, 184, 3, 87, 43, 0, 184, 185, 3, 107, 53, 0, 185, 186, 3, 101, - 50, 0, 186, 187, 3, 111, 55, 0, 187, 188, 3, 97, 48, 0, 188, 20, 1, 0, - 0, 0, 189, 190, 3, 97, 48, 0, 190, 191, 3, 119, 59, 0, 191, 192, 3, 113, - 56, 0, 192, 193, 3, 125, 62, 0, 193, 194, 3, 115, 57, 0, 194, 195, 3, 1, - 0, 0, 195, 196, 3, 87, 43, 0, 196, 197, 3, 133, 66, 0, 197, 22, 1, 0, 0, - 0, 198, 199, 3, 85, 42, 0, 199, 200, 3, 111, 55, 0, 200, 201, 3, 91, 45, - 0, 201, 24, 1, 0, 0, 0, 202, 203, 3, 113, 56, 0, 203, 204, 3, 119, 59, - 0, 204, 26, 1, 0, 0, 0, 205, 206, 3, 101, 50, 0, 206, 207, 3, 121, 60, - 0, 207, 28, 1, 0, 0, 0, 208, 209, 3, 107, 53, 0, 209, 210, 3, 101, 50, - 0, 210, 211, 3, 105, 52, 0, 211, 212, 3, 93, 46, 0, 212, 30, 1, 0, 0, 0, - 213, 214, 3, 111, 55, 0, 214, 215, 3, 113, 56, 0, 215, 216, 3, 123, 61, - 0, 216, 217, 3, 1, 0, 0, 217, 218, 3, 107, 53, 0, 218, 219, 3, 101, 50, - 0, 219, 220, 3, 105, 52, 0, 220, 221, 3, 93, 46, 0, 221, 32, 1, 0, 0, 0, - 222, 223, 5, 61, 0, 0, 223, 34, 1, 0, 0, 0, 224, 225, 5, 62, 0, 0, 225, - 36, 1, 0, 0, 0, 226, 227, 5, 60, 0, 0, 227, 38, 1, 0, 0, 0, 228, 229, 3, - 37, 18, 0, 229, 230, 3, 33, 16, 0, 230, 40, 1, 0, 0, 0, 231, 232, 3, 35, - 17, 0, 232, 233, 3, 33, 16, 0, 233, 42, 1, 0, 0, 0, 234, 235, 5, 33, 0, - 0, 235, 236, 3, 33, 16, 0, 236, 44, 1, 0, 0, 0, 237, 238, 3, 111, 55, 0, - 238, 239, 3, 125, 62, 0, 239, 240, 3, 107, 53, 0, 240, 241, 3, 107, 53, - 0, 241, 46, 1, 0, 0, 0, 242, 243, 3, 27, 13, 0, 243, 244, 3, 1, 0, 0, 244, - 245, 3, 45, 22, 0, 245, 48, 1, 0, 0, 0, 246, 247, 3, 27, 13, 0, 247, 248, - 3, 1, 0, 0, 248, 249, 3, 51, 25, 0, 249, 250, 3, 1, 0, 0, 250, 251, 3, - 45, 22, 0, 251, 50, 1, 0, 0, 0, 252, 253, 3, 111, 55, 0, 253, 254, 3, 113, - 56, 0, 254, 255, 3, 123, 61, 0, 255, 52, 1, 0, 0, 0, 256, 257, 3, 51, 25, - 0, 257, 258, 3, 1, 0, 0, 258, 259, 3, 101, 50, 0, 259, 260, 3, 111, 55, - 0, 260, 54, 1, 0, 0, 0, 261, 262, 3, 101, 50, 0, 262, 263, 3, 111, 55, - 0, 263, 56, 1, 0, 0, 0, 264, 265, 3, 89, 44, 0, 265, 266, 3, 113, 56, 0, - 266, 267, 3, 125, 62, 0, 267, 268, 3, 111, 55, 0, 268, 269, 3, 123, 61, - 0, 269, 58, 1, 0, 0, 0, 270, 271, 3, 121, 60, 0, 271, 272, 3, 125, 62, - 0, 272, 273, 3, 109, 54, 0, 273, 60, 1, 0, 0, 0, 274, 275, 3, 109, 54, - 0, 275, 276, 3, 101, 50, 0, 276, 277, 3, 111, 55, 0, 277, 62, 1, 0, 0, - 0, 278, 279, 3, 109, 54, 0, 279, 280, 3, 85, 42, 0, 280, 281, 3, 131, 65, - 0, 281, 64, 1, 0, 0, 0, 282, 283, 3, 85, 42, 0, 283, 284, 3, 127, 63, 0, - 284, 285, 3, 97, 48, 0, 285, 66, 1, 0, 0, 0, 286, 287, 3, 123, 61, 0, 287, - 288, 3, 119, 59, 0, 288, 289, 3, 125, 62, 0, 289, 290, 3, 93, 46, 0, 290, - 68, 1, 0, 0, 0, 291, 292, 3, 95, 47, 0, 292, 293, 3, 85, 42, 0, 293, 294, - 3, 107, 53, 0, 294, 295, 3, 121, 60, 0, 295, 296, 3, 93, 46, 0, 296, 70, - 1, 0, 0, 0, 297, 298, 3, 125, 62, 0, 298, 299, 3, 115, 57, 0, 299, 300, - 3, 115, 57, 0, 300, 301, 3, 93, 46, 0, 301, 302, 3, 119, 59, 0, 302, 72, - 1, 0, 0, 0, 303, 304, 3, 107, 53, 0, 304, 305, 3, 113, 56, 0, 305, 306, - 3, 129, 64, 0, 306, 307, 3, 93, 46, 0, 307, 308, 3, 119, 59, 0, 308, 74, - 1, 0, 0, 0, 309, 315, 5, 34, 0, 0, 310, 314, 8, 2, 0, 0, 311, 312, 5, 34, - 0, 0, 312, 314, 5, 34, 0, 0, 313, 310, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, - 314, 317, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, - 318, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 318, 345, 5, 34, 0, 0, 319, 325, - 5, 96, 0, 0, 320, 324, 8, 3, 0, 0, 321, 322, 5, 96, 0, 0, 322, 324, 5, - 96, 0, 0, 323, 320, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 324, 327, 1, 0, 0, - 0, 325, 323, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, 326, 328, 1, 0, 0, 0, 327, - 325, 1, 0, 0, 0, 328, 345, 5, 96, 0, 0, 329, 333, 5, 91, 0, 0, 330, 332, - 8, 4, 0, 0, 331, 330, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331, 1, 0, - 0, 0, 333, 334, 1, 0, 0, 0, 334, 336, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, - 336, 345, 5, 93, 0, 0, 337, 341, 7, 5, 0, 0, 338, 340, 7, 6, 0, 0, 339, - 338, 1, 0, 0, 0, 340, 343, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 341, 342, - 1, 0, 0, 0, 342, 345, 1, 0, 0, 0, 343, 341, 1, 0, 0, 0, 344, 309, 1, 0, - 0, 0, 344, 319, 1, 0, 0, 0, 344, 329, 1, 0, 0, 0, 344, 337, 1, 0, 0, 0, - 345, 76, 1, 0, 0, 0, 346, 348, 3, 83, 41, 0, 347, 346, 1, 0, 0, 0, 348, - 349, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 358, - 1, 0, 0, 0, 351, 355, 5, 46, 0, 0, 352, 354, 3, 83, 41, 0, 353, 352, 1, - 0, 0, 0, 354, 357, 1, 0, 0, 0, 355, 353, 1, 0, 0, 0, 355, 356, 1, 0, 0, - 0, 356, 359, 1, 0, 0, 0, 357, 355, 1, 0, 0, 0, 358, 351, 1, 0, 0, 0, 358, - 359, 1, 0, 0, 0, 359, 369, 1, 0, 0, 0, 360, 362, 3, 93, 46, 0, 361, 363, - 7, 7, 0, 0, 362, 361, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 365, 1, 0, - 0, 0, 364, 366, 3, 83, 41, 0, 365, 364, 1, 0, 0, 0, 366, 367, 1, 0, 0, - 0, 367, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 370, 1, 0, 0, 0, 369, - 360, 1, 0, 0, 0, 369, 370, 1, 0, 0, 0, 370, 389, 1, 0, 0, 0, 371, 373, - 5, 46, 0, 0, 372, 374, 3, 83, 41, 0, 373, 372, 1, 0, 0, 0, 374, 375, 1, - 0, 0, 0, 375, 373, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 386, 1, 0, 0, - 0, 377, 379, 3, 93, 46, 0, 378, 380, 7, 7, 0, 0, 379, 378, 1, 0, 0, 0, - 379, 380, 1, 0, 0, 0, 380, 382, 1, 0, 0, 0, 381, 383, 3, 83, 41, 0, 382, - 381, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 382, 1, 0, 0, 0, 384, 385, - 1, 0, 0, 0, 385, 387, 1, 0, 0, 0, 386, 377, 1, 0, 0, 0, 386, 387, 1, 0, - 0, 0, 387, 389, 1, 0, 0, 0, 388, 347, 1, 0, 0, 0, 388, 371, 1, 0, 0, 0, - 389, 78, 1, 0, 0, 0, 390, 396, 5, 39, 0, 0, 391, 395, 8, 8, 0, 0, 392, - 393, 5, 39, 0, 0, 393, 395, 5, 39, 0, 0, 394, 391, 1, 0, 0, 0, 394, 392, - 1, 0, 0, 0, 395, 398, 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 396, 397, 1, 0, - 0, 0, 397, 399, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 399, 400, 5, 39, 0, 0, - 400, 80, 1, 0, 0, 0, 401, 402, 5, 42, 0, 0, 402, 82, 1, 0, 0, 0, 403, 404, - 7, 9, 0, 0, 404, 84, 1, 0, 0, 0, 405, 406, 7, 10, 0, 0, 406, 86, 1, 0, - 0, 0, 407, 408, 7, 11, 0, 0, 408, 88, 1, 0, 0, 0, 409, 410, 7, 12, 0, 0, - 410, 90, 1, 0, 0, 0, 411, 412, 7, 13, 0, 0, 412, 92, 1, 0, 0, 0, 413, 414, - 7, 14, 0, 0, 414, 94, 1, 0, 0, 0, 415, 416, 7, 15, 0, 0, 416, 96, 1, 0, - 0, 0, 417, 418, 7, 16, 0, 0, 418, 98, 1, 0, 0, 0, 419, 420, 7, 17, 0, 0, - 420, 100, 1, 0, 0, 0, 421, 422, 7, 18, 0, 0, 422, 102, 1, 0, 0, 0, 423, - 424, 7, 19, 0, 0, 424, 104, 1, 0, 0, 0, 425, 426, 7, 20, 0, 0, 426, 106, - 1, 0, 0, 0, 427, 428, 7, 21, 0, 0, 428, 108, 1, 0, 0, 0, 429, 430, 7, 22, - 0, 0, 430, 110, 1, 0, 0, 0, 431, 432, 7, 23, 0, 0, 432, 112, 1, 0, 0, 0, - 433, 434, 7, 24, 0, 0, 434, 114, 1, 0, 0, 0, 435, 436, 7, 25, 0, 0, 436, - 116, 1, 0, 0, 0, 437, 438, 7, 26, 0, 0, 438, 118, 1, 0, 0, 0, 439, 440, - 7, 27, 0, 0, 440, 120, 1, 0, 0, 0, 441, 442, 7, 28, 0, 0, 442, 122, 1, - 0, 0, 0, 443, 444, 7, 29, 0, 0, 444, 124, 1, 0, 0, 0, 445, 446, 7, 30, - 0, 0, 446, 126, 1, 0, 0, 0, 447, 448, 7, 31, 0, 0, 448, 128, 1, 0, 0, 0, - 449, 450, 7, 32, 0, 0, 450, 130, 1, 0, 0, 0, 451, 452, 7, 33, 0, 0, 452, - 132, 1, 0, 0, 0, 453, 454, 7, 34, 0, 0, 454, 134, 1, 0, 0, 0, 455, 456, - 7, 35, 0, 0, 456, 136, 1, 0, 0, 0, 23, 0, 144, 158, 313, 315, 323, 325, - 333, 341, 344, 349, 355, 358, 362, 367, 369, 375, 379, 384, 386, 388, 394, - 396, 2, 0, 1, 0, 6, 0, 0, + 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 5, + 38, 318, 8, 38, 10, 38, 12, 38, 321, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, + 1, 38, 5, 38, 328, 8, 38, 10, 38, 12, 38, 331, 9, 38, 1, 38, 1, 38, 1, + 38, 5, 38, 336, 8, 38, 10, 38, 12, 38, 339, 9, 38, 1, 38, 1, 38, 1, 38, + 5, 38, 344, 8, 38, 10, 38, 12, 38, 347, 9, 38, 3, 38, 349, 8, 38, 1, 39, + 4, 39, 352, 8, 39, 11, 39, 12, 39, 353, 1, 39, 1, 39, 5, 39, 358, 8, 39, + 10, 39, 12, 39, 361, 9, 39, 3, 39, 363, 8, 39, 1, 39, 1, 39, 3, 39, 367, + 8, 39, 1, 39, 4, 39, 370, 8, 39, 11, 39, 12, 39, 371, 3, 39, 374, 8, 39, + 1, 39, 1, 39, 4, 39, 378, 8, 39, 11, 39, 12, 39, 379, 1, 39, 1, 39, 3, + 39, 384, 8, 39, 1, 39, 4, 39, 387, 8, 39, 11, 39, 12, 39, 388, 3, 39, 391, + 8, 39, 3, 39, 393, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 5, 40, 399, 8, 40, + 10, 40, 12, 40, 402, 9, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, + 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, + 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, + 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, + 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, + 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 0, 0, + 69, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, + 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, + 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, + 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, + 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, + 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, + 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, + 0, 133, 0, 135, 0, 137, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, + 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, + 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, + 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, + 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, + 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, + 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, + 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, + 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, + 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, + 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, + 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 457, + 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, + 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, + 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, + 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, + 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, + 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, + 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, + 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, + 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, + 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, + 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 1, 139, + 1, 0, 0, 0, 3, 144, 1, 0, 0, 0, 5, 150, 1, 0, 0, 0, 7, 152, 1, 0, 0, 0, + 9, 154, 1, 0, 0, 0, 11, 156, 1, 0, 0, 0, 13, 158, 1, 0, 0, 0, 15, 162, + 1, 0, 0, 0, 17, 164, 1, 0, 0, 0, 19, 171, 1, 0, 0, 0, 21, 177, 1, 0, 0, + 0, 23, 193, 1, 0, 0, 0, 25, 202, 1, 0, 0, 0, 27, 206, 1, 0, 0, 0, 29, 209, + 1, 0, 0, 0, 31, 212, 1, 0, 0, 0, 33, 217, 1, 0, 0, 0, 35, 226, 1, 0, 0, + 0, 37, 228, 1, 0, 0, 0, 39, 230, 1, 0, 0, 0, 41, 232, 1, 0, 0, 0, 43, 235, + 1, 0, 0, 0, 45, 238, 1, 0, 0, 0, 47, 241, 1, 0, 0, 0, 49, 246, 1, 0, 0, + 0, 51, 250, 1, 0, 0, 0, 53, 256, 1, 0, 0, 0, 55, 260, 1, 0, 0, 0, 57, 265, + 1, 0, 0, 0, 59, 268, 1, 0, 0, 0, 61, 274, 1, 0, 0, 0, 63, 278, 1, 0, 0, + 0, 65, 282, 1, 0, 0, 0, 67, 286, 1, 0, 0, 0, 69, 290, 1, 0, 0, 0, 71, 295, + 1, 0, 0, 0, 73, 301, 1, 0, 0, 0, 75, 307, 1, 0, 0, 0, 77, 348, 1, 0, 0, + 0, 79, 392, 1, 0, 0, 0, 81, 394, 1, 0, 0, 0, 83, 405, 1, 0, 0, 0, 85, 407, + 1, 0, 0, 0, 87, 409, 1, 0, 0, 0, 89, 411, 1, 0, 0, 0, 91, 413, 1, 0, 0, + 0, 93, 415, 1, 0, 0, 0, 95, 417, 1, 0, 0, 0, 97, 419, 1, 0, 0, 0, 99, 421, + 1, 0, 0, 0, 101, 423, 1, 0, 0, 0, 103, 425, 1, 0, 0, 0, 105, 427, 1, 0, + 0, 0, 107, 429, 1, 0, 0, 0, 109, 431, 1, 0, 0, 0, 111, 433, 1, 0, 0, 0, + 113, 435, 1, 0, 0, 0, 115, 437, 1, 0, 0, 0, 117, 439, 1, 0, 0, 0, 119, + 441, 1, 0, 0, 0, 121, 443, 1, 0, 0, 0, 123, 445, 1, 0, 0, 0, 125, 447, + 1, 0, 0, 0, 127, 449, 1, 0, 0, 0, 129, 451, 1, 0, 0, 0, 131, 453, 1, 0, + 0, 0, 133, 455, 1, 0, 0, 0, 135, 457, 1, 0, 0, 0, 137, 459, 1, 0, 0, 0, + 139, 140, 7, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 142, 6, 0, 0, 0, 142, + 2, 1, 0, 0, 0, 143, 145, 7, 1, 0, 0, 144, 143, 1, 0, 0, 0, 145, 146, 1, + 0, 0, 0, 146, 144, 1, 0, 0, 0, 146, 147, 1, 0, 0, 0, 147, 148, 1, 0, 0, + 0, 148, 149, 6, 1, 1, 0, 149, 4, 1, 0, 0, 0, 150, 151, 5, 44, 0, 0, 151, + 6, 1, 0, 0, 0, 152, 153, 5, 40, 0, 0, 153, 8, 1, 0, 0, 0, 154, 155, 5, + 41, 0, 0, 155, 10, 1, 0, 0, 0, 156, 157, 5, 46, 0, 0, 157, 12, 1, 0, 0, + 0, 158, 159, 5, 59, 0, 0, 159, 14, 1, 0, 0, 0, 160, 163, 3, 69, 34, 0, + 161, 163, 3, 71, 35, 0, 162, 160, 1, 0, 0, 0, 162, 161, 1, 0, 0, 0, 163, + 16, 1, 0, 0, 0, 164, 165, 3, 123, 61, 0, 165, 166, 3, 95, 47, 0, 166, 167, + 3, 109, 54, 0, 167, 168, 3, 95, 47, 0, 168, 169, 3, 91, 45, 0, 169, 170, + 3, 125, 62, 0, 170, 18, 1, 0, 0, 0, 171, 172, 3, 131, 65, 0, 172, 173, + 3, 101, 50, 0, 173, 174, 3, 95, 47, 0, 174, 175, 3, 121, 60, 0, 175, 176, + 3, 95, 47, 0, 176, 20, 1, 0, 0, 0, 177, 178, 3, 131, 65, 0, 178, 179, 3, + 103, 51, 0, 179, 180, 3, 113, 56, 0, 180, 181, 3, 93, 46, 0, 181, 182, + 3, 115, 57, 0, 182, 183, 3, 131, 65, 0, 183, 184, 3, 1, 0, 0, 184, 185, + 3, 125, 62, 0, 185, 186, 3, 127, 63, 0, 186, 187, 3, 111, 55, 0, 187, 188, + 3, 89, 44, 0, 188, 189, 3, 109, 54, 0, 189, 190, 3, 103, 51, 0, 190, 191, + 3, 113, 56, 0, 191, 192, 3, 99, 49, 0, 192, 22, 1, 0, 0, 0, 193, 194, 3, + 99, 49, 0, 194, 195, 3, 121, 60, 0, 195, 196, 3, 115, 57, 0, 196, 197, + 3, 127, 63, 0, 197, 198, 3, 117, 58, 0, 198, 199, 3, 1, 0, 0, 199, 200, + 3, 89, 44, 0, 200, 201, 3, 135, 67, 0, 201, 24, 1, 0, 0, 0, 202, 203, 3, + 87, 43, 0, 203, 204, 3, 113, 56, 0, 204, 205, 3, 93, 46, 0, 205, 26, 1, + 0, 0, 0, 206, 207, 3, 115, 57, 0, 207, 208, 3, 121, 60, 0, 208, 28, 1, + 0, 0, 0, 209, 210, 3, 103, 51, 0, 210, 211, 3, 123, 61, 0, 211, 30, 1, + 0, 0, 0, 212, 213, 3, 109, 54, 0, 213, 214, 3, 103, 51, 0, 214, 215, 3, + 107, 53, 0, 215, 216, 3, 95, 47, 0, 216, 32, 1, 0, 0, 0, 217, 218, 3, 113, + 56, 0, 218, 219, 3, 115, 57, 0, 219, 220, 3, 125, 62, 0, 220, 221, 3, 1, + 0, 0, 221, 222, 3, 109, 54, 0, 222, 223, 3, 103, 51, 0, 223, 224, 3, 107, + 53, 0, 224, 225, 3, 95, 47, 0, 225, 34, 1, 0, 0, 0, 226, 227, 5, 61, 0, + 0, 227, 36, 1, 0, 0, 0, 228, 229, 5, 62, 0, 0, 229, 38, 1, 0, 0, 0, 230, + 231, 5, 60, 0, 0, 231, 40, 1, 0, 0, 0, 232, 233, 3, 39, 19, 0, 233, 234, + 3, 35, 17, 0, 234, 42, 1, 0, 0, 0, 235, 236, 3, 37, 18, 0, 236, 237, 3, + 35, 17, 0, 237, 44, 1, 0, 0, 0, 238, 239, 5, 33, 0, 0, 239, 240, 3, 35, + 17, 0, 240, 46, 1, 0, 0, 0, 241, 242, 3, 113, 56, 0, 242, 243, 3, 127, + 63, 0, 243, 244, 3, 109, 54, 0, 244, 245, 3, 109, 54, 0, 245, 48, 1, 0, + 0, 0, 246, 247, 3, 29, 14, 0, 247, 248, 3, 1, 0, 0, 248, 249, 3, 47, 23, + 0, 249, 50, 1, 0, 0, 0, 250, 251, 3, 29, 14, 0, 251, 252, 3, 1, 0, 0, 252, + 253, 3, 53, 26, 0, 253, 254, 3, 1, 0, 0, 254, 255, 3, 47, 23, 0, 255, 52, + 1, 0, 0, 0, 256, 257, 3, 113, 56, 0, 257, 258, 3, 115, 57, 0, 258, 259, + 3, 125, 62, 0, 259, 54, 1, 0, 0, 0, 260, 261, 3, 53, 26, 0, 261, 262, 3, + 1, 0, 0, 262, 263, 3, 103, 51, 0, 263, 264, 3, 113, 56, 0, 264, 56, 1, + 0, 0, 0, 265, 266, 3, 103, 51, 0, 266, 267, 3, 113, 56, 0, 267, 58, 1, + 0, 0, 0, 268, 269, 3, 91, 45, 0, 269, 270, 3, 115, 57, 0, 270, 271, 3, + 127, 63, 0, 271, 272, 3, 113, 56, 0, 272, 273, 3, 125, 62, 0, 273, 60, + 1, 0, 0, 0, 274, 275, 3, 123, 61, 0, 275, 276, 3, 127, 63, 0, 276, 277, + 3, 111, 55, 0, 277, 62, 1, 0, 0, 0, 278, 279, 3, 111, 55, 0, 279, 280, + 3, 103, 51, 0, 280, 281, 3, 113, 56, 0, 281, 64, 1, 0, 0, 0, 282, 283, + 3, 111, 55, 0, 283, 284, 3, 87, 43, 0, 284, 285, 3, 133, 66, 0, 285, 66, + 1, 0, 0, 0, 286, 287, 3, 87, 43, 0, 287, 288, 3, 129, 64, 0, 288, 289, + 3, 99, 49, 0, 289, 68, 1, 0, 0, 0, 290, 291, 3, 125, 62, 0, 291, 292, 3, + 121, 60, 0, 292, 293, 3, 127, 63, 0, 293, 294, 3, 95, 47, 0, 294, 70, 1, + 0, 0, 0, 295, 296, 3, 97, 48, 0, 296, 297, 3, 87, 43, 0, 297, 298, 3, 109, + 54, 0, 298, 299, 3, 123, 61, 0, 299, 300, 3, 95, 47, 0, 300, 72, 1, 0, + 0, 0, 301, 302, 3, 127, 63, 0, 302, 303, 3, 117, 58, 0, 303, 304, 3, 117, + 58, 0, 304, 305, 3, 95, 47, 0, 305, 306, 3, 121, 60, 0, 306, 74, 1, 0, + 0, 0, 307, 308, 3, 109, 54, 0, 308, 309, 3, 115, 57, 0, 309, 310, 3, 131, + 65, 0, 310, 311, 3, 95, 47, 0, 311, 312, 3, 121, 60, 0, 312, 76, 1, 0, + 0, 0, 313, 319, 5, 34, 0, 0, 314, 318, 8, 2, 0, 0, 315, 316, 5, 34, 0, + 0, 316, 318, 5, 34, 0, 0, 317, 314, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 318, + 321, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 322, + 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 349, 5, 34, 0, 0, 323, 329, 5, 96, + 0, 0, 324, 328, 8, 3, 0, 0, 325, 326, 5, 96, 0, 0, 326, 328, 5, 96, 0, + 0, 327, 324, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 328, 331, 1, 0, 0, 0, 329, + 327, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 332, 1, 0, 0, 0, 331, 329, + 1, 0, 0, 0, 332, 349, 5, 96, 0, 0, 333, 337, 5, 91, 0, 0, 334, 336, 8, + 4, 0, 0, 335, 334, 1, 0, 0, 0, 336, 339, 1, 0, 0, 0, 337, 335, 1, 0, 0, + 0, 337, 338, 1, 0, 0, 0, 338, 340, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 340, + 349, 5, 93, 0, 0, 341, 345, 7, 5, 0, 0, 342, 344, 7, 6, 0, 0, 343, 342, + 1, 0, 0, 0, 344, 347, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, + 0, 0, 346, 349, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 348, 313, 1, 0, 0, 0, + 348, 323, 1, 0, 0, 0, 348, 333, 1, 0, 0, 0, 348, 341, 1, 0, 0, 0, 349, + 78, 1, 0, 0, 0, 350, 352, 3, 85, 42, 0, 351, 350, 1, 0, 0, 0, 352, 353, + 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 362, 1, 0, + 0, 0, 355, 359, 5, 46, 0, 0, 356, 358, 3, 85, 42, 0, 357, 356, 1, 0, 0, + 0, 358, 361, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, + 363, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 362, 355, 1, 0, 0, 0, 362, 363, + 1, 0, 0, 0, 363, 373, 1, 0, 0, 0, 364, 366, 3, 95, 47, 0, 365, 367, 7, + 7, 0, 0, 366, 365, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 369, 1, 0, 0, + 0, 368, 370, 3, 85, 42, 0, 369, 368, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, + 371, 369, 1, 0, 0, 0, 371, 372, 1, 0, 0, 0, 372, 374, 1, 0, 0, 0, 373, + 364, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 393, 1, 0, 0, 0, 375, 377, + 5, 46, 0, 0, 376, 378, 3, 85, 42, 0, 377, 376, 1, 0, 0, 0, 378, 379, 1, + 0, 0, 0, 379, 377, 1, 0, 0, 0, 379, 380, 1, 0, 0, 0, 380, 390, 1, 0, 0, + 0, 381, 383, 3, 95, 47, 0, 382, 384, 7, 7, 0, 0, 383, 382, 1, 0, 0, 0, + 383, 384, 1, 0, 0, 0, 384, 386, 1, 0, 0, 0, 385, 387, 3, 85, 42, 0, 386, + 385, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, 388, 389, + 1, 0, 0, 0, 389, 391, 1, 0, 0, 0, 390, 381, 1, 0, 0, 0, 390, 391, 1, 0, + 0, 0, 391, 393, 1, 0, 0, 0, 392, 351, 1, 0, 0, 0, 392, 375, 1, 0, 0, 0, + 393, 80, 1, 0, 0, 0, 394, 400, 5, 39, 0, 0, 395, 399, 8, 8, 0, 0, 396, + 397, 5, 39, 0, 0, 397, 399, 5, 39, 0, 0, 398, 395, 1, 0, 0, 0, 398, 396, + 1, 0, 0, 0, 399, 402, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 400, 401, 1, 0, + 0, 0, 401, 403, 1, 0, 0, 0, 402, 400, 1, 0, 0, 0, 403, 404, 5, 39, 0, 0, + 404, 82, 1, 0, 0, 0, 405, 406, 5, 42, 0, 0, 406, 84, 1, 0, 0, 0, 407, 408, + 7, 9, 0, 0, 408, 86, 1, 0, 0, 0, 409, 410, 7, 10, 0, 0, 410, 88, 1, 0, + 0, 0, 411, 412, 7, 11, 0, 0, 412, 90, 1, 0, 0, 0, 413, 414, 7, 12, 0, 0, + 414, 92, 1, 0, 0, 0, 415, 416, 7, 13, 0, 0, 416, 94, 1, 0, 0, 0, 417, 418, + 7, 14, 0, 0, 418, 96, 1, 0, 0, 0, 419, 420, 7, 15, 0, 0, 420, 98, 1, 0, + 0, 0, 421, 422, 7, 16, 0, 0, 422, 100, 1, 0, 0, 0, 423, 424, 7, 17, 0, + 0, 424, 102, 1, 0, 0, 0, 425, 426, 7, 18, 0, 0, 426, 104, 1, 0, 0, 0, 427, + 428, 7, 19, 0, 0, 428, 106, 1, 0, 0, 0, 429, 430, 7, 20, 0, 0, 430, 108, + 1, 0, 0, 0, 431, 432, 7, 21, 0, 0, 432, 110, 1, 0, 0, 0, 433, 434, 7, 22, + 0, 0, 434, 112, 1, 0, 0, 0, 435, 436, 7, 23, 0, 0, 436, 114, 1, 0, 0, 0, + 437, 438, 7, 24, 0, 0, 438, 116, 1, 0, 0, 0, 439, 440, 7, 25, 0, 0, 440, + 118, 1, 0, 0, 0, 441, 442, 7, 26, 0, 0, 442, 120, 1, 0, 0, 0, 443, 444, + 7, 27, 0, 0, 444, 122, 1, 0, 0, 0, 445, 446, 7, 28, 0, 0, 446, 124, 1, + 0, 0, 0, 447, 448, 7, 29, 0, 0, 448, 126, 1, 0, 0, 0, 449, 450, 7, 30, + 0, 0, 450, 128, 1, 0, 0, 0, 451, 452, 7, 31, 0, 0, 452, 130, 1, 0, 0, 0, + 453, 454, 7, 32, 0, 0, 454, 132, 1, 0, 0, 0, 455, 456, 7, 33, 0, 0, 456, + 134, 1, 0, 0, 0, 457, 458, 7, 34, 0, 0, 458, 136, 1, 0, 0, 0, 459, 460, + 7, 35, 0, 0, 460, 138, 1, 0, 0, 0, 23, 0, 146, 162, 317, 319, 327, 329, + 337, 345, 348, 353, 359, 362, 366, 371, 373, 379, 383, 388, 390, 392, 398, + 400, 2, 0, 1, 0, 6, 0, 0, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -321,40 +323,41 @@ const ( SqlLexerCOMMA = 3 SqlLexerL_BRACKET = 4 SqlLexerR_BRACKET = 5 - SqlLexerEOQ = 6 - SqlLexerBOOLEAN_LITERAL = 7 - SqlLexerK_SELECT = 8 - SqlLexerK_WHERE = 9 - SqlLexerK_WINDOW_TUMBLING = 10 - SqlLexerK_GROUP_BY = 11 - SqlLexerK_AND = 12 - SqlLexerK_OR = 13 - SqlLexerK_IS = 14 - SqlLexerK_LIKE = 15 - SqlLexerK_NOT_LIKE = 16 - SqlLexerK_EQUAL = 17 - SqlLexerK_GREATER = 18 - SqlLexerK_LESS = 19 - SqlLexerK_LESS_EQUAL = 20 - SqlLexerK_GREATER_EQUAL = 21 - SqlLexerK_NOT_EQUAL = 22 - SqlLexerK_NULL = 23 - SqlLexerK_IS_NULL = 24 - SqlLexerK_IS_NOT_NULL = 25 - SqlLexerK_NOT = 26 - SqlLexerK_NOT_IN = 27 - SqlLexerK_IN = 28 - SqlLexerK_COUNT = 29 - SqlLexerK_SUM = 30 - SqlLexerK_MIN = 31 - SqlLexerK_MAX = 32 - SqlLexerK_AVG = 33 - SqlLexerK_TRUE = 34 - SqlLexerK_FALSE = 35 - SqlLexerK_UPPER = 36 - SqlLexerK_LOWER = 37 - SqlLexerIDENTIFIER = 38 - SqlLexerNUMERIC_LITERAL = 39 - SqlLexerSTRING_LITERAL = 40 - SqlLexerSTAR = 41 + SqlLexerDOT = 6 + SqlLexerEOQ = 7 + SqlLexerBOOLEAN_LITERAL = 8 + SqlLexerK_SELECT = 9 + SqlLexerK_WHERE = 10 + SqlLexerK_WINDOW_TUMBLING = 11 + SqlLexerK_GROUP_BY = 12 + SqlLexerK_AND = 13 + SqlLexerK_OR = 14 + SqlLexerK_IS = 15 + SqlLexerK_LIKE = 16 + SqlLexerK_NOT_LIKE = 17 + SqlLexerK_EQUAL = 18 + SqlLexerK_GREATER = 19 + SqlLexerK_LESS = 20 + SqlLexerK_LESS_EQUAL = 21 + SqlLexerK_GREATER_EQUAL = 22 + SqlLexerK_NOT_EQUAL = 23 + SqlLexerK_NULL = 24 + SqlLexerK_IS_NULL = 25 + SqlLexerK_IS_NOT_NULL = 26 + SqlLexerK_NOT = 27 + SqlLexerK_NOT_IN = 28 + SqlLexerK_IN = 29 + SqlLexerK_COUNT = 30 + SqlLexerK_SUM = 31 + SqlLexerK_MIN = 32 + SqlLexerK_MAX = 33 + SqlLexerK_AVG = 34 + SqlLexerK_TRUE = 35 + SqlLexerK_FALSE = 36 + SqlLexerK_UPPER = 37 + SqlLexerK_LOWER = 38 + SqlLexerIDENTIFIER = 39 + SqlLexerNUMERIC_LITERAL = 40 + SqlLexerSTRING_LITERAL = 41 + SqlLexerSTAR = 42 ) diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index db6ba9fab951..9a77a4682717 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -33,18 +33,18 @@ var sqlParserStaticData struct { func sqlParserInit() { staticData := &sqlParserStaticData staticData.literalNames = []string{ - "", "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", - "", "", "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "'*'", + "", "", "", "','", "'('", "')'", "'.'", "';'", "", "", "", "", "", "", + "", "", "", "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "'*'", } staticData.symbolicNames = []string{ - "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "BOOLEAN_LITERAL", - "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", - "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", - "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", - "K_NOT", "K_NOT_IN", "K_IN", "K_COUNT", "K_SUM", "K_MIN", "K_MAX", "K_AVG", - "K_TRUE", "K_FALSE", "K_UPPER", "K_LOWER", "IDENTIFIER", "NUMERIC_LITERAL", - "STRING_LITERAL", "STAR", + "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "DOT", "EOQ", + "BOOLEAN_LITERAL", "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", + "K_AND", "K_OR", "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", + "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", + "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", "K_IN", "K_COUNT", + "K_SUM", "K_MIN", "K_MAX", "K_AVG", "K_TRUE", "K_FALSE", "K_UPPER", + "K_LOWER", "IDENTIFIER", "NUMERIC_LITERAL", "STRING_LITERAL", "STAR", } staticData.ruleNames = []string{ "sqlQuery", "selectQuery", "windowTumbling", "resultColumns", "aggregationColumns", @@ -53,7 +53,7 @@ func sqlParserInit() { } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 41, 130, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 42, 138, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 33, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, @@ -64,48 +64,52 @@ func sqlParserInit() { 5, 3, 5, 88, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 97, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 102, 8, 7, 1, 7, 3, 7, 105, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 110, 8, 7, 10, 7, 12, 7, 113, 9, 7, 1, 8, 1, 8, 1, 8, 1, - 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, - 12, 1, 12, 0, 1, 14, 13, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, - 0, 5, 1, 0, 29, 33, 1, 0, 36, 37, 1, 0, 12, 13, 2, 0, 14, 22, 27, 28, 2, - 0, 7, 7, 39, 40, 131, 0, 26, 1, 0, 0, 0, 2, 53, 1, 0, 0, 0, 4, 55, 1, 0, - 0, 0, 6, 67, 1, 0, 0, 0, 8, 72, 1, 0, 0, 0, 10, 87, 1, 0, 0, 0, 12, 89, - 1, 0, 0, 0, 14, 104, 1, 0, 0, 0, 16, 114, 1, 0, 0, 0, 18, 118, 1, 0, 0, - 0, 20, 122, 1, 0, 0, 0, 22, 124, 1, 0, 0, 0, 24, 126, 1, 0, 0, 0, 26, 27, - 3, 2, 1, 0, 27, 28, 5, 0, 0, 1, 28, 1, 1, 0, 0, 0, 29, 30, 5, 8, 0, 0, - 30, 32, 3, 6, 3, 0, 31, 33, 3, 12, 6, 0, 32, 31, 1, 0, 0, 0, 32, 33, 1, - 0, 0, 0, 33, 34, 1, 0, 0, 0, 34, 35, 5, 6, 0, 0, 35, 54, 1, 0, 0, 0, 36, - 37, 5, 8, 0, 0, 37, 38, 3, 8, 4, 0, 38, 40, 3, 4, 2, 0, 39, 41, 3, 12, - 6, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, - 5, 6, 0, 0, 43, 54, 1, 0, 0, 0, 44, 45, 5, 8, 0, 0, 45, 46, 3, 8, 4, 0, - 46, 48, 3, 4, 2, 0, 47, 49, 3, 12, 6, 0, 48, 47, 1, 0, 0, 0, 48, 49, 1, - 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 3, 24, 12, 0, 51, 52, 5, 6, 0, 0, - 52, 54, 1, 0, 0, 0, 53, 29, 1, 0, 0, 0, 53, 36, 1, 0, 0, 0, 53, 44, 1, - 0, 0, 0, 54, 3, 1, 0, 0, 0, 55, 56, 5, 10, 0, 0, 56, 57, 5, 39, 0, 0, 57, - 5, 1, 0, 0, 0, 58, 63, 3, 10, 5, 0, 59, 60, 5, 3, 0, 0, 60, 62, 3, 10, - 5, 0, 61, 59, 1, 0, 0, 0, 62, 65, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 63, 64, - 1, 0, 0, 0, 64, 68, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 66, 68, 5, 41, 0, 0, - 67, 58, 1, 0, 0, 0, 67, 66, 1, 0, 0, 0, 68, 7, 1, 0, 0, 0, 69, 70, 3, 10, - 5, 0, 70, 71, 5, 3, 0, 0, 71, 73, 1, 0, 0, 0, 72, 69, 1, 0, 0, 0, 72, 73, - 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 75, 7, 0, 0, 0, 75, 78, 5, 4, 0, 0, - 76, 79, 3, 10, 5, 0, 77, 79, 5, 41, 0, 0, 78, 76, 1, 0, 0, 0, 78, 77, 1, - 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 81, 5, 5, 0, 0, 81, 9, 1, 0, 0, 0, 82, - 88, 5, 38, 0, 0, 83, 84, 7, 1, 0, 0, 84, 85, 5, 4, 0, 0, 85, 86, 5, 38, - 0, 0, 86, 88, 5, 5, 0, 0, 87, 82, 1, 0, 0, 0, 87, 83, 1, 0, 0, 0, 88, 11, - 1, 0, 0, 0, 89, 90, 5, 9, 0, 0, 90, 91, 3, 14, 7, 0, 91, 13, 1, 0, 0, 0, - 92, 93, 6, 7, -1, 0, 93, 105, 3, 16, 8, 0, 94, 97, 3, 18, 9, 0, 95, 97, - 3, 16, 8, 0, 96, 94, 1, 0, 0, 0, 96, 95, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, - 98, 101, 7, 2, 0, 0, 99, 102, 3, 18, 9, 0, 100, 102, 3, 16, 8, 0, 101, - 99, 1, 0, 0, 0, 101, 100, 1, 0, 0, 0, 102, 105, 1, 0, 0, 0, 103, 105, 3, - 18, 9, 0, 104, 92, 1, 0, 0, 0, 104, 96, 1, 0, 0, 0, 104, 103, 1, 0, 0, - 0, 105, 111, 1, 0, 0, 0, 106, 107, 10, 2, 0, 0, 107, 108, 7, 2, 0, 0, 108, - 110, 3, 14, 7, 3, 109, 106, 1, 0, 0, 0, 110, 113, 1, 0, 0, 0, 111, 109, - 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 15, 1, 0, 0, 0, 113, 111, 1, 0, - 0, 0, 114, 115, 5, 38, 0, 0, 115, 116, 3, 20, 10, 0, 116, 117, 3, 22, 11, - 0, 117, 17, 1, 0, 0, 0, 118, 119, 5, 4, 0, 0, 119, 120, 3, 14, 7, 0, 120, - 121, 5, 5, 0, 0, 121, 19, 1, 0, 0, 0, 122, 123, 7, 3, 0, 0, 123, 21, 1, - 0, 0, 0, 124, 125, 7, 4, 0, 0, 125, 23, 1, 0, 0, 0, 126, 127, 5, 11, 0, - 0, 127, 128, 3, 10, 5, 0, 128, 25, 1, 0, 0, 0, 13, 32, 40, 48, 53, 63, - 67, 72, 78, 87, 96, 101, 104, 111, + 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 125, 8, 8, 1, 9, 1, 9, 1, + 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 0, 1, + 14, 13, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 0, 5, 1, 0, 30, + 34, 1, 0, 37, 38, 1, 0, 13, 14, 2, 0, 15, 23, 28, 29, 2, 0, 8, 8, 40, 41, + 140, 0, 26, 1, 0, 0, 0, 2, 53, 1, 0, 0, 0, 4, 55, 1, 0, 0, 0, 6, 67, 1, + 0, 0, 0, 8, 72, 1, 0, 0, 0, 10, 87, 1, 0, 0, 0, 12, 89, 1, 0, 0, 0, 14, + 104, 1, 0, 0, 0, 16, 124, 1, 0, 0, 0, 18, 126, 1, 0, 0, 0, 20, 130, 1, + 0, 0, 0, 22, 132, 1, 0, 0, 0, 24, 134, 1, 0, 0, 0, 26, 27, 3, 2, 1, 0, + 27, 28, 5, 0, 0, 1, 28, 1, 1, 0, 0, 0, 29, 30, 5, 9, 0, 0, 30, 32, 3, 6, + 3, 0, 31, 33, 3, 12, 6, 0, 32, 31, 1, 0, 0, 0, 32, 33, 1, 0, 0, 0, 33, + 34, 1, 0, 0, 0, 34, 35, 5, 7, 0, 0, 35, 54, 1, 0, 0, 0, 36, 37, 5, 9, 0, + 0, 37, 38, 3, 8, 4, 0, 38, 40, 3, 4, 2, 0, 39, 41, 3, 12, 6, 0, 40, 39, + 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 5, 7, 0, 0, + 43, 54, 1, 0, 0, 0, 44, 45, 5, 9, 0, 0, 45, 46, 3, 8, 4, 0, 46, 48, 3, + 4, 2, 0, 47, 49, 3, 12, 6, 0, 48, 47, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, + 50, 1, 0, 0, 0, 50, 51, 3, 24, 12, 0, 51, 52, 5, 7, 0, 0, 52, 54, 1, 0, + 0, 0, 53, 29, 1, 0, 0, 0, 53, 36, 1, 0, 0, 0, 53, 44, 1, 0, 0, 0, 54, 3, + 1, 0, 0, 0, 55, 56, 5, 11, 0, 0, 56, 57, 5, 40, 0, 0, 57, 5, 1, 0, 0, 0, + 58, 63, 3, 10, 5, 0, 59, 60, 5, 3, 0, 0, 60, 62, 3, 10, 5, 0, 61, 59, 1, + 0, 0, 0, 62, 65, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 63, 64, 1, 0, 0, 0, 64, + 68, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 66, 68, 5, 42, 0, 0, 67, 58, 1, 0, + 0, 0, 67, 66, 1, 0, 0, 0, 68, 7, 1, 0, 0, 0, 69, 70, 3, 10, 5, 0, 70, 71, + 5, 3, 0, 0, 71, 73, 1, 0, 0, 0, 72, 69, 1, 0, 0, 0, 72, 73, 1, 0, 0, 0, + 73, 74, 1, 0, 0, 0, 74, 75, 7, 0, 0, 0, 75, 78, 5, 4, 0, 0, 76, 79, 3, + 10, 5, 0, 77, 79, 5, 42, 0, 0, 78, 76, 1, 0, 0, 0, 78, 77, 1, 0, 0, 0, + 79, 80, 1, 0, 0, 0, 80, 81, 5, 5, 0, 0, 81, 9, 1, 0, 0, 0, 82, 88, 5, 39, + 0, 0, 83, 84, 7, 1, 0, 0, 84, 85, 5, 4, 0, 0, 85, 86, 5, 39, 0, 0, 86, + 88, 5, 5, 0, 0, 87, 82, 1, 0, 0, 0, 87, 83, 1, 0, 0, 0, 88, 11, 1, 0, 0, + 0, 89, 90, 5, 10, 0, 0, 90, 91, 3, 14, 7, 0, 91, 13, 1, 0, 0, 0, 92, 93, + 6, 7, -1, 0, 93, 105, 3, 16, 8, 0, 94, 97, 3, 18, 9, 0, 95, 97, 3, 16, + 8, 0, 96, 94, 1, 0, 0, 0, 96, 95, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 101, + 7, 2, 0, 0, 99, 102, 3, 18, 9, 0, 100, 102, 3, 16, 8, 0, 101, 99, 1, 0, + 0, 0, 101, 100, 1, 0, 0, 0, 102, 105, 1, 0, 0, 0, 103, 105, 3, 18, 9, 0, + 104, 92, 1, 0, 0, 0, 104, 96, 1, 0, 0, 0, 104, 103, 1, 0, 0, 0, 105, 111, + 1, 0, 0, 0, 106, 107, 10, 2, 0, 0, 107, 108, 7, 2, 0, 0, 108, 110, 3, 14, + 7, 3, 109, 106, 1, 0, 0, 0, 110, 113, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, + 111, 112, 1, 0, 0, 0, 112, 15, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 114, 115, + 5, 39, 0, 0, 115, 116, 3, 20, 10, 0, 116, 117, 3, 22, 11, 0, 117, 125, + 1, 0, 0, 0, 118, 119, 5, 39, 0, 0, 119, 120, 5, 6, 0, 0, 120, 121, 5, 39, + 0, 0, 121, 122, 3, 20, 10, 0, 122, 123, 3, 22, 11, 0, 123, 125, 1, 0, 0, + 0, 124, 114, 1, 0, 0, 0, 124, 118, 1, 0, 0, 0, 125, 17, 1, 0, 0, 0, 126, + 127, 5, 4, 0, 0, 127, 128, 3, 14, 7, 0, 128, 129, 5, 5, 0, 0, 129, 19, + 1, 0, 0, 0, 130, 131, 7, 3, 0, 0, 131, 21, 1, 0, 0, 0, 132, 133, 7, 4, + 0, 0, 133, 23, 1, 0, 0, 0, 134, 135, 5, 12, 0, 0, 135, 136, 3, 10, 5, 0, + 136, 25, 1, 0, 0, 0, 14, 32, 40, 48, 53, 63, 67, 72, 78, 87, 96, 101, 104, + 111, 124, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -149,42 +153,43 @@ const ( SqlParserCOMMA = 3 SqlParserL_BRACKET = 4 SqlParserR_BRACKET = 5 - SqlParserEOQ = 6 - SqlParserBOOLEAN_LITERAL = 7 - SqlParserK_SELECT = 8 - SqlParserK_WHERE = 9 - SqlParserK_WINDOW_TUMBLING = 10 - SqlParserK_GROUP_BY = 11 - SqlParserK_AND = 12 - SqlParserK_OR = 13 - SqlParserK_IS = 14 - SqlParserK_LIKE = 15 - SqlParserK_NOT_LIKE = 16 - SqlParserK_EQUAL = 17 - SqlParserK_GREATER = 18 - SqlParserK_LESS = 19 - SqlParserK_LESS_EQUAL = 20 - SqlParserK_GREATER_EQUAL = 21 - SqlParserK_NOT_EQUAL = 22 - SqlParserK_NULL = 23 - SqlParserK_IS_NULL = 24 - SqlParserK_IS_NOT_NULL = 25 - SqlParserK_NOT = 26 - SqlParserK_NOT_IN = 27 - SqlParserK_IN = 28 - SqlParserK_COUNT = 29 - SqlParserK_SUM = 30 - SqlParserK_MIN = 31 - SqlParserK_MAX = 32 - SqlParserK_AVG = 33 - SqlParserK_TRUE = 34 - SqlParserK_FALSE = 35 - SqlParserK_UPPER = 36 - SqlParserK_LOWER = 37 - SqlParserIDENTIFIER = 38 - SqlParserNUMERIC_LITERAL = 39 - SqlParserSTRING_LITERAL = 40 - SqlParserSTAR = 41 + SqlParserDOT = 6 + SqlParserEOQ = 7 + SqlParserBOOLEAN_LITERAL = 8 + SqlParserK_SELECT = 9 + SqlParserK_WHERE = 10 + SqlParserK_WINDOW_TUMBLING = 11 + SqlParserK_GROUP_BY = 12 + SqlParserK_AND = 13 + SqlParserK_OR = 14 + SqlParserK_IS = 15 + SqlParserK_LIKE = 16 + SqlParserK_NOT_LIKE = 17 + SqlParserK_EQUAL = 18 + SqlParserK_GREATER = 19 + SqlParserK_LESS = 20 + SqlParserK_LESS_EQUAL = 21 + SqlParserK_GREATER_EQUAL = 22 + SqlParserK_NOT_EQUAL = 23 + SqlParserK_NULL = 24 + SqlParserK_IS_NULL = 25 + SqlParserK_IS_NOT_NULL = 26 + SqlParserK_NOT = 27 + SqlParserK_NOT_IN = 28 + SqlParserK_IN = 29 + SqlParserK_COUNT = 30 + SqlParserK_SUM = 31 + SqlParserK_MIN = 32 + SqlParserK_MAX = 33 + SqlParserK_AVG = 34 + SqlParserK_TRUE = 35 + SqlParserK_FALSE = 36 + SqlParserK_UPPER = 37 + SqlParserK_LOWER = 38 + SqlParserIDENTIFIER = 39 + SqlParserNUMERIC_LITERAL = 40 + SqlParserSTRING_LITERAL = 41 + SqlParserSTAR = 42 ) // SqlParser rules. @@ -1256,7 +1261,7 @@ func (p *SqlParser) AggregationColumns() (localctx IAggregationColumnsContext) { p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - if ((_la-36)&-(0x1f+1)) == 0 && ((1< 90);`, + expected: 13, + }, + { + name: "nested 11", + query: `SELECT * WHERE (provider.type = 'middle' and price < 30) and (provider.type = 'middle' and price > 90);`, + expected: 0, + }, + { + name: "nested 12", + query: `SELECT * WHERE (provider.type = 'middle' and price < 10) or (provider.type = 'middle' and price > 90) or (provider.type = 'big' and price > 90);`, + expected: 10, + }, + { + name: "nested 13", + query: `SELECT * WHERE (provider.type = 'middle' and price < 10 and is_alive=true);`, + expected: 2, + }, + { + name: "nested 14", + query: `SELECT * WHERE (provider.type = 'middle' and price < 10 and is_alive=true) or (provider.type = 'small' and price < 10 and is_alive=false);`, + expected: 4, + }, + { + name: "nested 15", + query: `SELECT * WHERE provider.type = 'middle' and provider.number > 50 and price > 50;`, + expected: 17, + }, + { + name: "nested 16", + query: `SELECT * WHERE provider.type = 'big' and provider.number > 50 and price > 50;`, + expected: 16, + }, + { + name: "nested 17", + query: `SELECT * WHERE provider.type = 'big' and provider.number > 50 or price > 80 ;`, + expected: 29, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + in <- generateTestLogs() + + ls := <-out + + assert.Equal(t, tt.expected, ls.Len()) + + }) + } + +} diff --git a/processor/stream_processor/parser/sql_stream_tumbling_test.go b/processor/stream_processor/parser/sql_stream_tumbling_test.go index 2747bd70c5af..4129f8273101 100644 --- a/processor/stream_processor/parser/sql_stream_tumbling_test.go +++ b/processor/stream_processor/parser/sql_stream_tumbling_test.go @@ -296,7 +296,7 @@ func generateRandomSplittedTestLogs() plog.LogRecordSlice { for i := 0; i < r; i++ { record := sc.LogRecords().AppendEmpty() record.Attributes().InsertString("name", "Test name "+strconv.Itoa(i)) - record.Attributes().InsertBool("IsAlive", i%2 == 0) + record.Attributes().InsertBool("is_alive", i%2 == 0) record.Attributes().InsertInt("price", int64(i)) } @@ -311,7 +311,7 @@ func generateGroupByTestLogs() plog.LogRecordSlice { record := sc.LogRecords().AppendEmpty() name := strconv.Itoa(i) record.Attributes().InsertString("name", fmt.Sprint("Test name ", string(name[0]))) - record.Attributes().InsertBool("IsAlive", i%2 == 0) + record.Attributes().InsertBool("is_alive", i%2 == 0) record.Attributes().InsertInt("price", int64(i)) } diff --git a/processor/stream_processor/parser/sql_stream_visitor.go b/processor/stream_processor/parser/sql_stream_visitor.go index 12724b212493..6fc31056d3fb 100644 --- a/processor/stream_processor/parser/sql_stream_visitor.go +++ b/processor/stream_processor/parser/sql_stream_visitor.go @@ -2,8 +2,6 @@ package parser import ( "fmt" - "strconv" - "strings" "time" "github.com/antlr/antlr4/runtime/Go/antlr" @@ -362,41 +360,42 @@ func (v *SqlStreamVisitor) VisitSimpleCondition(ctx *SimpleConditionContext) int } func (v *SqlStreamVisitor) VisitSimpleExpression(ctx *SimpleExpressionContext) interface{} { - fieldNameValue, ok := v.currentRecord.Attributes().Get(ctx.IDENTIFIER().GetText()) + fieldValue, ok := v.currentRecord.Attributes().Get(ctx.IDENTIFIER().GetText()) if !ok { return fmt.Errorf("field %q missed in log record", ctx.IDENTIFIER().GetText()) } - switch ctx.LiteralValue().GetStart().GetTokenType() { - case SqlParserNUMERIC_LITERAL: - fieldValue, err := strconv.ParseFloat(fieldNameValue.AsString(), 64) - if err != nil { - return fmt.Errorf("can't convert record field value %q to numeric; %w", fieldNameValue.AsString(), err) - } - comparisonValue, err := strconv.ParseFloat(ctx.LiteralValue().GetText(), 64) - if err != nil { - return fmt.Errorf("can't convert comparison value %q to numeric; %w", ctx.LiteralValue().GetText(), err) - } - return compareNumeric(ctx, fieldValue, comparisonValue) - case SqlParserSTRING_LITERAL: - // we need to remove quotes - value := strings.TrimSuffix(strings.TrimPrefix(ctx.LiteralValue().GetText(), `'`), `'`) - return compareString(ctx, fieldNameValue.AsString(), value) - case SqlParserBOOLEAN_LITERAL: - fieldValue, err := strconv.ParseBool(fieldNameValue.AsString()) - if err != nil { - return fmt.Errorf("can't convert field value %q to boolean; %w", fieldNameValue.AsString(), err) - } - comparisonValue, err := strconv.ParseBool(ctx.LiteralValue().GetText()) - if err != nil { - return fmt.Errorf("can't convert comparison value %q to boolean; %w", ctx.LiteralValue().GetText(), err) - } + res, err := compareExpression(ctx.ComparisonOperator(), ctx.LiteralValue(), fieldValue) + if err != nil { + return err + } + return res - return compareBool(ctx, fieldValue, comparisonValue) +} - default: - return fmt.Errorf("missed literal value type %q", ctx.LiteralValue().GetText()) +func (v *SqlStreamVisitor) VisitNestedExpression(ctx *NestedExpressionContext) interface{} { + fieldName := ctx.IDENTIFIER(0).GetText() + fieldValue, ok := v.currentRecord.Attributes().Get(fieldName) + if !ok { + return fmt.Errorf("field %q missed in log record", fieldValue.AsString()) + } + if fieldValue.Type() != pcommon.ValueTypeMap { + return fmt.Errorf("field %q is not nested map", fieldName) } + + nestedFieldName := ctx.IDENTIFIER(1).GetText() + nestedFieldValue, ok := fieldValue.MapVal().Get(nestedFieldName) + if !ok { + v.logger.Error("nested key missed", zap.String("name: ", nestedFieldName)) + return false + } + + res, err := compareExpression(ctx.ComparisonOperator(), ctx.LiteralValue(), nestedFieldValue) + if err != nil { + return err + } + return res + } func (v *SqlStreamVisitor) VisitSimpleRecursiveCondition(ctx *SimpleRecursiveConditionContext) interface{} { diff --git a/processor/stream_processor/parser/sql_stream_visitor_test.go b/processor/stream_processor/parser/sql_stream_visitor_test.go index 73e22eb9499f..99dcb1dd549c 100644 --- a/processor/stream_processor/parser/sql_stream_visitor_test.go +++ b/processor/stream_processor/parser/sql_stream_visitor_test.go @@ -4,6 +4,7 @@ import ( "encoding/csv" "errors" "fmt" + "go.opentelemetry.io/collector/pdata/pcommon" "os" "strconv" "testing" @@ -23,12 +24,12 @@ func TestResultColumnsSelectColumns(t *testing.T) { }{ { name: "correct value columns", - query: `SELECT name, price, IsAlive;`, + query: `SELECT name, price, is_alive;`, expectedCount: 100, }, { name: "incorrect value columns", - query: `SELECT field, isAlive;`, + query: `SELECT field, is_alive;`, expectedCount: 0, }, { @@ -72,8 +73,8 @@ func TestResultColumnsSelectColumnsAttributes(t *testing.T) { }, { name: "two attributes must be left", - query: `SELECT price, IsAlive ;`, - expectedAttr: []string{"price", "IsAlive"}, + query: `SELECT price, is_alive ;`, + expectedAttr: []string{"price", "is_alive"}, expectedCount: 100, }, { @@ -117,13 +118,13 @@ func TestWhereCondition(t *testing.T) { { name: "where fields exists ", - query: `SELECT name, IsAlive WHERE name = 'test' and IsAlive = 'true';`, + query: `SELECT name, is_alive WHERE name = 'test' and is_alive = 'true';`, expected: nil, }, { name: "where fields missed ", - query: `SELECT name, IsAlive WHERE name = 'test' and non_exists = 'true';`, + query: `SELECT name, is_alive WHERE name = 'test' and non_exists = 'true';`, expected: errors.New(`field "non_exists" missed in log record`), }, } @@ -201,20 +202,20 @@ func TestSimpleCondition(t *testing.T) { }, { name: "equal true ", - query: `SELECT name, IsAlive WHERE IsAlive = true;`, + query: `SELECT name, is_alive WHERE is_alive = true;`, expectedAttr: []string{"name, price"}, expectedCount: 50, }, { name: "not equal true ", - query: `SELECT name, IsAlive WHERE IsAlive != true;`, - expectedAttr: []string{"name, IsAlive"}, + query: `SELECT name, is_alive WHERE is_alive != true;`, + expectedAttr: []string{"name, is_alive"}, expectedCount: 50, }, { name: "equal false ", - query: `SELECT name, IsAlive WHERE IsAlive = false;`, - expectedAttr: []string{"name, IsAlive"}, + query: `SELECT name, is_alive WHERE is_alive = false;`, + expectedAttr: []string{"name, is_alive"}, expectedCount: 50, }, } @@ -242,27 +243,27 @@ func TestRecursiveCondition(t *testing.T) { }{ { name: "where and condition ", - query: `SELECT name, IsAlive WHERE name != 'test' and IsAlive = 'true';`, + query: `SELECT name, is_alive WHERE name != 'test' and is_alive = 'true';`, expectedCount: 50, }, { name: "where or 1 ", - query: `SELECT name, IsAlive WHERE name != 'test' or IsAlive = 'true';`, + query: `SELECT name, is_alive WHERE name != 'test' or is_alive = 'true';`, expectedCount: 100, }, { name: "test or 2", - query: `SELECT name WHERE name = 'Test name 10' or IsAlive = 'false';`, + query: `SELECT name WHERE name = 'Test name 10' or is_alive = 'false';`, expectedCount: 51, }, { name: "test and 1", - query: `SELECT name WHERE name = 'Test name 10' and IsAlive = 'false';`, + query: `SELECT name WHERE name = 'Test name 10' and is_alive = 'false';`, expectedCount: 0, }, { name: "test and 2", - query: `SELECT name WHERE name = 'Test name 10' and IsAlive = 'true';`, + query: `SELECT name WHERE name = 'Test name 10' and is_alive = 'true';`, expectedCount: 1, }, { @@ -277,7 +278,7 @@ func TestRecursiveCondition(t *testing.T) { }, { name: "like 1", - query: `SELECT name WHERE name like 'Test name 1' and IsAlive = 'false';`, + query: `SELECT name WHERE name like 'Test name 1' and is_alive = 'false';`, expectedCount: 6, }, { @@ -309,42 +310,42 @@ func TestCompoundCondition(t *testing.T) { }{ { name: "and 1 ", - query: `SELECT name, IsAlive WHERE (name != 'test' and IsAlive = 'true') and (IsAlive = 'true' and price > 50);`, + query: `SELECT name, is_alive WHERE (name != 'test' and is_alive = 'true') and (is_alive = 'true' and price > 50);`, expectedCount: 24, }, { name: "and 2 ", - query: `SELECT name, IsAlive WHERE (name = 'Test name 10' and price > 5) and (IsAlive = 'true' and price > 5);`, + query: `SELECT name, is_alive WHERE (name = 'Test name 10' and price > 5) and (is_alive = 'true' and price > 5);`, expectedCount: 1, }, { name: "and 3 ", - query: `SELECT name, IsAlive WHERE (name = 'Test name 10' and price > 5) and (IsAlive = 'false' and price > 5);`, + query: `SELECT name, is_alive WHERE (name = 'Test name 10' and price > 5) and (is_alive = 'false' and price > 5);`, expectedCount: 0, }, { name: "or 1 ", - query: `SELECT name, IsAlive WHERE (name != 'test' and IsAlive = 'true') or (IsAlive = 'true' and price > 50);`, + query: `SELECT name, is_alive WHERE (name != 'test' and is_alive = 'true') or (is_alive = 'true' and price > 50);`, expectedCount: 50, }, { name: "or 2 ", - query: `SELECT name, IsAlive WHERE (name = 'Test name 10' and price > 5 ) or (IsAlive = 'true');`, + query: `SELECT name, is_alive WHERE (name = 'Test name 10' and price > 5 ) or (is_alive = 'true');`, expectedCount: 50, }, { name: "or 2 ", - query: `SELECT name, IsAlive WHERE (name = 'Test name 10' and price > 5 ) or (IsAlive = 'false');`, + query: `SELECT name, is_alive WHERE (name = 'Test name 10' and price > 5 ) or (is_alive = 'false');`, expectedCount: 51, }, { name: "like 1 ", - query: `SELECT name, IsAlive WHERE (name like '2' and price > 5 ) or (IsAlive = 'false');`, + query: `SELECT name, is_alive WHERE (name like '2' and price > 5 ) or (is_alive = 'false');`, expectedCount: 63, }, { name: "like 2 ", - query: `SELECT name, IsAlive WHERE (name like '2' and price > 5 ) or (price < 30 or IsAlive = 'false');`, + query: `SELECT name, is_alive WHERE (name like '2' and price > 5 ) or (price < 30 or is_alive = 'false');`, expectedCount: 72, }, } @@ -401,17 +402,17 @@ func TestComplexCompoundCondition(t *testing.T) { }, { name: "3 and", - query: `SELECT * WHERE name like '2' and price < 3 and IsAlive = true ;`, + query: `SELECT * WHERE name like '2' and price < 3 and is_alive = true ;`, expectedCount: 1, }, { name: "3 and", - query: `SELECT * WHERE name like '2' and price < 3 and IsAlive != true ;`, + query: `SELECT * WHERE name like '2' and price < 3 and is_alive != true ;`, expectedCount: 0, }, { name: "3 and", - query: `SELECT * WHERE (name like '2' and price < 3 and IsAlive = true) ;`, + query: `SELECT * WHERE (name like '2' and price < 3 and is_alive = true) ;`, expectedCount: 1, }, } @@ -434,18 +435,26 @@ func generateTestLogs() plog.LogRecordSlice { ld := plog.NewLogs() sc := ld.ResourceLogs().AppendEmpty().ScopeLogs().AppendEmpty() + types := []string{"middle", "small", "big"} for i := 0; i < 100; i++ { record := sc.LogRecords().AppendEmpty() record.Attributes().InsertString("name", "Test name "+strconv.Itoa(i)) - record.Attributes().InsertBool("IsAlive", i%2 == 0) + record.Attributes().InsertBool("is_alive", i%2 == 0) record.Attributes().InsertInt("price", int64(i)) + nested := pcommon.NewValueMap() + typeIndex := i % 3 + nested.MapVal().InsertString("source", "Source "+strconv.Itoa(i)) + nested.MapVal().InsertString("type", types[typeIndex]) + nested.MapVal().InsertDouble("number", float64(i)) + record.Attributes().Insert("provider", nested) } return ld.ResourceLogs().At(0).ScopeLogs().At(0).LogRecords() } func TestWriteTestLogsToCSV(t *testing.T) { + t.Skip() f, _ := os.Create("test.csv") w := csv.NewWriter(f) defer w.Flush() @@ -459,6 +468,7 @@ func TestWriteTestLogsToCSV(t *testing.T) { } func TestWriteTestLogsGroupByToCSV(t *testing.T) { + t.Skip() f, _ := os.Create("testGroupBy.csv") w := csv.NewWriter(f) defer w.Flush() diff --git a/processor/stream_processor/parser/sql_visitor.go b/processor/stream_processor/parser/sql_visitor.go index 89a30e851a6f..d305dea36ed0 100644 --- a/processor/stream_processor/parser/sql_visitor.go +++ b/processor/stream_processor/parser/sql_visitor.go @@ -56,6 +56,9 @@ type SqlVisitor interface { // Visit a parse tree produced by SqlParser#simpleExpression. VisitSimpleExpression(ctx *SimpleExpressionContext) interface{} + // Visit a parse tree produced by SqlParser#nestedExpression. + VisitNestedExpression(ctx *NestedExpressionContext) interface{} + // Visit a parse tree produced by SqlParser#compoundExpression. VisitCompoundExpression(ctx *CompoundExpressionContext) interface{} diff --git a/processor/stream_processor/parser/visitor_utils.go b/processor/stream_processor/parser/visitor_utils.go index 263ae7b67db0..ce76d3affa70 100644 --- a/processor/stream_processor/parser/visitor_utils.go +++ b/processor/stream_processor/parser/visitor_utils.go @@ -2,13 +2,14 @@ package parser import ( "fmt" + "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/plog" "strconv" "strings" ) -func compareString(ctx *SimpleExpressionContext, fieldVal, comparisonVal string) bool { - switch ctx.ComparisonOperator().GetStart().GetTokenType() { +func compareString(comparisonToken int, fieldVal, comparisonVal string) bool { + switch comparisonToken { case SqlParserK_EQUAL: return fieldVal == comparisonVal case SqlParserK_NOT_EQUAL: @@ -34,8 +35,8 @@ func compareString(ctx *SimpleExpressionContext, fieldVal, comparisonVal string) } } -func compareNumeric(ctx *SimpleExpressionContext, fieldVal, comparisonVal float64) bool { - switch ctx.ComparisonOperator().GetStart().GetTokenType() { +func compareNumeric(comparisonToken int, fieldVal, comparisonVal float64) bool { + switch comparisonToken { case SqlParserK_EQUAL: return fieldVal == comparisonVal case SqlParserK_NOT_EQUAL: @@ -57,8 +58,8 @@ func compareNumeric(ctx *SimpleExpressionContext, fieldVal, comparisonVal float6 } } -func compareBool(ctx *SimpleExpressionContext, fieldVal, comparisonVal bool) bool { - switch ctx.ComparisonOperator().GetStart().GetTokenType() { +func compareBool(comparisonToken int, fieldVal, comparisonVal bool) bool { + switch comparisonToken { case SqlParserK_EQUAL: return fieldVal == comparisonVal case SqlParserK_NOT_EQUAL: @@ -216,3 +217,36 @@ func KeyExists(key string, resultColumns []IColumnContext) bool { } return false } + +func compareExpression(operator IComparisonOperatorContext, literalValue ILiteralValueContext, fieldValue pcommon.Value) (bool, error) { + switch literalValue.GetStart().GetTokenType() { + case SqlParserNUMERIC_LITERAL: + parsedValue, err := strconv.ParseFloat(fieldValue.AsString(), 64) + if err != nil { + return false, fmt.Errorf("can't convert record field value %q to numeric; %w", fieldValue.AsString(), err) + } + comparisonValue, err := strconv.ParseFloat(literalValue.GetText(), 64) + if err != nil { + return false, fmt.Errorf("can't convert comparison value %q to numeric; %w", literalValue.GetText(), err) + } + return compareNumeric(operator.GetStart().GetTokenType(), parsedValue, comparisonValue), nil + case SqlParserSTRING_LITERAL: + // we need to remove quotes + value := strings.TrimSuffix(strings.TrimPrefix(literalValue.GetText(), `'`), `'`) + return compareString(operator.GetStart().GetTokenType(), fieldValue.AsString(), value), nil + case SqlParserBOOLEAN_LITERAL: + parsedValue, err := strconv.ParseBool(fieldValue.AsString()) + if err != nil { + return false, fmt.Errorf("can't convert field value %q to boolean; %w", fieldValue.AsString(), err) + } + comparisonValue, err := strconv.ParseBool(literalValue.GetText()) + if err != nil { + return false, fmt.Errorf("can't convert comparison value %q to boolean; %w", literalValue.GetText(), err) + } + + return compareBool(operator.GetStart().GetTokenType(), parsedValue, comparisonValue), nil + + default: + return false, fmt.Errorf("missed literal value type %q", literalValue.GetText()) + } +} diff --git a/processor/stream_processor/processor.go b/processor/stream_processor/processor.go index af4d23117d11..b3096e1cce92 100644 --- a/processor/stream_processor/processor.go +++ b/processor/stream_processor/processor.go @@ -3,8 +3,6 @@ package stream_processor import ( "context" "fmt" - "time" - "github.com/open-telemetry/opentelemetry-collector-contrib/processor/stream_processor/parser" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/consumer" @@ -56,17 +54,27 @@ func printLogs(ls plog.LogRecordSlice) { return } for i := 0; i < ls.Len(); i++ { + fmt.Println("EVENT: ") ls.At(i).Attributes().Range(func(k string, v pcommon.Value) bool { - fmt.Printf("%q: %q ", k, v.AsString()) + if v.Type() == pcommon.ValueTypeMap { + fmt.Printf(" Nested key %q \n", k) + v.MapVal().Range(func(key string, val pcommon.Value) bool { + fmt.Printf("Key: %q: Value: %q \n", key, val.AsString()) + return true + }) + fmt.Println() + return true + } + fmt.Printf("%q: %q \n", k, v.AsString()) return true }) fmt.Print("\n") } - fmt.Println("END OF THIS BATCH") + //fmt.Println("END OF THIS BATCH") } func (sp *sqlStreamProcessor) ConsumeLogs(ctx context.Context, ld plog.Logs) error { - <-time.After(1 * time.Second) + //<-time.After(1 * time.Second) sp.in <- ld.ResourceLogs().At(0).ScopeLogs().At(0).LogRecords() return nil } From d69acc5453c4cdb95b10a4c8860535f7d82c03b7 Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Thu, 25 Aug 2022 18:07:08 +0300 Subject: [PATCH 21/31] one-pass optimization/tests/fixes --- processor/stream_processor/cmd/main.go | 18 +-- .../parser/sql_stream_function_test.go | 2 +- .../parser/sql_stream_nested_test.go | 6 +- .../parser/sql_stream_tumbling_test.go | 24 ++-- .../parser/sql_stream_visitor.go | 103 ++++++++++++------ .../parser/sql_stream_visitor_test.go | 61 ++++------- .../stream_processor/parser/test_utils.go | 29 +++++ .../stream_processor/parser/visitor_utils.go | 82 +++++++------- 8 files changed, 182 insertions(+), 143 deletions(-) create mode 100644 processor/stream_processor/parser/test_utils.go diff --git a/processor/stream_processor/cmd/main.go b/processor/stream_processor/cmd/main.go index b08ab2e02364..8f96cc605a59 100644 --- a/processor/stream_processor/cmd/main.go +++ b/processor/stream_processor/cmd/main.go @@ -8,7 +8,6 @@ import ( "go.opentelemetry.io/collector/pdata/plog" "go.uber.org/zap" "os" - "strconv" "strings" ) @@ -28,7 +27,7 @@ func main() { visitor := parser.NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) //test := plog.NewLogRecordSlice() //generateTestLogs().At(0).CopyTo(test.AppendEmpty()) - in <- generateTestLogs() + in <- parser.GenerateTestLogs() select { case ls := <-out: @@ -50,18 +49,3 @@ func main() { } } - -func generateTestLogs() plog.LogRecordSlice { - - ld := plog.NewLogs() - sc := ld.ResourceLogs().AppendEmpty().ScopeLogs().AppendEmpty() - - for i := 0; i < 100; i++ { - record := sc.LogRecords().AppendEmpty() - record.Attributes().InsertString("name", "Test name "+strconv.Itoa(i)) - record.Attributes().InsertBool("IsAlive", i%2 == 0) - record.Attributes().InsertInt("price", int64(i)) - } - - return ld.ResourceLogs().At(0).ScopeLogs().At(0).LogRecords() -} diff --git a/processor/stream_processor/parser/sql_stream_function_test.go b/processor/stream_processor/parser/sql_stream_function_test.go index 76ce9e74269e..f748cffdaf14 100644 --- a/processor/stream_processor/parser/sql_stream_function_test.go +++ b/processor/stream_processor/parser/sql_stream_function_test.go @@ -34,7 +34,7 @@ func TestScalarFunctions(t *testing.T) { outErr := make(chan error) visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) defer visitor.Stop() - in <- generateTestLogs() + in <- GenerateTestLogs() ls := <-out assert.Equal(t, tt.expectedCount, ls.Len()) diff --git a/processor/stream_processor/parser/sql_stream_nested_test.go b/processor/stream_processor/parser/sql_stream_nested_test.go index cc30c5bebada..05574ff483e5 100644 --- a/processor/stream_processor/parser/sql_stream_nested_test.go +++ b/processor/stream_processor/parser/sql_stream_nested_test.go @@ -36,7 +36,7 @@ func TestWhereNestedCorrectFIelds(t *testing.T) { outErr := make(chan error) visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) defer visitor.Stop() - in <- generateTestLogs() + in <- GenerateTestLogs() var err error select { @@ -85,7 +85,7 @@ func TestWhereNestedSimple(t *testing.T) { outErr := make(chan error) visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) defer visitor.Stop() - in <- generateTestLogs() + in <- GenerateTestLogs() ls := <-out @@ -202,7 +202,7 @@ func TestWhereNestedCompound(t *testing.T) { outErr := make(chan error) visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) defer visitor.Stop() - in <- generateTestLogs() + in <- GenerateTestLogs() ls := <-out diff --git a/processor/stream_processor/parser/sql_stream_tumbling_test.go b/processor/stream_processor/parser/sql_stream_tumbling_test.go index 4129f8273101..58efd097a533 100644 --- a/processor/stream_processor/parser/sql_stream_tumbling_test.go +++ b/processor/stream_processor/parser/sql_stream_tumbling_test.go @@ -81,11 +81,11 @@ func TestWindowTumblingLoop(t *testing.T) { break } }() - in <- generateTestLogs() + in <- GenerateTestLogs() <-time.After(1 * time.Millisecond) - in <- generateTestLogs() + in <- GenerateTestLogs() <-time.After(1 * time.Millisecond) - in <- generateTestLogs() + in <- GenerateTestLogs() <-time.After(1 * time.Millisecond) wg.Wait() @@ -106,7 +106,7 @@ func TestWindowTumblingAvg(t *testing.T) { visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) defer visitor.Stop() - in <- generateTestLogs() + in <- GenerateTestLogs() ls = <-out res, ok := ls.At(0).Attributes().Get("price") assert.True(t, ok) @@ -122,7 +122,7 @@ func TestWindowTumblingCount(t *testing.T) { visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) defer visitor.Stop() - in <- generateTestLogs() + in <- GenerateTestLogs() ls = <-out res, ok := ls.At(0).Attributes().Get("price") assert.True(t, ok) @@ -138,7 +138,7 @@ func TestWindowTumblingSum(t *testing.T) { visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) defer visitor.Stop() - in <- generateTestLogs() + in <- GenerateTestLogs() ls = <-out res, ok := ls.At(0).Attributes().Get("price") assert.True(t, ok) @@ -154,7 +154,7 @@ func TestWindowTumblingMin(t *testing.T) { visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) defer visitor.Stop() - in <- generateTestLogs() + in <- GenerateTestLogs() ls = <-out res, ok := ls.At(0).Attributes().Get("price") assert.True(t, ok) @@ -170,7 +170,7 @@ func TestWindowTumblingMax(t *testing.T) { visitor := NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) defer visitor.Stop() - in <- generateTestLogs() + in <- GenerateTestLogs() ls = <-out res, ok := ls.At(0).Attributes().Get("price") assert.True(t, ok) @@ -178,7 +178,7 @@ func TestWindowTumblingMax(t *testing.T) { } func TestAvgContext_K_MIN(t *testing.T) { - ls := generateTestLogs() + ls := GenerateTestLogs() res, err := min(ls, "price") assert.Nil(t, err) assert.Equal(t, 0.0, res) @@ -186,21 +186,21 @@ func TestAvgContext_K_MIN(t *testing.T) { } func TestAvgContext_K_MAX(t *testing.T) { - ls := generateTestLogs() + ls := GenerateTestLogs() res, err := max(ls, "price") assert.Nil(t, err) assert.Equal(t, 99.0, res) } func TestAvgContext_K_SUM(t *testing.T) { - ls := generateTestLogs() + ls := GenerateTestLogs() res, err := sum(ls, "price") assert.Nil(t, err) assert.Equal(t, 4950.0, res) } func TestAvgContext_K_COUNT(t *testing.T) { - ls := generateTestLogs() + ls := GenerateTestLogs() count := count(ls) assert.Equal(t, 100, count) } diff --git a/processor/stream_processor/parser/sql_stream_visitor.go b/processor/stream_processor/parser/sql_stream_visitor.go index 6fc31056d3fb..56e332e63e1e 100644 --- a/processor/stream_processor/parser/sql_stream_visitor.go +++ b/processor/stream_processor/parser/sql_stream_visitor.go @@ -160,7 +160,7 @@ func (v *SqlStreamVisitor) VisitSelectSimple(ctx *SelectSimpleContext) interface } - return ctx.ResultColumns().Accept(v) + return nil } func (v *SqlStreamVisitor) VisitSelectTumbling(ctx *SelectTumblingContext) interface{} { @@ -215,48 +215,56 @@ func (v *SqlStreamVisitor) VisitGroupBy(ctx *GroupByContext) interface{} { return nil } +// VisitSelectColumns is called in case of missed where statement func (v *SqlStreamVisitor) VisitSelectColumns(ctx *SelectColumnsContext) interface{} { + var err error + v.logRecords.RemoveIf(func(record plog.LogRecord) bool { + // apply scalar function + v.currentRecord = record - for _, column := range ctx.AllColumn() { - v.logRecords.RemoveIf(func(record plog.LogRecord) bool { - // apply scalar function - v.currentRecord = record - identifier := getColumnIdentifier(column) - _, ok := record.Attributes().Get(identifier) - - if ok { - // Remove attributes which are not listed in value columns statement - // We can't use RemoveIf as it takes only values - removed := make([]string, 0, record.Attributes().Len()) - record.Attributes().Range(func(k string, value pcommon.Value) bool { - if !KeyExists(k, ctx.AllColumn()) { - removed = append(removed, k) - } - return true - }) - - for _, removedKey := range removed { - record.Attributes().Remove(removedKey) - } - column.Accept(v) - - return false + // Remove attributes which are not listed in value columns statement + // We can't use RemoveIf as it takes only values + removed := make([]string, 0, record.Attributes().Len()) + record.Attributes().Range(func(k string, value pcommon.Value) bool { + if !keyExists(k, ctx.AllColumn()) { + removed = append(removed, k) } - - v.logger.Error("field is missing", zap.String("field", column.GetText())) return true }) + for _, removedKey := range removed { + record.Attributes().Remove(removedKey) + } + for _, col := range ctx.AllColumn() { + switch res := col.Accept(v).(type) { + case error: + err = res + } + } + + return false + }) + + if err != nil { + return err } + return nil } func (v *SqlStreamVisitor) VisitIdentifierCol(ctx *IdentifierColContext) interface{} { + if !columnExistsInAttr(ctx, v.currentRecord.Attributes()) { + return fmt.Errorf("column %q missed in input", getColumnIdentifier(ctx)) + } return nil } func (v *SqlStreamVisitor) VisitFunctionCol(ctx *FunctionColContext) interface{} { + if !columnExistsInAttr(ctx, v.currentRecord.Attributes()) { + return fmt.Errorf("column %q missed in input", getColumnIdentifier(ctx)) + } + if ctx.K_LOWER() != nil { return lower(v.currentRecord, ctx.IDENTIFIER().GetText()) } @@ -282,8 +290,11 @@ func (v *SqlStreamVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { return false case bool: - return !res + if errRes := v.adjustResultColumns(ctx); errRes != nil { + err = errRes + } + return !res } return false }) @@ -291,6 +302,38 @@ func (v *SqlStreamVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { return err } +//adjustResultColumns this is called if where statement exists +func (v *SqlStreamVisitor) adjustResultColumns(ctx *WhereStmtContext) error { + for _, resCtx := range ctx.GetParent().GetChildren() { + resColumnCtx, ok := resCtx.(*SelectColumnsContext) + if !ok { + continue + } + + for _, col := range resCtx.(*SelectColumnsContext).AllColumn() { + switch res := col.Accept(v).(type) { + case error: + return res + } + } + // Remove attributes which are not listed in value columns statement + // We can't use RemoveIf as it takes only values + removed := make([]string, 0, v.currentRecord.Attributes().Len()) + v.currentRecord.Attributes().Range(func(k string, value pcommon.Value) bool { + if !keyExists(k, resColumnCtx.AllColumn()) { + removed = append(removed, k) + } + return true + }) + + for _, removedKey := range removed { + v.currentRecord.Attributes().Remove(removedKey) + } + + } + return nil +} + func (v *SqlStreamVisitor) VisitSelectAVG(ctx *SelectAVGContext) interface{} { dest := plog.NewLogRecordSlice() if v.groupByLogRecords != nil { @@ -351,10 +394,6 @@ func (v *SqlStreamVisitor) VisitSelectStar(ctx *SelectStarContext) interface{} { return nil } -func (v *SqlStreamVisitor) VisitColumn(ctx *ColumnContext) interface{} { - return nil -} - func (v *SqlStreamVisitor) VisitSimpleCondition(ctx *SimpleConditionContext) interface{} { return ctx.SimpleExpr().Accept(v) } diff --git a/processor/stream_processor/parser/sql_stream_visitor_test.go b/processor/stream_processor/parser/sql_stream_visitor_test.go index 99dcb1dd549c..194619d5cf77 100644 --- a/processor/stream_processor/parser/sql_stream_visitor_test.go +++ b/processor/stream_processor/parser/sql_stream_visitor_test.go @@ -4,7 +4,6 @@ import ( "encoding/csv" "errors" "fmt" - "go.opentelemetry.io/collector/pdata/pcommon" "os" "strconv" "testing" @@ -21,25 +20,30 @@ func TestResultColumnsSelectColumns(t *testing.T) { name string query string expectedCount int + err error }{ { name: "correct value columns", query: `SELECT name, price, is_alive;`, expectedCount: 100, + err: nil, }, { name: "incorrect value columns", query: `SELECT field, is_alive;`, + err: errors.New(`column "field" missed in input`), expectedCount: 0, }, { name: "one value columns", query: `SELECT name ;`, + err: nil, expectedCount: 100, }, { name: "one incorrect value columns", query: `SELECT field ;`, + err: errors.New(`column "field" missed in input`), expectedCount: 0, }, } @@ -51,9 +55,18 @@ func TestResultColumnsSelectColumns(t *testing.T) { outErr := make(chan error) visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) defer visitor.Stop() - in <- generateTestLogs() - ls := <-out - assert.Equal(t, tt.expectedCount, ls.Len()) + in <- GenerateTestLogs() + var ls plog.LogRecordSlice + var err error + select { + case ls = <-out: + case err = <-outErr: + } + + assert.Equal(t, tt.err, err) + if tt.err == nil { + assert.Equal(t, tt.expectedCount, ls.Len()) + } }) } } @@ -77,12 +90,6 @@ func TestResultColumnsSelectColumnsAttributes(t *testing.T) { expectedAttr: []string{"price", "is_alive"}, expectedCount: 100, }, - { - name: "incorrect attributes ", - query: `SELECT field, field2 ;`, - expectedAttr: []string{}, - expectedCount: 0, - }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -92,7 +99,7 @@ func TestResultColumnsSelectColumnsAttributes(t *testing.T) { outErr := make(chan error) visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) defer visitor.Stop() - in <- generateTestLogs() + in <- GenerateTestLogs() ls := <-out assert.Equal(t, tt.expectedCount, ls.Len()) @@ -136,7 +143,7 @@ func TestWhereCondition(t *testing.T) { outErr := make(chan error) visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) defer visitor.Stop() - in <- generateTestLogs() + in <- GenerateTestLogs() var err error select { @@ -226,7 +233,7 @@ func TestSimpleCondition(t *testing.T) { outErr := make(chan error) visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) defer visitor.Stop() - in <- generateTestLogs() + in <- GenerateTestLogs() ls := <-out assert.Equal(t, tt.expectedCount, ls.Len()) @@ -294,7 +301,7 @@ func TestRecursiveCondition(t *testing.T) { outErr := make(chan error) visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) defer visitor.Stop() - in <- generateTestLogs() + in <- GenerateTestLogs() ls := <-out assert.Equal(t, tt.expectedCount, ls.Len()) }) @@ -356,7 +363,7 @@ func TestCompoundCondition(t *testing.T) { outErr := make(chan error) visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) defer visitor.Stop() - in <- generateTestLogs() + in <- GenerateTestLogs() ls := <-out assert.Equal(t, tt.expectedCount, ls.Len()) }) @@ -423,7 +430,7 @@ func TestComplexCompoundCondition(t *testing.T) { outErr := make(chan error) visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) defer visitor.Stop() - in <- generateTestLogs() + in <- GenerateTestLogs() ls := <-out assert.Equal(t, tt.expectedCount, ls.Len()) }) @@ -431,28 +438,6 @@ func TestComplexCompoundCondition(t *testing.T) { } -func generateTestLogs() plog.LogRecordSlice { - - ld := plog.NewLogs() - sc := ld.ResourceLogs().AppendEmpty().ScopeLogs().AppendEmpty() - types := []string{"middle", "small", "big"} - - for i := 0; i < 100; i++ { - record := sc.LogRecords().AppendEmpty() - record.Attributes().InsertString("name", "Test name "+strconv.Itoa(i)) - record.Attributes().InsertBool("is_alive", i%2 == 0) - record.Attributes().InsertInt("price", int64(i)) - nested := pcommon.NewValueMap() - typeIndex := i % 3 - nested.MapVal().InsertString("source", "Source "+strconv.Itoa(i)) - nested.MapVal().InsertString("type", types[typeIndex]) - nested.MapVal().InsertDouble("number", float64(i)) - record.Attributes().Insert("provider", nested) - } - - return ld.ResourceLogs().At(0).ScopeLogs().At(0).LogRecords() -} - func TestWriteTestLogsToCSV(t *testing.T) { t.Skip() f, _ := os.Create("test.csv") diff --git a/processor/stream_processor/parser/test_utils.go b/processor/stream_processor/parser/test_utils.go new file mode 100644 index 000000000000..922286d940a5 --- /dev/null +++ b/processor/stream_processor/parser/test_utils.go @@ -0,0 +1,29 @@ +package parser + +import ( + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/plog" + "strconv" +) + +func GenerateTestLogs() plog.LogRecordSlice { + + ld := plog.NewLogs() + sc := ld.ResourceLogs().AppendEmpty().ScopeLogs().AppendEmpty() + types := []string{"middle", "small", "big"} + + for i := 0; i < 100; i++ { + record := sc.LogRecords().AppendEmpty() + record.Attributes().InsertString("name", "Test name "+strconv.Itoa(i)) + record.Attributes().InsertBool("is_alive", i%2 == 0) + record.Attributes().InsertInt("price", int64(i)) + nested := pcommon.NewValueMap() + typeIndex := i % 3 + nested.MapVal().InsertString("source", "Source "+strconv.Itoa(i)) + nested.MapVal().InsertString("type", types[typeIndex]) + nested.MapVal().InsertDouble("number", float64(i)) + record.Attributes().Insert("provider", nested) + } + + return ld.ResourceLogs().At(0).ScopeLogs().At(0).LogRecords() +} diff --git a/processor/stream_processor/parser/visitor_utils.go b/processor/stream_processor/parser/visitor_utils.go index ce76d3affa70..8f2d3c183b27 100644 --- a/processor/stream_processor/parser/visitor_utils.go +++ b/processor/stream_processor/parser/visitor_utils.go @@ -8,6 +8,39 @@ import ( "strings" ) +func compareExpression(operator IComparisonOperatorContext, literalValue ILiteralValueContext, fieldValue pcommon.Value) (bool, error) { + switch literalValue.GetStart().GetTokenType() { + case SqlParserNUMERIC_LITERAL: + parsedValue, err := strconv.ParseFloat(fieldValue.AsString(), 64) + if err != nil { + return false, fmt.Errorf("can't convert record field value %q to numeric; %w", fieldValue.AsString(), err) + } + comparisonValue, err := strconv.ParseFloat(literalValue.GetText(), 64) + if err != nil { + return false, fmt.Errorf("can't convert comparison value %q to numeric; %w", literalValue.GetText(), err) + } + return compareNumeric(operator.GetStart().GetTokenType(), parsedValue, comparisonValue), nil + case SqlParserSTRING_LITERAL: + // we need to remove quotes + value := strings.TrimSuffix(strings.TrimPrefix(literalValue.GetText(), `'`), `'`) + return compareString(operator.GetStart().GetTokenType(), fieldValue.AsString(), value), nil + case SqlParserBOOLEAN_LITERAL: + parsedValue, err := strconv.ParseBool(fieldValue.AsString()) + if err != nil { + return false, fmt.Errorf("can't convert field value %q to boolean; %w", fieldValue.AsString(), err) + } + comparisonValue, err := strconv.ParseBool(literalValue.GetText()) + if err != nil { + return false, fmt.Errorf("can't convert comparison value %q to boolean; %w", literalValue.GetText(), err) + } + + return compareBool(operator.GetStart().GetTokenType(), parsedValue, comparisonValue), nil + + default: + return false, fmt.Errorf("missed literal value type %q", literalValue.GetText()) + } +} + func compareString(comparisonToken int, fieldVal, comparisonVal string) bool { switch comparisonToken { case SqlParserK_EQUAL: @@ -200,17 +233,10 @@ func getColumnIdentifier(column IColumnContext) string { } } -func KeyExists(key string, resultColumns []IColumnContext) bool { +// if key exists in resultColumns +func keyExists(key string, resultColumns []IColumnContext) bool { for _, col := range resultColumns { - var id string - switch col := col.GetRuleContext().(type) { - case *FunctionColContext: - id = col.IDENTIFIER().GetText() - case *IdentifierColContext: - id = col.IDENTIFIER().GetText() - default: - return false - } + id := getColumnIdentifier(col) if key == id { return true } @@ -218,35 +244,11 @@ func KeyExists(key string, resultColumns []IColumnContext) bool { return false } -func compareExpression(operator IComparisonOperatorContext, literalValue ILiteralValueContext, fieldValue pcommon.Value) (bool, error) { - switch literalValue.GetStart().GetTokenType() { - case SqlParserNUMERIC_LITERAL: - parsedValue, err := strconv.ParseFloat(fieldValue.AsString(), 64) - if err != nil { - return false, fmt.Errorf("can't convert record field value %q to numeric; %w", fieldValue.AsString(), err) - } - comparisonValue, err := strconv.ParseFloat(literalValue.GetText(), 64) - if err != nil { - return false, fmt.Errorf("can't convert comparison value %q to numeric; %w", literalValue.GetText(), err) - } - return compareNumeric(operator.GetStart().GetTokenType(), parsedValue, comparisonValue), nil - case SqlParserSTRING_LITERAL: - // we need to remove quotes - value := strings.TrimSuffix(strings.TrimPrefix(literalValue.GetText(), `'`), `'`) - return compareString(operator.GetStart().GetTokenType(), fieldValue.AsString(), value), nil - case SqlParserBOOLEAN_LITERAL: - parsedValue, err := strconv.ParseBool(fieldValue.AsString()) - if err != nil { - return false, fmt.Errorf("can't convert field value %q to boolean; %w", fieldValue.AsString(), err) - } - comparisonValue, err := strconv.ParseBool(literalValue.GetText()) - if err != nil { - return false, fmt.Errorf("can't convert comparison value %q to boolean; %w", literalValue.GetText(), err) - } - - return compareBool(operator.GetStart().GetTokenType(), parsedValue, comparisonValue), nil - - default: - return false, fmt.Errorf("missed literal value type %q", literalValue.GetText()) +func columnExistsInAttr(col IColumnContext, attr pcommon.Map) bool { + id := getColumnIdentifier(col) + _, ok := attr.Get(id) + if !ok { + return false } + return true } From 1b8d272dd6f2aaf5909eb0f50e1f9e591da9c240 Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Fri, 2 Sep 2022 17:47:26 +0300 Subject: [PATCH 22/31] support for nested fields in select list --- processor/stream_processor/Sql.g4 | 17 +- processor/stream_processor/parser/Sql.interp | 3 +- .../parser/sql_base_visitor.go | 14 +- .../stream_processor/parser/sql_parser.go | 835 +++++++++++++----- .../parser/sql_stream_group_by_test.go | 60 ++ .../parser/sql_stream_nested_test.go | 31 + .../parser/sql_stream_tumbling_test.go | 48 - .../parser/sql_stream_visitor.go | 188 ++-- .../stream_processor/parser/sql_visitor.go | 18 +- .../stream_processor/parser/visitor_utils.go | 115 ++- 10 files changed, 927 insertions(+), 402 deletions(-) create mode 100644 processor/stream_processor/parser/sql_stream_group_by_test.go diff --git a/processor/stream_processor/Sql.g4 b/processor/stream_processor/Sql.g4 index 28499aa0535b..6638f0cd08d5 100644 --- a/processor/stream_processor/Sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -23,13 +23,19 @@ resultColumns ; aggregationColumns - : (column COMMA)? (K_MIN | K_MAX | K_COUNT | K_AVG | K_SUM) L_BRACKET (column | STAR) R_BRACKET #selectAVG + : (column COMMA)? aggregationColumn (column | STAR) R_BRACKET #selectAggregation ; column - : IDENTIFIER #identifierCol - | (K_UPPER | K_LOWER ) L_BRACKET IDENTIFIER R_BRACKET #functionCol + : (IDENTIFIER | IDENTIFIER DOT IDENTIFIER) #identifierColumn + | (K_UPPER | K_LOWER ) L_BRACKET (IDENTIFIER | IDENTIFIER DOT IDENTIFIER) R_BRACKET #functionColumn + ; + + +aggregationColumn + : (K_MIN | K_MAX | K_COUNT | K_AVG | K_SUM) L_BRACKET ( IDENTIFIER | IDENTIFIER DOT IDENTIFIER) R_BRACKET # columnAggregation + | (IDENTIFIER | IDENTIFIER DOT IDENTIFIER)? K_COUNT L_BRACKET STAR R_BRACKET # columnCountAggregation ; @@ -47,12 +53,12 @@ expr ; simpleExpr - : IDENTIFIER comparisonOperator literalValue #simpleExpression + : IDENTIFIER comparisonOperator literalValue #simpleExpression | IDENTIFIER DOT IDENTIFIER comparisonOperator literalValue #nestedExpression ; compoundExpr - : L_BRACKET expr R_BRACKET #compoundExpression + : L_BRACKET expr R_BRACKET #compoundExpression ; comparisonOperator @@ -69,6 +75,7 @@ literalValue groupBy : K_GROUP_BY column + | ; diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp index 0161b412c45b..a1b796ac8bd0 100644 --- a/processor/stream_processor/parser/Sql.interp +++ b/processor/stream_processor/parser/Sql.interp @@ -95,6 +95,7 @@ windowTumbling resultColumns aggregationColumns column +aggregationColumn whereStatement expr simpleExpr @@ -105,4 +106,4 @@ groupBy atn: -[4, 1, 42, 138, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 33, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 54, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 62, 8, 3, 10, 3, 12, 3, 65, 9, 3, 1, 3, 3, 3, 68, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 73, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 79, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 88, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 97, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 102, 8, 7, 1, 7, 3, 7, 105, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 110, 8, 7, 10, 7, 12, 7, 113, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 125, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 0, 1, 14, 13, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 0, 5, 1, 0, 30, 34, 1, 0, 37, 38, 1, 0, 13, 14, 2, 0, 15, 23, 28, 29, 2, 0, 8, 8, 40, 41, 140, 0, 26, 1, 0, 0, 0, 2, 53, 1, 0, 0, 0, 4, 55, 1, 0, 0, 0, 6, 67, 1, 0, 0, 0, 8, 72, 1, 0, 0, 0, 10, 87, 1, 0, 0, 0, 12, 89, 1, 0, 0, 0, 14, 104, 1, 0, 0, 0, 16, 124, 1, 0, 0, 0, 18, 126, 1, 0, 0, 0, 20, 130, 1, 0, 0, 0, 22, 132, 1, 0, 0, 0, 24, 134, 1, 0, 0, 0, 26, 27, 3, 2, 1, 0, 27, 28, 5, 0, 0, 1, 28, 1, 1, 0, 0, 0, 29, 30, 5, 9, 0, 0, 30, 32, 3, 6, 3, 0, 31, 33, 3, 12, 6, 0, 32, 31, 1, 0, 0, 0, 32, 33, 1, 0, 0, 0, 33, 34, 1, 0, 0, 0, 34, 35, 5, 7, 0, 0, 35, 54, 1, 0, 0, 0, 36, 37, 5, 9, 0, 0, 37, 38, 3, 8, 4, 0, 38, 40, 3, 4, 2, 0, 39, 41, 3, 12, 6, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 5, 7, 0, 0, 43, 54, 1, 0, 0, 0, 44, 45, 5, 9, 0, 0, 45, 46, 3, 8, 4, 0, 46, 48, 3, 4, 2, 0, 47, 49, 3, 12, 6, 0, 48, 47, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 3, 24, 12, 0, 51, 52, 5, 7, 0, 0, 52, 54, 1, 0, 0, 0, 53, 29, 1, 0, 0, 0, 53, 36, 1, 0, 0, 0, 53, 44, 1, 0, 0, 0, 54, 3, 1, 0, 0, 0, 55, 56, 5, 11, 0, 0, 56, 57, 5, 40, 0, 0, 57, 5, 1, 0, 0, 0, 58, 63, 3, 10, 5, 0, 59, 60, 5, 3, 0, 0, 60, 62, 3, 10, 5, 0, 61, 59, 1, 0, 0, 0, 62, 65, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 63, 64, 1, 0, 0, 0, 64, 68, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 66, 68, 5, 42, 0, 0, 67, 58, 1, 0, 0, 0, 67, 66, 1, 0, 0, 0, 68, 7, 1, 0, 0, 0, 69, 70, 3, 10, 5, 0, 70, 71, 5, 3, 0, 0, 71, 73, 1, 0, 0, 0, 72, 69, 1, 0, 0, 0, 72, 73, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 75, 7, 0, 0, 0, 75, 78, 5, 4, 0, 0, 76, 79, 3, 10, 5, 0, 77, 79, 5, 42, 0, 0, 78, 76, 1, 0, 0, 0, 78, 77, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 81, 5, 5, 0, 0, 81, 9, 1, 0, 0, 0, 82, 88, 5, 39, 0, 0, 83, 84, 7, 1, 0, 0, 84, 85, 5, 4, 0, 0, 85, 86, 5, 39, 0, 0, 86, 88, 5, 5, 0, 0, 87, 82, 1, 0, 0, 0, 87, 83, 1, 0, 0, 0, 88, 11, 1, 0, 0, 0, 89, 90, 5, 10, 0, 0, 90, 91, 3, 14, 7, 0, 91, 13, 1, 0, 0, 0, 92, 93, 6, 7, -1, 0, 93, 105, 3, 16, 8, 0, 94, 97, 3, 18, 9, 0, 95, 97, 3, 16, 8, 0, 96, 94, 1, 0, 0, 0, 96, 95, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 101, 7, 2, 0, 0, 99, 102, 3, 18, 9, 0, 100, 102, 3, 16, 8, 0, 101, 99, 1, 0, 0, 0, 101, 100, 1, 0, 0, 0, 102, 105, 1, 0, 0, 0, 103, 105, 3, 18, 9, 0, 104, 92, 1, 0, 0, 0, 104, 96, 1, 0, 0, 0, 104, 103, 1, 0, 0, 0, 105, 111, 1, 0, 0, 0, 106, 107, 10, 2, 0, 0, 107, 108, 7, 2, 0, 0, 108, 110, 3, 14, 7, 3, 109, 106, 1, 0, 0, 0, 110, 113, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 15, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 114, 115, 5, 39, 0, 0, 115, 116, 3, 20, 10, 0, 116, 117, 3, 22, 11, 0, 117, 125, 1, 0, 0, 0, 118, 119, 5, 39, 0, 0, 119, 120, 5, 6, 0, 0, 120, 121, 5, 39, 0, 0, 121, 122, 3, 20, 10, 0, 122, 123, 3, 22, 11, 0, 123, 125, 1, 0, 0, 0, 124, 114, 1, 0, 0, 0, 124, 118, 1, 0, 0, 0, 125, 17, 1, 0, 0, 0, 126, 127, 5, 4, 0, 0, 127, 128, 3, 14, 7, 0, 128, 129, 5, 5, 0, 0, 129, 19, 1, 0, 0, 0, 130, 131, 7, 3, 0, 0, 131, 21, 1, 0, 0, 0, 132, 133, 7, 4, 0, 0, 133, 23, 1, 0, 0, 0, 134, 135, 5, 12, 0, 0, 135, 136, 3, 10, 5, 0, 136, 25, 1, 0, 0, 0, 14, 32, 40, 48, 53, 63, 67, 72, 78, 87, 96, 101, 104, 111, 124] \ No newline at end of file +[4, 1, 42, 172, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 35, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 43, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 51, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 56, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 64, 8, 3, 10, 3, 12, 3, 67, 9, 3, 1, 3, 3, 3, 70, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 75, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 80, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 88, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 96, 8, 5, 1, 5, 3, 5, 99, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 107, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 114, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 120, 8, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 129, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 134, 8, 8, 1, 8, 3, 8, 137, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 142, 8, 8, 10, 8, 12, 8, 145, 9, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 157, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 3, 13, 170, 8, 13, 1, 13, 0, 1, 16, 14, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 0, 5, 1, 0, 37, 38, 1, 0, 30, 34, 1, 0, 13, 14, 2, 0, 15, 23, 28, 29, 2, 0, 8, 8, 40, 41, 180, 0, 28, 1, 0, 0, 0, 2, 55, 1, 0, 0, 0, 4, 57, 1, 0, 0, 0, 6, 69, 1, 0, 0, 0, 8, 74, 1, 0, 0, 0, 10, 98, 1, 0, 0, 0, 12, 119, 1, 0, 0, 0, 14, 121, 1, 0, 0, 0, 16, 136, 1, 0, 0, 0, 18, 156, 1, 0, 0, 0, 20, 158, 1, 0, 0, 0, 22, 162, 1, 0, 0, 0, 24, 164, 1, 0, 0, 0, 26, 169, 1, 0, 0, 0, 28, 29, 3, 2, 1, 0, 29, 30, 5, 0, 0, 1, 30, 1, 1, 0, 0, 0, 31, 32, 5, 9, 0, 0, 32, 34, 3, 6, 3, 0, 33, 35, 3, 14, 7, 0, 34, 33, 1, 0, 0, 0, 34, 35, 1, 0, 0, 0, 35, 36, 1, 0, 0, 0, 36, 37, 5, 7, 0, 0, 37, 56, 1, 0, 0, 0, 38, 39, 5, 9, 0, 0, 39, 40, 3, 8, 4, 0, 40, 42, 3, 4, 2, 0, 41, 43, 3, 14, 7, 0, 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 45, 5, 7, 0, 0, 45, 56, 1, 0, 0, 0, 46, 47, 5, 9, 0, 0, 47, 48, 3, 8, 4, 0, 48, 50, 3, 4, 2, 0, 49, 51, 3, 14, 7, 0, 50, 49, 1, 0, 0, 0, 50, 51, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 53, 3, 26, 13, 0, 53, 54, 5, 7, 0, 0, 54, 56, 1, 0, 0, 0, 55, 31, 1, 0, 0, 0, 55, 38, 1, 0, 0, 0, 55, 46, 1, 0, 0, 0, 56, 3, 1, 0, 0, 0, 57, 58, 5, 11, 0, 0, 58, 59, 5, 40, 0, 0, 59, 5, 1, 0, 0, 0, 60, 65, 3, 10, 5, 0, 61, 62, 5, 3, 0, 0, 62, 64, 3, 10, 5, 0, 63, 61, 1, 0, 0, 0, 64, 67, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, 70, 1, 0, 0, 0, 67, 65, 1, 0, 0, 0, 68, 70, 5, 42, 0, 0, 69, 60, 1, 0, 0, 0, 69, 68, 1, 0, 0, 0, 70, 7, 1, 0, 0, 0, 71, 72, 3, 10, 5, 0, 72, 73, 5, 3, 0, 0, 73, 75, 1, 0, 0, 0, 74, 71, 1, 0, 0, 0, 74, 75, 1, 0, 0, 0, 75, 76, 1, 0, 0, 0, 76, 79, 3, 12, 6, 0, 77, 80, 3, 10, 5, 0, 78, 80, 5, 42, 0, 0, 79, 77, 1, 0, 0, 0, 79, 78, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 5, 5, 0, 0, 82, 9, 1, 0, 0, 0, 83, 88, 5, 39, 0, 0, 84, 85, 5, 39, 0, 0, 85, 86, 5, 6, 0, 0, 86, 88, 5, 39, 0, 0, 87, 83, 1, 0, 0, 0, 87, 84, 1, 0, 0, 0, 88, 99, 1, 0, 0, 0, 89, 90, 7, 0, 0, 0, 90, 95, 5, 4, 0, 0, 91, 96, 5, 39, 0, 0, 92, 93, 5, 39, 0, 0, 93, 94, 5, 6, 0, 0, 94, 96, 5, 39, 0, 0, 95, 91, 1, 0, 0, 0, 95, 92, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 99, 5, 5, 0, 0, 98, 87, 1, 0, 0, 0, 98, 89, 1, 0, 0, 0, 99, 11, 1, 0, 0, 0, 100, 101, 7, 1, 0, 0, 101, 106, 5, 4, 0, 0, 102, 107, 5, 39, 0, 0, 103, 104, 5, 39, 0, 0, 104, 105, 5, 6, 0, 0, 105, 107, 5, 39, 0, 0, 106, 102, 1, 0, 0, 0, 106, 103, 1, 0, 0, 0, 107, 108, 1, 0, 0, 0, 108, 120, 5, 5, 0, 0, 109, 114, 5, 39, 0, 0, 110, 111, 5, 39, 0, 0, 111, 112, 5, 6, 0, 0, 112, 114, 5, 39, 0, 0, 113, 109, 1, 0, 0, 0, 113, 110, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 115, 1, 0, 0, 0, 115, 116, 5, 30, 0, 0, 116, 117, 5, 4, 0, 0, 117, 118, 5, 42, 0, 0, 118, 120, 5, 5, 0, 0, 119, 100, 1, 0, 0, 0, 119, 113, 1, 0, 0, 0, 120, 13, 1, 0, 0, 0, 121, 122, 5, 10, 0, 0, 122, 123, 3, 16, 8, 0, 123, 15, 1, 0, 0, 0, 124, 125, 6, 8, -1, 0, 125, 137, 3, 18, 9, 0, 126, 129, 3, 20, 10, 0, 127, 129, 3, 18, 9, 0, 128, 126, 1, 0, 0, 0, 128, 127, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 133, 7, 2, 0, 0, 131, 134, 3, 20, 10, 0, 132, 134, 3, 18, 9, 0, 133, 131, 1, 0, 0, 0, 133, 132, 1, 0, 0, 0, 134, 137, 1, 0, 0, 0, 135, 137, 3, 20, 10, 0, 136, 124, 1, 0, 0, 0, 136, 128, 1, 0, 0, 0, 136, 135, 1, 0, 0, 0, 137, 143, 1, 0, 0, 0, 138, 139, 10, 2, 0, 0, 139, 140, 7, 2, 0, 0, 140, 142, 3, 16, 8, 3, 141, 138, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 17, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 147, 5, 39, 0, 0, 147, 148, 3, 22, 11, 0, 148, 149, 3, 24, 12, 0, 149, 157, 1, 0, 0, 0, 150, 151, 5, 39, 0, 0, 151, 152, 5, 6, 0, 0, 152, 153, 5, 39, 0, 0, 153, 154, 3, 22, 11, 0, 154, 155, 3, 24, 12, 0, 155, 157, 1, 0, 0, 0, 156, 146, 1, 0, 0, 0, 156, 150, 1, 0, 0, 0, 157, 19, 1, 0, 0, 0, 158, 159, 5, 4, 0, 0, 159, 160, 3, 16, 8, 0, 160, 161, 5, 5, 0, 0, 161, 21, 1, 0, 0, 0, 162, 163, 7, 3, 0, 0, 163, 23, 1, 0, 0, 0, 164, 165, 7, 4, 0, 0, 165, 25, 1, 0, 0, 0, 166, 167, 5, 12, 0, 0, 167, 170, 3, 10, 5, 0, 168, 170, 1, 0, 0, 0, 169, 166, 1, 0, 0, 0, 169, 168, 1, 0, 0, 0, 170, 27, 1, 0, 0, 0, 20, 34, 42, 50, 55, 65, 69, 74, 79, 87, 95, 98, 106, 113, 119, 128, 133, 136, 143, 156, 169] \ No newline at end of file diff --git a/processor/stream_processor/parser/sql_base_visitor.go b/processor/stream_processor/parser/sql_base_visitor.go index b04a176df489..f4106250f3b1 100644 --- a/processor/stream_processor/parser/sql_base_visitor.go +++ b/processor/stream_processor/parser/sql_base_visitor.go @@ -36,15 +36,23 @@ func (v *BaseSqlVisitor) VisitSelectStar(ctx *SelectStarContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitSelectAVG(ctx *SelectAVGContext) interface{} { +func (v *BaseSqlVisitor) VisitSelectAggregation(ctx *SelectAggregationContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitIdentifierCol(ctx *IdentifierColContext) interface{} { +func (v *BaseSqlVisitor) VisitIdentifierColumn(ctx *IdentifierColumnContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitFunctionCol(ctx *FunctionColContext) interface{} { +func (v *BaseSqlVisitor) VisitFunctionColumn(ctx *FunctionColumnContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitColumnAggregation(ctx *ColumnAggregationContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitColumnCountAggregation(ctx *ColumnCountAggregationContext) interface{} { return v.VisitChildren(ctx) } diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index 9a77a4682717..1a304a4d6409 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -48,68 +48,84 @@ func sqlParserInit() { } staticData.ruleNames = []string{ "sqlQuery", "selectQuery", "windowTumbling", "resultColumns", "aggregationColumns", - "column", "whereStatement", "expr", "simpleExpr", "compoundExpr", "comparisonOperator", - "literalValue", "groupBy", + "column", "aggregationColumn", "whereStatement", "expr", "simpleExpr", + "compoundExpr", "comparisonOperator", "literalValue", "groupBy", } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 42, 138, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 42, 172, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, - 10, 2, 11, 7, 11, 2, 12, 7, 12, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, - 1, 33, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 54, - 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 62, 8, 3, 10, 3, 12, 3, - 65, 9, 3, 1, 3, 3, 3, 68, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 73, 8, 4, 1, 4, - 1, 4, 1, 4, 1, 4, 3, 4, 79, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, - 5, 3, 5, 88, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 97, - 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 102, 8, 7, 1, 7, 3, 7, 105, 8, 7, 1, 7, 1, - 7, 1, 7, 5, 7, 110, 8, 7, 10, 7, 12, 7, 113, 9, 7, 1, 8, 1, 8, 1, 8, 1, - 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 125, 8, 8, 1, 9, 1, 9, 1, - 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 0, 1, - 14, 13, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 0, 5, 1, 0, 30, - 34, 1, 0, 37, 38, 1, 0, 13, 14, 2, 0, 15, 23, 28, 29, 2, 0, 8, 8, 40, 41, - 140, 0, 26, 1, 0, 0, 0, 2, 53, 1, 0, 0, 0, 4, 55, 1, 0, 0, 0, 6, 67, 1, - 0, 0, 0, 8, 72, 1, 0, 0, 0, 10, 87, 1, 0, 0, 0, 12, 89, 1, 0, 0, 0, 14, - 104, 1, 0, 0, 0, 16, 124, 1, 0, 0, 0, 18, 126, 1, 0, 0, 0, 20, 130, 1, - 0, 0, 0, 22, 132, 1, 0, 0, 0, 24, 134, 1, 0, 0, 0, 26, 27, 3, 2, 1, 0, - 27, 28, 5, 0, 0, 1, 28, 1, 1, 0, 0, 0, 29, 30, 5, 9, 0, 0, 30, 32, 3, 6, - 3, 0, 31, 33, 3, 12, 6, 0, 32, 31, 1, 0, 0, 0, 32, 33, 1, 0, 0, 0, 33, - 34, 1, 0, 0, 0, 34, 35, 5, 7, 0, 0, 35, 54, 1, 0, 0, 0, 36, 37, 5, 9, 0, - 0, 37, 38, 3, 8, 4, 0, 38, 40, 3, 4, 2, 0, 39, 41, 3, 12, 6, 0, 40, 39, - 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 5, 7, 0, 0, - 43, 54, 1, 0, 0, 0, 44, 45, 5, 9, 0, 0, 45, 46, 3, 8, 4, 0, 46, 48, 3, - 4, 2, 0, 47, 49, 3, 12, 6, 0, 48, 47, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, - 50, 1, 0, 0, 0, 50, 51, 3, 24, 12, 0, 51, 52, 5, 7, 0, 0, 52, 54, 1, 0, - 0, 0, 53, 29, 1, 0, 0, 0, 53, 36, 1, 0, 0, 0, 53, 44, 1, 0, 0, 0, 54, 3, - 1, 0, 0, 0, 55, 56, 5, 11, 0, 0, 56, 57, 5, 40, 0, 0, 57, 5, 1, 0, 0, 0, - 58, 63, 3, 10, 5, 0, 59, 60, 5, 3, 0, 0, 60, 62, 3, 10, 5, 0, 61, 59, 1, - 0, 0, 0, 62, 65, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 63, 64, 1, 0, 0, 0, 64, - 68, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 66, 68, 5, 42, 0, 0, 67, 58, 1, 0, - 0, 0, 67, 66, 1, 0, 0, 0, 68, 7, 1, 0, 0, 0, 69, 70, 3, 10, 5, 0, 70, 71, - 5, 3, 0, 0, 71, 73, 1, 0, 0, 0, 72, 69, 1, 0, 0, 0, 72, 73, 1, 0, 0, 0, - 73, 74, 1, 0, 0, 0, 74, 75, 7, 0, 0, 0, 75, 78, 5, 4, 0, 0, 76, 79, 3, - 10, 5, 0, 77, 79, 5, 42, 0, 0, 78, 76, 1, 0, 0, 0, 78, 77, 1, 0, 0, 0, - 79, 80, 1, 0, 0, 0, 80, 81, 5, 5, 0, 0, 81, 9, 1, 0, 0, 0, 82, 88, 5, 39, - 0, 0, 83, 84, 7, 1, 0, 0, 84, 85, 5, 4, 0, 0, 85, 86, 5, 39, 0, 0, 86, - 88, 5, 5, 0, 0, 87, 82, 1, 0, 0, 0, 87, 83, 1, 0, 0, 0, 88, 11, 1, 0, 0, - 0, 89, 90, 5, 10, 0, 0, 90, 91, 3, 14, 7, 0, 91, 13, 1, 0, 0, 0, 92, 93, - 6, 7, -1, 0, 93, 105, 3, 16, 8, 0, 94, 97, 3, 18, 9, 0, 95, 97, 3, 16, - 8, 0, 96, 94, 1, 0, 0, 0, 96, 95, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 101, - 7, 2, 0, 0, 99, 102, 3, 18, 9, 0, 100, 102, 3, 16, 8, 0, 101, 99, 1, 0, - 0, 0, 101, 100, 1, 0, 0, 0, 102, 105, 1, 0, 0, 0, 103, 105, 3, 18, 9, 0, - 104, 92, 1, 0, 0, 0, 104, 96, 1, 0, 0, 0, 104, 103, 1, 0, 0, 0, 105, 111, - 1, 0, 0, 0, 106, 107, 10, 2, 0, 0, 107, 108, 7, 2, 0, 0, 108, 110, 3, 14, - 7, 3, 109, 106, 1, 0, 0, 0, 110, 113, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, - 111, 112, 1, 0, 0, 0, 112, 15, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 114, 115, - 5, 39, 0, 0, 115, 116, 3, 20, 10, 0, 116, 117, 3, 22, 11, 0, 117, 125, - 1, 0, 0, 0, 118, 119, 5, 39, 0, 0, 119, 120, 5, 6, 0, 0, 120, 121, 5, 39, - 0, 0, 121, 122, 3, 20, 10, 0, 122, 123, 3, 22, 11, 0, 123, 125, 1, 0, 0, - 0, 124, 114, 1, 0, 0, 0, 124, 118, 1, 0, 0, 0, 125, 17, 1, 0, 0, 0, 126, - 127, 5, 4, 0, 0, 127, 128, 3, 14, 7, 0, 128, 129, 5, 5, 0, 0, 129, 19, - 1, 0, 0, 0, 130, 131, 7, 3, 0, 0, 131, 21, 1, 0, 0, 0, 132, 133, 7, 4, - 0, 0, 133, 23, 1, 0, 0, 0, 134, 135, 5, 12, 0, 0, 135, 136, 3, 10, 5, 0, - 136, 25, 1, 0, 0, 0, 14, 32, 40, 48, 53, 63, 67, 72, 78, 87, 96, 101, 104, - 111, 124, + 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 1, 0, 1, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 3, 1, 35, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 43, + 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 51, 8, 1, 1, 1, 1, 1, 1, + 1, 3, 1, 56, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 64, 8, 3, + 10, 3, 12, 3, 67, 9, 3, 1, 3, 3, 3, 70, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 75, + 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 80, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, + 5, 3, 5, 88, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 96, 8, 5, + 1, 5, 3, 5, 99, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 107, 8, + 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 114, 8, 6, 1, 6, 1, 6, 1, 6, 1, + 6, 3, 6, 120, 8, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 129, + 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 134, 8, 8, 1, 8, 3, 8, 137, 8, 8, 1, 8, 1, + 8, 1, 8, 5, 8, 142, 8, 8, 10, 8, 12, 8, 145, 9, 8, 1, 9, 1, 9, 1, 9, 1, + 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 157, 8, 9, 1, 10, 1, 10, 1, + 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 3, 13, 170, + 8, 13, 1, 13, 0, 1, 16, 14, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, + 24, 26, 0, 5, 1, 0, 37, 38, 1, 0, 30, 34, 1, 0, 13, 14, 2, 0, 15, 23, 28, + 29, 2, 0, 8, 8, 40, 41, 180, 0, 28, 1, 0, 0, 0, 2, 55, 1, 0, 0, 0, 4, 57, + 1, 0, 0, 0, 6, 69, 1, 0, 0, 0, 8, 74, 1, 0, 0, 0, 10, 98, 1, 0, 0, 0, 12, + 119, 1, 0, 0, 0, 14, 121, 1, 0, 0, 0, 16, 136, 1, 0, 0, 0, 18, 156, 1, + 0, 0, 0, 20, 158, 1, 0, 0, 0, 22, 162, 1, 0, 0, 0, 24, 164, 1, 0, 0, 0, + 26, 169, 1, 0, 0, 0, 28, 29, 3, 2, 1, 0, 29, 30, 5, 0, 0, 1, 30, 1, 1, + 0, 0, 0, 31, 32, 5, 9, 0, 0, 32, 34, 3, 6, 3, 0, 33, 35, 3, 14, 7, 0, 34, + 33, 1, 0, 0, 0, 34, 35, 1, 0, 0, 0, 35, 36, 1, 0, 0, 0, 36, 37, 5, 7, 0, + 0, 37, 56, 1, 0, 0, 0, 38, 39, 5, 9, 0, 0, 39, 40, 3, 8, 4, 0, 40, 42, + 3, 4, 2, 0, 41, 43, 3, 14, 7, 0, 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, + 43, 44, 1, 0, 0, 0, 44, 45, 5, 7, 0, 0, 45, 56, 1, 0, 0, 0, 46, 47, 5, + 9, 0, 0, 47, 48, 3, 8, 4, 0, 48, 50, 3, 4, 2, 0, 49, 51, 3, 14, 7, 0, 50, + 49, 1, 0, 0, 0, 50, 51, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 53, 3, 26, + 13, 0, 53, 54, 5, 7, 0, 0, 54, 56, 1, 0, 0, 0, 55, 31, 1, 0, 0, 0, 55, + 38, 1, 0, 0, 0, 55, 46, 1, 0, 0, 0, 56, 3, 1, 0, 0, 0, 57, 58, 5, 11, 0, + 0, 58, 59, 5, 40, 0, 0, 59, 5, 1, 0, 0, 0, 60, 65, 3, 10, 5, 0, 61, 62, + 5, 3, 0, 0, 62, 64, 3, 10, 5, 0, 63, 61, 1, 0, 0, 0, 64, 67, 1, 0, 0, 0, + 65, 63, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, 70, 1, 0, 0, 0, 67, 65, 1, + 0, 0, 0, 68, 70, 5, 42, 0, 0, 69, 60, 1, 0, 0, 0, 69, 68, 1, 0, 0, 0, 70, + 7, 1, 0, 0, 0, 71, 72, 3, 10, 5, 0, 72, 73, 5, 3, 0, 0, 73, 75, 1, 0, 0, + 0, 74, 71, 1, 0, 0, 0, 74, 75, 1, 0, 0, 0, 75, 76, 1, 0, 0, 0, 76, 79, + 3, 12, 6, 0, 77, 80, 3, 10, 5, 0, 78, 80, 5, 42, 0, 0, 79, 77, 1, 0, 0, + 0, 79, 78, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 5, 5, 0, 0, 82, 9, 1, + 0, 0, 0, 83, 88, 5, 39, 0, 0, 84, 85, 5, 39, 0, 0, 85, 86, 5, 6, 0, 0, + 86, 88, 5, 39, 0, 0, 87, 83, 1, 0, 0, 0, 87, 84, 1, 0, 0, 0, 88, 99, 1, + 0, 0, 0, 89, 90, 7, 0, 0, 0, 90, 95, 5, 4, 0, 0, 91, 96, 5, 39, 0, 0, 92, + 93, 5, 39, 0, 0, 93, 94, 5, 6, 0, 0, 94, 96, 5, 39, 0, 0, 95, 91, 1, 0, + 0, 0, 95, 92, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 99, 5, 5, 0, 0, 98, 87, + 1, 0, 0, 0, 98, 89, 1, 0, 0, 0, 99, 11, 1, 0, 0, 0, 100, 101, 7, 1, 0, + 0, 101, 106, 5, 4, 0, 0, 102, 107, 5, 39, 0, 0, 103, 104, 5, 39, 0, 0, + 104, 105, 5, 6, 0, 0, 105, 107, 5, 39, 0, 0, 106, 102, 1, 0, 0, 0, 106, + 103, 1, 0, 0, 0, 107, 108, 1, 0, 0, 0, 108, 120, 5, 5, 0, 0, 109, 114, + 5, 39, 0, 0, 110, 111, 5, 39, 0, 0, 111, 112, 5, 6, 0, 0, 112, 114, 5, + 39, 0, 0, 113, 109, 1, 0, 0, 0, 113, 110, 1, 0, 0, 0, 113, 114, 1, 0, 0, + 0, 114, 115, 1, 0, 0, 0, 115, 116, 5, 30, 0, 0, 116, 117, 5, 4, 0, 0, 117, + 118, 5, 42, 0, 0, 118, 120, 5, 5, 0, 0, 119, 100, 1, 0, 0, 0, 119, 113, + 1, 0, 0, 0, 120, 13, 1, 0, 0, 0, 121, 122, 5, 10, 0, 0, 122, 123, 3, 16, + 8, 0, 123, 15, 1, 0, 0, 0, 124, 125, 6, 8, -1, 0, 125, 137, 3, 18, 9, 0, + 126, 129, 3, 20, 10, 0, 127, 129, 3, 18, 9, 0, 128, 126, 1, 0, 0, 0, 128, + 127, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 133, 7, 2, 0, 0, 131, 134, + 3, 20, 10, 0, 132, 134, 3, 18, 9, 0, 133, 131, 1, 0, 0, 0, 133, 132, 1, + 0, 0, 0, 134, 137, 1, 0, 0, 0, 135, 137, 3, 20, 10, 0, 136, 124, 1, 0, + 0, 0, 136, 128, 1, 0, 0, 0, 136, 135, 1, 0, 0, 0, 137, 143, 1, 0, 0, 0, + 138, 139, 10, 2, 0, 0, 139, 140, 7, 2, 0, 0, 140, 142, 3, 16, 8, 3, 141, + 138, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, + 1, 0, 0, 0, 144, 17, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 147, 5, 39, + 0, 0, 147, 148, 3, 22, 11, 0, 148, 149, 3, 24, 12, 0, 149, 157, 1, 0, 0, + 0, 150, 151, 5, 39, 0, 0, 151, 152, 5, 6, 0, 0, 152, 153, 5, 39, 0, 0, + 153, 154, 3, 22, 11, 0, 154, 155, 3, 24, 12, 0, 155, 157, 1, 0, 0, 0, 156, + 146, 1, 0, 0, 0, 156, 150, 1, 0, 0, 0, 157, 19, 1, 0, 0, 0, 158, 159, 5, + 4, 0, 0, 159, 160, 3, 16, 8, 0, 160, 161, 5, 5, 0, 0, 161, 21, 1, 0, 0, + 0, 162, 163, 7, 3, 0, 0, 163, 23, 1, 0, 0, 0, 164, 165, 7, 4, 0, 0, 165, + 25, 1, 0, 0, 0, 166, 167, 5, 12, 0, 0, 167, 170, 3, 10, 5, 0, 168, 170, + 1, 0, 0, 0, 169, 166, 1, 0, 0, 0, 169, 168, 1, 0, 0, 0, 170, 27, 1, 0, + 0, 0, 20, 34, 42, 50, 55, 65, 69, 74, 79, 87, 95, 98, 106, 113, 119, 128, + 133, 136, 143, 156, 169, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -200,13 +216,14 @@ const ( SqlParserRULE_resultColumns = 3 SqlParserRULE_aggregationColumns = 4 SqlParserRULE_column = 5 - SqlParserRULE_whereStatement = 6 - SqlParserRULE_expr = 7 - SqlParserRULE_simpleExpr = 8 - SqlParserRULE_compoundExpr = 9 - SqlParserRULE_comparisonOperator = 10 - SqlParserRULE_literalValue = 11 - SqlParserRULE_groupBy = 12 + SqlParserRULE_aggregationColumn = 6 + SqlParserRULE_whereStatement = 7 + SqlParserRULE_expr = 8 + SqlParserRULE_simpleExpr = 9 + SqlParserRULE_compoundExpr = 10 + SqlParserRULE_comparisonOperator = 11 + SqlParserRULE_literalValue = 12 + SqlParserRULE_groupBy = 13 ) // ISqlQueryContext is an interface to support dynamic dispatch. @@ -310,11 +327,11 @@ func (p *SqlParser) SqlQuery() (localctx ISqlQueryContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(26) + p.SetState(28) p.SelectQuery() } { - p.SetState(27) + p.SetState(29) p.Match(SqlParserEOF) } @@ -647,33 +664,33 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { } }() - p.SetState(53) + p.SetState(55) p.GetErrorHandler().Sync(p) switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 3, p.GetParserRuleContext()) { case 1: localctx = NewSelectSimpleContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(29) + p.SetState(31) p.Match(SqlParserK_SELECT) } { - p.SetState(30) + p.SetState(32) p.ResultColumns() } - p.SetState(32) + p.SetState(34) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(31) + p.SetState(33) p.WhereStatement() } } { - p.SetState(34) + p.SetState(36) p.Match(SqlParserEOQ) } @@ -681,30 +698,30 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { localctx = NewSelectTumblingContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(36) + p.SetState(38) p.Match(SqlParserK_SELECT) } { - p.SetState(37) + p.SetState(39) p.AggregationColumns() } { - p.SetState(38) + p.SetState(40) p.WindowTumbling() } - p.SetState(40) + p.SetState(42) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(39) + p.SetState(41) p.WhereStatement() } } { - p.SetState(42) + p.SetState(44) p.Match(SqlParserEOQ) } @@ -712,34 +729,34 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { localctx = NewSelectTumblingGroupByContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(44) + p.SetState(46) p.Match(SqlParserK_SELECT) } { - p.SetState(45) + p.SetState(47) p.AggregationColumns() } { - p.SetState(46) + p.SetState(48) p.WindowTumbling() } - p.SetState(48) + p.SetState(50) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(47) + p.SetState(49) p.WhereStatement() } } { - p.SetState(50) + p.SetState(52) p.GroupBy() } { - p.SetState(51) + p.SetState(53) p.Match(SqlParserEOQ) } @@ -837,11 +854,11 @@ func (p *SqlParser) WindowTumbling() (localctx IWindowTumblingContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(55) + p.SetState(57) p.Match(SqlParserK_WINDOW_TUMBLING) } { - p.SetState(56) + p.SetState(58) p.Match(SqlParserNUMERIC_LITERAL) } @@ -1031,7 +1048,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { } }() - p.SetState(67) + p.SetState(69) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { @@ -1039,24 +1056,24 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectColumnsContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(58) + p.SetState(60) p.Column() } - p.SetState(63) + p.SetState(65) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for _la == SqlParserCOMMA { { - p.SetState(59) + p.SetState(61) p.Match(SqlParserCOMMA) } { - p.SetState(60) + p.SetState(62) p.Column() } - p.SetState(65) + p.SetState(67) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } @@ -1065,7 +1082,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectStarContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(66) + p.SetState(68) p.Match(SqlParserSTAR) } @@ -1126,12 +1143,12 @@ func (s *AggregationColumnsContext) ToStringTree(ruleNames []string, recog antlr return antlr.TreesStringTree(s, ruleNames, recog) } -type SelectAVGContext struct { +type SelectAggregationContext struct { *AggregationColumnsContext } -func NewSelectAVGContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectAVGContext { - var p = new(SelectAVGContext) +func NewSelectAggregationContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectAggregationContext { + var p = new(SelectAggregationContext) p.AggregationColumnsContext = NewEmptyAggregationColumnsContext() p.parser = parser @@ -1140,39 +1157,31 @@ func NewSelectAVGContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *Sele return p } -func (s *SelectAVGContext) GetRuleContext() antlr.RuleContext { +func (s *SelectAggregationContext) GetRuleContext() antlr.RuleContext { return s } -func (s *SelectAVGContext) L_BRACKET() antlr.TerminalNode { - return s.GetToken(SqlParserL_BRACKET, 0) -} - -func (s *SelectAVGContext) R_BRACKET() antlr.TerminalNode { - return s.GetToken(SqlParserR_BRACKET, 0) -} - -func (s *SelectAVGContext) K_MIN() antlr.TerminalNode { - return s.GetToken(SqlParserK_MIN, 0) -} - -func (s *SelectAVGContext) K_MAX() antlr.TerminalNode { - return s.GetToken(SqlParserK_MAX, 0) -} +func (s *SelectAggregationContext) AggregationColumn() IAggregationColumnContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAggregationColumnContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } -func (s *SelectAVGContext) K_COUNT() antlr.TerminalNode { - return s.GetToken(SqlParserK_COUNT, 0) -} + if t == nil { + return nil + } -func (s *SelectAVGContext) K_AVG() antlr.TerminalNode { - return s.GetToken(SqlParserK_AVG, 0) + return t.(IAggregationColumnContext) } -func (s *SelectAVGContext) K_SUM() antlr.TerminalNode { - return s.GetToken(SqlParserK_SUM, 0) +func (s *SelectAggregationContext) R_BRACKET() antlr.TerminalNode { + return s.GetToken(SqlParserR_BRACKET, 0) } -func (s *SelectAVGContext) AllColumn() []IColumnContext { +func (s *SelectAggregationContext) AllColumn() []IColumnContext { children := s.GetChildren() len := 0 for _, ctx := range children { @@ -1193,7 +1202,7 @@ func (s *SelectAVGContext) AllColumn() []IColumnContext { return tst } -func (s *SelectAVGContext) Column(i int) IColumnContext { +func (s *SelectAggregationContext) Column(i int) IColumnContext { var t antlr.RuleContext j := 0 for _, ctx := range s.GetChildren() { @@ -1213,18 +1222,18 @@ func (s *SelectAVGContext) Column(i int) IColumnContext { return t.(IColumnContext) } -func (s *SelectAVGContext) STAR() antlr.TerminalNode { +func (s *SelectAggregationContext) STAR() antlr.TerminalNode { return s.GetToken(SqlParserSTAR, 0) } -func (s *SelectAVGContext) COMMA() antlr.TerminalNode { +func (s *SelectAggregationContext) COMMA() antlr.TerminalNode { return s.GetToken(SqlParserCOMMA, 0) } -func (s *SelectAVGContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *SelectAggregationContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case SqlVisitor: - return t.VisitSelectAVG(s) + return t.VisitSelectAggregation(s) default: return t.VisitChildren(s) @@ -1237,7 +1246,6 @@ func (p *SqlParser) AggregationColumns() (localctx IAggregationColumnsContext) { localctx = NewAggregationColumnsContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 8, SqlParserRULE_aggregationColumns) - var _la int defer func() { p.ExitRule() @@ -1255,51 +1263,39 @@ func (p *SqlParser) AggregationColumns() (localctx IAggregationColumnsContext) { } }() - localctx = NewSelectAVGContext(p, localctx) + localctx = NewSelectAggregationContext(p, localctx) p.EnterOuterAlt(localctx, 1) - p.SetState(72) + p.SetState(74) p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - if ((_la-37)&-(0x1f+1)) == 0 && ((1< 1 { + if key == typedCol.IDENTIFIER(0).GetText() && nestedKey == typedCol.IDENTIFIER(1).GetText() { + nestedFound = true + return false + } + } + case *FunctionColumnContext: + if len(typedCol.AllIDENTIFIER()) > 1 { + if key == typedCol.IDENTIFIER(0).GetText() && nestedKey == typedCol.IDENTIFIER(1).GetText() { + nestedFound = true + return false + } + } + } + } + return true + }) + + return !nestedFound } -func columnExistsInAttr(col IColumnContext, attr pcommon.Map) bool { - id := getColumnIdentifier(col) - _, ok := attr.Get(id) +// check if field exists in attr +func fieldExistsInAttr(fieldName string, attr pcommon.Map) error { + _, ok := attr.Get(fieldName) if !ok { - return false + return fmt.Errorf("field %q missed", fieldName) } - return true + return nil +} + +// check is nested field exists +func nestedFieldExistsInAttr(fieldName, nestedFieldName string, attr pcommon.Map) error { + value, ok := attr.Get(fieldName) + if !ok { + return fmt.Errorf("field %q missed", fieldName) + } + + //if this nested field + if value.Type() != pcommon.ValueTypeMap { + return fmt.Errorf("field %q isn't nested", fieldName) + } + + _, ok = value.MapVal().Get(nestedFieldName) + if !ok { + return fmt.Errorf("field %q missed nested field %q", fieldName, nestedFieldName) + } + + return nil +} + +func getSelectColumnsFromWhereCtx(ctx *WhereStmtContext) *SelectColumnsContext { + for _, resCtx := range ctx.GetParent().GetChildren() { + resColumnCtx, ok := resCtx.(*SelectColumnsContext) + if !ok { + continue + } + return resColumnCtx + } + return nil } From 3a36c46ce8fa6ac3c96c1ffed9f3170c54c6d8ee Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Mon, 5 Sep 2022 15:29:55 +0300 Subject: [PATCH 23/31] nested field support update --- .../parser/sql_stream_visitor.go | 106 ++++++++++++------ .../parser/sql_stream_visitor_test.go | 4 +- .../stream_processor/parser/visitor_utils.go | 12 +- 3 files changed, 77 insertions(+), 45 deletions(-) diff --git a/processor/stream_processor/parser/sql_stream_visitor.go b/processor/stream_processor/parser/sql_stream_visitor.go index e0c3de627625..66b60a6545df 100644 --- a/processor/stream_processor/parser/sql_stream_visitor.go +++ b/processor/stream_processor/parser/sql_stream_visitor.go @@ -21,8 +21,14 @@ type SqlStreamVisitor struct { tumblingPeriod time.Duration - logRecords plog.LogRecordSlice - currentRecord plog.LogRecord + // this is what we've got + origLogRecords plog.LogRecordSlice + currentOrigRecord plog.LogRecord + + // this is logs to emin + resultLogRecords plog.LogRecordSlice + currentResultRecord plog.LogRecord + groupByLogRecords map[string]plog.LogRecordSlice in <-chan plog.LogRecordSlice @@ -63,15 +69,20 @@ func (v *SqlStreamVisitor) startSimpleWorkerLoop() { for { select { - case v.logRecords = <-v.in: + case v.origLogRecords = <-v.in: + v.resultLogRecords = plog.NewLogRecordSlice() if err := v.runQuery(); err != nil { v.outErr <- err break } - v.out <- v.logRecords - v.logRecords = plog.NewLogRecordSlice() + v.out <- v.resultLogRecords + v.origLogRecords = plog.NewLogRecordSlice() + v.resultLogRecords = plog.NewLogRecordSlice() case <-v.shutdownC: + if v.resultLogRecords.Len() > 0 { + v.out <- v.resultLogRecords + } v.logger.Debug("sql engine shutting down") return @@ -81,14 +92,14 @@ func (v *SqlStreamVisitor) startSimpleWorkerLoop() { } func (v *SqlStreamVisitor) startWindowTumblingLoop() { - v.logRecords = plog.NewLogRecordSlice() + v.origLogRecords = plog.NewLogRecordSlice() ticker := time.NewTicker(v.tumblingPeriod) go func() { for { select { case ls := <-v.in: - ls.MoveAndAppendTo(v.logRecords) + ls.MoveAndAppendTo(v.origLogRecords) case <-v.shutdownC: v.logger.Debug("sql engine shutting down") return @@ -100,13 +111,13 @@ func (v *SqlStreamVisitor) startWindowTumblingLoop() { for { select { case <-ticker.C: - if v.logRecords.Len() > 0 { + if v.origLogRecords.Len() > 0 { if err := v.runQuery(); err != nil { v.outErr <- err break } - v.out <- v.logRecords - v.logRecords = plog.NewLogRecordSlice() + v.out <- v.origLogRecords + v.origLogRecords = plog.NewLogRecordSlice() } case <-v.shutdownC: v.logger.Debug("sql engine shutting down") @@ -132,7 +143,7 @@ func (v *SqlStreamVisitor) runQuery() error { } func (v *SqlStreamVisitor) GetResult() (plog.LogRecordSlice, error) { - return v.logRecords, nil + return v.origLogRecords, nil } func (v *SqlStreamVisitor) Visit(tree antlr.ParseTree) interface{} { @@ -200,8 +211,8 @@ func (v *SqlStreamVisitor) VisitSelectTumblingGroupBy(ctx *SelectTumblingGroupBy func (v *SqlStreamVisitor) VisitGroupBy(ctx *GroupByContext) interface{} { //v.groupByLogRecords = make(map[string]plog.LogRecordSlice) - for i := 0; i < v.logRecords.Len(); i++ { - record := v.logRecords.At(i) + for i := 0; i < v.origLogRecords.Len(); i++ { + record := v.origLogRecords.At(i) groupByField, ok := record.Attributes().Get(ctx.Column().GetText()) if !ok { return fmt.Errorf("group by field %q missed", ctx.Column().GetText()) @@ -220,12 +231,9 @@ func (v *SqlStreamVisitor) VisitGroupBy(ctx *GroupByContext) interface{} { // VisitSelectColumns is called in case of missed where statement and removes missed attributes func (v *SqlStreamVisitor) VisitSelectColumns(ctx *SelectColumnsContext) interface{} { var err error - for i := 0; i < v.logRecords.Len(); i++ { - v.currentRecord = v.logRecords.At(i) - - v.currentRecord.Attributes().RemoveIf(func(k string, value pcommon.Value) bool { - return fieldExists(k, value, ctx.AllColumn()) - }) + for i := 0; i < v.origLogRecords.Len(); i++ { + v.currentOrigRecord = v.origLogRecords.At(i) + v.currentResultRecord = plog.NewLogRecord() for _, col := range ctx.AllColumn() { switch res := col.Accept(v).(type) { @@ -234,6 +242,8 @@ func (v *SqlStreamVisitor) VisitSelectColumns(ctx *SelectColumnsContext) interfa } } + v.currentResultRecord.MoveTo(v.resultLogRecords.AppendEmpty()) + } return err @@ -246,9 +256,11 @@ func (v *SqlStreamVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { if ctx.Expr() == nil { return nil } + resColumnCtx := getSelectColumnsFromWhereCtx(ctx) - v.logRecords.RemoveIf(func(record plog.LogRecord) bool { - v.currentRecord = record + v.origLogRecords.RemoveIf(func(record plog.LogRecord) bool { + v.currentOrigRecord = record + v.currentResultRecord = plog.NewLogRecord() switch res := ctx.Expr().Accept(v).(type) { case error: @@ -256,15 +268,15 @@ func (v *SqlStreamVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { return false case bool: - resColumnCtx := getSelectColumnsFromWhereCtx(ctx) - if errRes := v.applySelectColumns(resColumnCtx); errRes != nil { - err = errRes + if !res { + return true } - if errRes := v.adjustResultColumns(resColumnCtx); errRes != nil { + + if errRes := v.applySelectColumns(resColumnCtx); errRes != nil { err = errRes } - return !res + return false } return false }) @@ -273,12 +285,19 @@ func (v *SqlStreamVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { } func (v *SqlStreamVisitor) applySelectColumns(ctx *SelectColumnsContext) error { + //if * in select list + if ctx == nil { + v.currentOrigRecord.MoveTo(v.resultLogRecords.AppendEmpty()) + return nil + } + for _, col := range ctx.AllColumn() { switch res := col.Accept(v).(type) { case error: return res } } + v.currentResultRecord.MoveTo(v.resultLogRecords.AppendEmpty()) return nil } @@ -287,14 +306,14 @@ func (v *SqlStreamVisitor) adjustResultColumns(ctx *SelectColumnsContext) error // Remove attributes which are not listed in value columns statement // We can't use RemoveIf as it takes only values - removed := make([]string, 0, v.currentRecord.Attributes().Len()) + removed := make([]string, 0, v.currentOrigRecord.Attributes().Len()) - v.currentRecord.Attributes().RemoveIf(func(k string, value pcommon.Value) bool { + v.currentOrigRecord.Attributes().RemoveIf(func(k string, value pcommon.Value) bool { return fieldExists(k, value, ctx.AllColumn()) }) for _, removedKey := range removed { - v.currentRecord.Attributes().Remove(removedKey) + v.currentOrigRecord.Attributes().Remove(removedKey) } return nil @@ -317,16 +336,16 @@ func (v *SqlStreamVisitor) VisitColumnAggregation(ctx *ColumnAggregationContext) res.Attributes().Insert(ctx.Column().GetText(), pcommon.NewValueString(key)) res.CopyTo(dest.AppendEmpty()) } - v.logRecords = dest + v.origLogRecords = dest return nil } - res, err := v.getSimpleAggregatedValue(ctx, ctx.Column().GetText(), v.logRecords) + res, err := v.getSimpleAggregatedValue(ctx, ctx.Column().GetText(), v.origLogRecords) if err != nil { return err } res.CopyTo(dest.AppendEmpty()) - v.logRecords = dest + v.origLogRecords = dest */ @@ -399,21 +418,34 @@ func (v *SqlStreamVisitor) getCountAggregatedValue(ctx *ColumnAggregationContext } func (v *SqlStreamVisitor) VisitSelectStar(ctx *SelectStarContext) interface{} { + v.origLogRecords.CopyTo(v.resultLogRecords) return nil } func (v *SqlStreamVisitor) VisitIdentifierColumn(ctx *IdentifierColumnContext) interface{} { + //first we check that fields listed in select (including nested) exist in log record fieldName := ctx.IDENTIFIER(0).GetText() - _, ok := v.currentRecord.Attributes().Get(fieldName) + value, ok := v.currentOrigRecord.Attributes().Get(fieldName) if !ok { return fmt.Errorf("field %q missed", fieldName) } + //this is simple field if len(ctx.AllIDENTIFIER()) == 1 { - return fieldExistsInAttr(fieldName, v.currentRecord.Attributes()) + v.currentResultRecord.Attributes().Insert(fieldName, value) + return nil } + // here we process nested field + nestedFieldName := ctx.IDENTIFIER(1).GetText() + nestedVal, err := nestedFieldExistsInAttr(fieldName, nestedFieldName, v.currentOrigRecord.Attributes()) + if err != nil { + return err + } + newMapVal := pcommon.NewValueMap() + newMapVal.MapVal().Insert(nestedFieldName, nestedVal) + v.currentResultRecord.Attributes().Insert(fieldName, newMapVal) - return nestedFieldExistsInAttr(fieldName, ctx.IDENTIFIER(1).GetText(), v.currentRecord.Attributes()) + return nil } func (v *SqlStreamVisitor) VisitFunctionColumn(ctx *FunctionColumnContext) interface{} { @@ -425,7 +457,7 @@ func (v *SqlStreamVisitor) VisitSimpleCondition(ctx *SimpleConditionContext) int } func (v *SqlStreamVisitor) VisitSimpleExpression(ctx *SimpleExpressionContext) interface{} { - fieldValue, ok := v.currentRecord.Attributes().Get(ctx.IDENTIFIER().GetText()) + fieldValue, ok := v.currentOrigRecord.Attributes().Get(ctx.IDENTIFIER().GetText()) if !ok { return fmt.Errorf("field %q missed in log record", ctx.IDENTIFIER().GetText()) } @@ -440,7 +472,7 @@ func (v *SqlStreamVisitor) VisitSimpleExpression(ctx *SimpleExpressionContext) i func (v *SqlStreamVisitor) VisitNestedExpression(ctx *NestedExpressionContext) interface{} { fieldName := ctx.IDENTIFIER(0).GetText() - fieldValue, ok := v.currentRecord.Attributes().Get(fieldName) + fieldValue, ok := v.currentOrigRecord.Attributes().Get(fieldName) if !ok { return fmt.Errorf("field %q missed in log record", fieldValue.AsString()) } diff --git a/processor/stream_processor/parser/sql_stream_visitor_test.go b/processor/stream_processor/parser/sql_stream_visitor_test.go index 194619d5cf77..4968ed662076 100644 --- a/processor/stream_processor/parser/sql_stream_visitor_test.go +++ b/processor/stream_processor/parser/sql_stream_visitor_test.go @@ -31,7 +31,7 @@ func TestResultColumnsSelectColumns(t *testing.T) { { name: "incorrect value columns", query: `SELECT field, is_alive;`, - err: errors.New(`column "field" missed in input`), + err: errors.New(`field "field" missed`), expectedCount: 0, }, { @@ -43,7 +43,7 @@ func TestResultColumnsSelectColumns(t *testing.T) { { name: "one incorrect value columns", query: `SELECT field ;`, - err: errors.New(`column "field" missed in input`), + err: errors.New(`field "field" missed`), expectedCount: 0, }, } diff --git a/processor/stream_processor/parser/visitor_utils.go b/processor/stream_processor/parser/visitor_utils.go index c93cbbf41b15..2a8ef03e3abf 100644 --- a/processor/stream_processor/parser/visitor_utils.go +++ b/processor/stream_processor/parser/visitor_utils.go @@ -296,23 +296,23 @@ func fieldExistsInAttr(fieldName string, attr pcommon.Map) error { } // check is nested field exists -func nestedFieldExistsInAttr(fieldName, nestedFieldName string, attr pcommon.Map) error { +func nestedFieldExistsInAttr(fieldName, nestedFieldName string, attr pcommon.Map) (pcommon.Value, error) { value, ok := attr.Get(fieldName) if !ok { - return fmt.Errorf("field %q missed", fieldName) + return pcommon.NewValueEmpty(), fmt.Errorf("field %q missed", fieldName) } //if this nested field if value.Type() != pcommon.ValueTypeMap { - return fmt.Errorf("field %q isn't nested", fieldName) + return pcommon.NewValueEmpty(), fmt.Errorf("field %q isn't nested", fieldName) } - _, ok = value.MapVal().Get(nestedFieldName) + nestedValue, ok := value.MapVal().Get(nestedFieldName) if !ok { - return fmt.Errorf("field %q missed nested field %q", fieldName, nestedFieldName) + return pcommon.NewValueEmpty(), fmt.Errorf("field %q missed nested field %q", fieldName, nestedFieldName) } - return nil + return nestedValue, nil } func getSelectColumnsFromWhereCtx(ctx *WhereStmtContext) *SelectColumnsContext { From 3cf54736323a8fde71aca3f70ec996a2264bef8d Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Mon, 5 Sep 2022 21:28:35 +0300 Subject: [PATCH 24/31] part function support --- .gitignore | 2 +- processor/stream_processor/Sql.g4 | 29 +- processor/stream_processor/parser/Sql.interp | 10 +- processor/stream_processor/parser/Sql.tokens | 25 +- .../stream_processor/parser/SqlLexer.interp | 13 +- .../stream_processor/parser/SqlLexer.tokens | 25 +- .../parser/sql_base_visitor.go | 8 + .../stream_processor/parser/sql_lexer.go | 432 +++++---- .../stream_processor/parser/sql_parser.go | 819 ++++++++++++------ .../parser/sql_stream_function_test.go | 7 + .../parser/sql_stream_visitor.go | 71 ++ .../parser/sql_stream_visitor_test.go | 6 + .../stream_processor/parser/sql_visitor.go | 6 + 13 files changed, 936 insertions(+), 517 deletions(-) diff --git a/.gitignore b/.gitignore index d3d18a872252..22c928900a53 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,7 @@ local/ *.dylib bin/ dist/ - +test/ # Emacs *~ \#*\# diff --git a/processor/stream_processor/Sql.g4 b/processor/stream_processor/Sql.g4 index 6638f0cd08d5..940f62f9d905 100644 --- a/processor/stream_processor/Sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -28,13 +28,22 @@ aggregationColumns column - : (IDENTIFIER | IDENTIFIER DOT IDENTIFIER) #identifierColumn - | (K_UPPER | K_LOWER ) L_BRACKET (IDENTIFIER | IDENTIFIER DOT IDENTIFIER) R_BRACKET #functionColumn + : (IDENTIFIER | IDENTIFIER DOT IDENTIFIER) alias? #identifierColumn + | function L_BRACKET (IDENTIFIER | IDENTIFIER DOT IDENTIFIER) (COMMA literalValue)* R_BRACKET alias? #functionColumn + ; + +alias + : K_AS IDENTIFIER + ; + +function + : IDENTIFIER ; + aggregationColumn - : (K_MIN | K_MAX | K_COUNT | K_AVG | K_SUM) L_BRACKET ( IDENTIFIER | IDENTIFIER DOT IDENTIFIER) R_BRACKET # columnAggregation + : (K_MIN | K_MAX | K_COUNT | K_AVG | K_SUM) L_BRACKET ( IDENTIFIER | IDENTIFIER DOT IDENTIFIER) R_BRACKET # columnAggregation | (IDENTIFIER | IDENTIFIER DOT IDENTIFIER)? K_COUNT L_BRACKET STAR R_BRACKET # columnCountAggregation ; @@ -92,15 +101,12 @@ DOT : '.'; EOQ: ';'; -BOOLEAN_LITERAL - : (K_TRUE | K_FALSE) - ; - K_SELECT : S E L E C T; K_WHERE : W H E R E; K_WINDOW_TUMBLING : W I N D O W SPACE T U M B L I N G; K_GROUP_BY : G R O U P SPACE B Y; K_AND : A N D; +K_AS : A S; K_OR : O R; K_IS : I S; K_LIKE : L I K E; @@ -124,9 +130,8 @@ K_MAX : M A X; K_AVG : A V G; K_TRUE : T R U E; K_FALSE : F A L S E; -// function -K_UPPER : U P P E R; -K_LOWER : L O W E R; + + IDENTIFIER : '"' (~'"' | '""')* '"' @@ -146,6 +151,10 @@ STRING_LITERAL ; +BOOLEAN_LITERAL + : (K_TRUE | K_FALSE) + ; + STAR : '*'; fragment DIGIT : [0-9]; diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp index a1b796ac8bd0..aaca2c4f0796 100644 --- a/processor/stream_processor/parser/Sql.interp +++ b/processor/stream_processor/parser/Sql.interp @@ -40,7 +40,6 @@ null null null null -null '*' token symbolic names: @@ -52,12 +51,12 @@ L_BRACKET R_BRACKET DOT EOQ -BOOLEAN_LITERAL K_SELECT K_WHERE K_WINDOW_TUMBLING K_GROUP_BY K_AND +K_AS K_OR K_IS K_LIKE @@ -81,11 +80,10 @@ K_MAX K_AVG K_TRUE K_FALSE -K_UPPER -K_LOWER IDENTIFIER NUMERIC_LITERAL STRING_LITERAL +BOOLEAN_LITERAL STAR rule names: @@ -95,6 +93,8 @@ windowTumbling resultColumns aggregationColumns column +alias +function aggregationColumn whereStatement expr @@ -106,4 +106,4 @@ groupBy atn: -[4, 1, 42, 172, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 35, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 43, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 51, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 56, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 64, 8, 3, 10, 3, 12, 3, 67, 9, 3, 1, 3, 3, 3, 70, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 75, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 80, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 88, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 96, 8, 5, 1, 5, 3, 5, 99, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 107, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 114, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 120, 8, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 129, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 134, 8, 8, 1, 8, 3, 8, 137, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 142, 8, 8, 10, 8, 12, 8, 145, 9, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 157, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 3, 13, 170, 8, 13, 1, 13, 0, 1, 16, 14, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 0, 5, 1, 0, 37, 38, 1, 0, 30, 34, 1, 0, 13, 14, 2, 0, 15, 23, 28, 29, 2, 0, 8, 8, 40, 41, 180, 0, 28, 1, 0, 0, 0, 2, 55, 1, 0, 0, 0, 4, 57, 1, 0, 0, 0, 6, 69, 1, 0, 0, 0, 8, 74, 1, 0, 0, 0, 10, 98, 1, 0, 0, 0, 12, 119, 1, 0, 0, 0, 14, 121, 1, 0, 0, 0, 16, 136, 1, 0, 0, 0, 18, 156, 1, 0, 0, 0, 20, 158, 1, 0, 0, 0, 22, 162, 1, 0, 0, 0, 24, 164, 1, 0, 0, 0, 26, 169, 1, 0, 0, 0, 28, 29, 3, 2, 1, 0, 29, 30, 5, 0, 0, 1, 30, 1, 1, 0, 0, 0, 31, 32, 5, 9, 0, 0, 32, 34, 3, 6, 3, 0, 33, 35, 3, 14, 7, 0, 34, 33, 1, 0, 0, 0, 34, 35, 1, 0, 0, 0, 35, 36, 1, 0, 0, 0, 36, 37, 5, 7, 0, 0, 37, 56, 1, 0, 0, 0, 38, 39, 5, 9, 0, 0, 39, 40, 3, 8, 4, 0, 40, 42, 3, 4, 2, 0, 41, 43, 3, 14, 7, 0, 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 45, 5, 7, 0, 0, 45, 56, 1, 0, 0, 0, 46, 47, 5, 9, 0, 0, 47, 48, 3, 8, 4, 0, 48, 50, 3, 4, 2, 0, 49, 51, 3, 14, 7, 0, 50, 49, 1, 0, 0, 0, 50, 51, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 53, 3, 26, 13, 0, 53, 54, 5, 7, 0, 0, 54, 56, 1, 0, 0, 0, 55, 31, 1, 0, 0, 0, 55, 38, 1, 0, 0, 0, 55, 46, 1, 0, 0, 0, 56, 3, 1, 0, 0, 0, 57, 58, 5, 11, 0, 0, 58, 59, 5, 40, 0, 0, 59, 5, 1, 0, 0, 0, 60, 65, 3, 10, 5, 0, 61, 62, 5, 3, 0, 0, 62, 64, 3, 10, 5, 0, 63, 61, 1, 0, 0, 0, 64, 67, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, 70, 1, 0, 0, 0, 67, 65, 1, 0, 0, 0, 68, 70, 5, 42, 0, 0, 69, 60, 1, 0, 0, 0, 69, 68, 1, 0, 0, 0, 70, 7, 1, 0, 0, 0, 71, 72, 3, 10, 5, 0, 72, 73, 5, 3, 0, 0, 73, 75, 1, 0, 0, 0, 74, 71, 1, 0, 0, 0, 74, 75, 1, 0, 0, 0, 75, 76, 1, 0, 0, 0, 76, 79, 3, 12, 6, 0, 77, 80, 3, 10, 5, 0, 78, 80, 5, 42, 0, 0, 79, 77, 1, 0, 0, 0, 79, 78, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 5, 5, 0, 0, 82, 9, 1, 0, 0, 0, 83, 88, 5, 39, 0, 0, 84, 85, 5, 39, 0, 0, 85, 86, 5, 6, 0, 0, 86, 88, 5, 39, 0, 0, 87, 83, 1, 0, 0, 0, 87, 84, 1, 0, 0, 0, 88, 99, 1, 0, 0, 0, 89, 90, 7, 0, 0, 0, 90, 95, 5, 4, 0, 0, 91, 96, 5, 39, 0, 0, 92, 93, 5, 39, 0, 0, 93, 94, 5, 6, 0, 0, 94, 96, 5, 39, 0, 0, 95, 91, 1, 0, 0, 0, 95, 92, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 99, 5, 5, 0, 0, 98, 87, 1, 0, 0, 0, 98, 89, 1, 0, 0, 0, 99, 11, 1, 0, 0, 0, 100, 101, 7, 1, 0, 0, 101, 106, 5, 4, 0, 0, 102, 107, 5, 39, 0, 0, 103, 104, 5, 39, 0, 0, 104, 105, 5, 6, 0, 0, 105, 107, 5, 39, 0, 0, 106, 102, 1, 0, 0, 0, 106, 103, 1, 0, 0, 0, 107, 108, 1, 0, 0, 0, 108, 120, 5, 5, 0, 0, 109, 114, 5, 39, 0, 0, 110, 111, 5, 39, 0, 0, 111, 112, 5, 6, 0, 0, 112, 114, 5, 39, 0, 0, 113, 109, 1, 0, 0, 0, 113, 110, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 115, 1, 0, 0, 0, 115, 116, 5, 30, 0, 0, 116, 117, 5, 4, 0, 0, 117, 118, 5, 42, 0, 0, 118, 120, 5, 5, 0, 0, 119, 100, 1, 0, 0, 0, 119, 113, 1, 0, 0, 0, 120, 13, 1, 0, 0, 0, 121, 122, 5, 10, 0, 0, 122, 123, 3, 16, 8, 0, 123, 15, 1, 0, 0, 0, 124, 125, 6, 8, -1, 0, 125, 137, 3, 18, 9, 0, 126, 129, 3, 20, 10, 0, 127, 129, 3, 18, 9, 0, 128, 126, 1, 0, 0, 0, 128, 127, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 133, 7, 2, 0, 0, 131, 134, 3, 20, 10, 0, 132, 134, 3, 18, 9, 0, 133, 131, 1, 0, 0, 0, 133, 132, 1, 0, 0, 0, 134, 137, 1, 0, 0, 0, 135, 137, 3, 20, 10, 0, 136, 124, 1, 0, 0, 0, 136, 128, 1, 0, 0, 0, 136, 135, 1, 0, 0, 0, 137, 143, 1, 0, 0, 0, 138, 139, 10, 2, 0, 0, 139, 140, 7, 2, 0, 0, 140, 142, 3, 16, 8, 3, 141, 138, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 17, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 147, 5, 39, 0, 0, 147, 148, 3, 22, 11, 0, 148, 149, 3, 24, 12, 0, 149, 157, 1, 0, 0, 0, 150, 151, 5, 39, 0, 0, 151, 152, 5, 6, 0, 0, 152, 153, 5, 39, 0, 0, 153, 154, 3, 22, 11, 0, 154, 155, 3, 24, 12, 0, 155, 157, 1, 0, 0, 0, 156, 146, 1, 0, 0, 0, 156, 150, 1, 0, 0, 0, 157, 19, 1, 0, 0, 0, 158, 159, 5, 4, 0, 0, 159, 160, 3, 16, 8, 0, 160, 161, 5, 5, 0, 0, 161, 21, 1, 0, 0, 0, 162, 163, 7, 3, 0, 0, 163, 23, 1, 0, 0, 0, 164, 165, 7, 4, 0, 0, 165, 25, 1, 0, 0, 0, 166, 167, 5, 12, 0, 0, 167, 170, 3, 10, 5, 0, 168, 170, 1, 0, 0, 0, 169, 166, 1, 0, 0, 0, 169, 168, 1, 0, 0, 0, 170, 27, 1, 0, 0, 0, 20, 34, 42, 50, 55, 65, 69, 74, 79, 87, 95, 98, 106, 113, 119, 128, 133, 136, 143, 156, 169] \ No newline at end of file +[4, 1, 41, 194, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 39, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 47, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 55, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 60, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 68, 8, 3, 10, 3, 12, 3, 71, 9, 3, 1, 3, 3, 3, 74, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 79, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 84, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 92, 8, 5, 1, 5, 3, 5, 95, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 103, 8, 5, 1, 5, 1, 5, 5, 5, 107, 8, 5, 10, 5, 12, 5, 110, 9, 5, 1, 5, 1, 5, 3, 5, 114, 8, 5, 3, 5, 116, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 129, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 136, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 142, 8, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 151, 8, 10, 1, 10, 1, 10, 1, 10, 3, 10, 156, 8, 10, 1, 10, 3, 10, 159, 8, 10, 1, 10, 1, 10, 1, 10, 5, 10, 164, 8, 10, 10, 10, 12, 10, 167, 9, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 179, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 3, 15, 192, 8, 15, 1, 15, 0, 1, 20, 16, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, 40, 203, 0, 32, 1, 0, 0, 0, 2, 59, 1, 0, 0, 0, 4, 61, 1, 0, 0, 0, 6, 73, 1, 0, 0, 0, 8, 78, 1, 0, 0, 0, 10, 115, 1, 0, 0, 0, 12, 117, 1, 0, 0, 0, 14, 120, 1, 0, 0, 0, 16, 141, 1, 0, 0, 0, 18, 143, 1, 0, 0, 0, 20, 158, 1, 0, 0, 0, 22, 178, 1, 0, 0, 0, 24, 180, 1, 0, 0, 0, 26, 184, 1, 0, 0, 0, 28, 186, 1, 0, 0, 0, 30, 191, 1, 0, 0, 0, 32, 33, 3, 2, 1, 0, 33, 34, 5, 0, 0, 1, 34, 1, 1, 0, 0, 0, 35, 36, 5, 8, 0, 0, 36, 38, 3, 6, 3, 0, 37, 39, 3, 18, 9, 0, 38, 37, 1, 0, 0, 0, 38, 39, 1, 0, 0, 0, 39, 40, 1, 0, 0, 0, 40, 41, 5, 7, 0, 0, 41, 60, 1, 0, 0, 0, 42, 43, 5, 8, 0, 0, 43, 44, 3, 8, 4, 0, 44, 46, 3, 4, 2, 0, 45, 47, 3, 18, 9, 0, 46, 45, 1, 0, 0, 0, 46, 47, 1, 0, 0, 0, 47, 48, 1, 0, 0, 0, 48, 49, 5, 7, 0, 0, 49, 60, 1, 0, 0, 0, 50, 51, 5, 8, 0, 0, 51, 52, 3, 8, 4, 0, 52, 54, 3, 4, 2, 0, 53, 55, 3, 18, 9, 0, 54, 53, 1, 0, 0, 0, 54, 55, 1, 0, 0, 0, 55, 56, 1, 0, 0, 0, 56, 57, 3, 30, 15, 0, 57, 58, 5, 7, 0, 0, 58, 60, 1, 0, 0, 0, 59, 35, 1, 0, 0, 0, 59, 42, 1, 0, 0, 0, 59, 50, 1, 0, 0, 0, 60, 3, 1, 0, 0, 0, 61, 62, 5, 10, 0, 0, 62, 63, 5, 38, 0, 0, 63, 5, 1, 0, 0, 0, 64, 69, 3, 10, 5, 0, 65, 66, 5, 3, 0, 0, 66, 68, 3, 10, 5, 0, 67, 65, 1, 0, 0, 0, 68, 71, 1, 0, 0, 0, 69, 67, 1, 0, 0, 0, 69, 70, 1, 0, 0, 0, 70, 74, 1, 0, 0, 0, 71, 69, 1, 0, 0, 0, 72, 74, 5, 41, 0, 0, 73, 64, 1, 0, 0, 0, 73, 72, 1, 0, 0, 0, 74, 7, 1, 0, 0, 0, 75, 76, 3, 10, 5, 0, 76, 77, 5, 3, 0, 0, 77, 79, 1, 0, 0, 0, 78, 75, 1, 0, 0, 0, 78, 79, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 83, 3, 16, 8, 0, 81, 84, 3, 10, 5, 0, 82, 84, 5, 41, 0, 0, 83, 81, 1, 0, 0, 0, 83, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 86, 5, 5, 0, 0, 86, 9, 1, 0, 0, 0, 87, 92, 5, 37, 0, 0, 88, 89, 5, 37, 0, 0, 89, 90, 5, 6, 0, 0, 90, 92, 5, 37, 0, 0, 91, 87, 1, 0, 0, 0, 91, 88, 1, 0, 0, 0, 92, 94, 1, 0, 0, 0, 93, 95, 3, 12, 6, 0, 94, 93, 1, 0, 0, 0, 94, 95, 1, 0, 0, 0, 95, 116, 1, 0, 0, 0, 96, 97, 3, 14, 7, 0, 97, 102, 5, 4, 0, 0, 98, 103, 5, 37, 0, 0, 99, 100, 5, 37, 0, 0, 100, 101, 5, 6, 0, 0, 101, 103, 5, 37, 0, 0, 102, 98, 1, 0, 0, 0, 102, 99, 1, 0, 0, 0, 103, 108, 1, 0, 0, 0, 104, 105, 5, 3, 0, 0, 105, 107, 3, 28, 14, 0, 106, 104, 1, 0, 0, 0, 107, 110, 1, 0, 0, 0, 108, 106, 1, 0, 0, 0, 108, 109, 1, 0, 0, 0, 109, 111, 1, 0, 0, 0, 110, 108, 1, 0, 0, 0, 111, 113, 5, 5, 0, 0, 112, 114, 3, 12, 6, 0, 113, 112, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 116, 1, 0, 0, 0, 115, 91, 1, 0, 0, 0, 115, 96, 1, 0, 0, 0, 116, 11, 1, 0, 0, 0, 117, 118, 5, 13, 0, 0, 118, 119, 5, 37, 0, 0, 119, 13, 1, 0, 0, 0, 120, 121, 5, 37, 0, 0, 121, 15, 1, 0, 0, 0, 122, 123, 7, 0, 0, 0, 123, 128, 5, 4, 0, 0, 124, 129, 5, 37, 0, 0, 125, 126, 5, 37, 0, 0, 126, 127, 5, 6, 0, 0, 127, 129, 5, 37, 0, 0, 128, 124, 1, 0, 0, 0, 128, 125, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 142, 5, 5, 0, 0, 131, 136, 5, 37, 0, 0, 132, 133, 5, 37, 0, 0, 133, 134, 5, 6, 0, 0, 134, 136, 5, 37, 0, 0, 135, 131, 1, 0, 0, 0, 135, 132, 1, 0, 0, 0, 135, 136, 1, 0, 0, 0, 136, 137, 1, 0, 0, 0, 137, 138, 5, 30, 0, 0, 138, 139, 5, 4, 0, 0, 139, 140, 5, 41, 0, 0, 140, 142, 5, 5, 0, 0, 141, 122, 1, 0, 0, 0, 141, 135, 1, 0, 0, 0, 142, 17, 1, 0, 0, 0, 143, 144, 5, 9, 0, 0, 144, 145, 3, 20, 10, 0, 145, 19, 1, 0, 0, 0, 146, 147, 6, 10, -1, 0, 147, 159, 3, 22, 11, 0, 148, 151, 3, 24, 12, 0, 149, 151, 3, 22, 11, 0, 150, 148, 1, 0, 0, 0, 150, 149, 1, 0, 0, 0, 151, 152, 1, 0, 0, 0, 152, 155, 7, 1, 0, 0, 153, 156, 3, 24, 12, 0, 154, 156, 3, 22, 11, 0, 155, 153, 1, 0, 0, 0, 155, 154, 1, 0, 0, 0, 156, 159, 1, 0, 0, 0, 157, 159, 3, 24, 12, 0, 158, 146, 1, 0, 0, 0, 158, 150, 1, 0, 0, 0, 158, 157, 1, 0, 0, 0, 159, 165, 1, 0, 0, 0, 160, 161, 10, 2, 0, 0, 161, 162, 7, 1, 0, 0, 162, 164, 3, 20, 10, 3, 163, 160, 1, 0, 0, 0, 164, 167, 1, 0, 0, 0, 165, 163, 1, 0, 0, 0, 165, 166, 1, 0, 0, 0, 166, 21, 1, 0, 0, 0, 167, 165, 1, 0, 0, 0, 168, 169, 5, 37, 0, 0, 169, 170, 3, 26, 13, 0, 170, 171, 3, 28, 14, 0, 171, 179, 1, 0, 0, 0, 172, 173, 5, 37, 0, 0, 173, 174, 5, 6, 0, 0, 174, 175, 5, 37, 0, 0, 175, 176, 3, 26, 13, 0, 176, 177, 3, 28, 14, 0, 177, 179, 1, 0, 0, 0, 178, 168, 1, 0, 0, 0, 178, 172, 1, 0, 0, 0, 179, 23, 1, 0, 0, 0, 180, 181, 5, 4, 0, 0, 181, 182, 3, 20, 10, 0, 182, 183, 5, 5, 0, 0, 183, 25, 1, 0, 0, 0, 184, 185, 7, 2, 0, 0, 185, 27, 1, 0, 0, 0, 186, 187, 7, 3, 0, 0, 187, 29, 1, 0, 0, 0, 188, 189, 5, 11, 0, 0, 189, 192, 3, 10, 5, 0, 190, 192, 1, 0, 0, 0, 191, 188, 1, 0, 0, 0, 191, 190, 1, 0, 0, 0, 192, 31, 1, 0, 0, 0, 23, 38, 46, 54, 59, 69, 73, 78, 83, 91, 94, 102, 108, 113, 115, 128, 135, 141, 150, 155, 158, 165, 178, 191] \ No newline at end of file diff --git a/processor/stream_processor/parser/Sql.tokens b/processor/stream_processor/parser/Sql.tokens index f00c22ab66a0..93bad54ad372 100644 --- a/processor/stream_processor/parser/Sql.tokens +++ b/processor/stream_processor/parser/Sql.tokens @@ -5,12 +5,12 @@ L_BRACKET=4 R_BRACKET=5 DOT=6 EOQ=7 -BOOLEAN_LITERAL=8 -K_SELECT=9 -K_WHERE=10 -K_WINDOW_TUMBLING=11 -K_GROUP_BY=12 -K_AND=13 +K_SELECT=8 +K_WHERE=9 +K_WINDOW_TUMBLING=10 +K_GROUP_BY=11 +K_AND=12 +K_AS=13 K_OR=14 K_IS=15 K_LIKE=16 @@ -34,12 +34,11 @@ K_MAX=33 K_AVG=34 K_TRUE=35 K_FALSE=36 -K_UPPER=37 -K_LOWER=38 -IDENTIFIER=39 -NUMERIC_LITERAL=40 -STRING_LITERAL=41 -STAR=42 +IDENTIFIER=37 +NUMERIC_LITERAL=38 +STRING_LITERAL=39 +BOOLEAN_LITERAL=40 +STAR=41 ','=3 '('=4 ')'=5 @@ -48,4 +47,4 @@ STAR=42 '='=18 '>'=19 '<'=20 -'*'=42 +'*'=41 diff --git a/processor/stream_processor/parser/SqlLexer.interp b/processor/stream_processor/parser/SqlLexer.interp index b23aa6552caf..378322250ec2 100644 --- a/processor/stream_processor/parser/SqlLexer.interp +++ b/processor/stream_processor/parser/SqlLexer.interp @@ -40,7 +40,6 @@ null null null null -null '*' token symbolic names: @@ -52,12 +51,12 @@ L_BRACKET R_BRACKET DOT EOQ -BOOLEAN_LITERAL K_SELECT K_WHERE K_WINDOW_TUMBLING K_GROUP_BY K_AND +K_AS K_OR K_IS K_LIKE @@ -81,11 +80,10 @@ K_MAX K_AVG K_TRUE K_FALSE -K_UPPER -K_LOWER IDENTIFIER NUMERIC_LITERAL STRING_LITERAL +BOOLEAN_LITERAL STAR rule names: @@ -96,12 +94,12 @@ L_BRACKET R_BRACKET DOT EOQ -BOOLEAN_LITERAL K_SELECT K_WHERE K_WINDOW_TUMBLING K_GROUP_BY K_AND +K_AS K_OR K_IS K_LIKE @@ -125,11 +123,10 @@ K_MAX K_AVG K_TRUE K_FALSE -K_UPPER -K_LOWER IDENTIFIER NUMERIC_LITERAL STRING_LITERAL +BOOLEAN_LITERAL STAR DIGIT A @@ -167,4 +164,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 42, 461, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 145, 8, 1, 11, 1, 12, 1, 146, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 3, 7, 163, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 318, 8, 38, 10, 38, 12, 38, 321, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 328, 8, 38, 10, 38, 12, 38, 331, 9, 38, 1, 38, 1, 38, 1, 38, 5, 38, 336, 8, 38, 10, 38, 12, 38, 339, 9, 38, 1, 38, 1, 38, 1, 38, 5, 38, 344, 8, 38, 10, 38, 12, 38, 347, 9, 38, 3, 38, 349, 8, 38, 1, 39, 4, 39, 352, 8, 39, 11, 39, 12, 39, 353, 1, 39, 1, 39, 5, 39, 358, 8, 39, 10, 39, 12, 39, 361, 9, 39, 3, 39, 363, 8, 39, 1, 39, 1, 39, 3, 39, 367, 8, 39, 1, 39, 4, 39, 370, 8, 39, 11, 39, 12, 39, 371, 3, 39, 374, 8, 39, 1, 39, 1, 39, 4, 39, 378, 8, 39, 11, 39, 12, 39, 379, 1, 39, 1, 39, 3, 39, 384, 8, 39, 1, 39, 4, 39, 387, 8, 39, 11, 39, 12, 39, 388, 3, 39, 391, 8, 39, 3, 39, 393, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 5, 40, 399, 8, 40, 10, 40, 12, 40, 402, 9, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 0, 0, 69, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 133, 0, 135, 0, 137, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 457, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 1, 139, 1, 0, 0, 0, 3, 144, 1, 0, 0, 0, 5, 150, 1, 0, 0, 0, 7, 152, 1, 0, 0, 0, 9, 154, 1, 0, 0, 0, 11, 156, 1, 0, 0, 0, 13, 158, 1, 0, 0, 0, 15, 162, 1, 0, 0, 0, 17, 164, 1, 0, 0, 0, 19, 171, 1, 0, 0, 0, 21, 177, 1, 0, 0, 0, 23, 193, 1, 0, 0, 0, 25, 202, 1, 0, 0, 0, 27, 206, 1, 0, 0, 0, 29, 209, 1, 0, 0, 0, 31, 212, 1, 0, 0, 0, 33, 217, 1, 0, 0, 0, 35, 226, 1, 0, 0, 0, 37, 228, 1, 0, 0, 0, 39, 230, 1, 0, 0, 0, 41, 232, 1, 0, 0, 0, 43, 235, 1, 0, 0, 0, 45, 238, 1, 0, 0, 0, 47, 241, 1, 0, 0, 0, 49, 246, 1, 0, 0, 0, 51, 250, 1, 0, 0, 0, 53, 256, 1, 0, 0, 0, 55, 260, 1, 0, 0, 0, 57, 265, 1, 0, 0, 0, 59, 268, 1, 0, 0, 0, 61, 274, 1, 0, 0, 0, 63, 278, 1, 0, 0, 0, 65, 282, 1, 0, 0, 0, 67, 286, 1, 0, 0, 0, 69, 290, 1, 0, 0, 0, 71, 295, 1, 0, 0, 0, 73, 301, 1, 0, 0, 0, 75, 307, 1, 0, 0, 0, 77, 348, 1, 0, 0, 0, 79, 392, 1, 0, 0, 0, 81, 394, 1, 0, 0, 0, 83, 405, 1, 0, 0, 0, 85, 407, 1, 0, 0, 0, 87, 409, 1, 0, 0, 0, 89, 411, 1, 0, 0, 0, 91, 413, 1, 0, 0, 0, 93, 415, 1, 0, 0, 0, 95, 417, 1, 0, 0, 0, 97, 419, 1, 0, 0, 0, 99, 421, 1, 0, 0, 0, 101, 423, 1, 0, 0, 0, 103, 425, 1, 0, 0, 0, 105, 427, 1, 0, 0, 0, 107, 429, 1, 0, 0, 0, 109, 431, 1, 0, 0, 0, 111, 433, 1, 0, 0, 0, 113, 435, 1, 0, 0, 0, 115, 437, 1, 0, 0, 0, 117, 439, 1, 0, 0, 0, 119, 441, 1, 0, 0, 0, 121, 443, 1, 0, 0, 0, 123, 445, 1, 0, 0, 0, 125, 447, 1, 0, 0, 0, 127, 449, 1, 0, 0, 0, 129, 451, 1, 0, 0, 0, 131, 453, 1, 0, 0, 0, 133, 455, 1, 0, 0, 0, 135, 457, 1, 0, 0, 0, 137, 459, 1, 0, 0, 0, 139, 140, 7, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 142, 6, 0, 0, 0, 142, 2, 1, 0, 0, 0, 143, 145, 7, 1, 0, 0, 144, 143, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 144, 1, 0, 0, 0, 146, 147, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0, 148, 149, 6, 1, 1, 0, 149, 4, 1, 0, 0, 0, 150, 151, 5, 44, 0, 0, 151, 6, 1, 0, 0, 0, 152, 153, 5, 40, 0, 0, 153, 8, 1, 0, 0, 0, 154, 155, 5, 41, 0, 0, 155, 10, 1, 0, 0, 0, 156, 157, 5, 46, 0, 0, 157, 12, 1, 0, 0, 0, 158, 159, 5, 59, 0, 0, 159, 14, 1, 0, 0, 0, 160, 163, 3, 69, 34, 0, 161, 163, 3, 71, 35, 0, 162, 160, 1, 0, 0, 0, 162, 161, 1, 0, 0, 0, 163, 16, 1, 0, 0, 0, 164, 165, 3, 123, 61, 0, 165, 166, 3, 95, 47, 0, 166, 167, 3, 109, 54, 0, 167, 168, 3, 95, 47, 0, 168, 169, 3, 91, 45, 0, 169, 170, 3, 125, 62, 0, 170, 18, 1, 0, 0, 0, 171, 172, 3, 131, 65, 0, 172, 173, 3, 101, 50, 0, 173, 174, 3, 95, 47, 0, 174, 175, 3, 121, 60, 0, 175, 176, 3, 95, 47, 0, 176, 20, 1, 0, 0, 0, 177, 178, 3, 131, 65, 0, 178, 179, 3, 103, 51, 0, 179, 180, 3, 113, 56, 0, 180, 181, 3, 93, 46, 0, 181, 182, 3, 115, 57, 0, 182, 183, 3, 131, 65, 0, 183, 184, 3, 1, 0, 0, 184, 185, 3, 125, 62, 0, 185, 186, 3, 127, 63, 0, 186, 187, 3, 111, 55, 0, 187, 188, 3, 89, 44, 0, 188, 189, 3, 109, 54, 0, 189, 190, 3, 103, 51, 0, 190, 191, 3, 113, 56, 0, 191, 192, 3, 99, 49, 0, 192, 22, 1, 0, 0, 0, 193, 194, 3, 99, 49, 0, 194, 195, 3, 121, 60, 0, 195, 196, 3, 115, 57, 0, 196, 197, 3, 127, 63, 0, 197, 198, 3, 117, 58, 0, 198, 199, 3, 1, 0, 0, 199, 200, 3, 89, 44, 0, 200, 201, 3, 135, 67, 0, 201, 24, 1, 0, 0, 0, 202, 203, 3, 87, 43, 0, 203, 204, 3, 113, 56, 0, 204, 205, 3, 93, 46, 0, 205, 26, 1, 0, 0, 0, 206, 207, 3, 115, 57, 0, 207, 208, 3, 121, 60, 0, 208, 28, 1, 0, 0, 0, 209, 210, 3, 103, 51, 0, 210, 211, 3, 123, 61, 0, 211, 30, 1, 0, 0, 0, 212, 213, 3, 109, 54, 0, 213, 214, 3, 103, 51, 0, 214, 215, 3, 107, 53, 0, 215, 216, 3, 95, 47, 0, 216, 32, 1, 0, 0, 0, 217, 218, 3, 113, 56, 0, 218, 219, 3, 115, 57, 0, 219, 220, 3, 125, 62, 0, 220, 221, 3, 1, 0, 0, 221, 222, 3, 109, 54, 0, 222, 223, 3, 103, 51, 0, 223, 224, 3, 107, 53, 0, 224, 225, 3, 95, 47, 0, 225, 34, 1, 0, 0, 0, 226, 227, 5, 61, 0, 0, 227, 36, 1, 0, 0, 0, 228, 229, 5, 62, 0, 0, 229, 38, 1, 0, 0, 0, 230, 231, 5, 60, 0, 0, 231, 40, 1, 0, 0, 0, 232, 233, 3, 39, 19, 0, 233, 234, 3, 35, 17, 0, 234, 42, 1, 0, 0, 0, 235, 236, 3, 37, 18, 0, 236, 237, 3, 35, 17, 0, 237, 44, 1, 0, 0, 0, 238, 239, 5, 33, 0, 0, 239, 240, 3, 35, 17, 0, 240, 46, 1, 0, 0, 0, 241, 242, 3, 113, 56, 0, 242, 243, 3, 127, 63, 0, 243, 244, 3, 109, 54, 0, 244, 245, 3, 109, 54, 0, 245, 48, 1, 0, 0, 0, 246, 247, 3, 29, 14, 0, 247, 248, 3, 1, 0, 0, 248, 249, 3, 47, 23, 0, 249, 50, 1, 0, 0, 0, 250, 251, 3, 29, 14, 0, 251, 252, 3, 1, 0, 0, 252, 253, 3, 53, 26, 0, 253, 254, 3, 1, 0, 0, 254, 255, 3, 47, 23, 0, 255, 52, 1, 0, 0, 0, 256, 257, 3, 113, 56, 0, 257, 258, 3, 115, 57, 0, 258, 259, 3, 125, 62, 0, 259, 54, 1, 0, 0, 0, 260, 261, 3, 53, 26, 0, 261, 262, 3, 1, 0, 0, 262, 263, 3, 103, 51, 0, 263, 264, 3, 113, 56, 0, 264, 56, 1, 0, 0, 0, 265, 266, 3, 103, 51, 0, 266, 267, 3, 113, 56, 0, 267, 58, 1, 0, 0, 0, 268, 269, 3, 91, 45, 0, 269, 270, 3, 115, 57, 0, 270, 271, 3, 127, 63, 0, 271, 272, 3, 113, 56, 0, 272, 273, 3, 125, 62, 0, 273, 60, 1, 0, 0, 0, 274, 275, 3, 123, 61, 0, 275, 276, 3, 127, 63, 0, 276, 277, 3, 111, 55, 0, 277, 62, 1, 0, 0, 0, 278, 279, 3, 111, 55, 0, 279, 280, 3, 103, 51, 0, 280, 281, 3, 113, 56, 0, 281, 64, 1, 0, 0, 0, 282, 283, 3, 111, 55, 0, 283, 284, 3, 87, 43, 0, 284, 285, 3, 133, 66, 0, 285, 66, 1, 0, 0, 0, 286, 287, 3, 87, 43, 0, 287, 288, 3, 129, 64, 0, 288, 289, 3, 99, 49, 0, 289, 68, 1, 0, 0, 0, 290, 291, 3, 125, 62, 0, 291, 292, 3, 121, 60, 0, 292, 293, 3, 127, 63, 0, 293, 294, 3, 95, 47, 0, 294, 70, 1, 0, 0, 0, 295, 296, 3, 97, 48, 0, 296, 297, 3, 87, 43, 0, 297, 298, 3, 109, 54, 0, 298, 299, 3, 123, 61, 0, 299, 300, 3, 95, 47, 0, 300, 72, 1, 0, 0, 0, 301, 302, 3, 127, 63, 0, 302, 303, 3, 117, 58, 0, 303, 304, 3, 117, 58, 0, 304, 305, 3, 95, 47, 0, 305, 306, 3, 121, 60, 0, 306, 74, 1, 0, 0, 0, 307, 308, 3, 109, 54, 0, 308, 309, 3, 115, 57, 0, 309, 310, 3, 131, 65, 0, 310, 311, 3, 95, 47, 0, 311, 312, 3, 121, 60, 0, 312, 76, 1, 0, 0, 0, 313, 319, 5, 34, 0, 0, 314, 318, 8, 2, 0, 0, 315, 316, 5, 34, 0, 0, 316, 318, 5, 34, 0, 0, 317, 314, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 318, 321, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 322, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 349, 5, 34, 0, 0, 323, 329, 5, 96, 0, 0, 324, 328, 8, 3, 0, 0, 325, 326, 5, 96, 0, 0, 326, 328, 5, 96, 0, 0, 327, 324, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 328, 331, 1, 0, 0, 0, 329, 327, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 332, 1, 0, 0, 0, 331, 329, 1, 0, 0, 0, 332, 349, 5, 96, 0, 0, 333, 337, 5, 91, 0, 0, 334, 336, 8, 4, 0, 0, 335, 334, 1, 0, 0, 0, 336, 339, 1, 0, 0, 0, 337, 335, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 340, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 340, 349, 5, 93, 0, 0, 341, 345, 7, 5, 0, 0, 342, 344, 7, 6, 0, 0, 343, 342, 1, 0, 0, 0, 344, 347, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 349, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 348, 313, 1, 0, 0, 0, 348, 323, 1, 0, 0, 0, 348, 333, 1, 0, 0, 0, 348, 341, 1, 0, 0, 0, 349, 78, 1, 0, 0, 0, 350, 352, 3, 85, 42, 0, 351, 350, 1, 0, 0, 0, 352, 353, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 362, 1, 0, 0, 0, 355, 359, 5, 46, 0, 0, 356, 358, 3, 85, 42, 0, 357, 356, 1, 0, 0, 0, 358, 361, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 363, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 362, 355, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 373, 1, 0, 0, 0, 364, 366, 3, 95, 47, 0, 365, 367, 7, 7, 0, 0, 366, 365, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 369, 1, 0, 0, 0, 368, 370, 3, 85, 42, 0, 369, 368, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 369, 1, 0, 0, 0, 371, 372, 1, 0, 0, 0, 372, 374, 1, 0, 0, 0, 373, 364, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 393, 1, 0, 0, 0, 375, 377, 5, 46, 0, 0, 376, 378, 3, 85, 42, 0, 377, 376, 1, 0, 0, 0, 378, 379, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 379, 380, 1, 0, 0, 0, 380, 390, 1, 0, 0, 0, 381, 383, 3, 95, 47, 0, 382, 384, 7, 7, 0, 0, 383, 382, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 386, 1, 0, 0, 0, 385, 387, 3, 85, 42, 0, 386, 385, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 391, 1, 0, 0, 0, 390, 381, 1, 0, 0, 0, 390, 391, 1, 0, 0, 0, 391, 393, 1, 0, 0, 0, 392, 351, 1, 0, 0, 0, 392, 375, 1, 0, 0, 0, 393, 80, 1, 0, 0, 0, 394, 400, 5, 39, 0, 0, 395, 399, 8, 8, 0, 0, 396, 397, 5, 39, 0, 0, 397, 399, 5, 39, 0, 0, 398, 395, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 399, 402, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 400, 401, 1, 0, 0, 0, 401, 403, 1, 0, 0, 0, 402, 400, 1, 0, 0, 0, 403, 404, 5, 39, 0, 0, 404, 82, 1, 0, 0, 0, 405, 406, 5, 42, 0, 0, 406, 84, 1, 0, 0, 0, 407, 408, 7, 9, 0, 0, 408, 86, 1, 0, 0, 0, 409, 410, 7, 10, 0, 0, 410, 88, 1, 0, 0, 0, 411, 412, 7, 11, 0, 0, 412, 90, 1, 0, 0, 0, 413, 414, 7, 12, 0, 0, 414, 92, 1, 0, 0, 0, 415, 416, 7, 13, 0, 0, 416, 94, 1, 0, 0, 0, 417, 418, 7, 14, 0, 0, 418, 96, 1, 0, 0, 0, 419, 420, 7, 15, 0, 0, 420, 98, 1, 0, 0, 0, 421, 422, 7, 16, 0, 0, 422, 100, 1, 0, 0, 0, 423, 424, 7, 17, 0, 0, 424, 102, 1, 0, 0, 0, 425, 426, 7, 18, 0, 0, 426, 104, 1, 0, 0, 0, 427, 428, 7, 19, 0, 0, 428, 106, 1, 0, 0, 0, 429, 430, 7, 20, 0, 0, 430, 108, 1, 0, 0, 0, 431, 432, 7, 21, 0, 0, 432, 110, 1, 0, 0, 0, 433, 434, 7, 22, 0, 0, 434, 112, 1, 0, 0, 0, 435, 436, 7, 23, 0, 0, 436, 114, 1, 0, 0, 0, 437, 438, 7, 24, 0, 0, 438, 116, 1, 0, 0, 0, 439, 440, 7, 25, 0, 0, 440, 118, 1, 0, 0, 0, 441, 442, 7, 26, 0, 0, 442, 120, 1, 0, 0, 0, 443, 444, 7, 27, 0, 0, 444, 122, 1, 0, 0, 0, 445, 446, 7, 28, 0, 0, 446, 124, 1, 0, 0, 0, 447, 448, 7, 29, 0, 0, 448, 126, 1, 0, 0, 0, 449, 450, 7, 30, 0, 0, 450, 128, 1, 0, 0, 0, 451, 452, 7, 31, 0, 0, 452, 130, 1, 0, 0, 0, 453, 454, 7, 32, 0, 0, 454, 132, 1, 0, 0, 0, 455, 456, 7, 33, 0, 0, 456, 134, 1, 0, 0, 0, 457, 458, 7, 34, 0, 0, 458, 136, 1, 0, 0, 0, 459, 460, 7, 35, 0, 0, 460, 138, 1, 0, 0, 0, 23, 0, 146, 162, 317, 319, 327, 329, 337, 345, 348, 353, 359, 362, 366, 371, 373, 379, 383, 388, 390, 392, 398, 400, 2, 0, 1, 0, 6, 0, 0] \ No newline at end of file +[4, 0, 41, 450, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 143, 8, 1, 11, 1, 12, 1, 144, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 303, 8, 36, 10, 36, 12, 36, 306, 9, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 313, 8, 36, 10, 36, 12, 36, 316, 9, 36, 1, 36, 1, 36, 1, 36, 5, 36, 321, 8, 36, 10, 36, 12, 36, 324, 9, 36, 1, 36, 1, 36, 1, 36, 5, 36, 329, 8, 36, 10, 36, 12, 36, 332, 9, 36, 3, 36, 334, 8, 36, 1, 37, 4, 37, 337, 8, 37, 11, 37, 12, 37, 338, 1, 37, 1, 37, 5, 37, 343, 8, 37, 10, 37, 12, 37, 346, 9, 37, 3, 37, 348, 8, 37, 1, 37, 1, 37, 3, 37, 352, 8, 37, 1, 37, 4, 37, 355, 8, 37, 11, 37, 12, 37, 356, 3, 37, 359, 8, 37, 1, 37, 1, 37, 4, 37, 363, 8, 37, 11, 37, 12, 37, 364, 1, 37, 1, 37, 3, 37, 369, 8, 37, 1, 37, 4, 37, 372, 8, 37, 11, 37, 12, 37, 373, 3, 37, 376, 8, 37, 3, 37, 378, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 384, 8, 38, 10, 38, 12, 38, 387, 9, 38, 1, 38, 1, 38, 1, 39, 1, 39, 3, 39, 393, 8, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 0, 0, 68, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 133, 0, 135, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 446, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 1, 137, 1, 0, 0, 0, 3, 142, 1, 0, 0, 0, 5, 148, 1, 0, 0, 0, 7, 150, 1, 0, 0, 0, 9, 152, 1, 0, 0, 0, 11, 154, 1, 0, 0, 0, 13, 156, 1, 0, 0, 0, 15, 158, 1, 0, 0, 0, 17, 165, 1, 0, 0, 0, 19, 171, 1, 0, 0, 0, 21, 187, 1, 0, 0, 0, 23, 196, 1, 0, 0, 0, 25, 200, 1, 0, 0, 0, 27, 203, 1, 0, 0, 0, 29, 206, 1, 0, 0, 0, 31, 209, 1, 0, 0, 0, 33, 214, 1, 0, 0, 0, 35, 223, 1, 0, 0, 0, 37, 225, 1, 0, 0, 0, 39, 227, 1, 0, 0, 0, 41, 229, 1, 0, 0, 0, 43, 232, 1, 0, 0, 0, 45, 235, 1, 0, 0, 0, 47, 238, 1, 0, 0, 0, 49, 243, 1, 0, 0, 0, 51, 247, 1, 0, 0, 0, 53, 253, 1, 0, 0, 0, 55, 257, 1, 0, 0, 0, 57, 262, 1, 0, 0, 0, 59, 265, 1, 0, 0, 0, 61, 271, 1, 0, 0, 0, 63, 275, 1, 0, 0, 0, 65, 279, 1, 0, 0, 0, 67, 283, 1, 0, 0, 0, 69, 287, 1, 0, 0, 0, 71, 292, 1, 0, 0, 0, 73, 333, 1, 0, 0, 0, 75, 377, 1, 0, 0, 0, 77, 379, 1, 0, 0, 0, 79, 392, 1, 0, 0, 0, 81, 394, 1, 0, 0, 0, 83, 396, 1, 0, 0, 0, 85, 398, 1, 0, 0, 0, 87, 400, 1, 0, 0, 0, 89, 402, 1, 0, 0, 0, 91, 404, 1, 0, 0, 0, 93, 406, 1, 0, 0, 0, 95, 408, 1, 0, 0, 0, 97, 410, 1, 0, 0, 0, 99, 412, 1, 0, 0, 0, 101, 414, 1, 0, 0, 0, 103, 416, 1, 0, 0, 0, 105, 418, 1, 0, 0, 0, 107, 420, 1, 0, 0, 0, 109, 422, 1, 0, 0, 0, 111, 424, 1, 0, 0, 0, 113, 426, 1, 0, 0, 0, 115, 428, 1, 0, 0, 0, 117, 430, 1, 0, 0, 0, 119, 432, 1, 0, 0, 0, 121, 434, 1, 0, 0, 0, 123, 436, 1, 0, 0, 0, 125, 438, 1, 0, 0, 0, 127, 440, 1, 0, 0, 0, 129, 442, 1, 0, 0, 0, 131, 444, 1, 0, 0, 0, 133, 446, 1, 0, 0, 0, 135, 448, 1, 0, 0, 0, 137, 138, 7, 0, 0, 0, 138, 139, 1, 0, 0, 0, 139, 140, 6, 0, 0, 0, 140, 2, 1, 0, 0, 0, 141, 143, 7, 1, 0, 0, 142, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 142, 1, 0, 0, 0, 144, 145, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 147, 6, 1, 1, 0, 147, 4, 1, 0, 0, 0, 148, 149, 5, 44, 0, 0, 149, 6, 1, 0, 0, 0, 150, 151, 5, 40, 0, 0, 151, 8, 1, 0, 0, 0, 152, 153, 5, 41, 0, 0, 153, 10, 1, 0, 0, 0, 154, 155, 5, 46, 0, 0, 155, 12, 1, 0, 0, 0, 156, 157, 5, 59, 0, 0, 157, 14, 1, 0, 0, 0, 158, 159, 3, 121, 60, 0, 159, 160, 3, 93, 46, 0, 160, 161, 3, 107, 53, 0, 161, 162, 3, 93, 46, 0, 162, 163, 3, 89, 44, 0, 163, 164, 3, 123, 61, 0, 164, 16, 1, 0, 0, 0, 165, 166, 3, 129, 64, 0, 166, 167, 3, 99, 49, 0, 167, 168, 3, 93, 46, 0, 168, 169, 3, 119, 59, 0, 169, 170, 3, 93, 46, 0, 170, 18, 1, 0, 0, 0, 171, 172, 3, 129, 64, 0, 172, 173, 3, 101, 50, 0, 173, 174, 3, 111, 55, 0, 174, 175, 3, 91, 45, 0, 175, 176, 3, 113, 56, 0, 176, 177, 3, 129, 64, 0, 177, 178, 3, 1, 0, 0, 178, 179, 3, 123, 61, 0, 179, 180, 3, 125, 62, 0, 180, 181, 3, 109, 54, 0, 181, 182, 3, 87, 43, 0, 182, 183, 3, 107, 53, 0, 183, 184, 3, 101, 50, 0, 184, 185, 3, 111, 55, 0, 185, 186, 3, 97, 48, 0, 186, 20, 1, 0, 0, 0, 187, 188, 3, 97, 48, 0, 188, 189, 3, 119, 59, 0, 189, 190, 3, 113, 56, 0, 190, 191, 3, 125, 62, 0, 191, 192, 3, 115, 57, 0, 192, 193, 3, 1, 0, 0, 193, 194, 3, 87, 43, 0, 194, 195, 3, 133, 66, 0, 195, 22, 1, 0, 0, 0, 196, 197, 3, 85, 42, 0, 197, 198, 3, 111, 55, 0, 198, 199, 3, 91, 45, 0, 199, 24, 1, 0, 0, 0, 200, 201, 3, 85, 42, 0, 201, 202, 3, 121, 60, 0, 202, 26, 1, 0, 0, 0, 203, 204, 3, 113, 56, 0, 204, 205, 3, 119, 59, 0, 205, 28, 1, 0, 0, 0, 206, 207, 3, 101, 50, 0, 207, 208, 3, 121, 60, 0, 208, 30, 1, 0, 0, 0, 209, 210, 3, 107, 53, 0, 210, 211, 3, 101, 50, 0, 211, 212, 3, 105, 52, 0, 212, 213, 3, 93, 46, 0, 213, 32, 1, 0, 0, 0, 214, 215, 3, 111, 55, 0, 215, 216, 3, 113, 56, 0, 216, 217, 3, 123, 61, 0, 217, 218, 3, 1, 0, 0, 218, 219, 3, 107, 53, 0, 219, 220, 3, 101, 50, 0, 220, 221, 3, 105, 52, 0, 221, 222, 3, 93, 46, 0, 222, 34, 1, 0, 0, 0, 223, 224, 5, 61, 0, 0, 224, 36, 1, 0, 0, 0, 225, 226, 5, 62, 0, 0, 226, 38, 1, 0, 0, 0, 227, 228, 5, 60, 0, 0, 228, 40, 1, 0, 0, 0, 229, 230, 3, 39, 19, 0, 230, 231, 3, 35, 17, 0, 231, 42, 1, 0, 0, 0, 232, 233, 3, 37, 18, 0, 233, 234, 3, 35, 17, 0, 234, 44, 1, 0, 0, 0, 235, 236, 5, 33, 0, 0, 236, 237, 3, 35, 17, 0, 237, 46, 1, 0, 0, 0, 238, 239, 3, 111, 55, 0, 239, 240, 3, 125, 62, 0, 240, 241, 3, 107, 53, 0, 241, 242, 3, 107, 53, 0, 242, 48, 1, 0, 0, 0, 243, 244, 3, 29, 14, 0, 244, 245, 3, 1, 0, 0, 245, 246, 3, 47, 23, 0, 246, 50, 1, 0, 0, 0, 247, 248, 3, 29, 14, 0, 248, 249, 3, 1, 0, 0, 249, 250, 3, 53, 26, 0, 250, 251, 3, 1, 0, 0, 251, 252, 3, 47, 23, 0, 252, 52, 1, 0, 0, 0, 253, 254, 3, 111, 55, 0, 254, 255, 3, 113, 56, 0, 255, 256, 3, 123, 61, 0, 256, 54, 1, 0, 0, 0, 257, 258, 3, 53, 26, 0, 258, 259, 3, 1, 0, 0, 259, 260, 3, 101, 50, 0, 260, 261, 3, 111, 55, 0, 261, 56, 1, 0, 0, 0, 262, 263, 3, 101, 50, 0, 263, 264, 3, 111, 55, 0, 264, 58, 1, 0, 0, 0, 265, 266, 3, 89, 44, 0, 266, 267, 3, 113, 56, 0, 267, 268, 3, 125, 62, 0, 268, 269, 3, 111, 55, 0, 269, 270, 3, 123, 61, 0, 270, 60, 1, 0, 0, 0, 271, 272, 3, 121, 60, 0, 272, 273, 3, 125, 62, 0, 273, 274, 3, 109, 54, 0, 274, 62, 1, 0, 0, 0, 275, 276, 3, 109, 54, 0, 276, 277, 3, 101, 50, 0, 277, 278, 3, 111, 55, 0, 278, 64, 1, 0, 0, 0, 279, 280, 3, 109, 54, 0, 280, 281, 3, 85, 42, 0, 281, 282, 3, 131, 65, 0, 282, 66, 1, 0, 0, 0, 283, 284, 3, 85, 42, 0, 284, 285, 3, 127, 63, 0, 285, 286, 3, 97, 48, 0, 286, 68, 1, 0, 0, 0, 287, 288, 3, 123, 61, 0, 288, 289, 3, 119, 59, 0, 289, 290, 3, 125, 62, 0, 290, 291, 3, 93, 46, 0, 291, 70, 1, 0, 0, 0, 292, 293, 3, 95, 47, 0, 293, 294, 3, 85, 42, 0, 294, 295, 3, 107, 53, 0, 295, 296, 3, 121, 60, 0, 296, 297, 3, 93, 46, 0, 297, 72, 1, 0, 0, 0, 298, 304, 5, 34, 0, 0, 299, 303, 8, 2, 0, 0, 300, 301, 5, 34, 0, 0, 301, 303, 5, 34, 0, 0, 302, 299, 1, 0, 0, 0, 302, 300, 1, 0, 0, 0, 303, 306, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 307, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 307, 334, 5, 34, 0, 0, 308, 314, 5, 96, 0, 0, 309, 313, 8, 3, 0, 0, 310, 311, 5, 96, 0, 0, 311, 313, 5, 96, 0, 0, 312, 309, 1, 0, 0, 0, 312, 310, 1, 0, 0, 0, 313, 316, 1, 0, 0, 0, 314, 312, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 317, 1, 0, 0, 0, 316, 314, 1, 0, 0, 0, 317, 334, 5, 96, 0, 0, 318, 322, 5, 91, 0, 0, 319, 321, 8, 4, 0, 0, 320, 319, 1, 0, 0, 0, 321, 324, 1, 0, 0, 0, 322, 320, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 323, 325, 1, 0, 0, 0, 324, 322, 1, 0, 0, 0, 325, 334, 5, 93, 0, 0, 326, 330, 7, 5, 0, 0, 327, 329, 7, 6, 0, 0, 328, 327, 1, 0, 0, 0, 329, 332, 1, 0, 0, 0, 330, 328, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 334, 1, 0, 0, 0, 332, 330, 1, 0, 0, 0, 333, 298, 1, 0, 0, 0, 333, 308, 1, 0, 0, 0, 333, 318, 1, 0, 0, 0, 333, 326, 1, 0, 0, 0, 334, 74, 1, 0, 0, 0, 335, 337, 3, 83, 41, 0, 336, 335, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 336, 1, 0, 0, 0, 338, 339, 1, 0, 0, 0, 339, 347, 1, 0, 0, 0, 340, 344, 5, 46, 0, 0, 341, 343, 3, 83, 41, 0, 342, 341, 1, 0, 0, 0, 343, 346, 1, 0, 0, 0, 344, 342, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 348, 1, 0, 0, 0, 346, 344, 1, 0, 0, 0, 347, 340, 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 358, 1, 0, 0, 0, 349, 351, 3, 93, 46, 0, 350, 352, 7, 7, 0, 0, 351, 350, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 355, 3, 83, 41, 0, 354, 353, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 354, 1, 0, 0, 0, 356, 357, 1, 0, 0, 0, 357, 359, 1, 0, 0, 0, 358, 349, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 378, 1, 0, 0, 0, 360, 362, 5, 46, 0, 0, 361, 363, 3, 83, 41, 0, 362, 361, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 362, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 375, 1, 0, 0, 0, 366, 368, 3, 93, 46, 0, 367, 369, 7, 7, 0, 0, 368, 367, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 371, 1, 0, 0, 0, 370, 372, 3, 83, 41, 0, 371, 370, 1, 0, 0, 0, 372, 373, 1, 0, 0, 0, 373, 371, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 376, 1, 0, 0, 0, 375, 366, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 378, 1, 0, 0, 0, 377, 336, 1, 0, 0, 0, 377, 360, 1, 0, 0, 0, 378, 76, 1, 0, 0, 0, 379, 385, 5, 39, 0, 0, 380, 384, 8, 8, 0, 0, 381, 382, 5, 39, 0, 0, 382, 384, 5, 39, 0, 0, 383, 380, 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 384, 387, 1, 0, 0, 0, 385, 383, 1, 0, 0, 0, 385, 386, 1, 0, 0, 0, 386, 388, 1, 0, 0, 0, 387, 385, 1, 0, 0, 0, 388, 389, 5, 39, 0, 0, 389, 78, 1, 0, 0, 0, 390, 393, 3, 69, 34, 0, 391, 393, 3, 71, 35, 0, 392, 390, 1, 0, 0, 0, 392, 391, 1, 0, 0, 0, 393, 80, 1, 0, 0, 0, 394, 395, 5, 42, 0, 0, 395, 82, 1, 0, 0, 0, 396, 397, 7, 9, 0, 0, 397, 84, 1, 0, 0, 0, 398, 399, 7, 10, 0, 0, 399, 86, 1, 0, 0, 0, 400, 401, 7, 11, 0, 0, 401, 88, 1, 0, 0, 0, 402, 403, 7, 12, 0, 0, 403, 90, 1, 0, 0, 0, 404, 405, 7, 13, 0, 0, 405, 92, 1, 0, 0, 0, 406, 407, 7, 14, 0, 0, 407, 94, 1, 0, 0, 0, 408, 409, 7, 15, 0, 0, 409, 96, 1, 0, 0, 0, 410, 411, 7, 16, 0, 0, 411, 98, 1, 0, 0, 0, 412, 413, 7, 17, 0, 0, 413, 100, 1, 0, 0, 0, 414, 415, 7, 18, 0, 0, 415, 102, 1, 0, 0, 0, 416, 417, 7, 19, 0, 0, 417, 104, 1, 0, 0, 0, 418, 419, 7, 20, 0, 0, 419, 106, 1, 0, 0, 0, 420, 421, 7, 21, 0, 0, 421, 108, 1, 0, 0, 0, 422, 423, 7, 22, 0, 0, 423, 110, 1, 0, 0, 0, 424, 425, 7, 23, 0, 0, 425, 112, 1, 0, 0, 0, 426, 427, 7, 24, 0, 0, 427, 114, 1, 0, 0, 0, 428, 429, 7, 25, 0, 0, 429, 116, 1, 0, 0, 0, 430, 431, 7, 26, 0, 0, 431, 118, 1, 0, 0, 0, 432, 433, 7, 27, 0, 0, 433, 120, 1, 0, 0, 0, 434, 435, 7, 28, 0, 0, 435, 122, 1, 0, 0, 0, 436, 437, 7, 29, 0, 0, 437, 124, 1, 0, 0, 0, 438, 439, 7, 30, 0, 0, 439, 126, 1, 0, 0, 0, 440, 441, 7, 31, 0, 0, 441, 128, 1, 0, 0, 0, 442, 443, 7, 32, 0, 0, 443, 130, 1, 0, 0, 0, 444, 445, 7, 33, 0, 0, 445, 132, 1, 0, 0, 0, 446, 447, 7, 34, 0, 0, 447, 134, 1, 0, 0, 0, 448, 449, 7, 35, 0, 0, 449, 136, 1, 0, 0, 0, 23, 0, 144, 302, 304, 312, 314, 322, 330, 333, 338, 344, 347, 351, 356, 358, 364, 368, 373, 375, 377, 383, 385, 392, 2, 0, 1, 0, 6, 0, 0] \ No newline at end of file diff --git a/processor/stream_processor/parser/SqlLexer.tokens b/processor/stream_processor/parser/SqlLexer.tokens index f00c22ab66a0..93bad54ad372 100644 --- a/processor/stream_processor/parser/SqlLexer.tokens +++ b/processor/stream_processor/parser/SqlLexer.tokens @@ -5,12 +5,12 @@ L_BRACKET=4 R_BRACKET=5 DOT=6 EOQ=7 -BOOLEAN_LITERAL=8 -K_SELECT=9 -K_WHERE=10 -K_WINDOW_TUMBLING=11 -K_GROUP_BY=12 -K_AND=13 +K_SELECT=8 +K_WHERE=9 +K_WINDOW_TUMBLING=10 +K_GROUP_BY=11 +K_AND=12 +K_AS=13 K_OR=14 K_IS=15 K_LIKE=16 @@ -34,12 +34,11 @@ K_MAX=33 K_AVG=34 K_TRUE=35 K_FALSE=36 -K_UPPER=37 -K_LOWER=38 -IDENTIFIER=39 -NUMERIC_LITERAL=40 -STRING_LITERAL=41 -STAR=42 +IDENTIFIER=37 +NUMERIC_LITERAL=38 +STRING_LITERAL=39 +BOOLEAN_LITERAL=40 +STAR=41 ','=3 '('=4 ')'=5 @@ -48,4 +47,4 @@ STAR=42 '='=18 '>'=19 '<'=20 -'*'=42 +'*'=41 diff --git a/processor/stream_processor/parser/sql_base_visitor.go b/processor/stream_processor/parser/sql_base_visitor.go index f4106250f3b1..fd878f8d2dc7 100644 --- a/processor/stream_processor/parser/sql_base_visitor.go +++ b/processor/stream_processor/parser/sql_base_visitor.go @@ -48,6 +48,14 @@ func (v *BaseSqlVisitor) VisitFunctionColumn(ctx *FunctionColumnContext) interfa return v.VisitChildren(ctx) } +func (v *BaseSqlVisitor) VisitAlias(ctx *AliasContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitFunction(ctx *FunctionContext) interface{} { + return v.VisitChildren(ctx) +} + func (v *BaseSqlVisitor) VisitColumnAggregation(ctx *ColumnAggregationContext) interface{} { return v.VisitChildren(ctx) } diff --git a/processor/stream_processor/parser/sql_lexer.go b/processor/stream_processor/parser/sql_lexer.go index 9c83fb99afe0..608b376fac3f 100644 --- a/processor/stream_processor/parser/sql_lexer.go +++ b/processor/stream_processor/parser/sql_lexer.go @@ -46,31 +46,31 @@ func sqllexerLexerInit() { staticData.literalNames = []string{ "", "", "", "','", "'('", "')'", "'.'", "';'", "", "", "", "", "", "", "", "", "", "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "'*'", + "", "", "", "", "", "", "", "", "", "", "", "", "'*'", } staticData.symbolicNames = []string{ "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "DOT", "EOQ", - "BOOLEAN_LITERAL", "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", - "K_AND", "K_OR", "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", - "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", - "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", "K_IN", "K_COUNT", - "K_SUM", "K_MIN", "K_MAX", "K_AVG", "K_TRUE", "K_FALSE", "K_UPPER", - "K_LOWER", "IDENTIFIER", "NUMERIC_LITERAL", "STRING_LITERAL", "STAR", + "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_AS", + "K_OR", "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", + "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", + "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", "K_IN", "K_COUNT", "K_SUM", "K_MIN", + "K_MAX", "K_AVG", "K_TRUE", "K_FALSE", "IDENTIFIER", "NUMERIC_LITERAL", + "STRING_LITERAL", "BOOLEAN_LITERAL", "STAR", } staticData.ruleNames = []string{ - "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "DOT", "EOQ", "BOOLEAN_LITERAL", - "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", + "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "DOT", "EOQ", "K_SELECT", + "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_AS", "K_OR", "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", "K_IN", "K_COUNT", "K_SUM", "K_MIN", "K_MAX", "K_AVG", - "K_TRUE", "K_FALSE", "K_UPPER", "K_LOWER", "IDENTIFIER", "NUMERIC_LITERAL", - "STRING_LITERAL", "STAR", "DIGIT", "A", "B", "C", "D", "E", "F", "G", + "K_TRUE", "K_FALSE", "IDENTIFIER", "NUMERIC_LITERAL", "STRING_LITERAL", + "BOOLEAN_LITERAL", "STAR", "DIGIT", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 0, 42, 461, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, + 4, 0, 41, 450, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, @@ -83,201 +83,196 @@ func sqllexerLexerInit() { 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, - 2, 68, 7, 68, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 145, 8, 1, 11, 1, 12, - 1, 146, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, - 6, 1, 6, 1, 7, 1, 7, 3, 7, 163, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, - 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, - 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, - 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, - 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, - 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, - 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, - 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, - 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, - 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, - 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, - 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, - 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, - 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, - 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 5, - 38, 318, 8, 38, 10, 38, 12, 38, 321, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, - 1, 38, 5, 38, 328, 8, 38, 10, 38, 12, 38, 331, 9, 38, 1, 38, 1, 38, 1, - 38, 5, 38, 336, 8, 38, 10, 38, 12, 38, 339, 9, 38, 1, 38, 1, 38, 1, 38, - 5, 38, 344, 8, 38, 10, 38, 12, 38, 347, 9, 38, 3, 38, 349, 8, 38, 1, 39, - 4, 39, 352, 8, 39, 11, 39, 12, 39, 353, 1, 39, 1, 39, 5, 39, 358, 8, 39, - 10, 39, 12, 39, 361, 9, 39, 3, 39, 363, 8, 39, 1, 39, 1, 39, 3, 39, 367, - 8, 39, 1, 39, 4, 39, 370, 8, 39, 11, 39, 12, 39, 371, 3, 39, 374, 8, 39, - 1, 39, 1, 39, 4, 39, 378, 8, 39, 11, 39, 12, 39, 379, 1, 39, 1, 39, 3, - 39, 384, 8, 39, 1, 39, 4, 39, 387, 8, 39, 11, 39, 12, 39, 388, 3, 39, 391, - 8, 39, 3, 39, 393, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 5, 40, 399, 8, 40, - 10, 40, 12, 40, 402, 9, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, - 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, - 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, - 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, - 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, - 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 0, 0, - 69, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, - 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, - 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, - 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, - 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, - 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, - 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, - 0, 133, 0, 135, 0, 137, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, - 9, 9, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, - 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, - 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, - 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, - 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, - 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, - 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, - 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, - 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, - 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, - 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 457, - 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, - 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, - 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, - 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, - 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, - 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, - 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, - 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, - 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, - 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, - 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 1, 139, - 1, 0, 0, 0, 3, 144, 1, 0, 0, 0, 5, 150, 1, 0, 0, 0, 7, 152, 1, 0, 0, 0, - 9, 154, 1, 0, 0, 0, 11, 156, 1, 0, 0, 0, 13, 158, 1, 0, 0, 0, 15, 162, - 1, 0, 0, 0, 17, 164, 1, 0, 0, 0, 19, 171, 1, 0, 0, 0, 21, 177, 1, 0, 0, - 0, 23, 193, 1, 0, 0, 0, 25, 202, 1, 0, 0, 0, 27, 206, 1, 0, 0, 0, 29, 209, - 1, 0, 0, 0, 31, 212, 1, 0, 0, 0, 33, 217, 1, 0, 0, 0, 35, 226, 1, 0, 0, - 0, 37, 228, 1, 0, 0, 0, 39, 230, 1, 0, 0, 0, 41, 232, 1, 0, 0, 0, 43, 235, - 1, 0, 0, 0, 45, 238, 1, 0, 0, 0, 47, 241, 1, 0, 0, 0, 49, 246, 1, 0, 0, - 0, 51, 250, 1, 0, 0, 0, 53, 256, 1, 0, 0, 0, 55, 260, 1, 0, 0, 0, 57, 265, - 1, 0, 0, 0, 59, 268, 1, 0, 0, 0, 61, 274, 1, 0, 0, 0, 63, 278, 1, 0, 0, - 0, 65, 282, 1, 0, 0, 0, 67, 286, 1, 0, 0, 0, 69, 290, 1, 0, 0, 0, 71, 295, - 1, 0, 0, 0, 73, 301, 1, 0, 0, 0, 75, 307, 1, 0, 0, 0, 77, 348, 1, 0, 0, - 0, 79, 392, 1, 0, 0, 0, 81, 394, 1, 0, 0, 0, 83, 405, 1, 0, 0, 0, 85, 407, - 1, 0, 0, 0, 87, 409, 1, 0, 0, 0, 89, 411, 1, 0, 0, 0, 91, 413, 1, 0, 0, - 0, 93, 415, 1, 0, 0, 0, 95, 417, 1, 0, 0, 0, 97, 419, 1, 0, 0, 0, 99, 421, - 1, 0, 0, 0, 101, 423, 1, 0, 0, 0, 103, 425, 1, 0, 0, 0, 105, 427, 1, 0, - 0, 0, 107, 429, 1, 0, 0, 0, 109, 431, 1, 0, 0, 0, 111, 433, 1, 0, 0, 0, - 113, 435, 1, 0, 0, 0, 115, 437, 1, 0, 0, 0, 117, 439, 1, 0, 0, 0, 119, - 441, 1, 0, 0, 0, 121, 443, 1, 0, 0, 0, 123, 445, 1, 0, 0, 0, 125, 447, - 1, 0, 0, 0, 127, 449, 1, 0, 0, 0, 129, 451, 1, 0, 0, 0, 131, 453, 1, 0, - 0, 0, 133, 455, 1, 0, 0, 0, 135, 457, 1, 0, 0, 0, 137, 459, 1, 0, 0, 0, - 139, 140, 7, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 142, 6, 0, 0, 0, 142, - 2, 1, 0, 0, 0, 143, 145, 7, 1, 0, 0, 144, 143, 1, 0, 0, 0, 145, 146, 1, - 0, 0, 0, 146, 144, 1, 0, 0, 0, 146, 147, 1, 0, 0, 0, 147, 148, 1, 0, 0, - 0, 148, 149, 6, 1, 1, 0, 149, 4, 1, 0, 0, 0, 150, 151, 5, 44, 0, 0, 151, - 6, 1, 0, 0, 0, 152, 153, 5, 40, 0, 0, 153, 8, 1, 0, 0, 0, 154, 155, 5, - 41, 0, 0, 155, 10, 1, 0, 0, 0, 156, 157, 5, 46, 0, 0, 157, 12, 1, 0, 0, - 0, 158, 159, 5, 59, 0, 0, 159, 14, 1, 0, 0, 0, 160, 163, 3, 69, 34, 0, - 161, 163, 3, 71, 35, 0, 162, 160, 1, 0, 0, 0, 162, 161, 1, 0, 0, 0, 163, - 16, 1, 0, 0, 0, 164, 165, 3, 123, 61, 0, 165, 166, 3, 95, 47, 0, 166, 167, - 3, 109, 54, 0, 167, 168, 3, 95, 47, 0, 168, 169, 3, 91, 45, 0, 169, 170, - 3, 125, 62, 0, 170, 18, 1, 0, 0, 0, 171, 172, 3, 131, 65, 0, 172, 173, - 3, 101, 50, 0, 173, 174, 3, 95, 47, 0, 174, 175, 3, 121, 60, 0, 175, 176, - 3, 95, 47, 0, 176, 20, 1, 0, 0, 0, 177, 178, 3, 131, 65, 0, 178, 179, 3, - 103, 51, 0, 179, 180, 3, 113, 56, 0, 180, 181, 3, 93, 46, 0, 181, 182, - 3, 115, 57, 0, 182, 183, 3, 131, 65, 0, 183, 184, 3, 1, 0, 0, 184, 185, - 3, 125, 62, 0, 185, 186, 3, 127, 63, 0, 186, 187, 3, 111, 55, 0, 187, 188, - 3, 89, 44, 0, 188, 189, 3, 109, 54, 0, 189, 190, 3, 103, 51, 0, 190, 191, - 3, 113, 56, 0, 191, 192, 3, 99, 49, 0, 192, 22, 1, 0, 0, 0, 193, 194, 3, - 99, 49, 0, 194, 195, 3, 121, 60, 0, 195, 196, 3, 115, 57, 0, 196, 197, - 3, 127, 63, 0, 197, 198, 3, 117, 58, 0, 198, 199, 3, 1, 0, 0, 199, 200, - 3, 89, 44, 0, 200, 201, 3, 135, 67, 0, 201, 24, 1, 0, 0, 0, 202, 203, 3, - 87, 43, 0, 203, 204, 3, 113, 56, 0, 204, 205, 3, 93, 46, 0, 205, 26, 1, - 0, 0, 0, 206, 207, 3, 115, 57, 0, 207, 208, 3, 121, 60, 0, 208, 28, 1, - 0, 0, 0, 209, 210, 3, 103, 51, 0, 210, 211, 3, 123, 61, 0, 211, 30, 1, - 0, 0, 0, 212, 213, 3, 109, 54, 0, 213, 214, 3, 103, 51, 0, 214, 215, 3, - 107, 53, 0, 215, 216, 3, 95, 47, 0, 216, 32, 1, 0, 0, 0, 217, 218, 3, 113, - 56, 0, 218, 219, 3, 115, 57, 0, 219, 220, 3, 125, 62, 0, 220, 221, 3, 1, - 0, 0, 221, 222, 3, 109, 54, 0, 222, 223, 3, 103, 51, 0, 223, 224, 3, 107, - 53, 0, 224, 225, 3, 95, 47, 0, 225, 34, 1, 0, 0, 0, 226, 227, 5, 61, 0, - 0, 227, 36, 1, 0, 0, 0, 228, 229, 5, 62, 0, 0, 229, 38, 1, 0, 0, 0, 230, - 231, 5, 60, 0, 0, 231, 40, 1, 0, 0, 0, 232, 233, 3, 39, 19, 0, 233, 234, - 3, 35, 17, 0, 234, 42, 1, 0, 0, 0, 235, 236, 3, 37, 18, 0, 236, 237, 3, - 35, 17, 0, 237, 44, 1, 0, 0, 0, 238, 239, 5, 33, 0, 0, 239, 240, 3, 35, - 17, 0, 240, 46, 1, 0, 0, 0, 241, 242, 3, 113, 56, 0, 242, 243, 3, 127, - 63, 0, 243, 244, 3, 109, 54, 0, 244, 245, 3, 109, 54, 0, 245, 48, 1, 0, - 0, 0, 246, 247, 3, 29, 14, 0, 247, 248, 3, 1, 0, 0, 248, 249, 3, 47, 23, - 0, 249, 50, 1, 0, 0, 0, 250, 251, 3, 29, 14, 0, 251, 252, 3, 1, 0, 0, 252, - 253, 3, 53, 26, 0, 253, 254, 3, 1, 0, 0, 254, 255, 3, 47, 23, 0, 255, 52, - 1, 0, 0, 0, 256, 257, 3, 113, 56, 0, 257, 258, 3, 115, 57, 0, 258, 259, - 3, 125, 62, 0, 259, 54, 1, 0, 0, 0, 260, 261, 3, 53, 26, 0, 261, 262, 3, - 1, 0, 0, 262, 263, 3, 103, 51, 0, 263, 264, 3, 113, 56, 0, 264, 56, 1, - 0, 0, 0, 265, 266, 3, 103, 51, 0, 266, 267, 3, 113, 56, 0, 267, 58, 1, - 0, 0, 0, 268, 269, 3, 91, 45, 0, 269, 270, 3, 115, 57, 0, 270, 271, 3, - 127, 63, 0, 271, 272, 3, 113, 56, 0, 272, 273, 3, 125, 62, 0, 273, 60, - 1, 0, 0, 0, 274, 275, 3, 123, 61, 0, 275, 276, 3, 127, 63, 0, 276, 277, - 3, 111, 55, 0, 277, 62, 1, 0, 0, 0, 278, 279, 3, 111, 55, 0, 279, 280, - 3, 103, 51, 0, 280, 281, 3, 113, 56, 0, 281, 64, 1, 0, 0, 0, 282, 283, - 3, 111, 55, 0, 283, 284, 3, 87, 43, 0, 284, 285, 3, 133, 66, 0, 285, 66, - 1, 0, 0, 0, 286, 287, 3, 87, 43, 0, 287, 288, 3, 129, 64, 0, 288, 289, - 3, 99, 49, 0, 289, 68, 1, 0, 0, 0, 290, 291, 3, 125, 62, 0, 291, 292, 3, - 121, 60, 0, 292, 293, 3, 127, 63, 0, 293, 294, 3, 95, 47, 0, 294, 70, 1, - 0, 0, 0, 295, 296, 3, 97, 48, 0, 296, 297, 3, 87, 43, 0, 297, 298, 3, 109, - 54, 0, 298, 299, 3, 123, 61, 0, 299, 300, 3, 95, 47, 0, 300, 72, 1, 0, - 0, 0, 301, 302, 3, 127, 63, 0, 302, 303, 3, 117, 58, 0, 303, 304, 3, 117, - 58, 0, 304, 305, 3, 95, 47, 0, 305, 306, 3, 121, 60, 0, 306, 74, 1, 0, - 0, 0, 307, 308, 3, 109, 54, 0, 308, 309, 3, 115, 57, 0, 309, 310, 3, 131, - 65, 0, 310, 311, 3, 95, 47, 0, 311, 312, 3, 121, 60, 0, 312, 76, 1, 0, - 0, 0, 313, 319, 5, 34, 0, 0, 314, 318, 8, 2, 0, 0, 315, 316, 5, 34, 0, - 0, 316, 318, 5, 34, 0, 0, 317, 314, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 318, - 321, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 322, - 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 349, 5, 34, 0, 0, 323, 329, 5, 96, - 0, 0, 324, 328, 8, 3, 0, 0, 325, 326, 5, 96, 0, 0, 326, 328, 5, 96, 0, - 0, 327, 324, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 328, 331, 1, 0, 0, 0, 329, - 327, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 332, 1, 0, 0, 0, 331, 329, - 1, 0, 0, 0, 332, 349, 5, 96, 0, 0, 333, 337, 5, 91, 0, 0, 334, 336, 8, - 4, 0, 0, 335, 334, 1, 0, 0, 0, 336, 339, 1, 0, 0, 0, 337, 335, 1, 0, 0, - 0, 337, 338, 1, 0, 0, 0, 338, 340, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 340, - 349, 5, 93, 0, 0, 341, 345, 7, 5, 0, 0, 342, 344, 7, 6, 0, 0, 343, 342, - 1, 0, 0, 0, 344, 347, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, - 0, 0, 346, 349, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 348, 313, 1, 0, 0, 0, - 348, 323, 1, 0, 0, 0, 348, 333, 1, 0, 0, 0, 348, 341, 1, 0, 0, 0, 349, - 78, 1, 0, 0, 0, 350, 352, 3, 85, 42, 0, 351, 350, 1, 0, 0, 0, 352, 353, - 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 362, 1, 0, - 0, 0, 355, 359, 5, 46, 0, 0, 356, 358, 3, 85, 42, 0, 357, 356, 1, 0, 0, - 0, 358, 361, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, - 363, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 362, 355, 1, 0, 0, 0, 362, 363, - 1, 0, 0, 0, 363, 373, 1, 0, 0, 0, 364, 366, 3, 95, 47, 0, 365, 367, 7, - 7, 0, 0, 366, 365, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 369, 1, 0, 0, - 0, 368, 370, 3, 85, 42, 0, 369, 368, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, - 371, 369, 1, 0, 0, 0, 371, 372, 1, 0, 0, 0, 372, 374, 1, 0, 0, 0, 373, - 364, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 393, 1, 0, 0, 0, 375, 377, - 5, 46, 0, 0, 376, 378, 3, 85, 42, 0, 377, 376, 1, 0, 0, 0, 378, 379, 1, - 0, 0, 0, 379, 377, 1, 0, 0, 0, 379, 380, 1, 0, 0, 0, 380, 390, 1, 0, 0, - 0, 381, 383, 3, 95, 47, 0, 382, 384, 7, 7, 0, 0, 383, 382, 1, 0, 0, 0, - 383, 384, 1, 0, 0, 0, 384, 386, 1, 0, 0, 0, 385, 387, 3, 85, 42, 0, 386, - 385, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, 388, 389, - 1, 0, 0, 0, 389, 391, 1, 0, 0, 0, 390, 381, 1, 0, 0, 0, 390, 391, 1, 0, - 0, 0, 391, 393, 1, 0, 0, 0, 392, 351, 1, 0, 0, 0, 392, 375, 1, 0, 0, 0, - 393, 80, 1, 0, 0, 0, 394, 400, 5, 39, 0, 0, 395, 399, 8, 8, 0, 0, 396, - 397, 5, 39, 0, 0, 397, 399, 5, 39, 0, 0, 398, 395, 1, 0, 0, 0, 398, 396, - 1, 0, 0, 0, 399, 402, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 400, 401, 1, 0, - 0, 0, 401, 403, 1, 0, 0, 0, 402, 400, 1, 0, 0, 0, 403, 404, 5, 39, 0, 0, - 404, 82, 1, 0, 0, 0, 405, 406, 5, 42, 0, 0, 406, 84, 1, 0, 0, 0, 407, 408, - 7, 9, 0, 0, 408, 86, 1, 0, 0, 0, 409, 410, 7, 10, 0, 0, 410, 88, 1, 0, - 0, 0, 411, 412, 7, 11, 0, 0, 412, 90, 1, 0, 0, 0, 413, 414, 7, 12, 0, 0, - 414, 92, 1, 0, 0, 0, 415, 416, 7, 13, 0, 0, 416, 94, 1, 0, 0, 0, 417, 418, - 7, 14, 0, 0, 418, 96, 1, 0, 0, 0, 419, 420, 7, 15, 0, 0, 420, 98, 1, 0, - 0, 0, 421, 422, 7, 16, 0, 0, 422, 100, 1, 0, 0, 0, 423, 424, 7, 17, 0, - 0, 424, 102, 1, 0, 0, 0, 425, 426, 7, 18, 0, 0, 426, 104, 1, 0, 0, 0, 427, - 428, 7, 19, 0, 0, 428, 106, 1, 0, 0, 0, 429, 430, 7, 20, 0, 0, 430, 108, - 1, 0, 0, 0, 431, 432, 7, 21, 0, 0, 432, 110, 1, 0, 0, 0, 433, 434, 7, 22, - 0, 0, 434, 112, 1, 0, 0, 0, 435, 436, 7, 23, 0, 0, 436, 114, 1, 0, 0, 0, - 437, 438, 7, 24, 0, 0, 438, 116, 1, 0, 0, 0, 439, 440, 7, 25, 0, 0, 440, - 118, 1, 0, 0, 0, 441, 442, 7, 26, 0, 0, 442, 120, 1, 0, 0, 0, 443, 444, - 7, 27, 0, 0, 444, 122, 1, 0, 0, 0, 445, 446, 7, 28, 0, 0, 446, 124, 1, - 0, 0, 0, 447, 448, 7, 29, 0, 0, 448, 126, 1, 0, 0, 0, 449, 450, 7, 30, - 0, 0, 450, 128, 1, 0, 0, 0, 451, 452, 7, 31, 0, 0, 452, 130, 1, 0, 0, 0, - 453, 454, 7, 32, 0, 0, 454, 132, 1, 0, 0, 0, 455, 456, 7, 33, 0, 0, 456, - 134, 1, 0, 0, 0, 457, 458, 7, 34, 0, 0, 458, 136, 1, 0, 0, 0, 459, 460, - 7, 35, 0, 0, 460, 138, 1, 0, 0, 0, 23, 0, 146, 162, 317, 319, 327, 329, - 337, 345, 348, 353, 359, 362, 366, 371, 373, 379, 383, 388, 390, 392, 398, - 400, 2, 0, 1, 0, 6, 0, 0, + 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 143, 8, 1, 11, 1, 12, 1, 144, 1, 1, + 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, + 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, + 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, + 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, + 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, + 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, + 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, + 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, + 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, + 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, + 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, + 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, + 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, + 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, + 1, 36, 1, 36, 1, 36, 5, 36, 303, 8, 36, 10, 36, 12, 36, 306, 9, 36, 1, + 36, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 313, 8, 36, 10, 36, 12, 36, 316, + 9, 36, 1, 36, 1, 36, 1, 36, 5, 36, 321, 8, 36, 10, 36, 12, 36, 324, 9, + 36, 1, 36, 1, 36, 1, 36, 5, 36, 329, 8, 36, 10, 36, 12, 36, 332, 9, 36, + 3, 36, 334, 8, 36, 1, 37, 4, 37, 337, 8, 37, 11, 37, 12, 37, 338, 1, 37, + 1, 37, 5, 37, 343, 8, 37, 10, 37, 12, 37, 346, 9, 37, 3, 37, 348, 8, 37, + 1, 37, 1, 37, 3, 37, 352, 8, 37, 1, 37, 4, 37, 355, 8, 37, 11, 37, 12, + 37, 356, 3, 37, 359, 8, 37, 1, 37, 1, 37, 4, 37, 363, 8, 37, 11, 37, 12, + 37, 364, 1, 37, 1, 37, 3, 37, 369, 8, 37, 1, 37, 4, 37, 372, 8, 37, 11, + 37, 12, 37, 373, 3, 37, 376, 8, 37, 3, 37, 378, 8, 37, 1, 38, 1, 38, 1, + 38, 1, 38, 5, 38, 384, 8, 38, 10, 38, 12, 38, 387, 9, 38, 1, 38, 1, 38, + 1, 39, 1, 39, 3, 39, 393, 8, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, + 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, + 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, + 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, + 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, + 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 0, 0, 68, 1, + 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, + 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, + 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, + 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, + 77, 39, 79, 40, 81, 41, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, + 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, + 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 133, + 0, 135, 0, 1, 0, 36, 3, 0, 9, 11, 13, 13, 32, 32, 2, 0, 9, 9, 32, 32, 1, + 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, + 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, + 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, + 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, + 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, + 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, + 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, + 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, + 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, + 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, + 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 446, 0, 1, 1, 0, 0, + 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, + 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, + 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, + 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, + 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, + 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, + 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, + 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, + 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, + 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, + 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 1, 137, 1, 0, 0, 0, 3, 142, 1, 0, 0, 0, + 5, 148, 1, 0, 0, 0, 7, 150, 1, 0, 0, 0, 9, 152, 1, 0, 0, 0, 11, 154, 1, + 0, 0, 0, 13, 156, 1, 0, 0, 0, 15, 158, 1, 0, 0, 0, 17, 165, 1, 0, 0, 0, + 19, 171, 1, 0, 0, 0, 21, 187, 1, 0, 0, 0, 23, 196, 1, 0, 0, 0, 25, 200, + 1, 0, 0, 0, 27, 203, 1, 0, 0, 0, 29, 206, 1, 0, 0, 0, 31, 209, 1, 0, 0, + 0, 33, 214, 1, 0, 0, 0, 35, 223, 1, 0, 0, 0, 37, 225, 1, 0, 0, 0, 39, 227, + 1, 0, 0, 0, 41, 229, 1, 0, 0, 0, 43, 232, 1, 0, 0, 0, 45, 235, 1, 0, 0, + 0, 47, 238, 1, 0, 0, 0, 49, 243, 1, 0, 0, 0, 51, 247, 1, 0, 0, 0, 53, 253, + 1, 0, 0, 0, 55, 257, 1, 0, 0, 0, 57, 262, 1, 0, 0, 0, 59, 265, 1, 0, 0, + 0, 61, 271, 1, 0, 0, 0, 63, 275, 1, 0, 0, 0, 65, 279, 1, 0, 0, 0, 67, 283, + 1, 0, 0, 0, 69, 287, 1, 0, 0, 0, 71, 292, 1, 0, 0, 0, 73, 333, 1, 0, 0, + 0, 75, 377, 1, 0, 0, 0, 77, 379, 1, 0, 0, 0, 79, 392, 1, 0, 0, 0, 81, 394, + 1, 0, 0, 0, 83, 396, 1, 0, 0, 0, 85, 398, 1, 0, 0, 0, 87, 400, 1, 0, 0, + 0, 89, 402, 1, 0, 0, 0, 91, 404, 1, 0, 0, 0, 93, 406, 1, 0, 0, 0, 95, 408, + 1, 0, 0, 0, 97, 410, 1, 0, 0, 0, 99, 412, 1, 0, 0, 0, 101, 414, 1, 0, 0, + 0, 103, 416, 1, 0, 0, 0, 105, 418, 1, 0, 0, 0, 107, 420, 1, 0, 0, 0, 109, + 422, 1, 0, 0, 0, 111, 424, 1, 0, 0, 0, 113, 426, 1, 0, 0, 0, 115, 428, + 1, 0, 0, 0, 117, 430, 1, 0, 0, 0, 119, 432, 1, 0, 0, 0, 121, 434, 1, 0, + 0, 0, 123, 436, 1, 0, 0, 0, 125, 438, 1, 0, 0, 0, 127, 440, 1, 0, 0, 0, + 129, 442, 1, 0, 0, 0, 131, 444, 1, 0, 0, 0, 133, 446, 1, 0, 0, 0, 135, + 448, 1, 0, 0, 0, 137, 138, 7, 0, 0, 0, 138, 139, 1, 0, 0, 0, 139, 140, + 6, 0, 0, 0, 140, 2, 1, 0, 0, 0, 141, 143, 7, 1, 0, 0, 142, 141, 1, 0, 0, + 0, 143, 144, 1, 0, 0, 0, 144, 142, 1, 0, 0, 0, 144, 145, 1, 0, 0, 0, 145, + 146, 1, 0, 0, 0, 146, 147, 6, 1, 1, 0, 147, 4, 1, 0, 0, 0, 148, 149, 5, + 44, 0, 0, 149, 6, 1, 0, 0, 0, 150, 151, 5, 40, 0, 0, 151, 8, 1, 0, 0, 0, + 152, 153, 5, 41, 0, 0, 153, 10, 1, 0, 0, 0, 154, 155, 5, 46, 0, 0, 155, + 12, 1, 0, 0, 0, 156, 157, 5, 59, 0, 0, 157, 14, 1, 0, 0, 0, 158, 159, 3, + 121, 60, 0, 159, 160, 3, 93, 46, 0, 160, 161, 3, 107, 53, 0, 161, 162, + 3, 93, 46, 0, 162, 163, 3, 89, 44, 0, 163, 164, 3, 123, 61, 0, 164, 16, + 1, 0, 0, 0, 165, 166, 3, 129, 64, 0, 166, 167, 3, 99, 49, 0, 167, 168, + 3, 93, 46, 0, 168, 169, 3, 119, 59, 0, 169, 170, 3, 93, 46, 0, 170, 18, + 1, 0, 0, 0, 171, 172, 3, 129, 64, 0, 172, 173, 3, 101, 50, 0, 173, 174, + 3, 111, 55, 0, 174, 175, 3, 91, 45, 0, 175, 176, 3, 113, 56, 0, 176, 177, + 3, 129, 64, 0, 177, 178, 3, 1, 0, 0, 178, 179, 3, 123, 61, 0, 179, 180, + 3, 125, 62, 0, 180, 181, 3, 109, 54, 0, 181, 182, 3, 87, 43, 0, 182, 183, + 3, 107, 53, 0, 183, 184, 3, 101, 50, 0, 184, 185, 3, 111, 55, 0, 185, 186, + 3, 97, 48, 0, 186, 20, 1, 0, 0, 0, 187, 188, 3, 97, 48, 0, 188, 189, 3, + 119, 59, 0, 189, 190, 3, 113, 56, 0, 190, 191, 3, 125, 62, 0, 191, 192, + 3, 115, 57, 0, 192, 193, 3, 1, 0, 0, 193, 194, 3, 87, 43, 0, 194, 195, + 3, 133, 66, 0, 195, 22, 1, 0, 0, 0, 196, 197, 3, 85, 42, 0, 197, 198, 3, + 111, 55, 0, 198, 199, 3, 91, 45, 0, 199, 24, 1, 0, 0, 0, 200, 201, 3, 85, + 42, 0, 201, 202, 3, 121, 60, 0, 202, 26, 1, 0, 0, 0, 203, 204, 3, 113, + 56, 0, 204, 205, 3, 119, 59, 0, 205, 28, 1, 0, 0, 0, 206, 207, 3, 101, + 50, 0, 207, 208, 3, 121, 60, 0, 208, 30, 1, 0, 0, 0, 209, 210, 3, 107, + 53, 0, 210, 211, 3, 101, 50, 0, 211, 212, 3, 105, 52, 0, 212, 213, 3, 93, + 46, 0, 213, 32, 1, 0, 0, 0, 214, 215, 3, 111, 55, 0, 215, 216, 3, 113, + 56, 0, 216, 217, 3, 123, 61, 0, 217, 218, 3, 1, 0, 0, 218, 219, 3, 107, + 53, 0, 219, 220, 3, 101, 50, 0, 220, 221, 3, 105, 52, 0, 221, 222, 3, 93, + 46, 0, 222, 34, 1, 0, 0, 0, 223, 224, 5, 61, 0, 0, 224, 36, 1, 0, 0, 0, + 225, 226, 5, 62, 0, 0, 226, 38, 1, 0, 0, 0, 227, 228, 5, 60, 0, 0, 228, + 40, 1, 0, 0, 0, 229, 230, 3, 39, 19, 0, 230, 231, 3, 35, 17, 0, 231, 42, + 1, 0, 0, 0, 232, 233, 3, 37, 18, 0, 233, 234, 3, 35, 17, 0, 234, 44, 1, + 0, 0, 0, 235, 236, 5, 33, 0, 0, 236, 237, 3, 35, 17, 0, 237, 46, 1, 0, + 0, 0, 238, 239, 3, 111, 55, 0, 239, 240, 3, 125, 62, 0, 240, 241, 3, 107, + 53, 0, 241, 242, 3, 107, 53, 0, 242, 48, 1, 0, 0, 0, 243, 244, 3, 29, 14, + 0, 244, 245, 3, 1, 0, 0, 245, 246, 3, 47, 23, 0, 246, 50, 1, 0, 0, 0, 247, + 248, 3, 29, 14, 0, 248, 249, 3, 1, 0, 0, 249, 250, 3, 53, 26, 0, 250, 251, + 3, 1, 0, 0, 251, 252, 3, 47, 23, 0, 252, 52, 1, 0, 0, 0, 253, 254, 3, 111, + 55, 0, 254, 255, 3, 113, 56, 0, 255, 256, 3, 123, 61, 0, 256, 54, 1, 0, + 0, 0, 257, 258, 3, 53, 26, 0, 258, 259, 3, 1, 0, 0, 259, 260, 3, 101, 50, + 0, 260, 261, 3, 111, 55, 0, 261, 56, 1, 0, 0, 0, 262, 263, 3, 101, 50, + 0, 263, 264, 3, 111, 55, 0, 264, 58, 1, 0, 0, 0, 265, 266, 3, 89, 44, 0, + 266, 267, 3, 113, 56, 0, 267, 268, 3, 125, 62, 0, 268, 269, 3, 111, 55, + 0, 269, 270, 3, 123, 61, 0, 270, 60, 1, 0, 0, 0, 271, 272, 3, 121, 60, + 0, 272, 273, 3, 125, 62, 0, 273, 274, 3, 109, 54, 0, 274, 62, 1, 0, 0, + 0, 275, 276, 3, 109, 54, 0, 276, 277, 3, 101, 50, 0, 277, 278, 3, 111, + 55, 0, 278, 64, 1, 0, 0, 0, 279, 280, 3, 109, 54, 0, 280, 281, 3, 85, 42, + 0, 281, 282, 3, 131, 65, 0, 282, 66, 1, 0, 0, 0, 283, 284, 3, 85, 42, 0, + 284, 285, 3, 127, 63, 0, 285, 286, 3, 97, 48, 0, 286, 68, 1, 0, 0, 0, 287, + 288, 3, 123, 61, 0, 288, 289, 3, 119, 59, 0, 289, 290, 3, 125, 62, 0, 290, + 291, 3, 93, 46, 0, 291, 70, 1, 0, 0, 0, 292, 293, 3, 95, 47, 0, 293, 294, + 3, 85, 42, 0, 294, 295, 3, 107, 53, 0, 295, 296, 3, 121, 60, 0, 296, 297, + 3, 93, 46, 0, 297, 72, 1, 0, 0, 0, 298, 304, 5, 34, 0, 0, 299, 303, 8, + 2, 0, 0, 300, 301, 5, 34, 0, 0, 301, 303, 5, 34, 0, 0, 302, 299, 1, 0, + 0, 0, 302, 300, 1, 0, 0, 0, 303, 306, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, + 304, 305, 1, 0, 0, 0, 305, 307, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 307, + 334, 5, 34, 0, 0, 308, 314, 5, 96, 0, 0, 309, 313, 8, 3, 0, 0, 310, 311, + 5, 96, 0, 0, 311, 313, 5, 96, 0, 0, 312, 309, 1, 0, 0, 0, 312, 310, 1, + 0, 0, 0, 313, 316, 1, 0, 0, 0, 314, 312, 1, 0, 0, 0, 314, 315, 1, 0, 0, + 0, 315, 317, 1, 0, 0, 0, 316, 314, 1, 0, 0, 0, 317, 334, 5, 96, 0, 0, 318, + 322, 5, 91, 0, 0, 319, 321, 8, 4, 0, 0, 320, 319, 1, 0, 0, 0, 321, 324, + 1, 0, 0, 0, 322, 320, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 323, 325, 1, 0, + 0, 0, 324, 322, 1, 0, 0, 0, 325, 334, 5, 93, 0, 0, 326, 330, 7, 5, 0, 0, + 327, 329, 7, 6, 0, 0, 328, 327, 1, 0, 0, 0, 329, 332, 1, 0, 0, 0, 330, + 328, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 334, 1, 0, 0, 0, 332, 330, + 1, 0, 0, 0, 333, 298, 1, 0, 0, 0, 333, 308, 1, 0, 0, 0, 333, 318, 1, 0, + 0, 0, 333, 326, 1, 0, 0, 0, 334, 74, 1, 0, 0, 0, 335, 337, 3, 83, 41, 0, + 336, 335, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 336, 1, 0, 0, 0, 338, + 339, 1, 0, 0, 0, 339, 347, 1, 0, 0, 0, 340, 344, 5, 46, 0, 0, 341, 343, + 3, 83, 41, 0, 342, 341, 1, 0, 0, 0, 343, 346, 1, 0, 0, 0, 344, 342, 1, + 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 348, 1, 0, 0, 0, 346, 344, 1, 0, 0, + 0, 347, 340, 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 358, 1, 0, 0, 0, 349, + 351, 3, 93, 46, 0, 350, 352, 7, 7, 0, 0, 351, 350, 1, 0, 0, 0, 351, 352, + 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 355, 3, 83, 41, 0, 354, 353, 1, + 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 354, 1, 0, 0, 0, 356, 357, 1, 0, 0, + 0, 357, 359, 1, 0, 0, 0, 358, 349, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, + 378, 1, 0, 0, 0, 360, 362, 5, 46, 0, 0, 361, 363, 3, 83, 41, 0, 362, 361, + 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 362, 1, 0, 0, 0, 364, 365, 1, 0, + 0, 0, 365, 375, 1, 0, 0, 0, 366, 368, 3, 93, 46, 0, 367, 369, 7, 7, 0, + 0, 368, 367, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 371, 1, 0, 0, 0, 370, + 372, 3, 83, 41, 0, 371, 370, 1, 0, 0, 0, 372, 373, 1, 0, 0, 0, 373, 371, + 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 376, 1, 0, 0, 0, 375, 366, 1, 0, + 0, 0, 375, 376, 1, 0, 0, 0, 376, 378, 1, 0, 0, 0, 377, 336, 1, 0, 0, 0, + 377, 360, 1, 0, 0, 0, 378, 76, 1, 0, 0, 0, 379, 385, 5, 39, 0, 0, 380, + 384, 8, 8, 0, 0, 381, 382, 5, 39, 0, 0, 382, 384, 5, 39, 0, 0, 383, 380, + 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 384, 387, 1, 0, 0, 0, 385, 383, 1, 0, + 0, 0, 385, 386, 1, 0, 0, 0, 386, 388, 1, 0, 0, 0, 387, 385, 1, 0, 0, 0, + 388, 389, 5, 39, 0, 0, 389, 78, 1, 0, 0, 0, 390, 393, 3, 69, 34, 0, 391, + 393, 3, 71, 35, 0, 392, 390, 1, 0, 0, 0, 392, 391, 1, 0, 0, 0, 393, 80, + 1, 0, 0, 0, 394, 395, 5, 42, 0, 0, 395, 82, 1, 0, 0, 0, 396, 397, 7, 9, + 0, 0, 397, 84, 1, 0, 0, 0, 398, 399, 7, 10, 0, 0, 399, 86, 1, 0, 0, 0, + 400, 401, 7, 11, 0, 0, 401, 88, 1, 0, 0, 0, 402, 403, 7, 12, 0, 0, 403, + 90, 1, 0, 0, 0, 404, 405, 7, 13, 0, 0, 405, 92, 1, 0, 0, 0, 406, 407, 7, + 14, 0, 0, 407, 94, 1, 0, 0, 0, 408, 409, 7, 15, 0, 0, 409, 96, 1, 0, 0, + 0, 410, 411, 7, 16, 0, 0, 411, 98, 1, 0, 0, 0, 412, 413, 7, 17, 0, 0, 413, + 100, 1, 0, 0, 0, 414, 415, 7, 18, 0, 0, 415, 102, 1, 0, 0, 0, 416, 417, + 7, 19, 0, 0, 417, 104, 1, 0, 0, 0, 418, 419, 7, 20, 0, 0, 419, 106, 1, + 0, 0, 0, 420, 421, 7, 21, 0, 0, 421, 108, 1, 0, 0, 0, 422, 423, 7, 22, + 0, 0, 423, 110, 1, 0, 0, 0, 424, 425, 7, 23, 0, 0, 425, 112, 1, 0, 0, 0, + 426, 427, 7, 24, 0, 0, 427, 114, 1, 0, 0, 0, 428, 429, 7, 25, 0, 0, 429, + 116, 1, 0, 0, 0, 430, 431, 7, 26, 0, 0, 431, 118, 1, 0, 0, 0, 432, 433, + 7, 27, 0, 0, 433, 120, 1, 0, 0, 0, 434, 435, 7, 28, 0, 0, 435, 122, 1, + 0, 0, 0, 436, 437, 7, 29, 0, 0, 437, 124, 1, 0, 0, 0, 438, 439, 7, 30, + 0, 0, 439, 126, 1, 0, 0, 0, 440, 441, 7, 31, 0, 0, 441, 128, 1, 0, 0, 0, + 442, 443, 7, 32, 0, 0, 443, 130, 1, 0, 0, 0, 444, 445, 7, 33, 0, 0, 445, + 132, 1, 0, 0, 0, 446, 447, 7, 34, 0, 0, 447, 134, 1, 0, 0, 0, 448, 449, + 7, 35, 0, 0, 449, 136, 1, 0, 0, 0, 23, 0, 144, 302, 304, 312, 314, 322, + 330, 333, 338, 344, 347, 351, 356, 358, 364, 368, 373, 375, 377, 383, 385, + 392, 2, 0, 1, 0, 6, 0, 0, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -325,12 +320,12 @@ const ( SqlLexerR_BRACKET = 5 SqlLexerDOT = 6 SqlLexerEOQ = 7 - SqlLexerBOOLEAN_LITERAL = 8 - SqlLexerK_SELECT = 9 - SqlLexerK_WHERE = 10 - SqlLexerK_WINDOW_TUMBLING = 11 - SqlLexerK_GROUP_BY = 12 - SqlLexerK_AND = 13 + SqlLexerK_SELECT = 8 + SqlLexerK_WHERE = 9 + SqlLexerK_WINDOW_TUMBLING = 10 + SqlLexerK_GROUP_BY = 11 + SqlLexerK_AND = 12 + SqlLexerK_AS = 13 SqlLexerK_OR = 14 SqlLexerK_IS = 15 SqlLexerK_LIKE = 16 @@ -354,10 +349,9 @@ const ( SqlLexerK_AVG = 34 SqlLexerK_TRUE = 35 SqlLexerK_FALSE = 36 - SqlLexerK_UPPER = 37 - SqlLexerK_LOWER = 38 - SqlLexerIDENTIFIER = 39 - SqlLexerNUMERIC_LITERAL = 40 - SqlLexerSTRING_LITERAL = 41 - SqlLexerSTAR = 42 + SqlLexerIDENTIFIER = 37 + SqlLexerNUMERIC_LITERAL = 38 + SqlLexerSTRING_LITERAL = 39 + SqlLexerBOOLEAN_LITERAL = 40 + SqlLexerSTAR = 41 ) diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index 1a304a4d6409..3f79396f228e 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -35,97 +35,108 @@ func sqlParserInit() { staticData.literalNames = []string{ "", "", "", "','", "'('", "')'", "'.'", "';'", "", "", "", "", "", "", "", "", "", "", "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "'*'", + "", "", "", "", "", "", "", "", "", "", "", "", "'*'", } staticData.symbolicNames = []string{ "", "SPACE", "WS", "COMMA", "L_BRACKET", "R_BRACKET", "DOT", "EOQ", - "BOOLEAN_LITERAL", "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", - "K_AND", "K_OR", "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", - "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", - "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", "K_IN", "K_COUNT", - "K_SUM", "K_MIN", "K_MAX", "K_AVG", "K_TRUE", "K_FALSE", "K_UPPER", - "K_LOWER", "IDENTIFIER", "NUMERIC_LITERAL", "STRING_LITERAL", "STAR", + "K_SELECT", "K_WHERE", "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_AS", + "K_OR", "K_IS", "K_LIKE", "K_NOT_LIKE", "K_EQUAL", "K_GREATER", "K_LESS", + "K_LESS_EQUAL", "K_GREATER_EQUAL", "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", + "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", "K_IN", "K_COUNT", "K_SUM", "K_MIN", + "K_MAX", "K_AVG", "K_TRUE", "K_FALSE", "IDENTIFIER", "NUMERIC_LITERAL", + "STRING_LITERAL", "BOOLEAN_LITERAL", "STAR", } staticData.ruleNames = []string{ "sqlQuery", "selectQuery", "windowTumbling", "resultColumns", "aggregationColumns", - "column", "aggregationColumn", "whereStatement", "expr", "simpleExpr", - "compoundExpr", "comparisonOperator", "literalValue", "groupBy", + "column", "alias", "function", "aggregationColumn", "whereStatement", + "expr", "simpleExpr", "compoundExpr", "comparisonOperator", "literalValue", + "groupBy", } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 42, 172, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 41, 194, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, - 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 1, 0, 1, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 3, 1, 35, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 43, - 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 51, 8, 1, 1, 1, 1, 1, 1, - 1, 3, 1, 56, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 64, 8, 3, - 10, 3, 12, 3, 67, 9, 3, 1, 3, 3, 3, 70, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 75, - 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 80, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, - 5, 3, 5, 88, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 96, 8, 5, - 1, 5, 3, 5, 99, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 107, 8, - 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 114, 8, 6, 1, 6, 1, 6, 1, 6, 1, - 6, 3, 6, 120, 8, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 129, - 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 134, 8, 8, 1, 8, 3, 8, 137, 8, 8, 1, 8, 1, - 8, 1, 8, 5, 8, 142, 8, 8, 10, 8, 12, 8, 145, 9, 8, 1, 9, 1, 9, 1, 9, 1, - 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 157, 8, 9, 1, 10, 1, 10, 1, - 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 3, 13, 170, - 8, 13, 1, 13, 0, 1, 16, 14, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, - 24, 26, 0, 5, 1, 0, 37, 38, 1, 0, 30, 34, 1, 0, 13, 14, 2, 0, 15, 23, 28, - 29, 2, 0, 8, 8, 40, 41, 180, 0, 28, 1, 0, 0, 0, 2, 55, 1, 0, 0, 0, 4, 57, - 1, 0, 0, 0, 6, 69, 1, 0, 0, 0, 8, 74, 1, 0, 0, 0, 10, 98, 1, 0, 0, 0, 12, - 119, 1, 0, 0, 0, 14, 121, 1, 0, 0, 0, 16, 136, 1, 0, 0, 0, 18, 156, 1, - 0, 0, 0, 20, 158, 1, 0, 0, 0, 22, 162, 1, 0, 0, 0, 24, 164, 1, 0, 0, 0, - 26, 169, 1, 0, 0, 0, 28, 29, 3, 2, 1, 0, 29, 30, 5, 0, 0, 1, 30, 1, 1, - 0, 0, 0, 31, 32, 5, 9, 0, 0, 32, 34, 3, 6, 3, 0, 33, 35, 3, 14, 7, 0, 34, - 33, 1, 0, 0, 0, 34, 35, 1, 0, 0, 0, 35, 36, 1, 0, 0, 0, 36, 37, 5, 7, 0, - 0, 37, 56, 1, 0, 0, 0, 38, 39, 5, 9, 0, 0, 39, 40, 3, 8, 4, 0, 40, 42, - 3, 4, 2, 0, 41, 43, 3, 14, 7, 0, 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, - 43, 44, 1, 0, 0, 0, 44, 45, 5, 7, 0, 0, 45, 56, 1, 0, 0, 0, 46, 47, 5, - 9, 0, 0, 47, 48, 3, 8, 4, 0, 48, 50, 3, 4, 2, 0, 49, 51, 3, 14, 7, 0, 50, - 49, 1, 0, 0, 0, 50, 51, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 53, 3, 26, - 13, 0, 53, 54, 5, 7, 0, 0, 54, 56, 1, 0, 0, 0, 55, 31, 1, 0, 0, 0, 55, - 38, 1, 0, 0, 0, 55, 46, 1, 0, 0, 0, 56, 3, 1, 0, 0, 0, 57, 58, 5, 11, 0, - 0, 58, 59, 5, 40, 0, 0, 59, 5, 1, 0, 0, 0, 60, 65, 3, 10, 5, 0, 61, 62, - 5, 3, 0, 0, 62, 64, 3, 10, 5, 0, 63, 61, 1, 0, 0, 0, 64, 67, 1, 0, 0, 0, - 65, 63, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, 70, 1, 0, 0, 0, 67, 65, 1, - 0, 0, 0, 68, 70, 5, 42, 0, 0, 69, 60, 1, 0, 0, 0, 69, 68, 1, 0, 0, 0, 70, - 7, 1, 0, 0, 0, 71, 72, 3, 10, 5, 0, 72, 73, 5, 3, 0, 0, 73, 75, 1, 0, 0, - 0, 74, 71, 1, 0, 0, 0, 74, 75, 1, 0, 0, 0, 75, 76, 1, 0, 0, 0, 76, 79, - 3, 12, 6, 0, 77, 80, 3, 10, 5, 0, 78, 80, 5, 42, 0, 0, 79, 77, 1, 0, 0, - 0, 79, 78, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 5, 5, 0, 0, 82, 9, 1, - 0, 0, 0, 83, 88, 5, 39, 0, 0, 84, 85, 5, 39, 0, 0, 85, 86, 5, 6, 0, 0, - 86, 88, 5, 39, 0, 0, 87, 83, 1, 0, 0, 0, 87, 84, 1, 0, 0, 0, 88, 99, 1, - 0, 0, 0, 89, 90, 7, 0, 0, 0, 90, 95, 5, 4, 0, 0, 91, 96, 5, 39, 0, 0, 92, - 93, 5, 39, 0, 0, 93, 94, 5, 6, 0, 0, 94, 96, 5, 39, 0, 0, 95, 91, 1, 0, - 0, 0, 95, 92, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 99, 5, 5, 0, 0, 98, 87, - 1, 0, 0, 0, 98, 89, 1, 0, 0, 0, 99, 11, 1, 0, 0, 0, 100, 101, 7, 1, 0, - 0, 101, 106, 5, 4, 0, 0, 102, 107, 5, 39, 0, 0, 103, 104, 5, 39, 0, 0, - 104, 105, 5, 6, 0, 0, 105, 107, 5, 39, 0, 0, 106, 102, 1, 0, 0, 0, 106, - 103, 1, 0, 0, 0, 107, 108, 1, 0, 0, 0, 108, 120, 5, 5, 0, 0, 109, 114, - 5, 39, 0, 0, 110, 111, 5, 39, 0, 0, 111, 112, 5, 6, 0, 0, 112, 114, 5, - 39, 0, 0, 113, 109, 1, 0, 0, 0, 113, 110, 1, 0, 0, 0, 113, 114, 1, 0, 0, - 0, 114, 115, 1, 0, 0, 0, 115, 116, 5, 30, 0, 0, 116, 117, 5, 4, 0, 0, 117, - 118, 5, 42, 0, 0, 118, 120, 5, 5, 0, 0, 119, 100, 1, 0, 0, 0, 119, 113, - 1, 0, 0, 0, 120, 13, 1, 0, 0, 0, 121, 122, 5, 10, 0, 0, 122, 123, 3, 16, - 8, 0, 123, 15, 1, 0, 0, 0, 124, 125, 6, 8, -1, 0, 125, 137, 3, 18, 9, 0, - 126, 129, 3, 20, 10, 0, 127, 129, 3, 18, 9, 0, 128, 126, 1, 0, 0, 0, 128, - 127, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 133, 7, 2, 0, 0, 131, 134, - 3, 20, 10, 0, 132, 134, 3, 18, 9, 0, 133, 131, 1, 0, 0, 0, 133, 132, 1, - 0, 0, 0, 134, 137, 1, 0, 0, 0, 135, 137, 3, 20, 10, 0, 136, 124, 1, 0, - 0, 0, 136, 128, 1, 0, 0, 0, 136, 135, 1, 0, 0, 0, 137, 143, 1, 0, 0, 0, - 138, 139, 10, 2, 0, 0, 139, 140, 7, 2, 0, 0, 140, 142, 3, 16, 8, 3, 141, - 138, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, - 1, 0, 0, 0, 144, 17, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 147, 5, 39, - 0, 0, 147, 148, 3, 22, 11, 0, 148, 149, 3, 24, 12, 0, 149, 157, 1, 0, 0, - 0, 150, 151, 5, 39, 0, 0, 151, 152, 5, 6, 0, 0, 152, 153, 5, 39, 0, 0, - 153, 154, 3, 22, 11, 0, 154, 155, 3, 24, 12, 0, 155, 157, 1, 0, 0, 0, 156, - 146, 1, 0, 0, 0, 156, 150, 1, 0, 0, 0, 157, 19, 1, 0, 0, 0, 158, 159, 5, - 4, 0, 0, 159, 160, 3, 16, 8, 0, 160, 161, 5, 5, 0, 0, 161, 21, 1, 0, 0, - 0, 162, 163, 7, 3, 0, 0, 163, 23, 1, 0, 0, 0, 164, 165, 7, 4, 0, 0, 165, - 25, 1, 0, 0, 0, 166, 167, 5, 12, 0, 0, 167, 170, 3, 10, 5, 0, 168, 170, - 1, 0, 0, 0, 169, 166, 1, 0, 0, 0, 169, 168, 1, 0, 0, 0, 170, 27, 1, 0, - 0, 0, 20, 34, 42, 50, 55, 65, 69, 74, 79, 87, 95, 98, 106, 113, 119, 128, - 133, 136, 143, 156, 169, + 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, + 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 39, 8, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 1, 47, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, + 55, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 60, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, + 3, 1, 3, 5, 3, 68, 8, 3, 10, 3, 12, 3, 71, 9, 3, 1, 3, 3, 3, 74, 8, 3, + 1, 4, 1, 4, 1, 4, 3, 4, 79, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 84, 8, 4, 1, + 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 92, 8, 5, 1, 5, 3, 5, 95, 8, 5, + 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 103, 8, 5, 1, 5, 1, 5, 5, 5, + 107, 8, 5, 10, 5, 12, 5, 110, 9, 5, 1, 5, 1, 5, 3, 5, 114, 8, 5, 3, 5, + 116, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, + 1, 8, 3, 8, 129, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 136, 8, 8, 1, + 8, 1, 8, 1, 8, 1, 8, 3, 8, 142, 8, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, + 10, 1, 10, 3, 10, 151, 8, 10, 1, 10, 1, 10, 1, 10, 3, 10, 156, 8, 10, 1, + 10, 3, 10, 159, 8, 10, 1, 10, 1, 10, 1, 10, 5, 10, 164, 8, 10, 10, 10, + 12, 10, 167, 9, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, + 11, 1, 11, 1, 11, 3, 11, 179, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, + 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 3, 15, 192, 8, 15, 1, 15, 0, + 1, 20, 16, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 0, + 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, + 40, 203, 0, 32, 1, 0, 0, 0, 2, 59, 1, 0, 0, 0, 4, 61, 1, 0, 0, 0, 6, 73, + 1, 0, 0, 0, 8, 78, 1, 0, 0, 0, 10, 115, 1, 0, 0, 0, 12, 117, 1, 0, 0, 0, + 14, 120, 1, 0, 0, 0, 16, 141, 1, 0, 0, 0, 18, 143, 1, 0, 0, 0, 20, 158, + 1, 0, 0, 0, 22, 178, 1, 0, 0, 0, 24, 180, 1, 0, 0, 0, 26, 184, 1, 0, 0, + 0, 28, 186, 1, 0, 0, 0, 30, 191, 1, 0, 0, 0, 32, 33, 3, 2, 1, 0, 33, 34, + 5, 0, 0, 1, 34, 1, 1, 0, 0, 0, 35, 36, 5, 8, 0, 0, 36, 38, 3, 6, 3, 0, + 37, 39, 3, 18, 9, 0, 38, 37, 1, 0, 0, 0, 38, 39, 1, 0, 0, 0, 39, 40, 1, + 0, 0, 0, 40, 41, 5, 7, 0, 0, 41, 60, 1, 0, 0, 0, 42, 43, 5, 8, 0, 0, 43, + 44, 3, 8, 4, 0, 44, 46, 3, 4, 2, 0, 45, 47, 3, 18, 9, 0, 46, 45, 1, 0, + 0, 0, 46, 47, 1, 0, 0, 0, 47, 48, 1, 0, 0, 0, 48, 49, 5, 7, 0, 0, 49, 60, + 1, 0, 0, 0, 50, 51, 5, 8, 0, 0, 51, 52, 3, 8, 4, 0, 52, 54, 3, 4, 2, 0, + 53, 55, 3, 18, 9, 0, 54, 53, 1, 0, 0, 0, 54, 55, 1, 0, 0, 0, 55, 56, 1, + 0, 0, 0, 56, 57, 3, 30, 15, 0, 57, 58, 5, 7, 0, 0, 58, 60, 1, 0, 0, 0, + 59, 35, 1, 0, 0, 0, 59, 42, 1, 0, 0, 0, 59, 50, 1, 0, 0, 0, 60, 3, 1, 0, + 0, 0, 61, 62, 5, 10, 0, 0, 62, 63, 5, 38, 0, 0, 63, 5, 1, 0, 0, 0, 64, + 69, 3, 10, 5, 0, 65, 66, 5, 3, 0, 0, 66, 68, 3, 10, 5, 0, 67, 65, 1, 0, + 0, 0, 68, 71, 1, 0, 0, 0, 69, 67, 1, 0, 0, 0, 69, 70, 1, 0, 0, 0, 70, 74, + 1, 0, 0, 0, 71, 69, 1, 0, 0, 0, 72, 74, 5, 41, 0, 0, 73, 64, 1, 0, 0, 0, + 73, 72, 1, 0, 0, 0, 74, 7, 1, 0, 0, 0, 75, 76, 3, 10, 5, 0, 76, 77, 5, + 3, 0, 0, 77, 79, 1, 0, 0, 0, 78, 75, 1, 0, 0, 0, 78, 79, 1, 0, 0, 0, 79, + 80, 1, 0, 0, 0, 80, 83, 3, 16, 8, 0, 81, 84, 3, 10, 5, 0, 82, 84, 5, 41, + 0, 0, 83, 81, 1, 0, 0, 0, 83, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 86, + 5, 5, 0, 0, 86, 9, 1, 0, 0, 0, 87, 92, 5, 37, 0, 0, 88, 89, 5, 37, 0, 0, + 89, 90, 5, 6, 0, 0, 90, 92, 5, 37, 0, 0, 91, 87, 1, 0, 0, 0, 91, 88, 1, + 0, 0, 0, 92, 94, 1, 0, 0, 0, 93, 95, 3, 12, 6, 0, 94, 93, 1, 0, 0, 0, 94, + 95, 1, 0, 0, 0, 95, 116, 1, 0, 0, 0, 96, 97, 3, 14, 7, 0, 97, 102, 5, 4, + 0, 0, 98, 103, 5, 37, 0, 0, 99, 100, 5, 37, 0, 0, 100, 101, 5, 6, 0, 0, + 101, 103, 5, 37, 0, 0, 102, 98, 1, 0, 0, 0, 102, 99, 1, 0, 0, 0, 103, 108, + 1, 0, 0, 0, 104, 105, 5, 3, 0, 0, 105, 107, 3, 28, 14, 0, 106, 104, 1, + 0, 0, 0, 107, 110, 1, 0, 0, 0, 108, 106, 1, 0, 0, 0, 108, 109, 1, 0, 0, + 0, 109, 111, 1, 0, 0, 0, 110, 108, 1, 0, 0, 0, 111, 113, 5, 5, 0, 0, 112, + 114, 3, 12, 6, 0, 113, 112, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 116, + 1, 0, 0, 0, 115, 91, 1, 0, 0, 0, 115, 96, 1, 0, 0, 0, 116, 11, 1, 0, 0, + 0, 117, 118, 5, 13, 0, 0, 118, 119, 5, 37, 0, 0, 119, 13, 1, 0, 0, 0, 120, + 121, 5, 37, 0, 0, 121, 15, 1, 0, 0, 0, 122, 123, 7, 0, 0, 0, 123, 128, + 5, 4, 0, 0, 124, 129, 5, 37, 0, 0, 125, 126, 5, 37, 0, 0, 126, 127, 5, + 6, 0, 0, 127, 129, 5, 37, 0, 0, 128, 124, 1, 0, 0, 0, 128, 125, 1, 0, 0, + 0, 129, 130, 1, 0, 0, 0, 130, 142, 5, 5, 0, 0, 131, 136, 5, 37, 0, 0, 132, + 133, 5, 37, 0, 0, 133, 134, 5, 6, 0, 0, 134, 136, 5, 37, 0, 0, 135, 131, + 1, 0, 0, 0, 135, 132, 1, 0, 0, 0, 135, 136, 1, 0, 0, 0, 136, 137, 1, 0, + 0, 0, 137, 138, 5, 30, 0, 0, 138, 139, 5, 4, 0, 0, 139, 140, 5, 41, 0, + 0, 140, 142, 5, 5, 0, 0, 141, 122, 1, 0, 0, 0, 141, 135, 1, 0, 0, 0, 142, + 17, 1, 0, 0, 0, 143, 144, 5, 9, 0, 0, 144, 145, 3, 20, 10, 0, 145, 19, + 1, 0, 0, 0, 146, 147, 6, 10, -1, 0, 147, 159, 3, 22, 11, 0, 148, 151, 3, + 24, 12, 0, 149, 151, 3, 22, 11, 0, 150, 148, 1, 0, 0, 0, 150, 149, 1, 0, + 0, 0, 151, 152, 1, 0, 0, 0, 152, 155, 7, 1, 0, 0, 153, 156, 3, 24, 12, + 0, 154, 156, 3, 22, 11, 0, 155, 153, 1, 0, 0, 0, 155, 154, 1, 0, 0, 0, + 156, 159, 1, 0, 0, 0, 157, 159, 3, 24, 12, 0, 158, 146, 1, 0, 0, 0, 158, + 150, 1, 0, 0, 0, 158, 157, 1, 0, 0, 0, 159, 165, 1, 0, 0, 0, 160, 161, + 10, 2, 0, 0, 161, 162, 7, 1, 0, 0, 162, 164, 3, 20, 10, 3, 163, 160, 1, + 0, 0, 0, 164, 167, 1, 0, 0, 0, 165, 163, 1, 0, 0, 0, 165, 166, 1, 0, 0, + 0, 166, 21, 1, 0, 0, 0, 167, 165, 1, 0, 0, 0, 168, 169, 5, 37, 0, 0, 169, + 170, 3, 26, 13, 0, 170, 171, 3, 28, 14, 0, 171, 179, 1, 0, 0, 0, 172, 173, + 5, 37, 0, 0, 173, 174, 5, 6, 0, 0, 174, 175, 5, 37, 0, 0, 175, 176, 3, + 26, 13, 0, 176, 177, 3, 28, 14, 0, 177, 179, 1, 0, 0, 0, 178, 168, 1, 0, + 0, 0, 178, 172, 1, 0, 0, 0, 179, 23, 1, 0, 0, 0, 180, 181, 5, 4, 0, 0, + 181, 182, 3, 20, 10, 0, 182, 183, 5, 5, 0, 0, 183, 25, 1, 0, 0, 0, 184, + 185, 7, 2, 0, 0, 185, 27, 1, 0, 0, 0, 186, 187, 7, 3, 0, 0, 187, 29, 1, + 0, 0, 0, 188, 189, 5, 11, 0, 0, 189, 192, 3, 10, 5, 0, 190, 192, 1, 0, + 0, 0, 191, 188, 1, 0, 0, 0, 191, 190, 1, 0, 0, 0, 192, 31, 1, 0, 0, 0, + 23, 38, 46, 54, 59, 69, 73, 78, 83, 91, 94, 102, 108, 113, 115, 128, 135, + 141, 150, 155, 158, 165, 178, 191, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -171,12 +182,12 @@ const ( SqlParserR_BRACKET = 5 SqlParserDOT = 6 SqlParserEOQ = 7 - SqlParserBOOLEAN_LITERAL = 8 - SqlParserK_SELECT = 9 - SqlParserK_WHERE = 10 - SqlParserK_WINDOW_TUMBLING = 11 - SqlParserK_GROUP_BY = 12 - SqlParserK_AND = 13 + SqlParserK_SELECT = 8 + SqlParserK_WHERE = 9 + SqlParserK_WINDOW_TUMBLING = 10 + SqlParserK_GROUP_BY = 11 + SqlParserK_AND = 12 + SqlParserK_AS = 13 SqlParserK_OR = 14 SqlParserK_IS = 15 SqlParserK_LIKE = 16 @@ -200,12 +211,11 @@ const ( SqlParserK_AVG = 34 SqlParserK_TRUE = 35 SqlParserK_FALSE = 36 - SqlParserK_UPPER = 37 - SqlParserK_LOWER = 38 - SqlParserIDENTIFIER = 39 - SqlParserNUMERIC_LITERAL = 40 - SqlParserSTRING_LITERAL = 41 - SqlParserSTAR = 42 + SqlParserIDENTIFIER = 37 + SqlParserNUMERIC_LITERAL = 38 + SqlParserSTRING_LITERAL = 39 + SqlParserBOOLEAN_LITERAL = 40 + SqlParserSTAR = 41 ) // SqlParser rules. @@ -216,14 +226,16 @@ const ( SqlParserRULE_resultColumns = 3 SqlParserRULE_aggregationColumns = 4 SqlParserRULE_column = 5 - SqlParserRULE_aggregationColumn = 6 - SqlParserRULE_whereStatement = 7 - SqlParserRULE_expr = 8 - SqlParserRULE_simpleExpr = 9 - SqlParserRULE_compoundExpr = 10 - SqlParserRULE_comparisonOperator = 11 - SqlParserRULE_literalValue = 12 - SqlParserRULE_groupBy = 13 + SqlParserRULE_alias = 6 + SqlParserRULE_function = 7 + SqlParserRULE_aggregationColumn = 8 + SqlParserRULE_whereStatement = 9 + SqlParserRULE_expr = 10 + SqlParserRULE_simpleExpr = 11 + SqlParserRULE_compoundExpr = 12 + SqlParserRULE_comparisonOperator = 13 + SqlParserRULE_literalValue = 14 + SqlParserRULE_groupBy = 15 ) // ISqlQueryContext is an interface to support dynamic dispatch. @@ -327,11 +339,11 @@ func (p *SqlParser) SqlQuery() (localctx ISqlQueryContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(28) + p.SetState(32) p.SelectQuery() } { - p.SetState(29) + p.SetState(33) p.Match(SqlParserEOF) } @@ -664,33 +676,33 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { } }() - p.SetState(55) + p.SetState(59) p.GetErrorHandler().Sync(p) switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 3, p.GetParserRuleContext()) { case 1: localctx = NewSelectSimpleContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(31) + p.SetState(35) p.Match(SqlParserK_SELECT) } { - p.SetState(32) + p.SetState(36) p.ResultColumns() } - p.SetState(34) + p.SetState(38) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(33) + p.SetState(37) p.WhereStatement() } } { - p.SetState(36) + p.SetState(40) p.Match(SqlParserEOQ) } @@ -698,30 +710,30 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { localctx = NewSelectTumblingContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(38) + p.SetState(42) p.Match(SqlParserK_SELECT) } { - p.SetState(39) + p.SetState(43) p.AggregationColumns() } { - p.SetState(40) + p.SetState(44) p.WindowTumbling() } - p.SetState(42) + p.SetState(46) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(41) + p.SetState(45) p.WhereStatement() } } { - p.SetState(44) + p.SetState(48) p.Match(SqlParserEOQ) } @@ -729,34 +741,34 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { localctx = NewSelectTumblingGroupByContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(46) + p.SetState(50) p.Match(SqlParserK_SELECT) } { - p.SetState(47) + p.SetState(51) p.AggregationColumns() } { - p.SetState(48) + p.SetState(52) p.WindowTumbling() } - p.SetState(50) + p.SetState(54) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(49) + p.SetState(53) p.WhereStatement() } } { - p.SetState(52) + p.SetState(56) p.GroupBy() } { - p.SetState(53) + p.SetState(57) p.Match(SqlParserEOQ) } @@ -854,11 +866,11 @@ func (p *SqlParser) WindowTumbling() (localctx IWindowTumblingContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(57) + p.SetState(61) p.Match(SqlParserK_WINDOW_TUMBLING) } { - p.SetState(58) + p.SetState(62) p.Match(SqlParserNUMERIC_LITERAL) } @@ -1048,32 +1060,32 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { } }() - p.SetState(69) + p.SetState(73) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { - case SqlParserK_UPPER, SqlParserK_LOWER, SqlParserIDENTIFIER: + case SqlParserIDENTIFIER: localctx = NewSelectColumnsContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(60) + p.SetState(64) p.Column() } - p.SetState(65) + p.SetState(69) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for _la == SqlParserCOMMA { { - p.SetState(61) + p.SetState(65) p.Match(SqlParserCOMMA) } { - p.SetState(62) + p.SetState(66) p.Column() } - p.SetState(67) + p.SetState(71) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } @@ -1082,7 +1094,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectStarContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(68) + p.SetState(72) p.Match(SqlParserSTAR) } @@ -1265,37 +1277,37 @@ func (p *SqlParser) AggregationColumns() (localctx IAggregationColumnsContext) { localctx = NewSelectAggregationContext(p, localctx) p.EnterOuterAlt(localctx, 1) - p.SetState(74) + p.SetState(78) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 6, p.GetParserRuleContext()) == 1 { { - p.SetState(71) + p.SetState(75) p.Column() } { - p.SetState(72) + p.SetState(76) p.Match(SqlParserCOMMA) } } { - p.SetState(76) + p.SetState(80) p.AggregationColumn() } - p.SetState(79) + p.SetState(83) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { - case SqlParserK_UPPER, SqlParserK_LOWER, SqlParserIDENTIFIER: + case SqlParserIDENTIFIER: { - p.SetState(77) + p.SetState(81) p.Column() } case SqlParserSTAR: { - p.SetState(78) + p.SetState(82) p.Match(SqlParserSTAR) } @@ -1303,7 +1315,7 @@ func (p *SqlParser) AggregationColumns() (localctx IAggregationColumnsContext) { panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) } { - p.SetState(81) + p.SetState(85) p.Match(SqlParserR_BRACKET) } @@ -1390,6 +1402,22 @@ func (s *IdentifierColumnContext) DOT() antlr.TerminalNode { return s.GetToken(SqlParserDOT, 0) } +func (s *IdentifierColumnContext) Alias() IAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAliasContext) +} + func (s *IdentifierColumnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case SqlVisitor: @@ -1418,6 +1446,22 @@ func (s *FunctionColumnContext) GetRuleContext() antlr.RuleContext { return s } +func (s *FunctionColumnContext) Function() IFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFunctionContext) +} + func (s *FunctionColumnContext) L_BRACKET() antlr.TerminalNode { return s.GetToken(SqlParserL_BRACKET, 0) } @@ -1426,14 +1470,6 @@ func (s *FunctionColumnContext) R_BRACKET() antlr.TerminalNode { return s.GetToken(SqlParserR_BRACKET, 0) } -func (s *FunctionColumnContext) K_UPPER() antlr.TerminalNode { - return s.GetToken(SqlParserK_UPPER, 0) -} - -func (s *FunctionColumnContext) K_LOWER() antlr.TerminalNode { - return s.GetToken(SqlParserK_LOWER, 0) -} - func (s *FunctionColumnContext) AllIDENTIFIER() []antlr.TerminalNode { return s.GetTokens(SqlParserIDENTIFIER) } @@ -1446,6 +1482,71 @@ func (s *FunctionColumnContext) DOT() antlr.TerminalNode { return s.GetToken(SqlParserDOT, 0) } +func (s *FunctionColumnContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *FunctionColumnContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *FunctionColumnContext) AllLiteralValue() []ILiteralValueContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ILiteralValueContext); ok { + len++ + } + } + + tst := make([]ILiteralValueContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ILiteralValueContext); ok { + tst[i] = t.(ILiteralValueContext) + i++ + } + } + + return tst +} + +func (s *FunctionColumnContext) LiteralValue(i int) ILiteralValueContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILiteralValueContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ILiteralValueContext) +} + +func (s *FunctionColumnContext) Alias() IAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAliasContext) +} + func (s *FunctionColumnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case SqlVisitor: @@ -1480,87 +1581,309 @@ func (p *SqlParser) Column() (localctx IColumnContext) { } }() - p.SetState(98) + p.SetState(115) p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserIDENTIFIER: + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 13, p.GetParserRuleContext()) { + case 1: localctx = NewIdentifierColumnContext(p, localctx) p.EnterOuterAlt(localctx, 1) - p.SetState(87) + p.SetState(91) p.GetErrorHandler().Sync(p) switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 8, p.GetParserRuleContext()) { case 1: { - p.SetState(83) + p.SetState(87) p.Match(SqlParserIDENTIFIER) } case 2: { - p.SetState(84) + p.SetState(88) p.Match(SqlParserIDENTIFIER) } { - p.SetState(85) + p.SetState(89) p.Match(SqlParserDOT) } { - p.SetState(86) + p.SetState(90) p.Match(SqlParserIDENTIFIER) } } + p.SetState(94) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + if _la == SqlParserK_AS { + { + p.SetState(93) + p.Alias() + } + + } - case SqlParserK_UPPER, SqlParserK_LOWER: + case 2: localctx = NewFunctionColumnContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(89) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_UPPER || _la == SqlParserK_LOWER) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } + p.SetState(96) + p.Function() } { - p.SetState(90) + p.SetState(97) p.Match(SqlParserL_BRACKET) } - p.SetState(95) + p.SetState(102) p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 9, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 10, p.GetParserRuleContext()) { case 1: { - p.SetState(91) + p.SetState(98) p.Match(SqlParserIDENTIFIER) } case 2: { - p.SetState(92) + p.SetState(99) p.Match(SqlParserIDENTIFIER) } { - p.SetState(93) + p.SetState(100) p.Match(SqlParserDOT) } { - p.SetState(94) + p.SetState(101) p.Match(SqlParserIDENTIFIER) } } + p.SetState(108) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + for _la == SqlParserCOMMA { + { + p.SetState(104) + p.Match(SqlParserCOMMA) + } + { + p.SetState(105) + p.LiteralValue() + } + + p.SetState(110) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } { - p.SetState(97) + p.SetState(111) p.Match(SqlParserR_BRACKET) } + p.SetState(113) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + if _la == SqlParserK_AS { + { + p.SetState(112) + p.Alias() + } + + } + + } + + return localctx +} + +// IAliasContext is an interface to support dynamic dispatch. +type IAliasContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsAliasContext differentiates from other interfaces. + IsAliasContext() +} + +type AliasContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAliasContext() *AliasContext { + var p = new(AliasContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_alias + return p +} + +func (*AliasContext) IsAliasContext() {} + +func NewAliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AliasContext { + var p = new(AliasContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_alias + + return p +} + +func (s *AliasContext) GetParser() antlr.Parser { return s.parser } + +func (s *AliasContext) K_AS() antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, 0) +} + +func (s *AliasContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(SqlParserIDENTIFIER, 0) +} + +func (s *AliasContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AliasContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitAlias(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *SqlParser) Alias() (localctx IAliasContext) { + this := p + _ = this + + localctx = NewAliasContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 12, SqlParserRULE_alias) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(117) + p.Match(SqlParserK_AS) + } + { + p.SetState(118) + p.Match(SqlParserIDENTIFIER) + } + + return localctx +} + +// IFunctionContext is an interface to support dynamic dispatch. +type IFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsFunctionContext differentiates from other interfaces. + IsFunctionContext() +} + +type FunctionContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFunctionContext() *FunctionContext { + var p = new(FunctionContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_function + return p +} + +func (*FunctionContext) IsFunctionContext() {} + +func NewFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FunctionContext { + var p = new(FunctionContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_function + + return p +} + +func (s *FunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *FunctionContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(SqlParserIDENTIFIER, 0) +} + +func (s *FunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FunctionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitFunction(s) default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + return t.VisitChildren(s) + } +} + +func (p *SqlParser) Function() (localctx IFunctionContext) { + this := p + _ = this + + localctx = NewFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 14, SqlParserRULE_function) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(120) + p.Match(SqlParserIDENTIFIER) } return localctx @@ -1745,7 +2068,7 @@ func (p *SqlParser) AggregationColumn() (localctx IAggregationColumnContext) { _ = this localctx = NewAggregationColumnContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 12, SqlParserRULE_aggregationColumn) + p.EnterRule(localctx, 16, SqlParserRULE_aggregationColumn) var _la int defer func() { @@ -1764,14 +2087,14 @@ func (p *SqlParser) AggregationColumn() (localctx IAggregationColumnContext) { } }() - p.SetState(119) + p.SetState(141) p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 13, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 16, p.GetParserRuleContext()) { case 1: localctx = NewColumnAggregationContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(100) + p.SetState(122) _la = p.GetTokenStream().LA(1) if !(((_la-30)&-(0x1f+1)) == 0 && ((1< Date: Wed, 7 Sep 2022 13:04:27 +0300 Subject: [PATCH 25/31] recursive func/nested support/fixes/tests --- processor/stream_processor/Sql.g4 | 13 +- processor/stream_processor/cmd/main.go | 3 +- processor/stream_processor/parser/Sql.interp | 3 +- .../parser/sql_base_visitor.go | 10 +- .../stream_processor/parser/sql_parser.go | 1168 +++++++++++------ .../parser/sql_stream_function_test.go | 16 +- .../parser/sql_stream_nested_test.go | 139 +- .../parser/sql_stream_visitor.go | 147 ++- .../stream_processor/parser/sql_visitor.go | 10 +- .../stream_processor/parser/visitor_utils.go | 58 +- 10 files changed, 1085 insertions(+), 482 deletions(-) diff --git a/processor/stream_processor/Sql.g4 b/processor/stream_processor/Sql.g4 index 940f62f9d905..a9d2dcc0cf10 100644 --- a/processor/stream_processor/Sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -28,8 +28,8 @@ aggregationColumns column - : (IDENTIFIER | IDENTIFIER DOT IDENTIFIER) alias? #identifierColumn - | function L_BRACKET (IDENTIFIER | IDENTIFIER DOT IDENTIFIER) (COMMA literalValue)* R_BRACKET alias? #functionColumn + : (IDENTIFIER | IDENTIFIER DOT IDENTIFIER) alias? #identifierColumn + | function alias? #functionColumn ; alias @@ -37,10 +37,14 @@ alias ; function - : IDENTIFIER + : functionName L_BRACKET ( IDENTIFIER | IDENTIFIER DOT IDENTIFIER) (COMMA literalValue)* R_BRACKET #simpleFunction + | functionName L_BRACKET ( IDENTIFIER | IDENTIFIER DOT IDENTIFIER) (COMMA literalValue)* R_BRACKET #simpleFunction + | functionName L_BRACKET function (COMMA literalValue)* R_BRACKET #recursiveFunction ; - +functionName + : IDENTIFIER + ; aggregationColumn : (K_MIN | K_MAX | K_COUNT | K_AVG | K_SUM) L_BRACKET ( IDENTIFIER | IDENTIFIER DOT IDENTIFIER) R_BRACKET # columnAggregation @@ -52,7 +56,6 @@ whereStatement : K_WHERE expr #whereStmt ; - expr : simpleExpr #simpleCondition | (compoundExpr | simpleExpr) ( K_AND | K_OR ) (compoundExpr | simpleExpr) #compoundRecursiveCondition diff --git a/processor/stream_processor/cmd/main.go b/processor/stream_processor/cmd/main.go index 8f96cc605a59..4220db8ce1bb 100644 --- a/processor/stream_processor/cmd/main.go +++ b/processor/stream_processor/cmd/main.go @@ -25,8 +25,7 @@ func main() { out := make(chan plog.LogRecordSlice) outErr := make(chan error) visitor := parser.NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) - //test := plog.NewLogRecordSlice() - //generateTestLogs().At(0).CopyTo(test.AppendEmpty()) + in <- parser.GenerateTestLogs() select { diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp index aaca2c4f0796..bf9ee1d4a884 100644 --- a/processor/stream_processor/parser/Sql.interp +++ b/processor/stream_processor/parser/Sql.interp @@ -95,6 +95,7 @@ aggregationColumns column alias function +functionName aggregationColumn whereStatement expr @@ -106,4 +107,4 @@ groupBy atn: -[4, 1, 41, 194, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 39, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 47, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 55, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 60, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 68, 8, 3, 10, 3, 12, 3, 71, 9, 3, 1, 3, 3, 3, 74, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 79, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 84, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 92, 8, 5, 1, 5, 3, 5, 95, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 103, 8, 5, 1, 5, 1, 5, 5, 5, 107, 8, 5, 10, 5, 12, 5, 110, 9, 5, 1, 5, 1, 5, 3, 5, 114, 8, 5, 3, 5, 116, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 129, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 136, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 142, 8, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 151, 8, 10, 1, 10, 1, 10, 1, 10, 3, 10, 156, 8, 10, 1, 10, 3, 10, 159, 8, 10, 1, 10, 1, 10, 1, 10, 5, 10, 164, 8, 10, 10, 10, 12, 10, 167, 9, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 179, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 3, 15, 192, 8, 15, 1, 15, 0, 1, 20, 16, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, 40, 203, 0, 32, 1, 0, 0, 0, 2, 59, 1, 0, 0, 0, 4, 61, 1, 0, 0, 0, 6, 73, 1, 0, 0, 0, 8, 78, 1, 0, 0, 0, 10, 115, 1, 0, 0, 0, 12, 117, 1, 0, 0, 0, 14, 120, 1, 0, 0, 0, 16, 141, 1, 0, 0, 0, 18, 143, 1, 0, 0, 0, 20, 158, 1, 0, 0, 0, 22, 178, 1, 0, 0, 0, 24, 180, 1, 0, 0, 0, 26, 184, 1, 0, 0, 0, 28, 186, 1, 0, 0, 0, 30, 191, 1, 0, 0, 0, 32, 33, 3, 2, 1, 0, 33, 34, 5, 0, 0, 1, 34, 1, 1, 0, 0, 0, 35, 36, 5, 8, 0, 0, 36, 38, 3, 6, 3, 0, 37, 39, 3, 18, 9, 0, 38, 37, 1, 0, 0, 0, 38, 39, 1, 0, 0, 0, 39, 40, 1, 0, 0, 0, 40, 41, 5, 7, 0, 0, 41, 60, 1, 0, 0, 0, 42, 43, 5, 8, 0, 0, 43, 44, 3, 8, 4, 0, 44, 46, 3, 4, 2, 0, 45, 47, 3, 18, 9, 0, 46, 45, 1, 0, 0, 0, 46, 47, 1, 0, 0, 0, 47, 48, 1, 0, 0, 0, 48, 49, 5, 7, 0, 0, 49, 60, 1, 0, 0, 0, 50, 51, 5, 8, 0, 0, 51, 52, 3, 8, 4, 0, 52, 54, 3, 4, 2, 0, 53, 55, 3, 18, 9, 0, 54, 53, 1, 0, 0, 0, 54, 55, 1, 0, 0, 0, 55, 56, 1, 0, 0, 0, 56, 57, 3, 30, 15, 0, 57, 58, 5, 7, 0, 0, 58, 60, 1, 0, 0, 0, 59, 35, 1, 0, 0, 0, 59, 42, 1, 0, 0, 0, 59, 50, 1, 0, 0, 0, 60, 3, 1, 0, 0, 0, 61, 62, 5, 10, 0, 0, 62, 63, 5, 38, 0, 0, 63, 5, 1, 0, 0, 0, 64, 69, 3, 10, 5, 0, 65, 66, 5, 3, 0, 0, 66, 68, 3, 10, 5, 0, 67, 65, 1, 0, 0, 0, 68, 71, 1, 0, 0, 0, 69, 67, 1, 0, 0, 0, 69, 70, 1, 0, 0, 0, 70, 74, 1, 0, 0, 0, 71, 69, 1, 0, 0, 0, 72, 74, 5, 41, 0, 0, 73, 64, 1, 0, 0, 0, 73, 72, 1, 0, 0, 0, 74, 7, 1, 0, 0, 0, 75, 76, 3, 10, 5, 0, 76, 77, 5, 3, 0, 0, 77, 79, 1, 0, 0, 0, 78, 75, 1, 0, 0, 0, 78, 79, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 83, 3, 16, 8, 0, 81, 84, 3, 10, 5, 0, 82, 84, 5, 41, 0, 0, 83, 81, 1, 0, 0, 0, 83, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 86, 5, 5, 0, 0, 86, 9, 1, 0, 0, 0, 87, 92, 5, 37, 0, 0, 88, 89, 5, 37, 0, 0, 89, 90, 5, 6, 0, 0, 90, 92, 5, 37, 0, 0, 91, 87, 1, 0, 0, 0, 91, 88, 1, 0, 0, 0, 92, 94, 1, 0, 0, 0, 93, 95, 3, 12, 6, 0, 94, 93, 1, 0, 0, 0, 94, 95, 1, 0, 0, 0, 95, 116, 1, 0, 0, 0, 96, 97, 3, 14, 7, 0, 97, 102, 5, 4, 0, 0, 98, 103, 5, 37, 0, 0, 99, 100, 5, 37, 0, 0, 100, 101, 5, 6, 0, 0, 101, 103, 5, 37, 0, 0, 102, 98, 1, 0, 0, 0, 102, 99, 1, 0, 0, 0, 103, 108, 1, 0, 0, 0, 104, 105, 5, 3, 0, 0, 105, 107, 3, 28, 14, 0, 106, 104, 1, 0, 0, 0, 107, 110, 1, 0, 0, 0, 108, 106, 1, 0, 0, 0, 108, 109, 1, 0, 0, 0, 109, 111, 1, 0, 0, 0, 110, 108, 1, 0, 0, 0, 111, 113, 5, 5, 0, 0, 112, 114, 3, 12, 6, 0, 113, 112, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 116, 1, 0, 0, 0, 115, 91, 1, 0, 0, 0, 115, 96, 1, 0, 0, 0, 116, 11, 1, 0, 0, 0, 117, 118, 5, 13, 0, 0, 118, 119, 5, 37, 0, 0, 119, 13, 1, 0, 0, 0, 120, 121, 5, 37, 0, 0, 121, 15, 1, 0, 0, 0, 122, 123, 7, 0, 0, 0, 123, 128, 5, 4, 0, 0, 124, 129, 5, 37, 0, 0, 125, 126, 5, 37, 0, 0, 126, 127, 5, 6, 0, 0, 127, 129, 5, 37, 0, 0, 128, 124, 1, 0, 0, 0, 128, 125, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 142, 5, 5, 0, 0, 131, 136, 5, 37, 0, 0, 132, 133, 5, 37, 0, 0, 133, 134, 5, 6, 0, 0, 134, 136, 5, 37, 0, 0, 135, 131, 1, 0, 0, 0, 135, 132, 1, 0, 0, 0, 135, 136, 1, 0, 0, 0, 136, 137, 1, 0, 0, 0, 137, 138, 5, 30, 0, 0, 138, 139, 5, 4, 0, 0, 139, 140, 5, 41, 0, 0, 140, 142, 5, 5, 0, 0, 141, 122, 1, 0, 0, 0, 141, 135, 1, 0, 0, 0, 142, 17, 1, 0, 0, 0, 143, 144, 5, 9, 0, 0, 144, 145, 3, 20, 10, 0, 145, 19, 1, 0, 0, 0, 146, 147, 6, 10, -1, 0, 147, 159, 3, 22, 11, 0, 148, 151, 3, 24, 12, 0, 149, 151, 3, 22, 11, 0, 150, 148, 1, 0, 0, 0, 150, 149, 1, 0, 0, 0, 151, 152, 1, 0, 0, 0, 152, 155, 7, 1, 0, 0, 153, 156, 3, 24, 12, 0, 154, 156, 3, 22, 11, 0, 155, 153, 1, 0, 0, 0, 155, 154, 1, 0, 0, 0, 156, 159, 1, 0, 0, 0, 157, 159, 3, 24, 12, 0, 158, 146, 1, 0, 0, 0, 158, 150, 1, 0, 0, 0, 158, 157, 1, 0, 0, 0, 159, 165, 1, 0, 0, 0, 160, 161, 10, 2, 0, 0, 161, 162, 7, 1, 0, 0, 162, 164, 3, 20, 10, 3, 163, 160, 1, 0, 0, 0, 164, 167, 1, 0, 0, 0, 165, 163, 1, 0, 0, 0, 165, 166, 1, 0, 0, 0, 166, 21, 1, 0, 0, 0, 167, 165, 1, 0, 0, 0, 168, 169, 5, 37, 0, 0, 169, 170, 3, 26, 13, 0, 170, 171, 3, 28, 14, 0, 171, 179, 1, 0, 0, 0, 172, 173, 5, 37, 0, 0, 173, 174, 5, 6, 0, 0, 174, 175, 5, 37, 0, 0, 175, 176, 3, 26, 13, 0, 176, 177, 3, 28, 14, 0, 177, 179, 1, 0, 0, 0, 178, 168, 1, 0, 0, 0, 178, 172, 1, 0, 0, 0, 179, 23, 1, 0, 0, 0, 180, 181, 5, 4, 0, 0, 181, 182, 3, 20, 10, 0, 182, 183, 5, 5, 0, 0, 183, 25, 1, 0, 0, 0, 184, 185, 7, 2, 0, 0, 185, 27, 1, 0, 0, 0, 186, 187, 7, 3, 0, 0, 187, 29, 1, 0, 0, 0, 188, 189, 5, 11, 0, 0, 189, 192, 3, 10, 5, 0, 190, 192, 1, 0, 0, 0, 191, 188, 1, 0, 0, 0, 191, 190, 1, 0, 0, 0, 192, 31, 1, 0, 0, 0, 23, 38, 46, 54, 59, 69, 73, 78, 83, 91, 94, 102, 108, 113, 115, 128, 135, 141, 150, 155, 158, 165, 178, 191] \ No newline at end of file +[4, 1, 41, 229, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 57, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 62, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 70, 8, 3, 10, 3, 12, 3, 73, 9, 3, 1, 3, 3, 3, 76, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 81, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 86, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 94, 8, 5, 1, 5, 3, 5, 97, 8, 5, 1, 5, 1, 5, 3, 5, 101, 8, 5, 3, 5, 103, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 114, 8, 7, 1, 7, 1, 7, 5, 7, 118, 8, 7, 10, 7, 12, 7, 121, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 131, 8, 7, 1, 7, 1, 7, 5, 7, 135, 8, 7, 10, 7, 12, 7, 138, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 147, 8, 7, 10, 7, 12, 7, 150, 9, 7, 1, 7, 1, 7, 3, 7, 154, 8, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 164, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 171, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 177, 8, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 186, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 191, 8, 11, 1, 11, 3, 11, 194, 8, 11, 1, 11, 1, 11, 1, 11, 5, 11, 199, 8, 11, 10, 11, 12, 11, 202, 9, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 214, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 3, 16, 227, 8, 16, 1, 16, 0, 1, 22, 17, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, 40, 242, 0, 34, 1, 0, 0, 0, 2, 61, 1, 0, 0, 0, 4, 63, 1, 0, 0, 0, 6, 75, 1, 0, 0, 0, 8, 80, 1, 0, 0, 0, 10, 102, 1, 0, 0, 0, 12, 104, 1, 0, 0, 0, 14, 153, 1, 0, 0, 0, 16, 155, 1, 0, 0, 0, 18, 176, 1, 0, 0, 0, 20, 178, 1, 0, 0, 0, 22, 193, 1, 0, 0, 0, 24, 213, 1, 0, 0, 0, 26, 215, 1, 0, 0, 0, 28, 219, 1, 0, 0, 0, 30, 221, 1, 0, 0, 0, 32, 226, 1, 0, 0, 0, 34, 35, 3, 2, 1, 0, 35, 36, 5, 0, 0, 1, 36, 1, 1, 0, 0, 0, 37, 38, 5, 8, 0, 0, 38, 40, 3, 6, 3, 0, 39, 41, 3, 20, 10, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 5, 7, 0, 0, 43, 62, 1, 0, 0, 0, 44, 45, 5, 8, 0, 0, 45, 46, 3, 8, 4, 0, 46, 48, 3, 4, 2, 0, 47, 49, 3, 20, 10, 0, 48, 47, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 5, 7, 0, 0, 51, 62, 1, 0, 0, 0, 52, 53, 5, 8, 0, 0, 53, 54, 3, 8, 4, 0, 54, 56, 3, 4, 2, 0, 55, 57, 3, 20, 10, 0, 56, 55, 1, 0, 0, 0, 56, 57, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 59, 3, 32, 16, 0, 59, 60, 5, 7, 0, 0, 60, 62, 1, 0, 0, 0, 61, 37, 1, 0, 0, 0, 61, 44, 1, 0, 0, 0, 61, 52, 1, 0, 0, 0, 62, 3, 1, 0, 0, 0, 63, 64, 5, 10, 0, 0, 64, 65, 5, 38, 0, 0, 65, 5, 1, 0, 0, 0, 66, 71, 3, 10, 5, 0, 67, 68, 5, 3, 0, 0, 68, 70, 3, 10, 5, 0, 69, 67, 1, 0, 0, 0, 70, 73, 1, 0, 0, 0, 71, 69, 1, 0, 0, 0, 71, 72, 1, 0, 0, 0, 72, 76, 1, 0, 0, 0, 73, 71, 1, 0, 0, 0, 74, 76, 5, 41, 0, 0, 75, 66, 1, 0, 0, 0, 75, 74, 1, 0, 0, 0, 76, 7, 1, 0, 0, 0, 77, 78, 3, 10, 5, 0, 78, 79, 5, 3, 0, 0, 79, 81, 1, 0, 0, 0, 80, 77, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 1, 0, 0, 0, 82, 85, 3, 18, 9, 0, 83, 86, 3, 10, 5, 0, 84, 86, 5, 41, 0, 0, 85, 83, 1, 0, 0, 0, 85, 84, 1, 0, 0, 0, 86, 87, 1, 0, 0, 0, 87, 88, 5, 5, 0, 0, 88, 9, 1, 0, 0, 0, 89, 94, 5, 37, 0, 0, 90, 91, 5, 37, 0, 0, 91, 92, 5, 6, 0, 0, 92, 94, 5, 37, 0, 0, 93, 89, 1, 0, 0, 0, 93, 90, 1, 0, 0, 0, 94, 96, 1, 0, 0, 0, 95, 97, 3, 12, 6, 0, 96, 95, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 103, 1, 0, 0, 0, 98, 100, 3, 14, 7, 0, 99, 101, 3, 12, 6, 0, 100, 99, 1, 0, 0, 0, 100, 101, 1, 0, 0, 0, 101, 103, 1, 0, 0, 0, 102, 93, 1, 0, 0, 0, 102, 98, 1, 0, 0, 0, 103, 11, 1, 0, 0, 0, 104, 105, 5, 13, 0, 0, 105, 106, 5, 37, 0, 0, 106, 13, 1, 0, 0, 0, 107, 108, 3, 16, 8, 0, 108, 113, 5, 4, 0, 0, 109, 114, 5, 37, 0, 0, 110, 111, 5, 37, 0, 0, 111, 112, 5, 6, 0, 0, 112, 114, 5, 37, 0, 0, 113, 109, 1, 0, 0, 0, 113, 110, 1, 0, 0, 0, 114, 119, 1, 0, 0, 0, 115, 116, 5, 3, 0, 0, 116, 118, 3, 30, 15, 0, 117, 115, 1, 0, 0, 0, 118, 121, 1, 0, 0, 0, 119, 117, 1, 0, 0, 0, 119, 120, 1, 0, 0, 0, 120, 122, 1, 0, 0, 0, 121, 119, 1, 0, 0, 0, 122, 123, 5, 5, 0, 0, 123, 154, 1, 0, 0, 0, 124, 125, 3, 16, 8, 0, 125, 130, 5, 4, 0, 0, 126, 131, 5, 37, 0, 0, 127, 128, 5, 37, 0, 0, 128, 129, 5, 6, 0, 0, 129, 131, 5, 37, 0, 0, 130, 126, 1, 0, 0, 0, 130, 127, 1, 0, 0, 0, 131, 136, 1, 0, 0, 0, 132, 133, 5, 3, 0, 0, 133, 135, 3, 30, 15, 0, 134, 132, 1, 0, 0, 0, 135, 138, 1, 0, 0, 0, 136, 134, 1, 0, 0, 0, 136, 137, 1, 0, 0, 0, 137, 139, 1, 0, 0, 0, 138, 136, 1, 0, 0, 0, 139, 140, 5, 5, 0, 0, 140, 154, 1, 0, 0, 0, 141, 142, 3, 16, 8, 0, 142, 143, 5, 4, 0, 0, 143, 148, 3, 14, 7, 0, 144, 145, 5, 3, 0, 0, 145, 147, 3, 30, 15, 0, 146, 144, 1, 0, 0, 0, 147, 150, 1, 0, 0, 0, 148, 146, 1, 0, 0, 0, 148, 149, 1, 0, 0, 0, 149, 151, 1, 0, 0, 0, 150, 148, 1, 0, 0, 0, 151, 152, 5, 5, 0, 0, 152, 154, 1, 0, 0, 0, 153, 107, 1, 0, 0, 0, 153, 124, 1, 0, 0, 0, 153, 141, 1, 0, 0, 0, 154, 15, 1, 0, 0, 0, 155, 156, 5, 37, 0, 0, 156, 17, 1, 0, 0, 0, 157, 158, 7, 0, 0, 0, 158, 163, 5, 4, 0, 0, 159, 164, 5, 37, 0, 0, 160, 161, 5, 37, 0, 0, 161, 162, 5, 6, 0, 0, 162, 164, 5, 37, 0, 0, 163, 159, 1, 0, 0, 0, 163, 160, 1, 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, 177, 5, 5, 0, 0, 166, 171, 5, 37, 0, 0, 167, 168, 5, 37, 0, 0, 168, 169, 5, 6, 0, 0, 169, 171, 5, 37, 0, 0, 170, 166, 1, 0, 0, 0, 170, 167, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 172, 1, 0, 0, 0, 172, 173, 5, 30, 0, 0, 173, 174, 5, 4, 0, 0, 174, 175, 5, 41, 0, 0, 175, 177, 5, 5, 0, 0, 176, 157, 1, 0, 0, 0, 176, 170, 1, 0, 0, 0, 177, 19, 1, 0, 0, 0, 178, 179, 5, 9, 0, 0, 179, 180, 3, 22, 11, 0, 180, 21, 1, 0, 0, 0, 181, 182, 6, 11, -1, 0, 182, 194, 3, 24, 12, 0, 183, 186, 3, 26, 13, 0, 184, 186, 3, 24, 12, 0, 185, 183, 1, 0, 0, 0, 185, 184, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 190, 7, 1, 0, 0, 188, 191, 3, 26, 13, 0, 189, 191, 3, 24, 12, 0, 190, 188, 1, 0, 0, 0, 190, 189, 1, 0, 0, 0, 191, 194, 1, 0, 0, 0, 192, 194, 3, 26, 13, 0, 193, 181, 1, 0, 0, 0, 193, 185, 1, 0, 0, 0, 193, 192, 1, 0, 0, 0, 194, 200, 1, 0, 0, 0, 195, 196, 10, 2, 0, 0, 196, 197, 7, 1, 0, 0, 197, 199, 3, 22, 11, 3, 198, 195, 1, 0, 0, 0, 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 23, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 204, 5, 37, 0, 0, 204, 205, 3, 28, 14, 0, 205, 206, 3, 30, 15, 0, 206, 214, 1, 0, 0, 0, 207, 208, 5, 37, 0, 0, 208, 209, 5, 6, 0, 0, 209, 210, 5, 37, 0, 0, 210, 211, 3, 28, 14, 0, 211, 212, 3, 30, 15, 0, 212, 214, 1, 0, 0, 0, 213, 203, 1, 0, 0, 0, 213, 207, 1, 0, 0, 0, 214, 25, 1, 0, 0, 0, 215, 216, 5, 4, 0, 0, 216, 217, 3, 22, 11, 0, 217, 218, 5, 5, 0, 0, 218, 27, 1, 0, 0, 0, 219, 220, 7, 2, 0, 0, 220, 29, 1, 0, 0, 0, 221, 222, 7, 3, 0, 0, 222, 31, 1, 0, 0, 0, 223, 224, 5, 11, 0, 0, 224, 227, 3, 10, 5, 0, 225, 227, 1, 0, 0, 0, 226, 223, 1, 0, 0, 0, 226, 225, 1, 0, 0, 0, 227, 33, 1, 0, 0, 0, 27, 40, 48, 56, 61, 71, 75, 80, 85, 93, 96, 100, 102, 113, 119, 130, 136, 148, 153, 163, 170, 176, 185, 190, 193, 200, 213, 226] \ No newline at end of file diff --git a/processor/stream_processor/parser/sql_base_visitor.go b/processor/stream_processor/parser/sql_base_visitor.go index fd878f8d2dc7..916d23ea0c5e 100644 --- a/processor/stream_processor/parser/sql_base_visitor.go +++ b/processor/stream_processor/parser/sql_base_visitor.go @@ -52,7 +52,15 @@ func (v *BaseSqlVisitor) VisitAlias(ctx *AliasContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitFunction(ctx *FunctionContext) interface{} { +func (v *BaseSqlVisitor) VisitSimpleFunction(ctx *SimpleFunctionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitRecursiveFunction(ctx *RecursiveFunctionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseSqlVisitor) VisitFunctionName(ctx *FunctionNameContext) interface{} { return v.VisitChildren(ctx) } diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index 3f79396f228e..33f9e2c57c89 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -48,95 +48,111 @@ func sqlParserInit() { } staticData.ruleNames = []string{ "sqlQuery", "selectQuery", "windowTumbling", "resultColumns", "aggregationColumns", - "column", "alias", "function", "aggregationColumn", "whereStatement", - "expr", "simpleExpr", "compoundExpr", "comparisonOperator", "literalValue", - "groupBy", + "column", "alias", "function", "functionName", "aggregationColumn", + "whereStatement", "expr", "simpleExpr", "compoundExpr", "comparisonOperator", + "literalValue", "groupBy", } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 41, 194, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 41, 229, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, - 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 39, 8, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 47, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, - 55, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 60, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, - 3, 1, 3, 5, 3, 68, 8, 3, 10, 3, 12, 3, 71, 9, 3, 1, 3, 3, 3, 74, 8, 3, - 1, 4, 1, 4, 1, 4, 3, 4, 79, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 84, 8, 4, 1, - 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 92, 8, 5, 1, 5, 3, 5, 95, 8, 5, - 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 103, 8, 5, 1, 5, 1, 5, 5, 5, - 107, 8, 5, 10, 5, 12, 5, 110, 9, 5, 1, 5, 1, 5, 3, 5, 114, 8, 5, 3, 5, - 116, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, - 1, 8, 3, 8, 129, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 136, 8, 8, 1, - 8, 1, 8, 1, 8, 1, 8, 3, 8, 142, 8, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, - 10, 1, 10, 3, 10, 151, 8, 10, 1, 10, 1, 10, 1, 10, 3, 10, 156, 8, 10, 1, - 10, 3, 10, 159, 8, 10, 1, 10, 1, 10, 1, 10, 5, 10, 164, 8, 10, 10, 10, - 12, 10, 167, 9, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, - 11, 1, 11, 1, 11, 3, 11, 179, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, - 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 3, 15, 192, 8, 15, 1, 15, 0, - 1, 20, 16, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 0, - 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, - 40, 203, 0, 32, 1, 0, 0, 0, 2, 59, 1, 0, 0, 0, 4, 61, 1, 0, 0, 0, 6, 73, - 1, 0, 0, 0, 8, 78, 1, 0, 0, 0, 10, 115, 1, 0, 0, 0, 12, 117, 1, 0, 0, 0, - 14, 120, 1, 0, 0, 0, 16, 141, 1, 0, 0, 0, 18, 143, 1, 0, 0, 0, 20, 158, - 1, 0, 0, 0, 22, 178, 1, 0, 0, 0, 24, 180, 1, 0, 0, 0, 26, 184, 1, 0, 0, - 0, 28, 186, 1, 0, 0, 0, 30, 191, 1, 0, 0, 0, 32, 33, 3, 2, 1, 0, 33, 34, - 5, 0, 0, 1, 34, 1, 1, 0, 0, 0, 35, 36, 5, 8, 0, 0, 36, 38, 3, 6, 3, 0, - 37, 39, 3, 18, 9, 0, 38, 37, 1, 0, 0, 0, 38, 39, 1, 0, 0, 0, 39, 40, 1, - 0, 0, 0, 40, 41, 5, 7, 0, 0, 41, 60, 1, 0, 0, 0, 42, 43, 5, 8, 0, 0, 43, - 44, 3, 8, 4, 0, 44, 46, 3, 4, 2, 0, 45, 47, 3, 18, 9, 0, 46, 45, 1, 0, - 0, 0, 46, 47, 1, 0, 0, 0, 47, 48, 1, 0, 0, 0, 48, 49, 5, 7, 0, 0, 49, 60, - 1, 0, 0, 0, 50, 51, 5, 8, 0, 0, 51, 52, 3, 8, 4, 0, 52, 54, 3, 4, 2, 0, - 53, 55, 3, 18, 9, 0, 54, 53, 1, 0, 0, 0, 54, 55, 1, 0, 0, 0, 55, 56, 1, - 0, 0, 0, 56, 57, 3, 30, 15, 0, 57, 58, 5, 7, 0, 0, 58, 60, 1, 0, 0, 0, - 59, 35, 1, 0, 0, 0, 59, 42, 1, 0, 0, 0, 59, 50, 1, 0, 0, 0, 60, 3, 1, 0, - 0, 0, 61, 62, 5, 10, 0, 0, 62, 63, 5, 38, 0, 0, 63, 5, 1, 0, 0, 0, 64, - 69, 3, 10, 5, 0, 65, 66, 5, 3, 0, 0, 66, 68, 3, 10, 5, 0, 67, 65, 1, 0, - 0, 0, 68, 71, 1, 0, 0, 0, 69, 67, 1, 0, 0, 0, 69, 70, 1, 0, 0, 0, 70, 74, - 1, 0, 0, 0, 71, 69, 1, 0, 0, 0, 72, 74, 5, 41, 0, 0, 73, 64, 1, 0, 0, 0, - 73, 72, 1, 0, 0, 0, 74, 7, 1, 0, 0, 0, 75, 76, 3, 10, 5, 0, 76, 77, 5, - 3, 0, 0, 77, 79, 1, 0, 0, 0, 78, 75, 1, 0, 0, 0, 78, 79, 1, 0, 0, 0, 79, - 80, 1, 0, 0, 0, 80, 83, 3, 16, 8, 0, 81, 84, 3, 10, 5, 0, 82, 84, 5, 41, - 0, 0, 83, 81, 1, 0, 0, 0, 83, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 86, - 5, 5, 0, 0, 86, 9, 1, 0, 0, 0, 87, 92, 5, 37, 0, 0, 88, 89, 5, 37, 0, 0, - 89, 90, 5, 6, 0, 0, 90, 92, 5, 37, 0, 0, 91, 87, 1, 0, 0, 0, 91, 88, 1, - 0, 0, 0, 92, 94, 1, 0, 0, 0, 93, 95, 3, 12, 6, 0, 94, 93, 1, 0, 0, 0, 94, - 95, 1, 0, 0, 0, 95, 116, 1, 0, 0, 0, 96, 97, 3, 14, 7, 0, 97, 102, 5, 4, - 0, 0, 98, 103, 5, 37, 0, 0, 99, 100, 5, 37, 0, 0, 100, 101, 5, 6, 0, 0, - 101, 103, 5, 37, 0, 0, 102, 98, 1, 0, 0, 0, 102, 99, 1, 0, 0, 0, 103, 108, - 1, 0, 0, 0, 104, 105, 5, 3, 0, 0, 105, 107, 3, 28, 14, 0, 106, 104, 1, - 0, 0, 0, 107, 110, 1, 0, 0, 0, 108, 106, 1, 0, 0, 0, 108, 109, 1, 0, 0, - 0, 109, 111, 1, 0, 0, 0, 110, 108, 1, 0, 0, 0, 111, 113, 5, 5, 0, 0, 112, - 114, 3, 12, 6, 0, 113, 112, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 116, - 1, 0, 0, 0, 115, 91, 1, 0, 0, 0, 115, 96, 1, 0, 0, 0, 116, 11, 1, 0, 0, - 0, 117, 118, 5, 13, 0, 0, 118, 119, 5, 37, 0, 0, 119, 13, 1, 0, 0, 0, 120, - 121, 5, 37, 0, 0, 121, 15, 1, 0, 0, 0, 122, 123, 7, 0, 0, 0, 123, 128, - 5, 4, 0, 0, 124, 129, 5, 37, 0, 0, 125, 126, 5, 37, 0, 0, 126, 127, 5, - 6, 0, 0, 127, 129, 5, 37, 0, 0, 128, 124, 1, 0, 0, 0, 128, 125, 1, 0, 0, - 0, 129, 130, 1, 0, 0, 0, 130, 142, 5, 5, 0, 0, 131, 136, 5, 37, 0, 0, 132, - 133, 5, 37, 0, 0, 133, 134, 5, 6, 0, 0, 134, 136, 5, 37, 0, 0, 135, 131, - 1, 0, 0, 0, 135, 132, 1, 0, 0, 0, 135, 136, 1, 0, 0, 0, 136, 137, 1, 0, - 0, 0, 137, 138, 5, 30, 0, 0, 138, 139, 5, 4, 0, 0, 139, 140, 5, 41, 0, - 0, 140, 142, 5, 5, 0, 0, 141, 122, 1, 0, 0, 0, 141, 135, 1, 0, 0, 0, 142, - 17, 1, 0, 0, 0, 143, 144, 5, 9, 0, 0, 144, 145, 3, 20, 10, 0, 145, 19, - 1, 0, 0, 0, 146, 147, 6, 10, -1, 0, 147, 159, 3, 22, 11, 0, 148, 151, 3, - 24, 12, 0, 149, 151, 3, 22, 11, 0, 150, 148, 1, 0, 0, 0, 150, 149, 1, 0, - 0, 0, 151, 152, 1, 0, 0, 0, 152, 155, 7, 1, 0, 0, 153, 156, 3, 24, 12, - 0, 154, 156, 3, 22, 11, 0, 155, 153, 1, 0, 0, 0, 155, 154, 1, 0, 0, 0, - 156, 159, 1, 0, 0, 0, 157, 159, 3, 24, 12, 0, 158, 146, 1, 0, 0, 0, 158, - 150, 1, 0, 0, 0, 158, 157, 1, 0, 0, 0, 159, 165, 1, 0, 0, 0, 160, 161, - 10, 2, 0, 0, 161, 162, 7, 1, 0, 0, 162, 164, 3, 20, 10, 3, 163, 160, 1, - 0, 0, 0, 164, 167, 1, 0, 0, 0, 165, 163, 1, 0, 0, 0, 165, 166, 1, 0, 0, - 0, 166, 21, 1, 0, 0, 0, 167, 165, 1, 0, 0, 0, 168, 169, 5, 37, 0, 0, 169, - 170, 3, 26, 13, 0, 170, 171, 3, 28, 14, 0, 171, 179, 1, 0, 0, 0, 172, 173, - 5, 37, 0, 0, 173, 174, 5, 6, 0, 0, 174, 175, 5, 37, 0, 0, 175, 176, 3, - 26, 13, 0, 176, 177, 3, 28, 14, 0, 177, 179, 1, 0, 0, 0, 178, 168, 1, 0, - 0, 0, 178, 172, 1, 0, 0, 0, 179, 23, 1, 0, 0, 0, 180, 181, 5, 4, 0, 0, - 181, 182, 3, 20, 10, 0, 182, 183, 5, 5, 0, 0, 183, 25, 1, 0, 0, 0, 184, - 185, 7, 2, 0, 0, 185, 27, 1, 0, 0, 0, 186, 187, 7, 3, 0, 0, 187, 29, 1, - 0, 0, 0, 188, 189, 5, 11, 0, 0, 189, 192, 3, 10, 5, 0, 190, 192, 1, 0, - 0, 0, 191, 188, 1, 0, 0, 0, 191, 190, 1, 0, 0, 0, 192, 31, 1, 0, 0, 0, - 23, 38, 46, 54, 59, 69, 73, 78, 83, 91, 94, 102, 108, 113, 115, 128, 135, - 141, 150, 155, 158, 165, 178, 191, + 2, 16, 7, 16, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 1, 57, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 62, 8, 1, 1, 2, 1, 2, + 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 70, 8, 3, 10, 3, 12, 3, 73, 9, 3, 1, 3, 3, + 3, 76, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 81, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, + 86, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 94, 8, 5, 1, 5, 3, + 5, 97, 8, 5, 1, 5, 1, 5, 3, 5, 101, 8, 5, 3, 5, 103, 8, 5, 1, 6, 1, 6, + 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 114, 8, 7, 1, 7, 1, 7, + 5, 7, 118, 8, 7, 10, 7, 12, 7, 121, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, + 1, 7, 1, 7, 1, 7, 3, 7, 131, 8, 7, 1, 7, 1, 7, 5, 7, 135, 8, 7, 10, 7, + 12, 7, 138, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 147, + 8, 7, 10, 7, 12, 7, 150, 9, 7, 1, 7, 1, 7, 3, 7, 154, 8, 7, 1, 8, 1, 8, + 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 164, 8, 9, 1, 9, 1, 9, 1, 9, + 1, 9, 1, 9, 3, 9, 171, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 177, 8, 9, 1, + 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 186, 8, 11, 1, 11, + 1, 11, 1, 11, 3, 11, 191, 8, 11, 1, 11, 3, 11, 194, 8, 11, 1, 11, 1, 11, + 1, 11, 5, 11, 199, 8, 11, 10, 11, 12, 11, 202, 9, 11, 1, 12, 1, 12, 1, + 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 214, 8, 12, + 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, + 16, 3, 16, 227, 8, 16, 1, 16, 0, 1, 22, 17, 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, 32, 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, + 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, 40, 242, 0, 34, 1, 0, 0, 0, 2, 61, + 1, 0, 0, 0, 4, 63, 1, 0, 0, 0, 6, 75, 1, 0, 0, 0, 8, 80, 1, 0, 0, 0, 10, + 102, 1, 0, 0, 0, 12, 104, 1, 0, 0, 0, 14, 153, 1, 0, 0, 0, 16, 155, 1, + 0, 0, 0, 18, 176, 1, 0, 0, 0, 20, 178, 1, 0, 0, 0, 22, 193, 1, 0, 0, 0, + 24, 213, 1, 0, 0, 0, 26, 215, 1, 0, 0, 0, 28, 219, 1, 0, 0, 0, 30, 221, + 1, 0, 0, 0, 32, 226, 1, 0, 0, 0, 34, 35, 3, 2, 1, 0, 35, 36, 5, 0, 0, 1, + 36, 1, 1, 0, 0, 0, 37, 38, 5, 8, 0, 0, 38, 40, 3, 6, 3, 0, 39, 41, 3, 20, + 10, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, + 43, 5, 7, 0, 0, 43, 62, 1, 0, 0, 0, 44, 45, 5, 8, 0, 0, 45, 46, 3, 8, 4, + 0, 46, 48, 3, 4, 2, 0, 47, 49, 3, 20, 10, 0, 48, 47, 1, 0, 0, 0, 48, 49, + 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 5, 7, 0, 0, 51, 62, 1, 0, 0, 0, + 52, 53, 5, 8, 0, 0, 53, 54, 3, 8, 4, 0, 54, 56, 3, 4, 2, 0, 55, 57, 3, + 20, 10, 0, 56, 55, 1, 0, 0, 0, 56, 57, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, + 58, 59, 3, 32, 16, 0, 59, 60, 5, 7, 0, 0, 60, 62, 1, 0, 0, 0, 61, 37, 1, + 0, 0, 0, 61, 44, 1, 0, 0, 0, 61, 52, 1, 0, 0, 0, 62, 3, 1, 0, 0, 0, 63, + 64, 5, 10, 0, 0, 64, 65, 5, 38, 0, 0, 65, 5, 1, 0, 0, 0, 66, 71, 3, 10, + 5, 0, 67, 68, 5, 3, 0, 0, 68, 70, 3, 10, 5, 0, 69, 67, 1, 0, 0, 0, 70, + 73, 1, 0, 0, 0, 71, 69, 1, 0, 0, 0, 71, 72, 1, 0, 0, 0, 72, 76, 1, 0, 0, + 0, 73, 71, 1, 0, 0, 0, 74, 76, 5, 41, 0, 0, 75, 66, 1, 0, 0, 0, 75, 74, + 1, 0, 0, 0, 76, 7, 1, 0, 0, 0, 77, 78, 3, 10, 5, 0, 78, 79, 5, 3, 0, 0, + 79, 81, 1, 0, 0, 0, 80, 77, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 1, + 0, 0, 0, 82, 85, 3, 18, 9, 0, 83, 86, 3, 10, 5, 0, 84, 86, 5, 41, 0, 0, + 85, 83, 1, 0, 0, 0, 85, 84, 1, 0, 0, 0, 86, 87, 1, 0, 0, 0, 87, 88, 5, + 5, 0, 0, 88, 9, 1, 0, 0, 0, 89, 94, 5, 37, 0, 0, 90, 91, 5, 37, 0, 0, 91, + 92, 5, 6, 0, 0, 92, 94, 5, 37, 0, 0, 93, 89, 1, 0, 0, 0, 93, 90, 1, 0, + 0, 0, 94, 96, 1, 0, 0, 0, 95, 97, 3, 12, 6, 0, 96, 95, 1, 0, 0, 0, 96, + 97, 1, 0, 0, 0, 97, 103, 1, 0, 0, 0, 98, 100, 3, 14, 7, 0, 99, 101, 3, + 12, 6, 0, 100, 99, 1, 0, 0, 0, 100, 101, 1, 0, 0, 0, 101, 103, 1, 0, 0, + 0, 102, 93, 1, 0, 0, 0, 102, 98, 1, 0, 0, 0, 103, 11, 1, 0, 0, 0, 104, + 105, 5, 13, 0, 0, 105, 106, 5, 37, 0, 0, 106, 13, 1, 0, 0, 0, 107, 108, + 3, 16, 8, 0, 108, 113, 5, 4, 0, 0, 109, 114, 5, 37, 0, 0, 110, 111, 5, + 37, 0, 0, 111, 112, 5, 6, 0, 0, 112, 114, 5, 37, 0, 0, 113, 109, 1, 0, + 0, 0, 113, 110, 1, 0, 0, 0, 114, 119, 1, 0, 0, 0, 115, 116, 5, 3, 0, 0, + 116, 118, 3, 30, 15, 0, 117, 115, 1, 0, 0, 0, 118, 121, 1, 0, 0, 0, 119, + 117, 1, 0, 0, 0, 119, 120, 1, 0, 0, 0, 120, 122, 1, 0, 0, 0, 121, 119, + 1, 0, 0, 0, 122, 123, 5, 5, 0, 0, 123, 154, 1, 0, 0, 0, 124, 125, 3, 16, + 8, 0, 125, 130, 5, 4, 0, 0, 126, 131, 5, 37, 0, 0, 127, 128, 5, 37, 0, + 0, 128, 129, 5, 6, 0, 0, 129, 131, 5, 37, 0, 0, 130, 126, 1, 0, 0, 0, 130, + 127, 1, 0, 0, 0, 131, 136, 1, 0, 0, 0, 132, 133, 5, 3, 0, 0, 133, 135, + 3, 30, 15, 0, 134, 132, 1, 0, 0, 0, 135, 138, 1, 0, 0, 0, 136, 134, 1, + 0, 0, 0, 136, 137, 1, 0, 0, 0, 137, 139, 1, 0, 0, 0, 138, 136, 1, 0, 0, + 0, 139, 140, 5, 5, 0, 0, 140, 154, 1, 0, 0, 0, 141, 142, 3, 16, 8, 0, 142, + 143, 5, 4, 0, 0, 143, 148, 3, 14, 7, 0, 144, 145, 5, 3, 0, 0, 145, 147, + 3, 30, 15, 0, 146, 144, 1, 0, 0, 0, 147, 150, 1, 0, 0, 0, 148, 146, 1, + 0, 0, 0, 148, 149, 1, 0, 0, 0, 149, 151, 1, 0, 0, 0, 150, 148, 1, 0, 0, + 0, 151, 152, 5, 5, 0, 0, 152, 154, 1, 0, 0, 0, 153, 107, 1, 0, 0, 0, 153, + 124, 1, 0, 0, 0, 153, 141, 1, 0, 0, 0, 154, 15, 1, 0, 0, 0, 155, 156, 5, + 37, 0, 0, 156, 17, 1, 0, 0, 0, 157, 158, 7, 0, 0, 0, 158, 163, 5, 4, 0, + 0, 159, 164, 5, 37, 0, 0, 160, 161, 5, 37, 0, 0, 161, 162, 5, 6, 0, 0, + 162, 164, 5, 37, 0, 0, 163, 159, 1, 0, 0, 0, 163, 160, 1, 0, 0, 0, 164, + 165, 1, 0, 0, 0, 165, 177, 5, 5, 0, 0, 166, 171, 5, 37, 0, 0, 167, 168, + 5, 37, 0, 0, 168, 169, 5, 6, 0, 0, 169, 171, 5, 37, 0, 0, 170, 166, 1, + 0, 0, 0, 170, 167, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 172, 1, 0, 0, + 0, 172, 173, 5, 30, 0, 0, 173, 174, 5, 4, 0, 0, 174, 175, 5, 41, 0, 0, + 175, 177, 5, 5, 0, 0, 176, 157, 1, 0, 0, 0, 176, 170, 1, 0, 0, 0, 177, + 19, 1, 0, 0, 0, 178, 179, 5, 9, 0, 0, 179, 180, 3, 22, 11, 0, 180, 21, + 1, 0, 0, 0, 181, 182, 6, 11, -1, 0, 182, 194, 3, 24, 12, 0, 183, 186, 3, + 26, 13, 0, 184, 186, 3, 24, 12, 0, 185, 183, 1, 0, 0, 0, 185, 184, 1, 0, + 0, 0, 186, 187, 1, 0, 0, 0, 187, 190, 7, 1, 0, 0, 188, 191, 3, 26, 13, + 0, 189, 191, 3, 24, 12, 0, 190, 188, 1, 0, 0, 0, 190, 189, 1, 0, 0, 0, + 191, 194, 1, 0, 0, 0, 192, 194, 3, 26, 13, 0, 193, 181, 1, 0, 0, 0, 193, + 185, 1, 0, 0, 0, 193, 192, 1, 0, 0, 0, 194, 200, 1, 0, 0, 0, 195, 196, + 10, 2, 0, 0, 196, 197, 7, 1, 0, 0, 197, 199, 3, 22, 11, 3, 198, 195, 1, + 0, 0, 0, 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, + 0, 201, 23, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 204, 5, 37, 0, 0, 204, + 205, 3, 28, 14, 0, 205, 206, 3, 30, 15, 0, 206, 214, 1, 0, 0, 0, 207, 208, + 5, 37, 0, 0, 208, 209, 5, 6, 0, 0, 209, 210, 5, 37, 0, 0, 210, 211, 3, + 28, 14, 0, 211, 212, 3, 30, 15, 0, 212, 214, 1, 0, 0, 0, 213, 203, 1, 0, + 0, 0, 213, 207, 1, 0, 0, 0, 214, 25, 1, 0, 0, 0, 215, 216, 5, 4, 0, 0, + 216, 217, 3, 22, 11, 0, 217, 218, 5, 5, 0, 0, 218, 27, 1, 0, 0, 0, 219, + 220, 7, 2, 0, 0, 220, 29, 1, 0, 0, 0, 221, 222, 7, 3, 0, 0, 222, 31, 1, + 0, 0, 0, 223, 224, 5, 11, 0, 0, 224, 227, 3, 10, 5, 0, 225, 227, 1, 0, + 0, 0, 226, 223, 1, 0, 0, 0, 226, 225, 1, 0, 0, 0, 227, 33, 1, 0, 0, 0, + 27, 40, 48, 56, 61, 71, 75, 80, 85, 93, 96, 100, 102, 113, 119, 130, 136, + 148, 153, 163, 170, 176, 185, 190, 193, 200, 213, 226, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -228,14 +244,15 @@ const ( SqlParserRULE_column = 5 SqlParserRULE_alias = 6 SqlParserRULE_function = 7 - SqlParserRULE_aggregationColumn = 8 - SqlParserRULE_whereStatement = 9 - SqlParserRULE_expr = 10 - SqlParserRULE_simpleExpr = 11 - SqlParserRULE_compoundExpr = 12 - SqlParserRULE_comparisonOperator = 13 - SqlParserRULE_literalValue = 14 - SqlParserRULE_groupBy = 15 + SqlParserRULE_functionName = 8 + SqlParserRULE_aggregationColumn = 9 + SqlParserRULE_whereStatement = 10 + SqlParserRULE_expr = 11 + SqlParserRULE_simpleExpr = 12 + SqlParserRULE_compoundExpr = 13 + SqlParserRULE_comparisonOperator = 14 + SqlParserRULE_literalValue = 15 + SqlParserRULE_groupBy = 16 ) // ISqlQueryContext is an interface to support dynamic dispatch. @@ -339,11 +356,11 @@ func (p *SqlParser) SqlQuery() (localctx ISqlQueryContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(32) + p.SetState(34) p.SelectQuery() } { - p.SetState(33) + p.SetState(35) p.Match(SqlParserEOF) } @@ -676,33 +693,33 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { } }() - p.SetState(59) + p.SetState(61) p.GetErrorHandler().Sync(p) switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 3, p.GetParserRuleContext()) { case 1: localctx = NewSelectSimpleContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(35) + p.SetState(37) p.Match(SqlParserK_SELECT) } { - p.SetState(36) + p.SetState(38) p.ResultColumns() } - p.SetState(38) + p.SetState(40) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(37) + p.SetState(39) p.WhereStatement() } } { - p.SetState(40) + p.SetState(42) p.Match(SqlParserEOQ) } @@ -710,30 +727,30 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { localctx = NewSelectTumblingContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(42) + p.SetState(44) p.Match(SqlParserK_SELECT) } { - p.SetState(43) + p.SetState(45) p.AggregationColumns() } { - p.SetState(44) + p.SetState(46) p.WindowTumbling() } - p.SetState(46) + p.SetState(48) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(45) + p.SetState(47) p.WhereStatement() } } { - p.SetState(48) + p.SetState(50) p.Match(SqlParserEOQ) } @@ -741,34 +758,34 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { localctx = NewSelectTumblingGroupByContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(50) + p.SetState(52) p.Match(SqlParserK_SELECT) } { - p.SetState(51) + p.SetState(53) p.AggregationColumns() } { - p.SetState(52) + p.SetState(54) p.WindowTumbling() } - p.SetState(54) + p.SetState(56) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(53) + p.SetState(55) p.WhereStatement() } } { - p.SetState(56) + p.SetState(58) p.GroupBy() } { - p.SetState(57) + p.SetState(59) p.Match(SqlParserEOQ) } @@ -866,11 +883,11 @@ func (p *SqlParser) WindowTumbling() (localctx IWindowTumblingContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(61) + p.SetState(63) p.Match(SqlParserK_WINDOW_TUMBLING) } { - p.SetState(62) + p.SetState(64) p.Match(SqlParserNUMERIC_LITERAL) } @@ -1060,7 +1077,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { } }() - p.SetState(73) + p.SetState(75) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { @@ -1068,24 +1085,24 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectColumnsContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(64) + p.SetState(66) p.Column() } - p.SetState(69) + p.SetState(71) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for _la == SqlParserCOMMA { { - p.SetState(65) + p.SetState(67) p.Match(SqlParserCOMMA) } { - p.SetState(66) + p.SetState(68) p.Column() } - p.SetState(71) + p.SetState(73) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } @@ -1094,7 +1111,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectStarContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(72) + p.SetState(74) p.Match(SqlParserSTAR) } @@ -1277,37 +1294,37 @@ func (p *SqlParser) AggregationColumns() (localctx IAggregationColumnsContext) { localctx = NewSelectAggregationContext(p, localctx) p.EnterOuterAlt(localctx, 1) - p.SetState(78) + p.SetState(80) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 6, p.GetParserRuleContext()) == 1 { { - p.SetState(75) + p.SetState(77) p.Column() } { - p.SetState(76) + p.SetState(78) p.Match(SqlParserCOMMA) } } { - p.SetState(80) + p.SetState(82) p.AggregationColumn() } - p.SetState(83) + p.SetState(85) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { case SqlParserIDENTIFIER: { - p.SetState(81) + p.SetState(83) p.Column() } case SqlParserSTAR: { - p.SetState(82) + p.SetState(84) p.Match(SqlParserSTAR) } @@ -1315,7 +1332,7 @@ func (p *SqlParser) AggregationColumns() (localctx IAggregationColumnsContext) { panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) } { - p.SetState(85) + p.SetState(87) p.Match(SqlParserR_BRACKET) } @@ -1398,16 +1415,433 @@ func (s *IdentifierColumnContext) IDENTIFIER(i int) antlr.TerminalNode { return s.GetToken(SqlParserIDENTIFIER, i) } -func (s *IdentifierColumnContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) +func (s *IdentifierColumnContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *IdentifierColumnContext) Alias() IAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAliasContext) +} + +func (s *IdentifierColumnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitIdentifierColumn(s) + + default: + return t.VisitChildren(s) + } +} + +type FunctionColumnContext struct { + *ColumnContext +} + +func NewFunctionColumnContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *FunctionColumnContext { + var p = new(FunctionColumnContext) + + p.ColumnContext = NewEmptyColumnContext() + p.parser = parser + p.CopyFrom(ctx.(*ColumnContext)) + + return p +} + +func (s *FunctionColumnContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FunctionColumnContext) Function() IFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFunctionContext) +} + +func (s *FunctionColumnContext) Alias() IAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAliasContext) +} + +func (s *FunctionColumnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitFunctionColumn(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *SqlParser) Column() (localctx IColumnContext) { + this := p + _ = this + + localctx = NewColumnContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 10, SqlParserRULE_column) + var _la int + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(102) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 11, p.GetParserRuleContext()) { + case 1: + localctx = NewIdentifierColumnContext(p, localctx) + p.EnterOuterAlt(localctx, 1) + p.SetState(93) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 8, p.GetParserRuleContext()) { + case 1: + { + p.SetState(89) + p.Match(SqlParserIDENTIFIER) + } + + case 2: + { + p.SetState(90) + p.Match(SqlParserIDENTIFIER) + } + { + p.SetState(91) + p.Match(SqlParserDOT) + } + { + p.SetState(92) + p.Match(SqlParserIDENTIFIER) + } + + } + p.SetState(96) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + if _la == SqlParserK_AS { + { + p.SetState(95) + p.Alias() + } + + } + + case 2: + localctx = NewFunctionColumnContext(p, localctx) + p.EnterOuterAlt(localctx, 2) + { + p.SetState(98) + p.Function() + } + p.SetState(100) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + if _la == SqlParserK_AS { + { + p.SetState(99) + p.Alias() + } + + } + + } + + return localctx +} + +// IAliasContext is an interface to support dynamic dispatch. +type IAliasContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsAliasContext differentiates from other interfaces. + IsAliasContext() +} + +type AliasContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAliasContext() *AliasContext { + var p = new(AliasContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_alias + return p +} + +func (*AliasContext) IsAliasContext() {} + +func NewAliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AliasContext { + var p = new(AliasContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_alias + + return p +} + +func (s *AliasContext) GetParser() antlr.Parser { return s.parser } + +func (s *AliasContext) K_AS() antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, 0) +} + +func (s *AliasContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(SqlParserIDENTIFIER, 0) +} + +func (s *AliasContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AliasContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitAlias(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *SqlParser) Alias() (localctx IAliasContext) { + this := p + _ = this + + localctx = NewAliasContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 12, SqlParserRULE_alias) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(104) + p.Match(SqlParserK_AS) + } + { + p.SetState(105) + p.Match(SqlParserIDENTIFIER) + } + + return localctx +} + +// IFunctionContext is an interface to support dynamic dispatch. +type IFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsFunctionContext differentiates from other interfaces. + IsFunctionContext() +} + +type FunctionContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFunctionContext() *FunctionContext { + var p = new(FunctionContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_function + return p +} + +func (*FunctionContext) IsFunctionContext() {} + +func NewFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FunctionContext { + var p = new(FunctionContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_function + + return p +} + +func (s *FunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *FunctionContext) CopyFrom(ctx *FunctionContext) { + s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext) +} + +func (s *FunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +type RecursiveFunctionContext struct { + *FunctionContext +} + +func NewRecursiveFunctionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *RecursiveFunctionContext { + var p = new(RecursiveFunctionContext) + + p.FunctionContext = NewEmptyFunctionContext() + p.parser = parser + p.CopyFrom(ctx.(*FunctionContext)) + + return p +} + +func (s *RecursiveFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *RecursiveFunctionContext) FunctionName() IFunctionNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFunctionNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFunctionNameContext) +} + +func (s *RecursiveFunctionContext) L_BRACKET() antlr.TerminalNode { + return s.GetToken(SqlParserL_BRACKET, 0) +} + +func (s *RecursiveFunctionContext) Function() IFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFunctionContext) +} + +func (s *RecursiveFunctionContext) R_BRACKET() antlr.TerminalNode { + return s.GetToken(SqlParserR_BRACKET, 0) +} + +func (s *RecursiveFunctionContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *RecursiveFunctionContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *RecursiveFunctionContext) AllLiteralValue() []ILiteralValueContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ILiteralValueContext); ok { + len++ + } + } + + tst := make([]ILiteralValueContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ILiteralValueContext); ok { + tst[i] = t.(ILiteralValueContext) + i++ + } + } + + return tst } -func (s *IdentifierColumnContext) Alias() IAliasContext { +func (s *RecursiveFunctionContext) LiteralValue(i int) ILiteralValueContext { var t antlr.RuleContext + j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAliasContext); ok { - t = ctx.(antlr.RuleContext) - break + if _, ok := ctx.(ILiteralValueContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ } } @@ -1415,41 +1849,41 @@ func (s *IdentifierColumnContext) Alias() IAliasContext { return nil } - return t.(IAliasContext) + return t.(ILiteralValueContext) } -func (s *IdentifierColumnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *RecursiveFunctionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case SqlVisitor: - return t.VisitIdentifierColumn(s) + return t.VisitRecursiveFunction(s) default: return t.VisitChildren(s) } } -type FunctionColumnContext struct { - *ColumnContext +type SimpleFunctionContext struct { + *FunctionContext } -func NewFunctionColumnContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *FunctionColumnContext { - var p = new(FunctionColumnContext) +func NewSimpleFunctionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SimpleFunctionContext { + var p = new(SimpleFunctionContext) - p.ColumnContext = NewEmptyColumnContext() + p.FunctionContext = NewEmptyFunctionContext() p.parser = parser - p.CopyFrom(ctx.(*ColumnContext)) + p.CopyFrom(ctx.(*FunctionContext)) return p } -func (s *FunctionColumnContext) GetRuleContext() antlr.RuleContext { +func (s *SimpleFunctionContext) GetRuleContext() antlr.RuleContext { return s } -func (s *FunctionColumnContext) Function() IFunctionContext { +func (s *SimpleFunctionContext) FunctionName() IFunctionNameContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IFunctionContext); ok { + if _, ok := ctx.(IFunctionNameContext); ok { t = ctx.(antlr.RuleContext) break } @@ -1459,38 +1893,38 @@ func (s *FunctionColumnContext) Function() IFunctionContext { return nil } - return t.(IFunctionContext) + return t.(IFunctionNameContext) } -func (s *FunctionColumnContext) L_BRACKET() antlr.TerminalNode { +func (s *SimpleFunctionContext) L_BRACKET() antlr.TerminalNode { return s.GetToken(SqlParserL_BRACKET, 0) } -func (s *FunctionColumnContext) R_BRACKET() antlr.TerminalNode { +func (s *SimpleFunctionContext) R_BRACKET() antlr.TerminalNode { return s.GetToken(SqlParserR_BRACKET, 0) } -func (s *FunctionColumnContext) AllIDENTIFIER() []antlr.TerminalNode { +func (s *SimpleFunctionContext) AllIDENTIFIER() []antlr.TerminalNode { return s.GetTokens(SqlParserIDENTIFIER) } -func (s *FunctionColumnContext) IDENTIFIER(i int) antlr.TerminalNode { +func (s *SimpleFunctionContext) IDENTIFIER(i int) antlr.TerminalNode { return s.GetToken(SqlParserIDENTIFIER, i) } -func (s *FunctionColumnContext) DOT() antlr.TerminalNode { +func (s *SimpleFunctionContext) DOT() antlr.TerminalNode { return s.GetToken(SqlParserDOT, 0) } -func (s *FunctionColumnContext) AllCOMMA() []antlr.TerminalNode { +func (s *SimpleFunctionContext) AllCOMMA() []antlr.TerminalNode { return s.GetTokens(SqlParserCOMMA) } -func (s *FunctionColumnContext) COMMA(i int) antlr.TerminalNode { +func (s *SimpleFunctionContext) COMMA(i int) antlr.TerminalNode { return s.GetToken(SqlParserCOMMA, i) } -func (s *FunctionColumnContext) AllLiteralValue() []ILiteralValueContext { +func (s *SimpleFunctionContext) AllLiteralValue() []ILiteralValueContext { children := s.GetChildren() len := 0 for _, ctx := range children { @@ -1511,7 +1945,7 @@ func (s *FunctionColumnContext) AllLiteralValue() []ILiteralValueContext { return tst } -func (s *FunctionColumnContext) LiteralValue(i int) ILiteralValueContext { +func (s *SimpleFunctionContext) LiteralValue(i int) ILiteralValueContext { var t antlr.RuleContext j := 0 for _, ctx := range s.GetChildren() { @@ -1531,38 +1965,22 @@ func (s *FunctionColumnContext) LiteralValue(i int) ILiteralValueContext { return t.(ILiteralValueContext) } -func (s *FunctionColumnContext) Alias() IAliasContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAliasContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IAliasContext) -} - -func (s *FunctionColumnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *SimpleFunctionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case SqlVisitor: - return t.VisitFunctionColumn(s) + return t.VisitSimpleFunction(s) default: return t.VisitChildren(s) } } -func (p *SqlParser) Column() (localctx IColumnContext) { +func (p *SqlParser) Function() (localctx IFunctionContext) { this := p _ = this - localctx = NewColumnContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 10, SqlParserRULE_column) + localctx = NewFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 14, SqlParserRULE_function) var _la int defer func() { @@ -1581,288 +1999,234 @@ func (p *SqlParser) Column() (localctx IColumnContext) { } }() - p.SetState(115) + p.SetState(153) p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 13, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 17, p.GetParserRuleContext()) { case 1: - localctx = NewIdentifierColumnContext(p, localctx) + localctx = NewSimpleFunctionContext(p, localctx) p.EnterOuterAlt(localctx, 1) - p.SetState(91) + { + p.SetState(107) + p.FunctionName() + } + { + p.SetState(108) + p.Match(SqlParserL_BRACKET) + } + p.SetState(113) p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 8, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 12, p.GetParserRuleContext()) { case 1: { - p.SetState(87) + p.SetState(109) p.Match(SqlParserIDENTIFIER) } case 2: { - p.SetState(88) + p.SetState(110) p.Match(SqlParserIDENTIFIER) } { - p.SetState(89) + p.SetState(111) p.Match(SqlParserDOT) } { - p.SetState(90) + p.SetState(112) p.Match(SqlParserIDENTIFIER) } } - p.SetState(94) + p.SetState(119) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - if _la == SqlParserK_AS { + for _la == SqlParserCOMMA { { - p.SetState(93) - p.Alias() + p.SetState(115) + p.Match(SqlParserCOMMA) + } + { + p.SetState(116) + p.LiteralValue() } + p.SetState(121) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(122) + p.Match(SqlParserR_BRACKET) } case 2: - localctx = NewFunctionColumnContext(p, localctx) + localctx = NewSimpleFunctionContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(96) - p.Function() + p.SetState(124) + p.FunctionName() } { - p.SetState(97) + p.SetState(125) p.Match(SqlParserL_BRACKET) } - p.SetState(102) + p.SetState(130) p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 10, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 14, p.GetParserRuleContext()) { case 1: { - p.SetState(98) + p.SetState(126) p.Match(SqlParserIDENTIFIER) } case 2: { - p.SetState(99) + p.SetState(127) p.Match(SqlParserIDENTIFIER) } { - p.SetState(100) + p.SetState(128) p.Match(SqlParserDOT) } { - p.SetState(101) + p.SetState(129) p.Match(SqlParserIDENTIFIER) } } - p.SetState(108) + p.SetState(136) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for _la == SqlParserCOMMA { { - p.SetState(104) + p.SetState(132) p.Match(SqlParserCOMMA) } { - p.SetState(105) + p.SetState(133) p.LiteralValue() } - p.SetState(110) + p.SetState(138) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } { - p.SetState(111) + p.SetState(139) p.Match(SqlParserR_BRACKET) } - p.SetState(113) + + case 3: + localctx = NewRecursiveFunctionContext(p, localctx) + p.EnterOuterAlt(localctx, 3) + { + p.SetState(141) + p.FunctionName() + } + { + p.SetState(142) + p.Match(SqlParserL_BRACKET) + } + { + p.SetState(143) + p.Function() + } + p.SetState(148) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - if _la == SqlParserK_AS { + for _la == SqlParserCOMMA { { - p.SetState(112) - p.Alias() + p.SetState(144) + p.Match(SqlParserCOMMA) + } + { + p.SetState(145) + p.LiteralValue() } + p.SetState(150) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) } - - } - - return localctx -} - -// IAliasContext is an interface to support dynamic dispatch. -type IAliasContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsAliasContext differentiates from other interfaces. - IsAliasContext() -} - -type AliasContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyAliasContext() *AliasContext { - var p = new(AliasContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_alias - return p -} - -func (*AliasContext) IsAliasContext() {} - -func NewAliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AliasContext { - var p = new(AliasContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_alias - - return p -} - -func (s *AliasContext) GetParser() antlr.Parser { return s.parser } - -func (s *AliasContext) K_AS() antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, 0) -} - -func (s *AliasContext) IDENTIFIER() antlr.TerminalNode { - return s.GetToken(SqlParserIDENTIFIER, 0) -} - -func (s *AliasContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *AliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - -func (s *AliasContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { - switch t := visitor.(type) { - case SqlVisitor: - return t.VisitAlias(s) - - default: - return t.VisitChildren(s) - } -} - -func (p *SqlParser) Alias() (localctx IAliasContext) { - this := p - _ = this - - localctx = NewAliasContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 12, SqlParserRULE_alias) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } + { + p.SetState(151) + p.Match(SqlParserR_BRACKET) } - }() - p.EnterOuterAlt(localctx, 1) - { - p.SetState(117) - p.Match(SqlParserK_AS) - } - { - p.SetState(118) - p.Match(SqlParserIDENTIFIER) } return localctx } -// IFunctionContext is an interface to support dynamic dispatch. -type IFunctionContext interface { +// IFunctionNameContext is an interface to support dynamic dispatch. +type IFunctionNameContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser - // IsFunctionContext differentiates from other interfaces. - IsFunctionContext() + // IsFunctionNameContext differentiates from other interfaces. + IsFunctionNameContext() } -type FunctionContext struct { +type FunctionNameContext struct { *antlr.BaseParserRuleContext parser antlr.Parser } -func NewEmptyFunctionContext() *FunctionContext { - var p = new(FunctionContext) +func NewEmptyFunctionNameContext() *FunctionNameContext { + var p = new(FunctionNameContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_function + p.RuleIndex = SqlParserRULE_functionName return p } -func (*FunctionContext) IsFunctionContext() {} +func (*FunctionNameContext) IsFunctionNameContext() {} -func NewFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FunctionContext { - var p = new(FunctionContext) +func NewFunctionNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FunctionNameContext { + var p = new(FunctionNameContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = SqlParserRULE_function + p.RuleIndex = SqlParserRULE_functionName return p } -func (s *FunctionContext) GetParser() antlr.Parser { return s.parser } +func (s *FunctionNameContext) GetParser() antlr.Parser { return s.parser } -func (s *FunctionContext) IDENTIFIER() antlr.TerminalNode { +func (s *FunctionNameContext) IDENTIFIER() antlr.TerminalNode { return s.GetToken(SqlParserIDENTIFIER, 0) } -func (s *FunctionContext) GetRuleContext() antlr.RuleContext { +func (s *FunctionNameContext) GetRuleContext() antlr.RuleContext { return s } -func (s *FunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *FunctionNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -func (s *FunctionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *FunctionNameContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case SqlVisitor: - return t.VisitFunction(s) + return t.VisitFunctionName(s) default: return t.VisitChildren(s) } } -func (p *SqlParser) Function() (localctx IFunctionContext) { +func (p *SqlParser) FunctionName() (localctx IFunctionNameContext) { this := p _ = this - localctx = NewFunctionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 14, SqlParserRULE_function) + localctx = NewFunctionNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 16, SqlParserRULE_functionName) defer func() { p.ExitRule() @@ -1882,7 +2246,7 @@ func (p *SqlParser) Function() (localctx IFunctionContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(120) + p.SetState(155) p.Match(SqlParserIDENTIFIER) } @@ -2068,7 +2432,7 @@ func (p *SqlParser) AggregationColumn() (localctx IAggregationColumnContext) { _ = this localctx = NewAggregationColumnContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 16, SqlParserRULE_aggregationColumn) + p.EnterRule(localctx, 18, SqlParserRULE_aggregationColumn) var _la int defer func() { @@ -2087,14 +2451,14 @@ func (p *SqlParser) AggregationColumn() (localctx IAggregationColumnContext) { } }() - p.SetState(141) + p.SetState(176) p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 16, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 20, p.GetParserRuleContext()) { case 1: localctx = NewColumnAggregationContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(122) + p.SetState(157) _la = p.GetTokenStream().LA(1) if !(((_la-30)&-(0x1f+1)) == 0 && ((1< 1 { if key == typedCol.IDENTIFIER(0).GetText() && nestedKey == typedCol.IDENTIFIER(1).GetText() { nestedFound = true @@ -323,5 +311,31 @@ func getSelectColumnsFromWhereCtx(ctx *WhereStmtContext) *SelectColumnsContext { } return resColumnCtx } + return nil } + +func substring(value pcommon.Value, start, length string) (pcommon.Value, error) { + + startN, err := strconv.Atoi(start) + if err != nil { + return pcommon.NewValueEmpty(), fmt.Errorf("first arg must be numeric") + } + + lengthN, err := strconv.Atoi(length) + if err != nil { + return pcommon.NewValueEmpty(), fmt.Errorf("second arg must be numeric") + } + + runes := []rune(value.AsString()) + if startN > len(runes) { + return pcommon.NewValueString(""), nil + } + + if startN+lengthN > len(runes) { + lengthN = len(runes) - startN + } + + return pcommon.NewValueString(string(runes[startN : startN+lengthN])), nil + +} From a89b12e38aff572f8dc58ddd36a11f62da91901d Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Wed, 7 Sep 2022 15:04:26 +0300 Subject: [PATCH 26/31] function support refactor/improvement --- .../parser/sql_stream_function_test.go | 55 +++++++++++++- .../parser/sql_stream_visitor.go | 72 +++++++------------ .../stream_processor/parser/visitor_utils.go | 31 ++++++++ 3 files changed, 109 insertions(+), 49 deletions(-) diff --git a/processor/stream_processor/parser/sql_stream_function_test.go b/processor/stream_processor/parser/sql_stream_function_test.go index f8368168b0d8..a4cd8bad2da7 100644 --- a/processor/stream_processor/parser/sql_stream_function_test.go +++ b/processor/stream_processor/parser/sql_stream_function_test.go @@ -1,11 +1,12 @@ package parser import ( + "strings" + "testing" + "github.com/stretchr/testify/assert" "go.opentelemetry.io/collector/pdata/plog" "go.uber.org/zap" - "strings" - "testing" ) func TestScalarFunctions(t *testing.T) { @@ -69,3 +70,53 @@ func TestScalarFunctions(t *testing.T) { }) } } + +func TestRecursiveScalarFunctions(t *testing.T) { + + tests := []struct { + name, query, attr string + expectedAttr map[string]string + expectedResult int + }{ + { + name: "recursive 1", + query: `SELECT substr(name,2,3) WHERE name = 'Test name 50';`, + expectedAttr: map[string]string{"name": "st "}, + }, + { + name: "recursive 2", + query: `SELECT upper(lower(upper(substr(name,2,3)))) WHERE name = 'Test name 50';`, + expectedAttr: map[string]string{"name": "ST "}, + }, + { + name: "recursive with alias", + query: `SELECT upper(substr(name,2,3)), upper(name) as UpperName WHERE name = 'Test name 50';`, + expectedAttr: map[string]string{"name": "ST ", "UpperName": "TEST NAME 50"}, + }, + { + name: "recursive with alias", + query: `SELECT upper(substr(name,2,3)), upper(name) as UpperName, name as JustName WHERE name = 'Test name 50';`, + expectedAttr: map[string]string{"name": "ST ", "UpperName": "TEST NAME 50", "JustName": "Test name 50"}, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + in <- GenerateTestLogs() + ls := <-out + + res := ls.At(0).Attributes() + for k, v := range tt.expectedAttr { + val, ok := res.Get(k) + assert.True(t, ok) + assert.Equal(t, v, val.AsString()) + } + + }) + } +} diff --git a/processor/stream_processor/parser/sql_stream_visitor.go b/processor/stream_processor/parser/sql_stream_visitor.go index f9a6db71488c..ddc7d2053c79 100644 --- a/processor/stream_processor/parser/sql_stream_visitor.go +++ b/processor/stream_processor/parser/sql_stream_visitor.go @@ -30,9 +30,6 @@ type SqlStreamVisitor struct { resultLogRecords plog.LogRecordSlice currentResultRecord plog.LogRecord - //this is temp value for functions - tempValue pcommon.Value - groupByLogRecords map[string]plog.LogRecordSlice in <-chan plog.LogRecordSlice @@ -455,59 +452,39 @@ func (v *SqlStreamVisitor) VisitFunctionColumn(ctx *FunctionColumnContext) inter var simpleFuncCtx *SimpleFunctionContext res := ctx.Function().Accept(v) + switch res.(type) { + case error: + return res + case pcommon.Value: + default: + return fmt.Errorf("undefined result type") + } + simpleFuncCtx, ok := ctx.GetChild(0).(*SimpleFunctionContext) if !ok { - //we need to find needed attributes from child context - for _, childRecCtx := range ctx.Function().GetChildren() { - switch childRecCtx.(type) { - case *SimpleFunctionContext: - simpleFuncCtx = childRecCtx.(*SimpleFunctionContext) - case *RecursiveFunctionContext: - simpleFuncCtx = findSimpleFuncCtx(childRecCtx.(*RecursiveFunctionContext)) - default: - continue - } - } + simpleFuncCtx = getSimpleFunctionContext(ctx) } - if len(simpleFuncCtx.AllIDENTIFIER()) == 1 { - fieldName := simpleFuncCtx.IDENTIFIER(0).GetText() - if ctx.Alias() != nil { - fieldName = ctx.Alias().GetStop().GetText() - } - v.currentResultRecord.Attributes().Insert(fieldName, v.tempValue) - return nil + fieldName := simpleFuncCtx.IDENTIFIER(0).GetText() + if ctx.Alias() != nil { + fieldName = ctx.Alias().GetStop().GetText() } - if ctx.Alias() != nil { - fieldName := ctx.Alias().GetStop().GetText() - v.currentResultRecord.Attributes().Insert(fieldName, v.tempValue) + // if simple field + if len(simpleFuncCtx.AllIDENTIFIER()) == 1 { + v.currentResultRecord.Attributes().Insert(fieldName, res.(pcommon.Value)) + return nil } + //this is nested field nestedFieldName := simpleFuncCtx.IDENTIFIER(1).GetText() newMapVal := pcommon.NewValueMap() - newMapVal.MapVal().Insert(nestedFieldName, v.tempValue) - + newMapVal.MapVal().Insert(nestedFieldName, res.(pcommon.Value)) v.currentResultRecord.Attributes().Insert(nestedFieldName, newMapVal) return res } -func findSimpleFuncCtx(ctx *RecursiveFunctionContext) *SimpleFunctionContext { - for _, childCtx := range ctx.GetChildren() { - switch childCtx.(type) { - case *RecursiveFunctionContext: - return findSimpleFuncCtx(childCtx.(*RecursiveFunctionContext)) - case *SimpleFunctionContext: - return childCtx.(*SimpleFunctionContext) - default: - continue - } - } - - return nil -} - func (v *SqlStreamVisitor) VisitSimpleFunction(ctx *SimpleFunctionContext) interface{} { fieldName := ctx.IDENTIFIER(0).GetText() @@ -528,7 +505,6 @@ func (v *SqlStreamVisitor) VisitSimpleFunction(ctx *SimpleFunctionContext) inter } //v.currentResultRecord.Attributes().Insert(fieldName, newValue) - v.tempValue = newValue return newValue } @@ -543,25 +519,27 @@ func (v *SqlStreamVisitor) VisitSimpleFunction(ctx *SimpleFunctionContext) inter newMapVal := pcommon.NewValueMap() newMapVal.MapVal().Insert(nestedFieldName, nestedVal) //v.currentResultRecord.Attributes().Insert(fieldName, newValue) - v.tempValue = newValue return newValue } func (v *SqlStreamVisitor) VisitRecursiveFunction(ctx *RecursiveFunctionContext) interface{} { res := ctx.Function().Accept(v) - fmt.Println(res.(pcommon.Value).AsString()) + switch res.(type) { case error: return res + case pcommon.Value: + default: + return fmt.Errorf("undefined return type") + } - newValue, err := v.applyFunction(v.tempValue, ctx.FunctionName().GetText(), ctx.AllLiteralValue()...) + tmpValue, err := v.applyFunction(res.(pcommon.Value), ctx.FunctionName().GetText(), ctx.AllLiteralValue()...) if err != nil { return nil } - v.tempValue = newValue - return res + return tmpValue } func (v *SqlStreamVisitor) applyFunction(value pcommon.Value, functionName string, args ...ILiteralValueContext) (pcommon.Value, error) { diff --git a/processor/stream_processor/parser/visitor_utils.go b/processor/stream_processor/parser/visitor_utils.go index ca0cf2d93787..6bbe52b9cc12 100644 --- a/processor/stream_processor/parser/visitor_utils.go +++ b/processor/stream_processor/parser/visitor_utils.go @@ -339,3 +339,34 @@ func substring(value pcommon.Value, start, length string) (pcommon.Value, error) return pcommon.NewValueString(string(runes[startN : startN+lengthN])), nil } + +func getSimpleFunctionContext(ctx *FunctionColumnContext) *SimpleFunctionContext { + var simpleFuncCtx *SimpleFunctionContext + for _, childRecCtx := range ctx.Function().GetChildren() { + switch childRecCtx.(type) { + case *SimpleFunctionContext: + simpleFuncCtx = childRecCtx.(*SimpleFunctionContext) + case *RecursiveFunctionContext: + simpleFuncCtx = findSimpleFuncCtx(childRecCtx.(*RecursiveFunctionContext)) + default: + continue + } + } + + return simpleFuncCtx +} + +func findSimpleFuncCtx(ctx *RecursiveFunctionContext) *SimpleFunctionContext { + for _, childCtx := range ctx.GetChildren() { + switch childCtx.(type) { + case *RecursiveFunctionContext: + return findSimpleFuncCtx(childCtx.(*RecursiveFunctionContext)) + case *SimpleFunctionContext: + return childCtx.(*SimpleFunctionContext) + default: + continue + } + } + + return nil +} \ No newline at end of file From df3eab2955e40dfa616f9e0d9462c989282f36ff Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Thu, 15 Sep 2022 21:27:49 +0300 Subject: [PATCH 27/31] groupby refactoring/fixes intermediate --- processor/stream_processor/Sql.g4 | 4 +- processor/stream_processor/parser/Sql.interp | 2 +- .../stream_processor/parser/sql_parser.go | 507 +++++++++--------- .../parser/sql_stream_tumbling_test.go | 3 + .../parser/sql_stream_visitor.go | 187 +++---- .../stream_processor/parser/visitor_utils.go | 100 ++-- 6 files changed, 427 insertions(+), 376 deletions(-) diff --git a/processor/stream_processor/Sql.g4 b/processor/stream_processor/Sql.g4 index a9d2dcc0cf10..2773c060de9d 100644 --- a/processor/stream_processor/Sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -23,7 +23,7 @@ resultColumns ; aggregationColumns - : (column COMMA)? aggregationColumn (column | STAR) R_BRACKET #selectAggregation + : (column COMMA)? aggregationColumn (COMMA aggregationColumn)* #selectAggregation ; @@ -47,7 +47,7 @@ functionName ; aggregationColumn - : (K_MIN | K_MAX | K_COUNT | K_AVG | K_SUM) L_BRACKET ( IDENTIFIER | IDENTIFIER DOT IDENTIFIER) R_BRACKET # columnAggregation + : (K_MIN | K_MAX | K_COUNT | K_AVG | K_SUM) L_BRACKET ( IDENTIFIER | IDENTIFIER DOT IDENTIFIER) R_BRACKET alias? # columnAggregation | (IDENTIFIER | IDENTIFIER DOT IDENTIFIER)? K_COUNT L_BRACKET STAR R_BRACKET # columnCountAggregation ; diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp index bf9ee1d4a884..1f2ea9a62bbe 100644 --- a/processor/stream_processor/parser/Sql.interp +++ b/processor/stream_processor/parser/Sql.interp @@ -107,4 +107,4 @@ groupBy atn: -[4, 1, 41, 229, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 57, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 62, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 70, 8, 3, 10, 3, 12, 3, 73, 9, 3, 1, 3, 3, 3, 76, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 81, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 86, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 94, 8, 5, 1, 5, 3, 5, 97, 8, 5, 1, 5, 1, 5, 3, 5, 101, 8, 5, 3, 5, 103, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 114, 8, 7, 1, 7, 1, 7, 5, 7, 118, 8, 7, 10, 7, 12, 7, 121, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 131, 8, 7, 1, 7, 1, 7, 5, 7, 135, 8, 7, 10, 7, 12, 7, 138, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 147, 8, 7, 10, 7, 12, 7, 150, 9, 7, 1, 7, 1, 7, 3, 7, 154, 8, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 164, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 171, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 177, 8, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 186, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 191, 8, 11, 1, 11, 3, 11, 194, 8, 11, 1, 11, 1, 11, 1, 11, 5, 11, 199, 8, 11, 10, 11, 12, 11, 202, 9, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 214, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 3, 16, 227, 8, 16, 1, 16, 0, 1, 22, 17, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, 40, 242, 0, 34, 1, 0, 0, 0, 2, 61, 1, 0, 0, 0, 4, 63, 1, 0, 0, 0, 6, 75, 1, 0, 0, 0, 8, 80, 1, 0, 0, 0, 10, 102, 1, 0, 0, 0, 12, 104, 1, 0, 0, 0, 14, 153, 1, 0, 0, 0, 16, 155, 1, 0, 0, 0, 18, 176, 1, 0, 0, 0, 20, 178, 1, 0, 0, 0, 22, 193, 1, 0, 0, 0, 24, 213, 1, 0, 0, 0, 26, 215, 1, 0, 0, 0, 28, 219, 1, 0, 0, 0, 30, 221, 1, 0, 0, 0, 32, 226, 1, 0, 0, 0, 34, 35, 3, 2, 1, 0, 35, 36, 5, 0, 0, 1, 36, 1, 1, 0, 0, 0, 37, 38, 5, 8, 0, 0, 38, 40, 3, 6, 3, 0, 39, 41, 3, 20, 10, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 5, 7, 0, 0, 43, 62, 1, 0, 0, 0, 44, 45, 5, 8, 0, 0, 45, 46, 3, 8, 4, 0, 46, 48, 3, 4, 2, 0, 47, 49, 3, 20, 10, 0, 48, 47, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 5, 7, 0, 0, 51, 62, 1, 0, 0, 0, 52, 53, 5, 8, 0, 0, 53, 54, 3, 8, 4, 0, 54, 56, 3, 4, 2, 0, 55, 57, 3, 20, 10, 0, 56, 55, 1, 0, 0, 0, 56, 57, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 59, 3, 32, 16, 0, 59, 60, 5, 7, 0, 0, 60, 62, 1, 0, 0, 0, 61, 37, 1, 0, 0, 0, 61, 44, 1, 0, 0, 0, 61, 52, 1, 0, 0, 0, 62, 3, 1, 0, 0, 0, 63, 64, 5, 10, 0, 0, 64, 65, 5, 38, 0, 0, 65, 5, 1, 0, 0, 0, 66, 71, 3, 10, 5, 0, 67, 68, 5, 3, 0, 0, 68, 70, 3, 10, 5, 0, 69, 67, 1, 0, 0, 0, 70, 73, 1, 0, 0, 0, 71, 69, 1, 0, 0, 0, 71, 72, 1, 0, 0, 0, 72, 76, 1, 0, 0, 0, 73, 71, 1, 0, 0, 0, 74, 76, 5, 41, 0, 0, 75, 66, 1, 0, 0, 0, 75, 74, 1, 0, 0, 0, 76, 7, 1, 0, 0, 0, 77, 78, 3, 10, 5, 0, 78, 79, 5, 3, 0, 0, 79, 81, 1, 0, 0, 0, 80, 77, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 1, 0, 0, 0, 82, 85, 3, 18, 9, 0, 83, 86, 3, 10, 5, 0, 84, 86, 5, 41, 0, 0, 85, 83, 1, 0, 0, 0, 85, 84, 1, 0, 0, 0, 86, 87, 1, 0, 0, 0, 87, 88, 5, 5, 0, 0, 88, 9, 1, 0, 0, 0, 89, 94, 5, 37, 0, 0, 90, 91, 5, 37, 0, 0, 91, 92, 5, 6, 0, 0, 92, 94, 5, 37, 0, 0, 93, 89, 1, 0, 0, 0, 93, 90, 1, 0, 0, 0, 94, 96, 1, 0, 0, 0, 95, 97, 3, 12, 6, 0, 96, 95, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 103, 1, 0, 0, 0, 98, 100, 3, 14, 7, 0, 99, 101, 3, 12, 6, 0, 100, 99, 1, 0, 0, 0, 100, 101, 1, 0, 0, 0, 101, 103, 1, 0, 0, 0, 102, 93, 1, 0, 0, 0, 102, 98, 1, 0, 0, 0, 103, 11, 1, 0, 0, 0, 104, 105, 5, 13, 0, 0, 105, 106, 5, 37, 0, 0, 106, 13, 1, 0, 0, 0, 107, 108, 3, 16, 8, 0, 108, 113, 5, 4, 0, 0, 109, 114, 5, 37, 0, 0, 110, 111, 5, 37, 0, 0, 111, 112, 5, 6, 0, 0, 112, 114, 5, 37, 0, 0, 113, 109, 1, 0, 0, 0, 113, 110, 1, 0, 0, 0, 114, 119, 1, 0, 0, 0, 115, 116, 5, 3, 0, 0, 116, 118, 3, 30, 15, 0, 117, 115, 1, 0, 0, 0, 118, 121, 1, 0, 0, 0, 119, 117, 1, 0, 0, 0, 119, 120, 1, 0, 0, 0, 120, 122, 1, 0, 0, 0, 121, 119, 1, 0, 0, 0, 122, 123, 5, 5, 0, 0, 123, 154, 1, 0, 0, 0, 124, 125, 3, 16, 8, 0, 125, 130, 5, 4, 0, 0, 126, 131, 5, 37, 0, 0, 127, 128, 5, 37, 0, 0, 128, 129, 5, 6, 0, 0, 129, 131, 5, 37, 0, 0, 130, 126, 1, 0, 0, 0, 130, 127, 1, 0, 0, 0, 131, 136, 1, 0, 0, 0, 132, 133, 5, 3, 0, 0, 133, 135, 3, 30, 15, 0, 134, 132, 1, 0, 0, 0, 135, 138, 1, 0, 0, 0, 136, 134, 1, 0, 0, 0, 136, 137, 1, 0, 0, 0, 137, 139, 1, 0, 0, 0, 138, 136, 1, 0, 0, 0, 139, 140, 5, 5, 0, 0, 140, 154, 1, 0, 0, 0, 141, 142, 3, 16, 8, 0, 142, 143, 5, 4, 0, 0, 143, 148, 3, 14, 7, 0, 144, 145, 5, 3, 0, 0, 145, 147, 3, 30, 15, 0, 146, 144, 1, 0, 0, 0, 147, 150, 1, 0, 0, 0, 148, 146, 1, 0, 0, 0, 148, 149, 1, 0, 0, 0, 149, 151, 1, 0, 0, 0, 150, 148, 1, 0, 0, 0, 151, 152, 5, 5, 0, 0, 152, 154, 1, 0, 0, 0, 153, 107, 1, 0, 0, 0, 153, 124, 1, 0, 0, 0, 153, 141, 1, 0, 0, 0, 154, 15, 1, 0, 0, 0, 155, 156, 5, 37, 0, 0, 156, 17, 1, 0, 0, 0, 157, 158, 7, 0, 0, 0, 158, 163, 5, 4, 0, 0, 159, 164, 5, 37, 0, 0, 160, 161, 5, 37, 0, 0, 161, 162, 5, 6, 0, 0, 162, 164, 5, 37, 0, 0, 163, 159, 1, 0, 0, 0, 163, 160, 1, 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, 177, 5, 5, 0, 0, 166, 171, 5, 37, 0, 0, 167, 168, 5, 37, 0, 0, 168, 169, 5, 6, 0, 0, 169, 171, 5, 37, 0, 0, 170, 166, 1, 0, 0, 0, 170, 167, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 172, 1, 0, 0, 0, 172, 173, 5, 30, 0, 0, 173, 174, 5, 4, 0, 0, 174, 175, 5, 41, 0, 0, 175, 177, 5, 5, 0, 0, 176, 157, 1, 0, 0, 0, 176, 170, 1, 0, 0, 0, 177, 19, 1, 0, 0, 0, 178, 179, 5, 9, 0, 0, 179, 180, 3, 22, 11, 0, 180, 21, 1, 0, 0, 0, 181, 182, 6, 11, -1, 0, 182, 194, 3, 24, 12, 0, 183, 186, 3, 26, 13, 0, 184, 186, 3, 24, 12, 0, 185, 183, 1, 0, 0, 0, 185, 184, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 190, 7, 1, 0, 0, 188, 191, 3, 26, 13, 0, 189, 191, 3, 24, 12, 0, 190, 188, 1, 0, 0, 0, 190, 189, 1, 0, 0, 0, 191, 194, 1, 0, 0, 0, 192, 194, 3, 26, 13, 0, 193, 181, 1, 0, 0, 0, 193, 185, 1, 0, 0, 0, 193, 192, 1, 0, 0, 0, 194, 200, 1, 0, 0, 0, 195, 196, 10, 2, 0, 0, 196, 197, 7, 1, 0, 0, 197, 199, 3, 22, 11, 3, 198, 195, 1, 0, 0, 0, 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 23, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 204, 5, 37, 0, 0, 204, 205, 3, 28, 14, 0, 205, 206, 3, 30, 15, 0, 206, 214, 1, 0, 0, 0, 207, 208, 5, 37, 0, 0, 208, 209, 5, 6, 0, 0, 209, 210, 5, 37, 0, 0, 210, 211, 3, 28, 14, 0, 211, 212, 3, 30, 15, 0, 212, 214, 1, 0, 0, 0, 213, 203, 1, 0, 0, 0, 213, 207, 1, 0, 0, 0, 214, 25, 1, 0, 0, 0, 215, 216, 5, 4, 0, 0, 216, 217, 3, 22, 11, 0, 217, 218, 5, 5, 0, 0, 218, 27, 1, 0, 0, 0, 219, 220, 7, 2, 0, 0, 220, 29, 1, 0, 0, 0, 221, 222, 7, 3, 0, 0, 222, 31, 1, 0, 0, 0, 223, 224, 5, 11, 0, 0, 224, 227, 3, 10, 5, 0, 225, 227, 1, 0, 0, 0, 226, 223, 1, 0, 0, 0, 226, 225, 1, 0, 0, 0, 227, 33, 1, 0, 0, 0, 27, 40, 48, 56, 61, 71, 75, 80, 85, 93, 96, 100, 102, 113, 119, 130, 136, 148, 153, 163, 170, 176, 185, 190, 193, 200, 213, 226] \ No newline at end of file +[4, 1, 41, 233, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 57, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 62, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 70, 8, 3, 10, 3, 12, 3, 73, 9, 3, 1, 3, 3, 3, 76, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 81, 8, 4, 1, 4, 1, 4, 1, 4, 5, 4, 86, 8, 4, 10, 4, 12, 4, 89, 9, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 95, 8, 5, 1, 5, 3, 5, 98, 8, 5, 1, 5, 1, 5, 3, 5, 102, 8, 5, 3, 5, 104, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 115, 8, 7, 1, 7, 1, 7, 5, 7, 119, 8, 7, 10, 7, 12, 7, 122, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 132, 8, 7, 1, 7, 1, 7, 5, 7, 136, 8, 7, 10, 7, 12, 7, 139, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 148, 8, 7, 10, 7, 12, 7, 151, 9, 7, 1, 7, 1, 7, 3, 7, 155, 8, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 165, 8, 9, 1, 9, 1, 9, 3, 9, 169, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 175, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 181, 8, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 190, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 195, 8, 11, 1, 11, 3, 11, 198, 8, 11, 1, 11, 1, 11, 1, 11, 5, 11, 203, 8, 11, 10, 11, 12, 11, 206, 9, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 218, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 3, 16, 231, 8, 16, 1, 16, 0, 1, 22, 17, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, 40, 247, 0, 34, 1, 0, 0, 0, 2, 61, 1, 0, 0, 0, 4, 63, 1, 0, 0, 0, 6, 75, 1, 0, 0, 0, 8, 80, 1, 0, 0, 0, 10, 103, 1, 0, 0, 0, 12, 105, 1, 0, 0, 0, 14, 154, 1, 0, 0, 0, 16, 156, 1, 0, 0, 0, 18, 180, 1, 0, 0, 0, 20, 182, 1, 0, 0, 0, 22, 197, 1, 0, 0, 0, 24, 217, 1, 0, 0, 0, 26, 219, 1, 0, 0, 0, 28, 223, 1, 0, 0, 0, 30, 225, 1, 0, 0, 0, 32, 230, 1, 0, 0, 0, 34, 35, 3, 2, 1, 0, 35, 36, 5, 0, 0, 1, 36, 1, 1, 0, 0, 0, 37, 38, 5, 8, 0, 0, 38, 40, 3, 6, 3, 0, 39, 41, 3, 20, 10, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 5, 7, 0, 0, 43, 62, 1, 0, 0, 0, 44, 45, 5, 8, 0, 0, 45, 46, 3, 8, 4, 0, 46, 48, 3, 4, 2, 0, 47, 49, 3, 20, 10, 0, 48, 47, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 5, 7, 0, 0, 51, 62, 1, 0, 0, 0, 52, 53, 5, 8, 0, 0, 53, 54, 3, 8, 4, 0, 54, 56, 3, 4, 2, 0, 55, 57, 3, 20, 10, 0, 56, 55, 1, 0, 0, 0, 56, 57, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 59, 3, 32, 16, 0, 59, 60, 5, 7, 0, 0, 60, 62, 1, 0, 0, 0, 61, 37, 1, 0, 0, 0, 61, 44, 1, 0, 0, 0, 61, 52, 1, 0, 0, 0, 62, 3, 1, 0, 0, 0, 63, 64, 5, 10, 0, 0, 64, 65, 5, 38, 0, 0, 65, 5, 1, 0, 0, 0, 66, 71, 3, 10, 5, 0, 67, 68, 5, 3, 0, 0, 68, 70, 3, 10, 5, 0, 69, 67, 1, 0, 0, 0, 70, 73, 1, 0, 0, 0, 71, 69, 1, 0, 0, 0, 71, 72, 1, 0, 0, 0, 72, 76, 1, 0, 0, 0, 73, 71, 1, 0, 0, 0, 74, 76, 5, 41, 0, 0, 75, 66, 1, 0, 0, 0, 75, 74, 1, 0, 0, 0, 76, 7, 1, 0, 0, 0, 77, 78, 3, 10, 5, 0, 78, 79, 5, 3, 0, 0, 79, 81, 1, 0, 0, 0, 80, 77, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 1, 0, 0, 0, 82, 87, 3, 18, 9, 0, 83, 84, 5, 3, 0, 0, 84, 86, 3, 18, 9, 0, 85, 83, 1, 0, 0, 0, 86, 89, 1, 0, 0, 0, 87, 85, 1, 0, 0, 0, 87, 88, 1, 0, 0, 0, 88, 9, 1, 0, 0, 0, 89, 87, 1, 0, 0, 0, 90, 95, 5, 37, 0, 0, 91, 92, 5, 37, 0, 0, 92, 93, 5, 6, 0, 0, 93, 95, 5, 37, 0, 0, 94, 90, 1, 0, 0, 0, 94, 91, 1, 0, 0, 0, 95, 97, 1, 0, 0, 0, 96, 98, 3, 12, 6, 0, 97, 96, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 104, 1, 0, 0, 0, 99, 101, 3, 14, 7, 0, 100, 102, 3, 12, 6, 0, 101, 100, 1, 0, 0, 0, 101, 102, 1, 0, 0, 0, 102, 104, 1, 0, 0, 0, 103, 94, 1, 0, 0, 0, 103, 99, 1, 0, 0, 0, 104, 11, 1, 0, 0, 0, 105, 106, 5, 13, 0, 0, 106, 107, 5, 37, 0, 0, 107, 13, 1, 0, 0, 0, 108, 109, 3, 16, 8, 0, 109, 114, 5, 4, 0, 0, 110, 115, 5, 37, 0, 0, 111, 112, 5, 37, 0, 0, 112, 113, 5, 6, 0, 0, 113, 115, 5, 37, 0, 0, 114, 110, 1, 0, 0, 0, 114, 111, 1, 0, 0, 0, 115, 120, 1, 0, 0, 0, 116, 117, 5, 3, 0, 0, 117, 119, 3, 30, 15, 0, 118, 116, 1, 0, 0, 0, 119, 122, 1, 0, 0, 0, 120, 118, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 123, 1, 0, 0, 0, 122, 120, 1, 0, 0, 0, 123, 124, 5, 5, 0, 0, 124, 155, 1, 0, 0, 0, 125, 126, 3, 16, 8, 0, 126, 131, 5, 4, 0, 0, 127, 132, 5, 37, 0, 0, 128, 129, 5, 37, 0, 0, 129, 130, 5, 6, 0, 0, 130, 132, 5, 37, 0, 0, 131, 127, 1, 0, 0, 0, 131, 128, 1, 0, 0, 0, 132, 137, 1, 0, 0, 0, 133, 134, 5, 3, 0, 0, 134, 136, 3, 30, 15, 0, 135, 133, 1, 0, 0, 0, 136, 139, 1, 0, 0, 0, 137, 135, 1, 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, 140, 1, 0, 0, 0, 139, 137, 1, 0, 0, 0, 140, 141, 5, 5, 0, 0, 141, 155, 1, 0, 0, 0, 142, 143, 3, 16, 8, 0, 143, 144, 5, 4, 0, 0, 144, 149, 3, 14, 7, 0, 145, 146, 5, 3, 0, 0, 146, 148, 3, 30, 15, 0, 147, 145, 1, 0, 0, 0, 148, 151, 1, 0, 0, 0, 149, 147, 1, 0, 0, 0, 149, 150, 1, 0, 0, 0, 150, 152, 1, 0, 0, 0, 151, 149, 1, 0, 0, 0, 152, 153, 5, 5, 0, 0, 153, 155, 1, 0, 0, 0, 154, 108, 1, 0, 0, 0, 154, 125, 1, 0, 0, 0, 154, 142, 1, 0, 0, 0, 155, 15, 1, 0, 0, 0, 156, 157, 5, 37, 0, 0, 157, 17, 1, 0, 0, 0, 158, 159, 7, 0, 0, 0, 159, 164, 5, 4, 0, 0, 160, 165, 5, 37, 0, 0, 161, 162, 5, 37, 0, 0, 162, 163, 5, 6, 0, 0, 163, 165, 5, 37, 0, 0, 164, 160, 1, 0, 0, 0, 164, 161, 1, 0, 0, 0, 165, 166, 1, 0, 0, 0, 166, 168, 5, 5, 0, 0, 167, 169, 3, 12, 6, 0, 168, 167, 1, 0, 0, 0, 168, 169, 1, 0, 0, 0, 169, 181, 1, 0, 0, 0, 170, 175, 5, 37, 0, 0, 171, 172, 5, 37, 0, 0, 172, 173, 5, 6, 0, 0, 173, 175, 5, 37, 0, 0, 174, 170, 1, 0, 0, 0, 174, 171, 1, 0, 0, 0, 174, 175, 1, 0, 0, 0, 175, 176, 1, 0, 0, 0, 176, 177, 5, 30, 0, 0, 177, 178, 5, 4, 0, 0, 178, 179, 5, 41, 0, 0, 179, 181, 5, 5, 0, 0, 180, 158, 1, 0, 0, 0, 180, 174, 1, 0, 0, 0, 181, 19, 1, 0, 0, 0, 182, 183, 5, 9, 0, 0, 183, 184, 3, 22, 11, 0, 184, 21, 1, 0, 0, 0, 185, 186, 6, 11, -1, 0, 186, 198, 3, 24, 12, 0, 187, 190, 3, 26, 13, 0, 188, 190, 3, 24, 12, 0, 189, 187, 1, 0, 0, 0, 189, 188, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, 194, 7, 1, 0, 0, 192, 195, 3, 26, 13, 0, 193, 195, 3, 24, 12, 0, 194, 192, 1, 0, 0, 0, 194, 193, 1, 0, 0, 0, 195, 198, 1, 0, 0, 0, 196, 198, 3, 26, 13, 0, 197, 185, 1, 0, 0, 0, 197, 189, 1, 0, 0, 0, 197, 196, 1, 0, 0, 0, 198, 204, 1, 0, 0, 0, 199, 200, 10, 2, 0, 0, 200, 201, 7, 1, 0, 0, 201, 203, 3, 22, 11, 3, 202, 199, 1, 0, 0, 0, 203, 206, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 23, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 207, 208, 5, 37, 0, 0, 208, 209, 3, 28, 14, 0, 209, 210, 3, 30, 15, 0, 210, 218, 1, 0, 0, 0, 211, 212, 5, 37, 0, 0, 212, 213, 5, 6, 0, 0, 213, 214, 5, 37, 0, 0, 214, 215, 3, 28, 14, 0, 215, 216, 3, 30, 15, 0, 216, 218, 1, 0, 0, 0, 217, 207, 1, 0, 0, 0, 217, 211, 1, 0, 0, 0, 218, 25, 1, 0, 0, 0, 219, 220, 5, 4, 0, 0, 220, 221, 3, 22, 11, 0, 221, 222, 5, 5, 0, 0, 222, 27, 1, 0, 0, 0, 223, 224, 7, 2, 0, 0, 224, 29, 1, 0, 0, 0, 225, 226, 7, 3, 0, 0, 226, 31, 1, 0, 0, 0, 227, 228, 5, 11, 0, 0, 228, 231, 3, 10, 5, 0, 229, 231, 1, 0, 0, 0, 230, 227, 1, 0, 0, 0, 230, 229, 1, 0, 0, 0, 231, 33, 1, 0, 0, 0, 28, 40, 48, 56, 61, 71, 75, 80, 87, 94, 97, 101, 103, 114, 120, 131, 137, 149, 154, 164, 168, 174, 180, 189, 194, 197, 204, 217, 230] \ No newline at end of file diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index 33f9e2c57c89..fb661f7f7e25 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -54,105 +54,107 @@ func sqlParserInit() { } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 41, 229, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 41, 233, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 57, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 62, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 70, 8, 3, 10, 3, 12, 3, 73, 9, 3, 1, 3, 3, - 3, 76, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 81, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, - 86, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 94, 8, 5, 1, 5, 3, - 5, 97, 8, 5, 1, 5, 1, 5, 3, 5, 101, 8, 5, 3, 5, 103, 8, 5, 1, 6, 1, 6, - 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 114, 8, 7, 1, 7, 1, 7, - 5, 7, 118, 8, 7, 10, 7, 12, 7, 121, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, - 1, 7, 1, 7, 1, 7, 3, 7, 131, 8, 7, 1, 7, 1, 7, 5, 7, 135, 8, 7, 10, 7, - 12, 7, 138, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 147, - 8, 7, 10, 7, 12, 7, 150, 9, 7, 1, 7, 1, 7, 3, 7, 154, 8, 7, 1, 8, 1, 8, - 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 164, 8, 9, 1, 9, 1, 9, 1, 9, - 1, 9, 1, 9, 3, 9, 171, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 177, 8, 9, 1, - 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 186, 8, 11, 1, 11, - 1, 11, 1, 11, 3, 11, 191, 8, 11, 1, 11, 3, 11, 194, 8, 11, 1, 11, 1, 11, - 1, 11, 5, 11, 199, 8, 11, 10, 11, 12, 11, 202, 9, 11, 1, 12, 1, 12, 1, - 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 214, 8, 12, - 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, - 16, 3, 16, 227, 8, 16, 1, 16, 0, 1, 22, 17, 0, 2, 4, 6, 8, 10, 12, 14, - 16, 18, 20, 22, 24, 26, 28, 30, 32, 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, - 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, 40, 242, 0, 34, 1, 0, 0, 0, 2, 61, - 1, 0, 0, 0, 4, 63, 1, 0, 0, 0, 6, 75, 1, 0, 0, 0, 8, 80, 1, 0, 0, 0, 10, - 102, 1, 0, 0, 0, 12, 104, 1, 0, 0, 0, 14, 153, 1, 0, 0, 0, 16, 155, 1, - 0, 0, 0, 18, 176, 1, 0, 0, 0, 20, 178, 1, 0, 0, 0, 22, 193, 1, 0, 0, 0, - 24, 213, 1, 0, 0, 0, 26, 215, 1, 0, 0, 0, 28, 219, 1, 0, 0, 0, 30, 221, - 1, 0, 0, 0, 32, 226, 1, 0, 0, 0, 34, 35, 3, 2, 1, 0, 35, 36, 5, 0, 0, 1, - 36, 1, 1, 0, 0, 0, 37, 38, 5, 8, 0, 0, 38, 40, 3, 6, 3, 0, 39, 41, 3, 20, - 10, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, - 43, 5, 7, 0, 0, 43, 62, 1, 0, 0, 0, 44, 45, 5, 8, 0, 0, 45, 46, 3, 8, 4, - 0, 46, 48, 3, 4, 2, 0, 47, 49, 3, 20, 10, 0, 48, 47, 1, 0, 0, 0, 48, 49, - 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 5, 7, 0, 0, 51, 62, 1, 0, 0, 0, - 52, 53, 5, 8, 0, 0, 53, 54, 3, 8, 4, 0, 54, 56, 3, 4, 2, 0, 55, 57, 3, - 20, 10, 0, 56, 55, 1, 0, 0, 0, 56, 57, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, - 58, 59, 3, 32, 16, 0, 59, 60, 5, 7, 0, 0, 60, 62, 1, 0, 0, 0, 61, 37, 1, - 0, 0, 0, 61, 44, 1, 0, 0, 0, 61, 52, 1, 0, 0, 0, 62, 3, 1, 0, 0, 0, 63, - 64, 5, 10, 0, 0, 64, 65, 5, 38, 0, 0, 65, 5, 1, 0, 0, 0, 66, 71, 3, 10, - 5, 0, 67, 68, 5, 3, 0, 0, 68, 70, 3, 10, 5, 0, 69, 67, 1, 0, 0, 0, 70, - 73, 1, 0, 0, 0, 71, 69, 1, 0, 0, 0, 71, 72, 1, 0, 0, 0, 72, 76, 1, 0, 0, - 0, 73, 71, 1, 0, 0, 0, 74, 76, 5, 41, 0, 0, 75, 66, 1, 0, 0, 0, 75, 74, - 1, 0, 0, 0, 76, 7, 1, 0, 0, 0, 77, 78, 3, 10, 5, 0, 78, 79, 5, 3, 0, 0, - 79, 81, 1, 0, 0, 0, 80, 77, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 1, - 0, 0, 0, 82, 85, 3, 18, 9, 0, 83, 86, 3, 10, 5, 0, 84, 86, 5, 41, 0, 0, - 85, 83, 1, 0, 0, 0, 85, 84, 1, 0, 0, 0, 86, 87, 1, 0, 0, 0, 87, 88, 5, - 5, 0, 0, 88, 9, 1, 0, 0, 0, 89, 94, 5, 37, 0, 0, 90, 91, 5, 37, 0, 0, 91, - 92, 5, 6, 0, 0, 92, 94, 5, 37, 0, 0, 93, 89, 1, 0, 0, 0, 93, 90, 1, 0, - 0, 0, 94, 96, 1, 0, 0, 0, 95, 97, 3, 12, 6, 0, 96, 95, 1, 0, 0, 0, 96, - 97, 1, 0, 0, 0, 97, 103, 1, 0, 0, 0, 98, 100, 3, 14, 7, 0, 99, 101, 3, - 12, 6, 0, 100, 99, 1, 0, 0, 0, 100, 101, 1, 0, 0, 0, 101, 103, 1, 0, 0, - 0, 102, 93, 1, 0, 0, 0, 102, 98, 1, 0, 0, 0, 103, 11, 1, 0, 0, 0, 104, - 105, 5, 13, 0, 0, 105, 106, 5, 37, 0, 0, 106, 13, 1, 0, 0, 0, 107, 108, - 3, 16, 8, 0, 108, 113, 5, 4, 0, 0, 109, 114, 5, 37, 0, 0, 110, 111, 5, - 37, 0, 0, 111, 112, 5, 6, 0, 0, 112, 114, 5, 37, 0, 0, 113, 109, 1, 0, - 0, 0, 113, 110, 1, 0, 0, 0, 114, 119, 1, 0, 0, 0, 115, 116, 5, 3, 0, 0, - 116, 118, 3, 30, 15, 0, 117, 115, 1, 0, 0, 0, 118, 121, 1, 0, 0, 0, 119, - 117, 1, 0, 0, 0, 119, 120, 1, 0, 0, 0, 120, 122, 1, 0, 0, 0, 121, 119, - 1, 0, 0, 0, 122, 123, 5, 5, 0, 0, 123, 154, 1, 0, 0, 0, 124, 125, 3, 16, - 8, 0, 125, 130, 5, 4, 0, 0, 126, 131, 5, 37, 0, 0, 127, 128, 5, 37, 0, - 0, 128, 129, 5, 6, 0, 0, 129, 131, 5, 37, 0, 0, 130, 126, 1, 0, 0, 0, 130, - 127, 1, 0, 0, 0, 131, 136, 1, 0, 0, 0, 132, 133, 5, 3, 0, 0, 133, 135, - 3, 30, 15, 0, 134, 132, 1, 0, 0, 0, 135, 138, 1, 0, 0, 0, 136, 134, 1, - 0, 0, 0, 136, 137, 1, 0, 0, 0, 137, 139, 1, 0, 0, 0, 138, 136, 1, 0, 0, - 0, 139, 140, 5, 5, 0, 0, 140, 154, 1, 0, 0, 0, 141, 142, 3, 16, 8, 0, 142, - 143, 5, 4, 0, 0, 143, 148, 3, 14, 7, 0, 144, 145, 5, 3, 0, 0, 145, 147, - 3, 30, 15, 0, 146, 144, 1, 0, 0, 0, 147, 150, 1, 0, 0, 0, 148, 146, 1, - 0, 0, 0, 148, 149, 1, 0, 0, 0, 149, 151, 1, 0, 0, 0, 150, 148, 1, 0, 0, - 0, 151, 152, 5, 5, 0, 0, 152, 154, 1, 0, 0, 0, 153, 107, 1, 0, 0, 0, 153, - 124, 1, 0, 0, 0, 153, 141, 1, 0, 0, 0, 154, 15, 1, 0, 0, 0, 155, 156, 5, - 37, 0, 0, 156, 17, 1, 0, 0, 0, 157, 158, 7, 0, 0, 0, 158, 163, 5, 4, 0, - 0, 159, 164, 5, 37, 0, 0, 160, 161, 5, 37, 0, 0, 161, 162, 5, 6, 0, 0, - 162, 164, 5, 37, 0, 0, 163, 159, 1, 0, 0, 0, 163, 160, 1, 0, 0, 0, 164, - 165, 1, 0, 0, 0, 165, 177, 5, 5, 0, 0, 166, 171, 5, 37, 0, 0, 167, 168, - 5, 37, 0, 0, 168, 169, 5, 6, 0, 0, 169, 171, 5, 37, 0, 0, 170, 166, 1, - 0, 0, 0, 170, 167, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 172, 1, 0, 0, - 0, 172, 173, 5, 30, 0, 0, 173, 174, 5, 4, 0, 0, 174, 175, 5, 41, 0, 0, - 175, 177, 5, 5, 0, 0, 176, 157, 1, 0, 0, 0, 176, 170, 1, 0, 0, 0, 177, - 19, 1, 0, 0, 0, 178, 179, 5, 9, 0, 0, 179, 180, 3, 22, 11, 0, 180, 21, - 1, 0, 0, 0, 181, 182, 6, 11, -1, 0, 182, 194, 3, 24, 12, 0, 183, 186, 3, - 26, 13, 0, 184, 186, 3, 24, 12, 0, 185, 183, 1, 0, 0, 0, 185, 184, 1, 0, - 0, 0, 186, 187, 1, 0, 0, 0, 187, 190, 7, 1, 0, 0, 188, 191, 3, 26, 13, - 0, 189, 191, 3, 24, 12, 0, 190, 188, 1, 0, 0, 0, 190, 189, 1, 0, 0, 0, - 191, 194, 1, 0, 0, 0, 192, 194, 3, 26, 13, 0, 193, 181, 1, 0, 0, 0, 193, - 185, 1, 0, 0, 0, 193, 192, 1, 0, 0, 0, 194, 200, 1, 0, 0, 0, 195, 196, - 10, 2, 0, 0, 196, 197, 7, 1, 0, 0, 197, 199, 3, 22, 11, 3, 198, 195, 1, - 0, 0, 0, 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, - 0, 201, 23, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 204, 5, 37, 0, 0, 204, - 205, 3, 28, 14, 0, 205, 206, 3, 30, 15, 0, 206, 214, 1, 0, 0, 0, 207, 208, - 5, 37, 0, 0, 208, 209, 5, 6, 0, 0, 209, 210, 5, 37, 0, 0, 210, 211, 3, - 28, 14, 0, 211, 212, 3, 30, 15, 0, 212, 214, 1, 0, 0, 0, 213, 203, 1, 0, - 0, 0, 213, 207, 1, 0, 0, 0, 214, 25, 1, 0, 0, 0, 215, 216, 5, 4, 0, 0, - 216, 217, 3, 22, 11, 0, 217, 218, 5, 5, 0, 0, 218, 27, 1, 0, 0, 0, 219, - 220, 7, 2, 0, 0, 220, 29, 1, 0, 0, 0, 221, 222, 7, 3, 0, 0, 222, 31, 1, - 0, 0, 0, 223, 224, 5, 11, 0, 0, 224, 227, 3, 10, 5, 0, 225, 227, 1, 0, - 0, 0, 226, 223, 1, 0, 0, 0, 226, 225, 1, 0, 0, 0, 227, 33, 1, 0, 0, 0, - 27, 40, 48, 56, 61, 71, 75, 80, 85, 93, 96, 100, 102, 113, 119, 130, 136, - 148, 153, 163, 170, 176, 185, 190, 193, 200, 213, 226, + 3, 76, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 81, 8, 4, 1, 4, 1, 4, 1, 4, 5, 4, + 86, 8, 4, 10, 4, 12, 4, 89, 9, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 95, 8, + 5, 1, 5, 3, 5, 98, 8, 5, 1, 5, 1, 5, 3, 5, 102, 8, 5, 3, 5, 104, 8, 5, + 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 115, 8, 7, + 1, 7, 1, 7, 5, 7, 119, 8, 7, 10, 7, 12, 7, 122, 9, 7, 1, 7, 1, 7, 1, 7, + 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 132, 8, 7, 1, 7, 1, 7, 5, 7, 136, 8, + 7, 10, 7, 12, 7, 139, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, + 7, 148, 8, 7, 10, 7, 12, 7, 151, 9, 7, 1, 7, 1, 7, 3, 7, 155, 8, 7, 1, + 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 165, 8, 9, 1, 9, 1, + 9, 3, 9, 169, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 175, 8, 9, 1, 9, 1, 9, + 1, 9, 1, 9, 3, 9, 181, 8, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, + 1, 11, 3, 11, 190, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 195, 8, 11, 1, 11, + 3, 11, 198, 8, 11, 1, 11, 1, 11, 1, 11, 5, 11, 203, 8, 11, 10, 11, 12, + 11, 206, 9, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, + 1, 12, 1, 12, 3, 12, 218, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, + 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 3, 16, 231, 8, 16, 1, 16, 0, 1, + 22, 17, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, + 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, + 40, 247, 0, 34, 1, 0, 0, 0, 2, 61, 1, 0, 0, 0, 4, 63, 1, 0, 0, 0, 6, 75, + 1, 0, 0, 0, 8, 80, 1, 0, 0, 0, 10, 103, 1, 0, 0, 0, 12, 105, 1, 0, 0, 0, + 14, 154, 1, 0, 0, 0, 16, 156, 1, 0, 0, 0, 18, 180, 1, 0, 0, 0, 20, 182, + 1, 0, 0, 0, 22, 197, 1, 0, 0, 0, 24, 217, 1, 0, 0, 0, 26, 219, 1, 0, 0, + 0, 28, 223, 1, 0, 0, 0, 30, 225, 1, 0, 0, 0, 32, 230, 1, 0, 0, 0, 34, 35, + 3, 2, 1, 0, 35, 36, 5, 0, 0, 1, 36, 1, 1, 0, 0, 0, 37, 38, 5, 8, 0, 0, + 38, 40, 3, 6, 3, 0, 39, 41, 3, 20, 10, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, + 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 5, 7, 0, 0, 43, 62, 1, 0, 0, 0, 44, + 45, 5, 8, 0, 0, 45, 46, 3, 8, 4, 0, 46, 48, 3, 4, 2, 0, 47, 49, 3, 20, + 10, 0, 48, 47, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, + 51, 5, 7, 0, 0, 51, 62, 1, 0, 0, 0, 52, 53, 5, 8, 0, 0, 53, 54, 3, 8, 4, + 0, 54, 56, 3, 4, 2, 0, 55, 57, 3, 20, 10, 0, 56, 55, 1, 0, 0, 0, 56, 57, + 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 59, 3, 32, 16, 0, 59, 60, 5, 7, 0, + 0, 60, 62, 1, 0, 0, 0, 61, 37, 1, 0, 0, 0, 61, 44, 1, 0, 0, 0, 61, 52, + 1, 0, 0, 0, 62, 3, 1, 0, 0, 0, 63, 64, 5, 10, 0, 0, 64, 65, 5, 38, 0, 0, + 65, 5, 1, 0, 0, 0, 66, 71, 3, 10, 5, 0, 67, 68, 5, 3, 0, 0, 68, 70, 3, + 10, 5, 0, 69, 67, 1, 0, 0, 0, 70, 73, 1, 0, 0, 0, 71, 69, 1, 0, 0, 0, 71, + 72, 1, 0, 0, 0, 72, 76, 1, 0, 0, 0, 73, 71, 1, 0, 0, 0, 74, 76, 5, 41, + 0, 0, 75, 66, 1, 0, 0, 0, 75, 74, 1, 0, 0, 0, 76, 7, 1, 0, 0, 0, 77, 78, + 3, 10, 5, 0, 78, 79, 5, 3, 0, 0, 79, 81, 1, 0, 0, 0, 80, 77, 1, 0, 0, 0, + 80, 81, 1, 0, 0, 0, 81, 82, 1, 0, 0, 0, 82, 87, 3, 18, 9, 0, 83, 84, 5, + 3, 0, 0, 84, 86, 3, 18, 9, 0, 85, 83, 1, 0, 0, 0, 86, 89, 1, 0, 0, 0, 87, + 85, 1, 0, 0, 0, 87, 88, 1, 0, 0, 0, 88, 9, 1, 0, 0, 0, 89, 87, 1, 0, 0, + 0, 90, 95, 5, 37, 0, 0, 91, 92, 5, 37, 0, 0, 92, 93, 5, 6, 0, 0, 93, 95, + 5, 37, 0, 0, 94, 90, 1, 0, 0, 0, 94, 91, 1, 0, 0, 0, 95, 97, 1, 0, 0, 0, + 96, 98, 3, 12, 6, 0, 97, 96, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 104, 1, + 0, 0, 0, 99, 101, 3, 14, 7, 0, 100, 102, 3, 12, 6, 0, 101, 100, 1, 0, 0, + 0, 101, 102, 1, 0, 0, 0, 102, 104, 1, 0, 0, 0, 103, 94, 1, 0, 0, 0, 103, + 99, 1, 0, 0, 0, 104, 11, 1, 0, 0, 0, 105, 106, 5, 13, 0, 0, 106, 107, 5, + 37, 0, 0, 107, 13, 1, 0, 0, 0, 108, 109, 3, 16, 8, 0, 109, 114, 5, 4, 0, + 0, 110, 115, 5, 37, 0, 0, 111, 112, 5, 37, 0, 0, 112, 113, 5, 6, 0, 0, + 113, 115, 5, 37, 0, 0, 114, 110, 1, 0, 0, 0, 114, 111, 1, 0, 0, 0, 115, + 120, 1, 0, 0, 0, 116, 117, 5, 3, 0, 0, 117, 119, 3, 30, 15, 0, 118, 116, + 1, 0, 0, 0, 119, 122, 1, 0, 0, 0, 120, 118, 1, 0, 0, 0, 120, 121, 1, 0, + 0, 0, 121, 123, 1, 0, 0, 0, 122, 120, 1, 0, 0, 0, 123, 124, 5, 5, 0, 0, + 124, 155, 1, 0, 0, 0, 125, 126, 3, 16, 8, 0, 126, 131, 5, 4, 0, 0, 127, + 132, 5, 37, 0, 0, 128, 129, 5, 37, 0, 0, 129, 130, 5, 6, 0, 0, 130, 132, + 5, 37, 0, 0, 131, 127, 1, 0, 0, 0, 131, 128, 1, 0, 0, 0, 132, 137, 1, 0, + 0, 0, 133, 134, 5, 3, 0, 0, 134, 136, 3, 30, 15, 0, 135, 133, 1, 0, 0, + 0, 136, 139, 1, 0, 0, 0, 137, 135, 1, 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, + 140, 1, 0, 0, 0, 139, 137, 1, 0, 0, 0, 140, 141, 5, 5, 0, 0, 141, 155, + 1, 0, 0, 0, 142, 143, 3, 16, 8, 0, 143, 144, 5, 4, 0, 0, 144, 149, 3, 14, + 7, 0, 145, 146, 5, 3, 0, 0, 146, 148, 3, 30, 15, 0, 147, 145, 1, 0, 0, + 0, 148, 151, 1, 0, 0, 0, 149, 147, 1, 0, 0, 0, 149, 150, 1, 0, 0, 0, 150, + 152, 1, 0, 0, 0, 151, 149, 1, 0, 0, 0, 152, 153, 5, 5, 0, 0, 153, 155, + 1, 0, 0, 0, 154, 108, 1, 0, 0, 0, 154, 125, 1, 0, 0, 0, 154, 142, 1, 0, + 0, 0, 155, 15, 1, 0, 0, 0, 156, 157, 5, 37, 0, 0, 157, 17, 1, 0, 0, 0, + 158, 159, 7, 0, 0, 0, 159, 164, 5, 4, 0, 0, 160, 165, 5, 37, 0, 0, 161, + 162, 5, 37, 0, 0, 162, 163, 5, 6, 0, 0, 163, 165, 5, 37, 0, 0, 164, 160, + 1, 0, 0, 0, 164, 161, 1, 0, 0, 0, 165, 166, 1, 0, 0, 0, 166, 168, 5, 5, + 0, 0, 167, 169, 3, 12, 6, 0, 168, 167, 1, 0, 0, 0, 168, 169, 1, 0, 0, 0, + 169, 181, 1, 0, 0, 0, 170, 175, 5, 37, 0, 0, 171, 172, 5, 37, 0, 0, 172, + 173, 5, 6, 0, 0, 173, 175, 5, 37, 0, 0, 174, 170, 1, 0, 0, 0, 174, 171, + 1, 0, 0, 0, 174, 175, 1, 0, 0, 0, 175, 176, 1, 0, 0, 0, 176, 177, 5, 30, + 0, 0, 177, 178, 5, 4, 0, 0, 178, 179, 5, 41, 0, 0, 179, 181, 5, 5, 0, 0, + 180, 158, 1, 0, 0, 0, 180, 174, 1, 0, 0, 0, 181, 19, 1, 0, 0, 0, 182, 183, + 5, 9, 0, 0, 183, 184, 3, 22, 11, 0, 184, 21, 1, 0, 0, 0, 185, 186, 6, 11, + -1, 0, 186, 198, 3, 24, 12, 0, 187, 190, 3, 26, 13, 0, 188, 190, 3, 24, + 12, 0, 189, 187, 1, 0, 0, 0, 189, 188, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, + 191, 194, 7, 1, 0, 0, 192, 195, 3, 26, 13, 0, 193, 195, 3, 24, 12, 0, 194, + 192, 1, 0, 0, 0, 194, 193, 1, 0, 0, 0, 195, 198, 1, 0, 0, 0, 196, 198, + 3, 26, 13, 0, 197, 185, 1, 0, 0, 0, 197, 189, 1, 0, 0, 0, 197, 196, 1, + 0, 0, 0, 198, 204, 1, 0, 0, 0, 199, 200, 10, 2, 0, 0, 200, 201, 7, 1, 0, + 0, 201, 203, 3, 22, 11, 3, 202, 199, 1, 0, 0, 0, 203, 206, 1, 0, 0, 0, + 204, 202, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 23, 1, 0, 0, 0, 206, 204, + 1, 0, 0, 0, 207, 208, 5, 37, 0, 0, 208, 209, 3, 28, 14, 0, 209, 210, 3, + 30, 15, 0, 210, 218, 1, 0, 0, 0, 211, 212, 5, 37, 0, 0, 212, 213, 5, 6, + 0, 0, 213, 214, 5, 37, 0, 0, 214, 215, 3, 28, 14, 0, 215, 216, 3, 30, 15, + 0, 216, 218, 1, 0, 0, 0, 217, 207, 1, 0, 0, 0, 217, 211, 1, 0, 0, 0, 218, + 25, 1, 0, 0, 0, 219, 220, 5, 4, 0, 0, 220, 221, 3, 22, 11, 0, 221, 222, + 5, 5, 0, 0, 222, 27, 1, 0, 0, 0, 223, 224, 7, 2, 0, 0, 224, 29, 1, 0, 0, + 0, 225, 226, 7, 3, 0, 0, 226, 31, 1, 0, 0, 0, 227, 228, 5, 11, 0, 0, 228, + 231, 3, 10, 5, 0, 229, 231, 1, 0, 0, 0, 230, 227, 1, 0, 0, 0, 230, 229, + 1, 0, 0, 0, 231, 33, 1, 0, 0, 0, 28, 40, 48, 56, 61, 71, 75, 80, 87, 94, + 97, 101, 103, 114, 120, 131, 137, 149, 154, 164, 168, 174, 180, 189, 194, + 197, 204, 217, 230, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -1190,40 +1192,20 @@ func (s *SelectAggregationContext) GetRuleContext() antlr.RuleContext { return s } -func (s *SelectAggregationContext) AggregationColumn() IAggregationColumnContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAggregationColumnContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IAggregationColumnContext) -} - -func (s *SelectAggregationContext) R_BRACKET() antlr.TerminalNode { - return s.GetToken(SqlParserR_BRACKET, 0) -} - -func (s *SelectAggregationContext) AllColumn() []IColumnContext { +func (s *SelectAggregationContext) AllAggregationColumn() []IAggregationColumnContext { children := s.GetChildren() len := 0 for _, ctx := range children { - if _, ok := ctx.(IColumnContext); ok { + if _, ok := ctx.(IAggregationColumnContext); ok { len++ } } - tst := make([]IColumnContext, len) + tst := make([]IAggregationColumnContext, len) i := 0 for _, ctx := range children { - if t, ok := ctx.(IColumnContext); ok { - tst[i] = t.(IColumnContext) + if t, ok := ctx.(IAggregationColumnContext); ok { + tst[i] = t.(IAggregationColumnContext) i++ } } @@ -1231,11 +1213,11 @@ func (s *SelectAggregationContext) AllColumn() []IColumnContext { return tst } -func (s *SelectAggregationContext) Column(i int) IColumnContext { +func (s *SelectAggregationContext) AggregationColumn(i int) IAggregationColumnContext { var t antlr.RuleContext j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumnContext); ok { + if _, ok := ctx.(IAggregationColumnContext); ok { if j == i { t = ctx.(antlr.RuleContext) break @@ -1248,15 +1230,31 @@ func (s *SelectAggregationContext) Column(i int) IColumnContext { return nil } + return t.(IAggregationColumnContext) +} + +func (s *SelectAggregationContext) Column() IColumnContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumnContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + return t.(IColumnContext) } -func (s *SelectAggregationContext) STAR() antlr.TerminalNode { - return s.GetToken(SqlParserSTAR, 0) +func (s *SelectAggregationContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) } -func (s *SelectAggregationContext) COMMA() antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, 0) +func (s *SelectAggregationContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) } func (s *SelectAggregationContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { @@ -1275,6 +1273,7 @@ func (p *SqlParser) AggregationColumns() (localctx IAggregationColumnsContext) { localctx = NewAggregationColumnsContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 8, SqlParserRULE_aggregationColumns) + var _la int defer func() { p.ExitRule() @@ -1312,28 +1311,23 @@ func (p *SqlParser) AggregationColumns() (localctx IAggregationColumnsContext) { p.SetState(82) p.AggregationColumn() } - p.SetState(85) + p.SetState(87) p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) - switch p.GetTokenStream().LA(1) { - case SqlParserIDENTIFIER: + for _la == SqlParserCOMMA { { p.SetState(83) - p.Column() + p.Match(SqlParserCOMMA) } - - case SqlParserSTAR: { p.SetState(84) - p.Match(SqlParserSTAR) + p.AggregationColumn() } - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - { - p.SetState(87) - p.Match(SqlParserR_BRACKET) + p.SetState(89) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) } return localctx @@ -1529,43 +1523,43 @@ func (p *SqlParser) Column() (localctx IColumnContext) { } }() - p.SetState(102) + p.SetState(103) p.GetErrorHandler().Sync(p) switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 11, p.GetParserRuleContext()) { case 1: localctx = NewIdentifierColumnContext(p, localctx) p.EnterOuterAlt(localctx, 1) - p.SetState(93) + p.SetState(94) p.GetErrorHandler().Sync(p) switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 8, p.GetParserRuleContext()) { case 1: { - p.SetState(89) + p.SetState(90) p.Match(SqlParserIDENTIFIER) } case 2: { - p.SetState(90) + p.SetState(91) p.Match(SqlParserIDENTIFIER) } { - p.SetState(91) + p.SetState(92) p.Match(SqlParserDOT) } { - p.SetState(92) + p.SetState(93) p.Match(SqlParserIDENTIFIER) } } - p.SetState(96) + p.SetState(97) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_AS { { - p.SetState(95) + p.SetState(96) p.Alias() } @@ -1575,16 +1569,16 @@ func (p *SqlParser) Column() (localctx IColumnContext) { localctx = NewFunctionColumnContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(98) + p.SetState(99) p.Function() } - p.SetState(100) + p.SetState(101) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_AS { { - p.SetState(99) + p.SetState(100) p.Alias() } @@ -1684,11 +1678,11 @@ func (p *SqlParser) Alias() (localctx IAliasContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(104) + p.SetState(105) p.Match(SqlParserK_AS) } { - p.SetState(105) + p.SetState(106) p.Match(SqlParserIDENTIFIER) } @@ -1999,64 +1993,64 @@ func (p *SqlParser) Function() (localctx IFunctionContext) { } }() - p.SetState(153) + p.SetState(154) p.GetErrorHandler().Sync(p) switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 17, p.GetParserRuleContext()) { case 1: localctx = NewSimpleFunctionContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(107) + p.SetState(108) p.FunctionName() } { - p.SetState(108) + p.SetState(109) p.Match(SqlParserL_BRACKET) } - p.SetState(113) + p.SetState(114) p.GetErrorHandler().Sync(p) switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 12, p.GetParserRuleContext()) { case 1: { - p.SetState(109) + p.SetState(110) p.Match(SqlParserIDENTIFIER) } case 2: { - p.SetState(110) + p.SetState(111) p.Match(SqlParserIDENTIFIER) } { - p.SetState(111) + p.SetState(112) p.Match(SqlParserDOT) } { - p.SetState(112) + p.SetState(113) p.Match(SqlParserIDENTIFIER) } } - p.SetState(119) + p.SetState(120) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for _la == SqlParserCOMMA { { - p.SetState(115) + p.SetState(116) p.Match(SqlParserCOMMA) } { - p.SetState(116) + p.SetState(117) p.LiteralValue() } - p.SetState(121) + p.SetState(122) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } { - p.SetState(122) + p.SetState(123) p.Match(SqlParserR_BRACKET) } @@ -2064,57 +2058,57 @@ func (p *SqlParser) Function() (localctx IFunctionContext) { localctx = NewSimpleFunctionContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(124) + p.SetState(125) p.FunctionName() } { - p.SetState(125) + p.SetState(126) p.Match(SqlParserL_BRACKET) } - p.SetState(130) + p.SetState(131) p.GetErrorHandler().Sync(p) switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 14, p.GetParserRuleContext()) { case 1: { - p.SetState(126) + p.SetState(127) p.Match(SqlParserIDENTIFIER) } case 2: { - p.SetState(127) + p.SetState(128) p.Match(SqlParserIDENTIFIER) } { - p.SetState(128) + p.SetState(129) p.Match(SqlParserDOT) } { - p.SetState(129) + p.SetState(130) p.Match(SqlParserIDENTIFIER) } } - p.SetState(136) + p.SetState(137) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for _la == SqlParserCOMMA { { - p.SetState(132) + p.SetState(133) p.Match(SqlParserCOMMA) } { - p.SetState(133) + p.SetState(134) p.LiteralValue() } - p.SetState(138) + p.SetState(139) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } { - p.SetState(139) + p.SetState(140) p.Match(SqlParserR_BRACKET) } @@ -2122,37 +2116,37 @@ func (p *SqlParser) Function() (localctx IFunctionContext) { localctx = NewRecursiveFunctionContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(141) + p.SetState(142) p.FunctionName() } { - p.SetState(142) + p.SetState(143) p.Match(SqlParserL_BRACKET) } { - p.SetState(143) + p.SetState(144) p.Function() } - p.SetState(148) + p.SetState(149) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for _la == SqlParserCOMMA { { - p.SetState(144) + p.SetState(145) p.Match(SqlParserCOMMA) } { - p.SetState(145) + p.SetState(146) p.LiteralValue() } - p.SetState(150) + p.SetState(151) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } { - p.SetState(151) + p.SetState(152) p.Match(SqlParserR_BRACKET) } @@ -2246,7 +2240,7 @@ func (p *SqlParser) FunctionName() (localctx IFunctionNameContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(155) + p.SetState(156) p.Match(SqlParserIDENTIFIER) } @@ -2361,6 +2355,22 @@ func (s *ColumnAggregationContext) DOT() antlr.TerminalNode { return s.GetToken(SqlParserDOT, 0) } +func (s *ColumnAggregationContext) Alias() IAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAliasContext) +} + func (s *ColumnAggregationContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case SqlVisitor: @@ -2451,14 +2461,14 @@ func (p *SqlParser) AggregationColumn() (localctx IAggregationColumnContext) { } }() - p.SetState(176) + p.SetState(180) p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 20, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 21, p.GetParserRuleContext()) { case 1: localctx = NewColumnAggregationContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(157) + p.SetState(158) _la = p.GetTokenStream().LA(1) if !(((_la-30)&-(0x1f+1)) == 0 && ((1< 0 { - res, _ := ls.At(0).Attributes().Get(fieldName) + _, res, err := getAttributeValueForAggregation(ctx, ls.At(0).Attributes()) convertedRes, _ := strconv.ParseFloat(res.AsString(), 64) - return convertedRes, nil + return convertedRes, err } return 0, conErr } -func max(ls plog.LogRecordSlice, fieldName string) (float64, error) { +func max(ls plog.LogRecordSlice, ctx *ColumnAggregationContext) (float64, error) { var conErr error ls.Sort(func(a, b plog.LogRecord) bool { - leftVal, ok := a.Attributes().Get(fieldName) - if !ok { - conErr = fmt.Errorf("field %q missed", fieldName) + _, leftVal, err := getAttributeValueForAggregation(ctx, a.Attributes()) + if err != nil { + conErr = err } convertedLeft, err := strconv.ParseFloat(leftVal.AsString(), 64) if err != nil { conErr = err } - rightVal, ok := b.Attributes().Get(fieldName) - - if !ok { - conErr = fmt.Errorf("field %q missed", fieldName) + _, rightVal, err := getAttributeValueForAggregation(ctx, b.Attributes()) + if err != nil { + conErr = err } convertedRight, err := strconv.ParseFloat(rightVal.AsString(), 64) @@ -181,21 +180,21 @@ func max(ls plog.LogRecordSlice, fieldName string) (float64, error) { }) if ls.Len() > 0 { - res, _ := ls.At(0).Attributes().Get(fieldName) + _, res, err := getAttributeValueForAggregation(ctx, ls.At(0).Attributes()) convertedRes, _ := strconv.ParseFloat(res.AsString(), 64) - return convertedRes, nil + return convertedRes, err } return 0.0, conErr } -func avg(ls plog.LogRecordSlice, fieldName string) (float64, error) { +func avg(ls plog.LogRecordSlice, ctx *ColumnAggregationContext) (float64, error) { var sum float64 for i := 0; i < ls.Len(); i++ { curRec := ls.At(i) - val, ok := curRec.Attributes().Get(fieldName) - if !ok { - return 0, fmt.Errorf("field %q missed", fieldName) + _, val, err := getAttributeValueForAggregation(ctx, curRec.Attributes()) + if err != nil { + return 0, err } convertedVal, err := strconv.ParseFloat(val.AsString(), 64) if err != nil { @@ -274,13 +273,50 @@ func fieldExists(key string, value pcommon.Value, allColumns []interface{}) bool return !nestedFound } +func getAttributeValueForAggregation(ctx *ColumnAggregationContext, attr pcommon.Map) (string, pcommon.Value, error) { + if len(ctx.AllIDENTIFIER()) > 1 { + value, err := nestedFieldExistsInAttr(ctx.IDENTIFIER(0).GetText(), ctx.IDENTIFIER(1).GetText(), attr) + return ctx.IDENTIFIER(0).GetText() + "," + ctx.IDENTIFIER(1).GetText(), value, err + } + value, err := fieldExistsInAttr(ctx.IDENTIFIER(0).GetText(), attr) + return ctx.IDENTIFIER(0).GetText(), value, err + +} + +func insertValueTOAttributes(ctx *ColumnAggregationContext, attr pcommon.Map, value float64) { + key := ctx.IDENTIFIER(0).GetText() + + if len(ctx.AllIDENTIFIER()) > 1 { + nested := pcommon.NewValueMap() + nested.MapVal().Insert(ctx.IDENTIFIER(1).GetText(), pcommon.NewValueDouble(value)) + attr.Insert(key, nested) + return + } + attr.Insert(key, pcommon.NewValueDouble(value)) +} + +func getAttributeValue(column IColumnContext, attr pcommon.Map) (string, pcommon.Value, error) { + switch col := column.(type) { + case *IdentifierColumnContext: + if len(col.AllIDENTIFIER()) > 1 { + value, err := nestedFieldExistsInAttr(col.IDENTIFIER(0).GetText(), col.IDENTIFIER(1).GetText(), attr) + return col.IDENTIFIER(0).GetText() + "," + col.IDENTIFIER(1).GetText(), value, err + } + value, err := fieldExistsInAttr(col.IDENTIFIER(0).GetText(), attr) + return col.IDENTIFIER(0).GetText(), value, err + default: + return "", pcommon.NewValueEmpty(), fmt.Errorf("unknown column type") + } + +} + // check if field exists in attr -func fieldExistsInAttr(fieldName string, attr pcommon.Map) error { - _, ok := attr.Get(fieldName) +func fieldExistsInAttr(fieldName string, attr pcommon.Map) (pcommon.Value, error) { + value, ok := attr.Get(fieldName) if !ok { - return fmt.Errorf("field %q missed", fieldName) + return pcommon.NewValueEmpty(), fmt.Errorf("field %q missed", fieldName) } - return nil + return value, nil } // check is nested field exists @@ -369,4 +405,4 @@ func findSimpleFuncCtx(ctx *RecursiveFunctionContext) *SimpleFunctionContext { } return nil -} \ No newline at end of file +} From e432afda86476bc44bdfada3828d085d27dbfbe5 Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Thu, 22 Sep 2022 20:55:29 +0300 Subject: [PATCH 28/31] groupBe temp refactor --- processor/stream_processor/Sql.g4 | 24 +- processor/stream_processor/cmd/main.go | 2 +- processor/stream_processor/parser/Sql.interp | 5 +- .../parser/sql_base_visitor.go | 18 +- .../stream_processor/parser/sql_parser.go | 1772 +++++++++-------- .../parser/sql_stream_function_test.go | 4 +- .../parser/sql_stream_group_by_test.go | 6 +- .../parser/sql_stream_nested_test.go | 10 +- .../parser/sql_stream_tumbling_test.go | 18 +- .../parser/sql_stream_visitor.go | 132 +- .../parser/sql_stream_visitor_test.go | 14 +- .../stream_processor/parser/sql_visitor.go | 16 +- .../stream_processor/parser/visitor_utils.go | 82 +- processor/stream_processor/processor.go | 2 +- 14 files changed, 1075 insertions(+), 1030 deletions(-) diff --git a/processor/stream_processor/Sql.g4 b/processor/stream_processor/Sql.g4 index 2773c060de9d..564646351ea8 100644 --- a/processor/stream_processor/Sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -7,9 +7,9 @@ sqlQuery : selectQuery EOF; selectQuery - : K_SELECT resultColumns (whereStatement)? EOQ #selectSimple - | K_SELECT aggregationColumns windowTumbling (whereStatement)? EOQ #selectTumbling - | K_SELECT aggregationColumns windowTumbling (whereStatement)? groupBy EOQ #selectTumblingGroupBy + : K_SELECT resultColumns (whereStatement)? EOQ #selectSimple + | K_SELECT aggregationColumns windowTumbling (whereStatement)? EOQ #selectTumbling + | K_SELECT groupByAggregationColumns windowTumbling (whereStatement)? groupBy EOQ #selectTumblingGroupBy ; windowTumbling @@ -22,16 +22,27 @@ resultColumns | STAR # selectStar ; + aggregationColumns - : (column COMMA)? aggregationColumn (COMMA aggregationColumn)* #selectAggregation + : aggregationColumn (COMMA aggregationColumn)+ #selectAggregations + ; + +groupByAggregationColumns + : (column COMMA)? aggregationColumn (COMMA aggregationColumn)+ #selectGroupByAggregations ; +aggregationColumn + : (K_MIN | K_MAX | K_COUNT | K_AVG | K_SUM) L_BRACKET ( IDENTIFIER | IDENTIFIER DOT IDENTIFIER) R_BRACKET alias? + ; + column : (IDENTIFIER | IDENTIFIER DOT IDENTIFIER) alias? #identifierColumn | function alias? #functionColumn ; + + alias : K_AS IDENTIFIER ; @@ -46,11 +57,6 @@ functionName : IDENTIFIER ; -aggregationColumn - : (K_MIN | K_MAX | K_COUNT | K_AVG | K_SUM) L_BRACKET ( IDENTIFIER | IDENTIFIER DOT IDENTIFIER) R_BRACKET alias? # columnAggregation - | (IDENTIFIER | IDENTIFIER DOT IDENTIFIER)? K_COUNT L_BRACKET STAR R_BRACKET # columnCountAggregation - ; - whereStatement : K_WHERE expr #whereStmt diff --git a/processor/stream_processor/cmd/main.go b/processor/stream_processor/cmd/main.go index 4220db8ce1bb..c33fc151535f 100644 --- a/processor/stream_processor/cmd/main.go +++ b/processor/stream_processor/cmd/main.go @@ -24,7 +24,7 @@ func main() { in := make(chan plog.LogRecordSlice) out := make(chan plog.LogRecordSlice) outErr := make(chan error) - visitor := parser.NewSqlStreamVisitor(query, in, out, outErr, zap.NewNop()) + visitor := parser.NewSQLStreamVisitor(query, in, out, outErr, zap.NewNop()) in <- parser.GenerateTestLogs() diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp index 1f2ea9a62bbe..96aca6d81f50 100644 --- a/processor/stream_processor/parser/Sql.interp +++ b/processor/stream_processor/parser/Sql.interp @@ -92,11 +92,12 @@ selectQuery windowTumbling resultColumns aggregationColumns +groupByAggregationColumns +aggregationColumn column alias function functionName -aggregationColumn whereStatement expr simpleExpr @@ -107,4 +108,4 @@ groupBy atn: -[4, 1, 41, 233, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 57, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 62, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 70, 8, 3, 10, 3, 12, 3, 73, 9, 3, 1, 3, 3, 3, 76, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 81, 8, 4, 1, 4, 1, 4, 1, 4, 5, 4, 86, 8, 4, 10, 4, 12, 4, 89, 9, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 95, 8, 5, 1, 5, 3, 5, 98, 8, 5, 1, 5, 1, 5, 3, 5, 102, 8, 5, 3, 5, 104, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 115, 8, 7, 1, 7, 1, 7, 5, 7, 119, 8, 7, 10, 7, 12, 7, 122, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 132, 8, 7, 1, 7, 1, 7, 5, 7, 136, 8, 7, 10, 7, 12, 7, 139, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 148, 8, 7, 10, 7, 12, 7, 151, 9, 7, 1, 7, 1, 7, 3, 7, 155, 8, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 165, 8, 9, 1, 9, 1, 9, 3, 9, 169, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 175, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 181, 8, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 190, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 195, 8, 11, 1, 11, 3, 11, 198, 8, 11, 1, 11, 1, 11, 1, 11, 5, 11, 203, 8, 11, 10, 11, 12, 11, 206, 9, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 218, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 3, 16, 231, 8, 16, 1, 16, 0, 1, 22, 17, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, 40, 247, 0, 34, 1, 0, 0, 0, 2, 61, 1, 0, 0, 0, 4, 63, 1, 0, 0, 0, 6, 75, 1, 0, 0, 0, 8, 80, 1, 0, 0, 0, 10, 103, 1, 0, 0, 0, 12, 105, 1, 0, 0, 0, 14, 154, 1, 0, 0, 0, 16, 156, 1, 0, 0, 0, 18, 180, 1, 0, 0, 0, 20, 182, 1, 0, 0, 0, 22, 197, 1, 0, 0, 0, 24, 217, 1, 0, 0, 0, 26, 219, 1, 0, 0, 0, 28, 223, 1, 0, 0, 0, 30, 225, 1, 0, 0, 0, 32, 230, 1, 0, 0, 0, 34, 35, 3, 2, 1, 0, 35, 36, 5, 0, 0, 1, 36, 1, 1, 0, 0, 0, 37, 38, 5, 8, 0, 0, 38, 40, 3, 6, 3, 0, 39, 41, 3, 20, 10, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 5, 7, 0, 0, 43, 62, 1, 0, 0, 0, 44, 45, 5, 8, 0, 0, 45, 46, 3, 8, 4, 0, 46, 48, 3, 4, 2, 0, 47, 49, 3, 20, 10, 0, 48, 47, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, 51, 5, 7, 0, 0, 51, 62, 1, 0, 0, 0, 52, 53, 5, 8, 0, 0, 53, 54, 3, 8, 4, 0, 54, 56, 3, 4, 2, 0, 55, 57, 3, 20, 10, 0, 56, 55, 1, 0, 0, 0, 56, 57, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 59, 3, 32, 16, 0, 59, 60, 5, 7, 0, 0, 60, 62, 1, 0, 0, 0, 61, 37, 1, 0, 0, 0, 61, 44, 1, 0, 0, 0, 61, 52, 1, 0, 0, 0, 62, 3, 1, 0, 0, 0, 63, 64, 5, 10, 0, 0, 64, 65, 5, 38, 0, 0, 65, 5, 1, 0, 0, 0, 66, 71, 3, 10, 5, 0, 67, 68, 5, 3, 0, 0, 68, 70, 3, 10, 5, 0, 69, 67, 1, 0, 0, 0, 70, 73, 1, 0, 0, 0, 71, 69, 1, 0, 0, 0, 71, 72, 1, 0, 0, 0, 72, 76, 1, 0, 0, 0, 73, 71, 1, 0, 0, 0, 74, 76, 5, 41, 0, 0, 75, 66, 1, 0, 0, 0, 75, 74, 1, 0, 0, 0, 76, 7, 1, 0, 0, 0, 77, 78, 3, 10, 5, 0, 78, 79, 5, 3, 0, 0, 79, 81, 1, 0, 0, 0, 80, 77, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 1, 0, 0, 0, 82, 87, 3, 18, 9, 0, 83, 84, 5, 3, 0, 0, 84, 86, 3, 18, 9, 0, 85, 83, 1, 0, 0, 0, 86, 89, 1, 0, 0, 0, 87, 85, 1, 0, 0, 0, 87, 88, 1, 0, 0, 0, 88, 9, 1, 0, 0, 0, 89, 87, 1, 0, 0, 0, 90, 95, 5, 37, 0, 0, 91, 92, 5, 37, 0, 0, 92, 93, 5, 6, 0, 0, 93, 95, 5, 37, 0, 0, 94, 90, 1, 0, 0, 0, 94, 91, 1, 0, 0, 0, 95, 97, 1, 0, 0, 0, 96, 98, 3, 12, 6, 0, 97, 96, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 104, 1, 0, 0, 0, 99, 101, 3, 14, 7, 0, 100, 102, 3, 12, 6, 0, 101, 100, 1, 0, 0, 0, 101, 102, 1, 0, 0, 0, 102, 104, 1, 0, 0, 0, 103, 94, 1, 0, 0, 0, 103, 99, 1, 0, 0, 0, 104, 11, 1, 0, 0, 0, 105, 106, 5, 13, 0, 0, 106, 107, 5, 37, 0, 0, 107, 13, 1, 0, 0, 0, 108, 109, 3, 16, 8, 0, 109, 114, 5, 4, 0, 0, 110, 115, 5, 37, 0, 0, 111, 112, 5, 37, 0, 0, 112, 113, 5, 6, 0, 0, 113, 115, 5, 37, 0, 0, 114, 110, 1, 0, 0, 0, 114, 111, 1, 0, 0, 0, 115, 120, 1, 0, 0, 0, 116, 117, 5, 3, 0, 0, 117, 119, 3, 30, 15, 0, 118, 116, 1, 0, 0, 0, 119, 122, 1, 0, 0, 0, 120, 118, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 123, 1, 0, 0, 0, 122, 120, 1, 0, 0, 0, 123, 124, 5, 5, 0, 0, 124, 155, 1, 0, 0, 0, 125, 126, 3, 16, 8, 0, 126, 131, 5, 4, 0, 0, 127, 132, 5, 37, 0, 0, 128, 129, 5, 37, 0, 0, 129, 130, 5, 6, 0, 0, 130, 132, 5, 37, 0, 0, 131, 127, 1, 0, 0, 0, 131, 128, 1, 0, 0, 0, 132, 137, 1, 0, 0, 0, 133, 134, 5, 3, 0, 0, 134, 136, 3, 30, 15, 0, 135, 133, 1, 0, 0, 0, 136, 139, 1, 0, 0, 0, 137, 135, 1, 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, 140, 1, 0, 0, 0, 139, 137, 1, 0, 0, 0, 140, 141, 5, 5, 0, 0, 141, 155, 1, 0, 0, 0, 142, 143, 3, 16, 8, 0, 143, 144, 5, 4, 0, 0, 144, 149, 3, 14, 7, 0, 145, 146, 5, 3, 0, 0, 146, 148, 3, 30, 15, 0, 147, 145, 1, 0, 0, 0, 148, 151, 1, 0, 0, 0, 149, 147, 1, 0, 0, 0, 149, 150, 1, 0, 0, 0, 150, 152, 1, 0, 0, 0, 151, 149, 1, 0, 0, 0, 152, 153, 5, 5, 0, 0, 153, 155, 1, 0, 0, 0, 154, 108, 1, 0, 0, 0, 154, 125, 1, 0, 0, 0, 154, 142, 1, 0, 0, 0, 155, 15, 1, 0, 0, 0, 156, 157, 5, 37, 0, 0, 157, 17, 1, 0, 0, 0, 158, 159, 7, 0, 0, 0, 159, 164, 5, 4, 0, 0, 160, 165, 5, 37, 0, 0, 161, 162, 5, 37, 0, 0, 162, 163, 5, 6, 0, 0, 163, 165, 5, 37, 0, 0, 164, 160, 1, 0, 0, 0, 164, 161, 1, 0, 0, 0, 165, 166, 1, 0, 0, 0, 166, 168, 5, 5, 0, 0, 167, 169, 3, 12, 6, 0, 168, 167, 1, 0, 0, 0, 168, 169, 1, 0, 0, 0, 169, 181, 1, 0, 0, 0, 170, 175, 5, 37, 0, 0, 171, 172, 5, 37, 0, 0, 172, 173, 5, 6, 0, 0, 173, 175, 5, 37, 0, 0, 174, 170, 1, 0, 0, 0, 174, 171, 1, 0, 0, 0, 174, 175, 1, 0, 0, 0, 175, 176, 1, 0, 0, 0, 176, 177, 5, 30, 0, 0, 177, 178, 5, 4, 0, 0, 178, 179, 5, 41, 0, 0, 179, 181, 5, 5, 0, 0, 180, 158, 1, 0, 0, 0, 180, 174, 1, 0, 0, 0, 181, 19, 1, 0, 0, 0, 182, 183, 5, 9, 0, 0, 183, 184, 3, 22, 11, 0, 184, 21, 1, 0, 0, 0, 185, 186, 6, 11, -1, 0, 186, 198, 3, 24, 12, 0, 187, 190, 3, 26, 13, 0, 188, 190, 3, 24, 12, 0, 189, 187, 1, 0, 0, 0, 189, 188, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, 194, 7, 1, 0, 0, 192, 195, 3, 26, 13, 0, 193, 195, 3, 24, 12, 0, 194, 192, 1, 0, 0, 0, 194, 193, 1, 0, 0, 0, 195, 198, 1, 0, 0, 0, 196, 198, 3, 26, 13, 0, 197, 185, 1, 0, 0, 0, 197, 189, 1, 0, 0, 0, 197, 196, 1, 0, 0, 0, 198, 204, 1, 0, 0, 0, 199, 200, 10, 2, 0, 0, 200, 201, 7, 1, 0, 0, 201, 203, 3, 22, 11, 3, 202, 199, 1, 0, 0, 0, 203, 206, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 23, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 207, 208, 5, 37, 0, 0, 208, 209, 3, 28, 14, 0, 209, 210, 3, 30, 15, 0, 210, 218, 1, 0, 0, 0, 211, 212, 5, 37, 0, 0, 212, 213, 5, 6, 0, 0, 213, 214, 5, 37, 0, 0, 214, 215, 3, 28, 14, 0, 215, 216, 3, 30, 15, 0, 216, 218, 1, 0, 0, 0, 217, 207, 1, 0, 0, 0, 217, 211, 1, 0, 0, 0, 218, 25, 1, 0, 0, 0, 219, 220, 5, 4, 0, 0, 220, 221, 3, 22, 11, 0, 221, 222, 5, 5, 0, 0, 222, 27, 1, 0, 0, 0, 223, 224, 7, 2, 0, 0, 224, 29, 1, 0, 0, 0, 225, 226, 7, 3, 0, 0, 226, 31, 1, 0, 0, 0, 227, 228, 5, 11, 0, 0, 228, 231, 3, 10, 5, 0, 229, 231, 1, 0, 0, 0, 230, 227, 1, 0, 0, 0, 230, 229, 1, 0, 0, 0, 231, 33, 1, 0, 0, 0, 28, 40, 48, 56, 61, 71, 75, 80, 87, 94, 97, 101, 103, 114, 120, 131, 137, 149, 154, 164, 168, 174, 180, 189, 194, 197, 204, 217, 230] \ No newline at end of file +[4, 1, 41, 229, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 43, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 51, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 59, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 64, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 72, 8, 3, 10, 3, 12, 3, 75, 9, 3, 1, 3, 3, 3, 78, 8, 3, 1, 4, 1, 4, 1, 4, 4, 4, 83, 8, 4, 11, 4, 12, 4, 84, 1, 5, 1, 5, 1, 5, 3, 5, 90, 8, 5, 1, 5, 1, 5, 1, 5, 4, 5, 95, 8, 5, 11, 5, 12, 5, 96, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 105, 8, 6, 1, 6, 1, 6, 3, 6, 109, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 115, 8, 7, 1, 7, 3, 7, 118, 8, 7, 1, 7, 1, 7, 3, 7, 122, 8, 7, 3, 7, 124, 8, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 135, 8, 9, 1, 9, 1, 9, 5, 9, 139, 8, 9, 10, 9, 12, 9, 142, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 152, 8, 9, 1, 9, 1, 9, 5, 9, 156, 8, 9, 10, 9, 12, 9, 159, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 168, 8, 9, 10, 9, 12, 9, 171, 9, 9, 1, 9, 1, 9, 3, 9, 175, 8, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 186, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 191, 8, 12, 1, 12, 3, 12, 194, 8, 12, 1, 12, 1, 12, 1, 12, 5, 12, 199, 8, 12, 10, 12, 12, 12, 202, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 214, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 3, 17, 227, 8, 17, 1, 17, 0, 1, 24, 18, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, 40, 240, 0, 36, 1, 0, 0, 0, 2, 63, 1, 0, 0, 0, 4, 65, 1, 0, 0, 0, 6, 77, 1, 0, 0, 0, 8, 79, 1, 0, 0, 0, 10, 89, 1, 0, 0, 0, 12, 98, 1, 0, 0, 0, 14, 123, 1, 0, 0, 0, 16, 125, 1, 0, 0, 0, 18, 174, 1, 0, 0, 0, 20, 176, 1, 0, 0, 0, 22, 178, 1, 0, 0, 0, 24, 193, 1, 0, 0, 0, 26, 213, 1, 0, 0, 0, 28, 215, 1, 0, 0, 0, 30, 219, 1, 0, 0, 0, 32, 221, 1, 0, 0, 0, 34, 226, 1, 0, 0, 0, 36, 37, 3, 2, 1, 0, 37, 38, 5, 0, 0, 1, 38, 1, 1, 0, 0, 0, 39, 40, 5, 8, 0, 0, 40, 42, 3, 6, 3, 0, 41, 43, 3, 22, 11, 0, 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 45, 5, 7, 0, 0, 45, 64, 1, 0, 0, 0, 46, 47, 5, 8, 0, 0, 47, 48, 3, 8, 4, 0, 48, 50, 3, 4, 2, 0, 49, 51, 3, 22, 11, 0, 50, 49, 1, 0, 0, 0, 50, 51, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 53, 5, 7, 0, 0, 53, 64, 1, 0, 0, 0, 54, 55, 5, 8, 0, 0, 55, 56, 3, 10, 5, 0, 56, 58, 3, 4, 2, 0, 57, 59, 3, 22, 11, 0, 58, 57, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 3, 34, 17, 0, 61, 62, 5, 7, 0, 0, 62, 64, 1, 0, 0, 0, 63, 39, 1, 0, 0, 0, 63, 46, 1, 0, 0, 0, 63, 54, 1, 0, 0, 0, 64, 3, 1, 0, 0, 0, 65, 66, 5, 10, 0, 0, 66, 67, 5, 38, 0, 0, 67, 5, 1, 0, 0, 0, 68, 73, 3, 14, 7, 0, 69, 70, 5, 3, 0, 0, 70, 72, 3, 14, 7, 0, 71, 69, 1, 0, 0, 0, 72, 75, 1, 0, 0, 0, 73, 71, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 78, 1, 0, 0, 0, 75, 73, 1, 0, 0, 0, 76, 78, 5, 41, 0, 0, 77, 68, 1, 0, 0, 0, 77, 76, 1, 0, 0, 0, 78, 7, 1, 0, 0, 0, 79, 82, 3, 12, 6, 0, 80, 81, 5, 3, 0, 0, 81, 83, 3, 12, 6, 0, 82, 80, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 9, 1, 0, 0, 0, 86, 87, 3, 14, 7, 0, 87, 88, 5, 3, 0, 0, 88, 90, 1, 0, 0, 0, 89, 86, 1, 0, 0, 0, 89, 90, 1, 0, 0, 0, 90, 91, 1, 0, 0, 0, 91, 94, 3, 12, 6, 0, 92, 93, 5, 3, 0, 0, 93, 95, 3, 12, 6, 0, 94, 92, 1, 0, 0, 0, 95, 96, 1, 0, 0, 0, 96, 94, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 11, 1, 0, 0, 0, 98, 99, 7, 0, 0, 0, 99, 104, 5, 4, 0, 0, 100, 105, 5, 37, 0, 0, 101, 102, 5, 37, 0, 0, 102, 103, 5, 6, 0, 0, 103, 105, 5, 37, 0, 0, 104, 100, 1, 0, 0, 0, 104, 101, 1, 0, 0, 0, 105, 106, 1, 0, 0, 0, 106, 108, 5, 5, 0, 0, 107, 109, 3, 16, 8, 0, 108, 107, 1, 0, 0, 0, 108, 109, 1, 0, 0, 0, 109, 13, 1, 0, 0, 0, 110, 115, 5, 37, 0, 0, 111, 112, 5, 37, 0, 0, 112, 113, 5, 6, 0, 0, 113, 115, 5, 37, 0, 0, 114, 110, 1, 0, 0, 0, 114, 111, 1, 0, 0, 0, 115, 117, 1, 0, 0, 0, 116, 118, 3, 16, 8, 0, 117, 116, 1, 0, 0, 0, 117, 118, 1, 0, 0, 0, 118, 124, 1, 0, 0, 0, 119, 121, 3, 18, 9, 0, 120, 122, 3, 16, 8, 0, 121, 120, 1, 0, 0, 0, 121, 122, 1, 0, 0, 0, 122, 124, 1, 0, 0, 0, 123, 114, 1, 0, 0, 0, 123, 119, 1, 0, 0, 0, 124, 15, 1, 0, 0, 0, 125, 126, 5, 13, 0, 0, 126, 127, 5, 37, 0, 0, 127, 17, 1, 0, 0, 0, 128, 129, 3, 20, 10, 0, 129, 134, 5, 4, 0, 0, 130, 135, 5, 37, 0, 0, 131, 132, 5, 37, 0, 0, 132, 133, 5, 6, 0, 0, 133, 135, 5, 37, 0, 0, 134, 130, 1, 0, 0, 0, 134, 131, 1, 0, 0, 0, 135, 140, 1, 0, 0, 0, 136, 137, 5, 3, 0, 0, 137, 139, 3, 32, 16, 0, 138, 136, 1, 0, 0, 0, 139, 142, 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 143, 1, 0, 0, 0, 142, 140, 1, 0, 0, 0, 143, 144, 5, 5, 0, 0, 144, 175, 1, 0, 0, 0, 145, 146, 3, 20, 10, 0, 146, 151, 5, 4, 0, 0, 147, 152, 5, 37, 0, 0, 148, 149, 5, 37, 0, 0, 149, 150, 5, 6, 0, 0, 150, 152, 5, 37, 0, 0, 151, 147, 1, 0, 0, 0, 151, 148, 1, 0, 0, 0, 152, 157, 1, 0, 0, 0, 153, 154, 5, 3, 0, 0, 154, 156, 3, 32, 16, 0, 155, 153, 1, 0, 0, 0, 156, 159, 1, 0, 0, 0, 157, 155, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, 160, 1, 0, 0, 0, 159, 157, 1, 0, 0, 0, 160, 161, 5, 5, 0, 0, 161, 175, 1, 0, 0, 0, 162, 163, 3, 20, 10, 0, 163, 164, 5, 4, 0, 0, 164, 169, 3, 18, 9, 0, 165, 166, 5, 3, 0, 0, 166, 168, 3, 32, 16, 0, 167, 165, 1, 0, 0, 0, 168, 171, 1, 0, 0, 0, 169, 167, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 172, 1, 0, 0, 0, 171, 169, 1, 0, 0, 0, 172, 173, 5, 5, 0, 0, 173, 175, 1, 0, 0, 0, 174, 128, 1, 0, 0, 0, 174, 145, 1, 0, 0, 0, 174, 162, 1, 0, 0, 0, 175, 19, 1, 0, 0, 0, 176, 177, 5, 37, 0, 0, 177, 21, 1, 0, 0, 0, 178, 179, 5, 9, 0, 0, 179, 180, 3, 24, 12, 0, 180, 23, 1, 0, 0, 0, 181, 182, 6, 12, -1, 0, 182, 194, 3, 26, 13, 0, 183, 186, 3, 28, 14, 0, 184, 186, 3, 26, 13, 0, 185, 183, 1, 0, 0, 0, 185, 184, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 190, 7, 1, 0, 0, 188, 191, 3, 28, 14, 0, 189, 191, 3, 26, 13, 0, 190, 188, 1, 0, 0, 0, 190, 189, 1, 0, 0, 0, 191, 194, 1, 0, 0, 0, 192, 194, 3, 28, 14, 0, 193, 181, 1, 0, 0, 0, 193, 185, 1, 0, 0, 0, 193, 192, 1, 0, 0, 0, 194, 200, 1, 0, 0, 0, 195, 196, 10, 2, 0, 0, 196, 197, 7, 1, 0, 0, 197, 199, 3, 24, 12, 3, 198, 195, 1, 0, 0, 0, 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 25, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 204, 5, 37, 0, 0, 204, 205, 3, 30, 15, 0, 205, 206, 3, 32, 16, 0, 206, 214, 1, 0, 0, 0, 207, 208, 5, 37, 0, 0, 208, 209, 5, 6, 0, 0, 209, 210, 5, 37, 0, 0, 210, 211, 3, 30, 15, 0, 211, 212, 3, 32, 16, 0, 212, 214, 1, 0, 0, 0, 213, 203, 1, 0, 0, 0, 213, 207, 1, 0, 0, 0, 214, 27, 1, 0, 0, 0, 215, 216, 5, 4, 0, 0, 216, 217, 3, 24, 12, 0, 217, 218, 5, 5, 0, 0, 218, 29, 1, 0, 0, 0, 219, 220, 7, 2, 0, 0, 220, 31, 1, 0, 0, 0, 221, 222, 7, 3, 0, 0, 222, 33, 1, 0, 0, 0, 223, 224, 5, 11, 0, 0, 224, 227, 3, 14, 7, 0, 225, 227, 1, 0, 0, 0, 226, 223, 1, 0, 0, 0, 226, 225, 1, 0, 0, 0, 227, 35, 1, 0, 0, 0, 27, 42, 50, 58, 63, 73, 77, 84, 89, 96, 104, 108, 114, 117, 121, 123, 134, 140, 151, 157, 169, 174, 185, 190, 193, 200, 213, 226] \ No newline at end of file diff --git a/processor/stream_processor/parser/sql_base_visitor.go b/processor/stream_processor/parser/sql_base_visitor.go index 916d23ea0c5e..cc519023b2c3 100644 --- a/processor/stream_processor/parser/sql_base_visitor.go +++ b/processor/stream_processor/parser/sql_base_visitor.go @@ -36,39 +36,39 @@ func (v *BaseSqlVisitor) VisitSelectStar(ctx *SelectStarContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitSelectAggregation(ctx *SelectAggregationContext) interface{} { +func (v *BaseSqlVisitor) VisitSelectAggregations(ctx *SelectAggregationsContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitIdentifierColumn(ctx *IdentifierColumnContext) interface{} { +func (v *BaseSqlVisitor) VisitSelectGroupByAggregations(ctx *SelectGroupByAggregationsContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitFunctionColumn(ctx *FunctionColumnContext) interface{} { +func (v *BaseSqlVisitor) VisitAggregationColumn(ctx *AggregationColumnContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitAlias(ctx *AliasContext) interface{} { +func (v *BaseSqlVisitor) VisitIdentifierColumn(ctx *IdentifierColumnContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitSimpleFunction(ctx *SimpleFunctionContext) interface{} { +func (v *BaseSqlVisitor) VisitFunctionColumn(ctx *FunctionColumnContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitRecursiveFunction(ctx *RecursiveFunctionContext) interface{} { +func (v *BaseSqlVisitor) VisitAlias(ctx *AliasContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitFunctionName(ctx *FunctionNameContext) interface{} { +func (v *BaseSqlVisitor) VisitSimpleFunction(ctx *SimpleFunctionContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitColumnAggregation(ctx *ColumnAggregationContext) interface{} { +func (v *BaseSqlVisitor) VisitRecursiveFunction(ctx *RecursiveFunctionContext) interface{} { return v.VisitChildren(ctx) } -func (v *BaseSqlVisitor) VisitColumnCountAggregation(ctx *ColumnCountAggregationContext) interface{} { +func (v *BaseSqlVisitor) VisitFunctionName(ctx *FunctionNameContext) interface{} { return v.VisitChildren(ctx) } diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index fb661f7f7e25..20166a97ea07 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -48,113 +48,111 @@ func sqlParserInit() { } staticData.ruleNames = []string{ "sqlQuery", "selectQuery", "windowTumbling", "resultColumns", "aggregationColumns", - "column", "alias", "function", "functionName", "aggregationColumn", - "whereStatement", "expr", "simpleExpr", "compoundExpr", "comparisonOperator", - "literalValue", "groupBy", + "groupByAggregationColumns", "aggregationColumn", "column", "alias", + "function", "functionName", "whereStatement", "expr", "simpleExpr", + "compoundExpr", "comparisonOperator", "literalValue", "groupBy", } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 41, 233, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 41, 229, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, - 2, 16, 7, 16, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 41, 8, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 1, 57, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 62, 8, 1, 1, 2, 1, 2, - 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 70, 8, 3, 10, 3, 12, 3, 73, 9, 3, 1, 3, 3, - 3, 76, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 81, 8, 4, 1, 4, 1, 4, 1, 4, 5, 4, - 86, 8, 4, 10, 4, 12, 4, 89, 9, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 95, 8, - 5, 1, 5, 3, 5, 98, 8, 5, 1, 5, 1, 5, 3, 5, 102, 8, 5, 3, 5, 104, 8, 5, - 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 115, 8, 7, - 1, 7, 1, 7, 5, 7, 119, 8, 7, 10, 7, 12, 7, 122, 9, 7, 1, 7, 1, 7, 1, 7, - 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 132, 8, 7, 1, 7, 1, 7, 5, 7, 136, 8, - 7, 10, 7, 12, 7, 139, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, - 7, 148, 8, 7, 10, 7, 12, 7, 151, 9, 7, 1, 7, 1, 7, 3, 7, 155, 8, 7, 1, - 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 165, 8, 9, 1, 9, 1, - 9, 3, 9, 169, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 175, 8, 9, 1, 9, 1, 9, - 1, 9, 1, 9, 3, 9, 181, 8, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, - 1, 11, 3, 11, 190, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 195, 8, 11, 1, 11, - 3, 11, 198, 8, 11, 1, 11, 1, 11, 1, 11, 5, 11, 203, 8, 11, 10, 11, 12, - 11, 206, 9, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, - 1, 12, 1, 12, 3, 12, 218, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, - 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 3, 16, 231, 8, 16, 1, 16, 0, 1, - 22, 17, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, - 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, - 40, 247, 0, 34, 1, 0, 0, 0, 2, 61, 1, 0, 0, 0, 4, 63, 1, 0, 0, 0, 6, 75, - 1, 0, 0, 0, 8, 80, 1, 0, 0, 0, 10, 103, 1, 0, 0, 0, 12, 105, 1, 0, 0, 0, - 14, 154, 1, 0, 0, 0, 16, 156, 1, 0, 0, 0, 18, 180, 1, 0, 0, 0, 20, 182, - 1, 0, 0, 0, 22, 197, 1, 0, 0, 0, 24, 217, 1, 0, 0, 0, 26, 219, 1, 0, 0, - 0, 28, 223, 1, 0, 0, 0, 30, 225, 1, 0, 0, 0, 32, 230, 1, 0, 0, 0, 34, 35, - 3, 2, 1, 0, 35, 36, 5, 0, 0, 1, 36, 1, 1, 0, 0, 0, 37, 38, 5, 8, 0, 0, - 38, 40, 3, 6, 3, 0, 39, 41, 3, 20, 10, 0, 40, 39, 1, 0, 0, 0, 40, 41, 1, - 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 43, 5, 7, 0, 0, 43, 62, 1, 0, 0, 0, 44, - 45, 5, 8, 0, 0, 45, 46, 3, 8, 4, 0, 46, 48, 3, 4, 2, 0, 47, 49, 3, 20, - 10, 0, 48, 47, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 1, 0, 0, 0, 50, - 51, 5, 7, 0, 0, 51, 62, 1, 0, 0, 0, 52, 53, 5, 8, 0, 0, 53, 54, 3, 8, 4, - 0, 54, 56, 3, 4, 2, 0, 55, 57, 3, 20, 10, 0, 56, 55, 1, 0, 0, 0, 56, 57, - 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 59, 3, 32, 16, 0, 59, 60, 5, 7, 0, - 0, 60, 62, 1, 0, 0, 0, 61, 37, 1, 0, 0, 0, 61, 44, 1, 0, 0, 0, 61, 52, - 1, 0, 0, 0, 62, 3, 1, 0, 0, 0, 63, 64, 5, 10, 0, 0, 64, 65, 5, 38, 0, 0, - 65, 5, 1, 0, 0, 0, 66, 71, 3, 10, 5, 0, 67, 68, 5, 3, 0, 0, 68, 70, 3, - 10, 5, 0, 69, 67, 1, 0, 0, 0, 70, 73, 1, 0, 0, 0, 71, 69, 1, 0, 0, 0, 71, - 72, 1, 0, 0, 0, 72, 76, 1, 0, 0, 0, 73, 71, 1, 0, 0, 0, 74, 76, 5, 41, - 0, 0, 75, 66, 1, 0, 0, 0, 75, 74, 1, 0, 0, 0, 76, 7, 1, 0, 0, 0, 77, 78, - 3, 10, 5, 0, 78, 79, 5, 3, 0, 0, 79, 81, 1, 0, 0, 0, 80, 77, 1, 0, 0, 0, - 80, 81, 1, 0, 0, 0, 81, 82, 1, 0, 0, 0, 82, 87, 3, 18, 9, 0, 83, 84, 5, - 3, 0, 0, 84, 86, 3, 18, 9, 0, 85, 83, 1, 0, 0, 0, 86, 89, 1, 0, 0, 0, 87, - 85, 1, 0, 0, 0, 87, 88, 1, 0, 0, 0, 88, 9, 1, 0, 0, 0, 89, 87, 1, 0, 0, - 0, 90, 95, 5, 37, 0, 0, 91, 92, 5, 37, 0, 0, 92, 93, 5, 6, 0, 0, 93, 95, - 5, 37, 0, 0, 94, 90, 1, 0, 0, 0, 94, 91, 1, 0, 0, 0, 95, 97, 1, 0, 0, 0, - 96, 98, 3, 12, 6, 0, 97, 96, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 104, 1, - 0, 0, 0, 99, 101, 3, 14, 7, 0, 100, 102, 3, 12, 6, 0, 101, 100, 1, 0, 0, - 0, 101, 102, 1, 0, 0, 0, 102, 104, 1, 0, 0, 0, 103, 94, 1, 0, 0, 0, 103, - 99, 1, 0, 0, 0, 104, 11, 1, 0, 0, 0, 105, 106, 5, 13, 0, 0, 106, 107, 5, - 37, 0, 0, 107, 13, 1, 0, 0, 0, 108, 109, 3, 16, 8, 0, 109, 114, 5, 4, 0, - 0, 110, 115, 5, 37, 0, 0, 111, 112, 5, 37, 0, 0, 112, 113, 5, 6, 0, 0, - 113, 115, 5, 37, 0, 0, 114, 110, 1, 0, 0, 0, 114, 111, 1, 0, 0, 0, 115, - 120, 1, 0, 0, 0, 116, 117, 5, 3, 0, 0, 117, 119, 3, 30, 15, 0, 118, 116, - 1, 0, 0, 0, 119, 122, 1, 0, 0, 0, 120, 118, 1, 0, 0, 0, 120, 121, 1, 0, - 0, 0, 121, 123, 1, 0, 0, 0, 122, 120, 1, 0, 0, 0, 123, 124, 5, 5, 0, 0, - 124, 155, 1, 0, 0, 0, 125, 126, 3, 16, 8, 0, 126, 131, 5, 4, 0, 0, 127, - 132, 5, 37, 0, 0, 128, 129, 5, 37, 0, 0, 129, 130, 5, 6, 0, 0, 130, 132, - 5, 37, 0, 0, 131, 127, 1, 0, 0, 0, 131, 128, 1, 0, 0, 0, 132, 137, 1, 0, - 0, 0, 133, 134, 5, 3, 0, 0, 134, 136, 3, 30, 15, 0, 135, 133, 1, 0, 0, - 0, 136, 139, 1, 0, 0, 0, 137, 135, 1, 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, - 140, 1, 0, 0, 0, 139, 137, 1, 0, 0, 0, 140, 141, 5, 5, 0, 0, 141, 155, - 1, 0, 0, 0, 142, 143, 3, 16, 8, 0, 143, 144, 5, 4, 0, 0, 144, 149, 3, 14, - 7, 0, 145, 146, 5, 3, 0, 0, 146, 148, 3, 30, 15, 0, 147, 145, 1, 0, 0, - 0, 148, 151, 1, 0, 0, 0, 149, 147, 1, 0, 0, 0, 149, 150, 1, 0, 0, 0, 150, - 152, 1, 0, 0, 0, 151, 149, 1, 0, 0, 0, 152, 153, 5, 5, 0, 0, 153, 155, - 1, 0, 0, 0, 154, 108, 1, 0, 0, 0, 154, 125, 1, 0, 0, 0, 154, 142, 1, 0, - 0, 0, 155, 15, 1, 0, 0, 0, 156, 157, 5, 37, 0, 0, 157, 17, 1, 0, 0, 0, - 158, 159, 7, 0, 0, 0, 159, 164, 5, 4, 0, 0, 160, 165, 5, 37, 0, 0, 161, - 162, 5, 37, 0, 0, 162, 163, 5, 6, 0, 0, 163, 165, 5, 37, 0, 0, 164, 160, - 1, 0, 0, 0, 164, 161, 1, 0, 0, 0, 165, 166, 1, 0, 0, 0, 166, 168, 5, 5, - 0, 0, 167, 169, 3, 12, 6, 0, 168, 167, 1, 0, 0, 0, 168, 169, 1, 0, 0, 0, - 169, 181, 1, 0, 0, 0, 170, 175, 5, 37, 0, 0, 171, 172, 5, 37, 0, 0, 172, - 173, 5, 6, 0, 0, 173, 175, 5, 37, 0, 0, 174, 170, 1, 0, 0, 0, 174, 171, - 1, 0, 0, 0, 174, 175, 1, 0, 0, 0, 175, 176, 1, 0, 0, 0, 176, 177, 5, 30, - 0, 0, 177, 178, 5, 4, 0, 0, 178, 179, 5, 41, 0, 0, 179, 181, 5, 5, 0, 0, - 180, 158, 1, 0, 0, 0, 180, 174, 1, 0, 0, 0, 181, 19, 1, 0, 0, 0, 182, 183, - 5, 9, 0, 0, 183, 184, 3, 22, 11, 0, 184, 21, 1, 0, 0, 0, 185, 186, 6, 11, - -1, 0, 186, 198, 3, 24, 12, 0, 187, 190, 3, 26, 13, 0, 188, 190, 3, 24, - 12, 0, 189, 187, 1, 0, 0, 0, 189, 188, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, - 191, 194, 7, 1, 0, 0, 192, 195, 3, 26, 13, 0, 193, 195, 3, 24, 12, 0, 194, - 192, 1, 0, 0, 0, 194, 193, 1, 0, 0, 0, 195, 198, 1, 0, 0, 0, 196, 198, - 3, 26, 13, 0, 197, 185, 1, 0, 0, 0, 197, 189, 1, 0, 0, 0, 197, 196, 1, - 0, 0, 0, 198, 204, 1, 0, 0, 0, 199, 200, 10, 2, 0, 0, 200, 201, 7, 1, 0, - 0, 201, 203, 3, 22, 11, 3, 202, 199, 1, 0, 0, 0, 203, 206, 1, 0, 0, 0, - 204, 202, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 23, 1, 0, 0, 0, 206, 204, - 1, 0, 0, 0, 207, 208, 5, 37, 0, 0, 208, 209, 3, 28, 14, 0, 209, 210, 3, - 30, 15, 0, 210, 218, 1, 0, 0, 0, 211, 212, 5, 37, 0, 0, 212, 213, 5, 6, - 0, 0, 213, 214, 5, 37, 0, 0, 214, 215, 3, 28, 14, 0, 215, 216, 3, 30, 15, - 0, 216, 218, 1, 0, 0, 0, 217, 207, 1, 0, 0, 0, 217, 211, 1, 0, 0, 0, 218, - 25, 1, 0, 0, 0, 219, 220, 5, 4, 0, 0, 220, 221, 3, 22, 11, 0, 221, 222, - 5, 5, 0, 0, 222, 27, 1, 0, 0, 0, 223, 224, 7, 2, 0, 0, 224, 29, 1, 0, 0, - 0, 225, 226, 7, 3, 0, 0, 226, 31, 1, 0, 0, 0, 227, 228, 5, 11, 0, 0, 228, - 231, 3, 10, 5, 0, 229, 231, 1, 0, 0, 0, 230, 227, 1, 0, 0, 0, 230, 229, - 1, 0, 0, 0, 231, 33, 1, 0, 0, 0, 28, 40, 48, 56, 61, 71, 75, 80, 87, 94, - 97, 101, 103, 114, 120, 131, 137, 149, 154, 164, 168, 174, 180, 189, 194, - 197, 204, 217, 230, + 2, 16, 7, 16, 2, 17, 7, 17, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 43, + 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 51, 8, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 3, 1, 59, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 64, 8, 1, + 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 72, 8, 3, 10, 3, 12, 3, 75, 9, + 3, 1, 3, 3, 3, 78, 8, 3, 1, 4, 1, 4, 1, 4, 4, 4, 83, 8, 4, 11, 4, 12, 4, + 84, 1, 5, 1, 5, 1, 5, 3, 5, 90, 8, 5, 1, 5, 1, 5, 1, 5, 4, 5, 95, 8, 5, + 11, 5, 12, 5, 96, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 105, 8, 6, + 1, 6, 1, 6, 3, 6, 109, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 115, 8, 7, 1, + 7, 3, 7, 118, 8, 7, 1, 7, 1, 7, 3, 7, 122, 8, 7, 3, 7, 124, 8, 7, 1, 8, + 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 135, 8, 9, 1, 9, + 1, 9, 5, 9, 139, 8, 9, 10, 9, 12, 9, 142, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, + 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 152, 8, 9, 1, 9, 1, 9, 5, 9, 156, 8, 9, 10, + 9, 12, 9, 159, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 168, + 8, 9, 10, 9, 12, 9, 171, 9, 9, 1, 9, 1, 9, 3, 9, 175, 8, 9, 1, 10, 1, 10, + 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 186, 8, 12, 1, + 12, 1, 12, 1, 12, 3, 12, 191, 8, 12, 1, 12, 3, 12, 194, 8, 12, 1, 12, 1, + 12, 1, 12, 5, 12, 199, 8, 12, 10, 12, 12, 12, 202, 9, 12, 1, 13, 1, 13, + 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 214, 8, + 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, + 1, 17, 3, 17, 227, 8, 17, 1, 17, 0, 1, 24, 18, 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, + 14, 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, 40, 240, 0, 36, 1, 0, 0, 0, 2, + 63, 1, 0, 0, 0, 4, 65, 1, 0, 0, 0, 6, 77, 1, 0, 0, 0, 8, 79, 1, 0, 0, 0, + 10, 89, 1, 0, 0, 0, 12, 98, 1, 0, 0, 0, 14, 123, 1, 0, 0, 0, 16, 125, 1, + 0, 0, 0, 18, 174, 1, 0, 0, 0, 20, 176, 1, 0, 0, 0, 22, 178, 1, 0, 0, 0, + 24, 193, 1, 0, 0, 0, 26, 213, 1, 0, 0, 0, 28, 215, 1, 0, 0, 0, 30, 219, + 1, 0, 0, 0, 32, 221, 1, 0, 0, 0, 34, 226, 1, 0, 0, 0, 36, 37, 3, 2, 1, + 0, 37, 38, 5, 0, 0, 1, 38, 1, 1, 0, 0, 0, 39, 40, 5, 8, 0, 0, 40, 42, 3, + 6, 3, 0, 41, 43, 3, 22, 11, 0, 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, + 43, 44, 1, 0, 0, 0, 44, 45, 5, 7, 0, 0, 45, 64, 1, 0, 0, 0, 46, 47, 5, + 8, 0, 0, 47, 48, 3, 8, 4, 0, 48, 50, 3, 4, 2, 0, 49, 51, 3, 22, 11, 0, + 50, 49, 1, 0, 0, 0, 50, 51, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 53, 5, + 7, 0, 0, 53, 64, 1, 0, 0, 0, 54, 55, 5, 8, 0, 0, 55, 56, 3, 10, 5, 0, 56, + 58, 3, 4, 2, 0, 57, 59, 3, 22, 11, 0, 58, 57, 1, 0, 0, 0, 58, 59, 1, 0, + 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 3, 34, 17, 0, 61, 62, 5, 7, 0, 0, 62, + 64, 1, 0, 0, 0, 63, 39, 1, 0, 0, 0, 63, 46, 1, 0, 0, 0, 63, 54, 1, 0, 0, + 0, 64, 3, 1, 0, 0, 0, 65, 66, 5, 10, 0, 0, 66, 67, 5, 38, 0, 0, 67, 5, + 1, 0, 0, 0, 68, 73, 3, 14, 7, 0, 69, 70, 5, 3, 0, 0, 70, 72, 3, 14, 7, + 0, 71, 69, 1, 0, 0, 0, 72, 75, 1, 0, 0, 0, 73, 71, 1, 0, 0, 0, 73, 74, + 1, 0, 0, 0, 74, 78, 1, 0, 0, 0, 75, 73, 1, 0, 0, 0, 76, 78, 5, 41, 0, 0, + 77, 68, 1, 0, 0, 0, 77, 76, 1, 0, 0, 0, 78, 7, 1, 0, 0, 0, 79, 82, 3, 12, + 6, 0, 80, 81, 5, 3, 0, 0, 81, 83, 3, 12, 6, 0, 82, 80, 1, 0, 0, 0, 83, + 84, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 9, 1, 0, 0, + 0, 86, 87, 3, 14, 7, 0, 87, 88, 5, 3, 0, 0, 88, 90, 1, 0, 0, 0, 89, 86, + 1, 0, 0, 0, 89, 90, 1, 0, 0, 0, 90, 91, 1, 0, 0, 0, 91, 94, 3, 12, 6, 0, + 92, 93, 5, 3, 0, 0, 93, 95, 3, 12, 6, 0, 94, 92, 1, 0, 0, 0, 95, 96, 1, + 0, 0, 0, 96, 94, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 11, 1, 0, 0, 0, 98, + 99, 7, 0, 0, 0, 99, 104, 5, 4, 0, 0, 100, 105, 5, 37, 0, 0, 101, 102, 5, + 37, 0, 0, 102, 103, 5, 6, 0, 0, 103, 105, 5, 37, 0, 0, 104, 100, 1, 0, + 0, 0, 104, 101, 1, 0, 0, 0, 105, 106, 1, 0, 0, 0, 106, 108, 5, 5, 0, 0, + 107, 109, 3, 16, 8, 0, 108, 107, 1, 0, 0, 0, 108, 109, 1, 0, 0, 0, 109, + 13, 1, 0, 0, 0, 110, 115, 5, 37, 0, 0, 111, 112, 5, 37, 0, 0, 112, 113, + 5, 6, 0, 0, 113, 115, 5, 37, 0, 0, 114, 110, 1, 0, 0, 0, 114, 111, 1, 0, + 0, 0, 115, 117, 1, 0, 0, 0, 116, 118, 3, 16, 8, 0, 117, 116, 1, 0, 0, 0, + 117, 118, 1, 0, 0, 0, 118, 124, 1, 0, 0, 0, 119, 121, 3, 18, 9, 0, 120, + 122, 3, 16, 8, 0, 121, 120, 1, 0, 0, 0, 121, 122, 1, 0, 0, 0, 122, 124, + 1, 0, 0, 0, 123, 114, 1, 0, 0, 0, 123, 119, 1, 0, 0, 0, 124, 15, 1, 0, + 0, 0, 125, 126, 5, 13, 0, 0, 126, 127, 5, 37, 0, 0, 127, 17, 1, 0, 0, 0, + 128, 129, 3, 20, 10, 0, 129, 134, 5, 4, 0, 0, 130, 135, 5, 37, 0, 0, 131, + 132, 5, 37, 0, 0, 132, 133, 5, 6, 0, 0, 133, 135, 5, 37, 0, 0, 134, 130, + 1, 0, 0, 0, 134, 131, 1, 0, 0, 0, 135, 140, 1, 0, 0, 0, 136, 137, 5, 3, + 0, 0, 137, 139, 3, 32, 16, 0, 138, 136, 1, 0, 0, 0, 139, 142, 1, 0, 0, + 0, 140, 138, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 143, 1, 0, 0, 0, 142, + 140, 1, 0, 0, 0, 143, 144, 5, 5, 0, 0, 144, 175, 1, 0, 0, 0, 145, 146, + 3, 20, 10, 0, 146, 151, 5, 4, 0, 0, 147, 152, 5, 37, 0, 0, 148, 149, 5, + 37, 0, 0, 149, 150, 5, 6, 0, 0, 150, 152, 5, 37, 0, 0, 151, 147, 1, 0, + 0, 0, 151, 148, 1, 0, 0, 0, 152, 157, 1, 0, 0, 0, 153, 154, 5, 3, 0, 0, + 154, 156, 3, 32, 16, 0, 155, 153, 1, 0, 0, 0, 156, 159, 1, 0, 0, 0, 157, + 155, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, 160, 1, 0, 0, 0, 159, 157, + 1, 0, 0, 0, 160, 161, 5, 5, 0, 0, 161, 175, 1, 0, 0, 0, 162, 163, 3, 20, + 10, 0, 163, 164, 5, 4, 0, 0, 164, 169, 3, 18, 9, 0, 165, 166, 5, 3, 0, + 0, 166, 168, 3, 32, 16, 0, 167, 165, 1, 0, 0, 0, 168, 171, 1, 0, 0, 0, + 169, 167, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 172, 1, 0, 0, 0, 171, + 169, 1, 0, 0, 0, 172, 173, 5, 5, 0, 0, 173, 175, 1, 0, 0, 0, 174, 128, + 1, 0, 0, 0, 174, 145, 1, 0, 0, 0, 174, 162, 1, 0, 0, 0, 175, 19, 1, 0, + 0, 0, 176, 177, 5, 37, 0, 0, 177, 21, 1, 0, 0, 0, 178, 179, 5, 9, 0, 0, + 179, 180, 3, 24, 12, 0, 180, 23, 1, 0, 0, 0, 181, 182, 6, 12, -1, 0, 182, + 194, 3, 26, 13, 0, 183, 186, 3, 28, 14, 0, 184, 186, 3, 26, 13, 0, 185, + 183, 1, 0, 0, 0, 185, 184, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 190, + 7, 1, 0, 0, 188, 191, 3, 28, 14, 0, 189, 191, 3, 26, 13, 0, 190, 188, 1, + 0, 0, 0, 190, 189, 1, 0, 0, 0, 191, 194, 1, 0, 0, 0, 192, 194, 3, 28, 14, + 0, 193, 181, 1, 0, 0, 0, 193, 185, 1, 0, 0, 0, 193, 192, 1, 0, 0, 0, 194, + 200, 1, 0, 0, 0, 195, 196, 10, 2, 0, 0, 196, 197, 7, 1, 0, 0, 197, 199, + 3, 24, 12, 3, 198, 195, 1, 0, 0, 0, 199, 202, 1, 0, 0, 0, 200, 198, 1, + 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 25, 1, 0, 0, 0, 202, 200, 1, 0, 0, + 0, 203, 204, 5, 37, 0, 0, 204, 205, 3, 30, 15, 0, 205, 206, 3, 32, 16, + 0, 206, 214, 1, 0, 0, 0, 207, 208, 5, 37, 0, 0, 208, 209, 5, 6, 0, 0, 209, + 210, 5, 37, 0, 0, 210, 211, 3, 30, 15, 0, 211, 212, 3, 32, 16, 0, 212, + 214, 1, 0, 0, 0, 213, 203, 1, 0, 0, 0, 213, 207, 1, 0, 0, 0, 214, 27, 1, + 0, 0, 0, 215, 216, 5, 4, 0, 0, 216, 217, 3, 24, 12, 0, 217, 218, 5, 5, + 0, 0, 218, 29, 1, 0, 0, 0, 219, 220, 7, 2, 0, 0, 220, 31, 1, 0, 0, 0, 221, + 222, 7, 3, 0, 0, 222, 33, 1, 0, 0, 0, 223, 224, 5, 11, 0, 0, 224, 227, + 3, 14, 7, 0, 225, 227, 1, 0, 0, 0, 226, 223, 1, 0, 0, 0, 226, 225, 1, 0, + 0, 0, 227, 35, 1, 0, 0, 0, 27, 42, 50, 58, 63, 73, 77, 84, 89, 96, 104, + 108, 114, 117, 121, 123, 134, 140, 151, 157, 169, 174, 185, 190, 193, 200, + 213, 226, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -238,23 +236,24 @@ const ( // SqlParser rules. const ( - SqlParserRULE_sqlQuery = 0 - SqlParserRULE_selectQuery = 1 - SqlParserRULE_windowTumbling = 2 - SqlParserRULE_resultColumns = 3 - SqlParserRULE_aggregationColumns = 4 - SqlParserRULE_column = 5 - SqlParserRULE_alias = 6 - SqlParserRULE_function = 7 - SqlParserRULE_functionName = 8 - SqlParserRULE_aggregationColumn = 9 - SqlParserRULE_whereStatement = 10 - SqlParserRULE_expr = 11 - SqlParserRULE_simpleExpr = 12 - SqlParserRULE_compoundExpr = 13 - SqlParserRULE_comparisonOperator = 14 - SqlParserRULE_literalValue = 15 - SqlParserRULE_groupBy = 16 + SqlParserRULE_sqlQuery = 0 + SqlParserRULE_selectQuery = 1 + SqlParserRULE_windowTumbling = 2 + SqlParserRULE_resultColumns = 3 + SqlParserRULE_aggregationColumns = 4 + SqlParserRULE_groupByAggregationColumns = 5 + SqlParserRULE_aggregationColumn = 6 + SqlParserRULE_column = 7 + SqlParserRULE_alias = 8 + SqlParserRULE_function = 9 + SqlParserRULE_functionName = 10 + SqlParserRULE_whereStatement = 11 + SqlParserRULE_expr = 12 + SqlParserRULE_simpleExpr = 13 + SqlParserRULE_compoundExpr = 14 + SqlParserRULE_comparisonOperator = 15 + SqlParserRULE_literalValue = 16 + SqlParserRULE_groupBy = 17 ) // ISqlQueryContext is an interface to support dynamic dispatch. @@ -358,11 +357,11 @@ func (p *SqlParser) SqlQuery() (localctx ISqlQueryContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(34) + p.SetState(36) p.SelectQuery() } { - p.SetState(35) + p.SetState(37) p.Match(SqlParserEOF) } @@ -593,10 +592,10 @@ func (s *SelectTumblingGroupByContext) K_SELECT() antlr.TerminalNode { return s.GetToken(SqlParserK_SELECT, 0) } -func (s *SelectTumblingGroupByContext) AggregationColumns() IAggregationColumnsContext { +func (s *SelectTumblingGroupByContext) GroupByAggregationColumns() IGroupByAggregationColumnsContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAggregationColumnsContext); ok { + if _, ok := ctx.(IGroupByAggregationColumnsContext); ok { t = ctx.(antlr.RuleContext) break } @@ -606,7 +605,7 @@ func (s *SelectTumblingGroupByContext) AggregationColumns() IAggregationColumnsC return nil } - return t.(IAggregationColumnsContext) + return t.(IGroupByAggregationColumnsContext) } func (s *SelectTumblingGroupByContext) WindowTumbling() IWindowTumblingContext { @@ -695,33 +694,33 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { } }() - p.SetState(61) + p.SetState(63) p.GetErrorHandler().Sync(p) switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 3, p.GetParserRuleContext()) { case 1: localctx = NewSelectSimpleContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(37) + p.SetState(39) p.Match(SqlParserK_SELECT) } { - p.SetState(38) + p.SetState(40) p.ResultColumns() } - p.SetState(40) + p.SetState(42) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(39) + p.SetState(41) p.WhereStatement() } } { - p.SetState(42) + p.SetState(44) p.Match(SqlParserEOQ) } @@ -729,30 +728,30 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { localctx = NewSelectTumblingContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(44) + p.SetState(46) p.Match(SqlParserK_SELECT) } { - p.SetState(45) + p.SetState(47) p.AggregationColumns() } { - p.SetState(46) + p.SetState(48) p.WindowTumbling() } - p.SetState(48) + p.SetState(50) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(47) + p.SetState(49) p.WhereStatement() } } { - p.SetState(50) + p.SetState(52) p.Match(SqlParserEOQ) } @@ -760,34 +759,34 @@ func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { localctx = NewSelectTumblingGroupByContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(52) + p.SetState(54) p.Match(SqlParserK_SELECT) } { - p.SetState(53) - p.AggregationColumns() + p.SetState(55) + p.GroupByAggregationColumns() } { - p.SetState(54) + p.SetState(56) p.WindowTumbling() } - p.SetState(56) + p.SetState(58) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == SqlParserK_WHERE { { - p.SetState(55) + p.SetState(57) p.WhereStatement() } } { - p.SetState(58) + p.SetState(60) p.GroupBy() } { - p.SetState(59) + p.SetState(61) p.Match(SqlParserEOQ) } @@ -885,11 +884,11 @@ func (p *SqlParser) WindowTumbling() (localctx IWindowTumblingContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(63) + p.SetState(65) p.Match(SqlParserK_WINDOW_TUMBLING) } { - p.SetState(64) + p.SetState(66) p.Match(SqlParserNUMERIC_LITERAL) } @@ -1079,7 +1078,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { } }() - p.SetState(75) + p.SetState(77) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { @@ -1087,24 +1086,24 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectColumnsContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(66) + p.SetState(68) p.Column() } - p.SetState(71) + p.SetState(73) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for _la == SqlParserCOMMA { { - p.SetState(67) + p.SetState(69) p.Match(SqlParserCOMMA) } { - p.SetState(68) + p.SetState(70) p.Column() } - p.SetState(73) + p.SetState(75) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } @@ -1113,7 +1112,7 @@ func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { localctx = NewSelectStarContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(74) + p.SetState(76) p.Match(SqlParserSTAR) } @@ -1174,12 +1173,12 @@ func (s *AggregationColumnsContext) ToStringTree(ruleNames []string, recog antlr return antlr.TreesStringTree(s, ruleNames, recog) } -type SelectAggregationContext struct { +type SelectAggregationsContext struct { *AggregationColumnsContext } -func NewSelectAggregationContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectAggregationContext { - var p = new(SelectAggregationContext) +func NewSelectAggregationsContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectAggregationsContext { + var p = new(SelectAggregationsContext) p.AggregationColumnsContext = NewEmptyAggregationColumnsContext() p.parser = parser @@ -1188,11 +1187,11 @@ func NewSelectAggregationContext(parser antlr.Parser, ctx antlr.ParserRuleContex return p } -func (s *SelectAggregationContext) GetRuleContext() antlr.RuleContext { +func (s *SelectAggregationsContext) GetRuleContext() antlr.RuleContext { return s } -func (s *SelectAggregationContext) AllAggregationColumn() []IAggregationColumnContext { +func (s *SelectAggregationsContext) AllAggregationColumn() []IAggregationColumnContext { children := s.GetChildren() len := 0 for _, ctx := range children { @@ -1213,7 +1212,7 @@ func (s *SelectAggregationContext) AllAggregationColumn() []IAggregationColumnCo return tst } -func (s *SelectAggregationContext) AggregationColumn(i int) IAggregationColumnContext { +func (s *SelectAggregationsContext) AggregationColumn(i int) IAggregationColumnContext { var t antlr.RuleContext j := 0 for _, ctx := range s.GetChildren() { @@ -1233,34 +1232,18 @@ func (s *SelectAggregationContext) AggregationColumn(i int) IAggregationColumnCo return t.(IAggregationColumnContext) } -func (s *SelectAggregationContext) Column() IColumnContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumnContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IColumnContext) -} - -func (s *SelectAggregationContext) AllCOMMA() []antlr.TerminalNode { +func (s *SelectAggregationsContext) AllCOMMA() []antlr.TerminalNode { return s.GetTokens(SqlParserCOMMA) } -func (s *SelectAggregationContext) COMMA(i int) antlr.TerminalNode { +func (s *SelectAggregationsContext) COMMA(i int) antlr.TerminalNode { return s.GetToken(SqlParserCOMMA, i) } -func (s *SelectAggregationContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *SelectAggregationsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case SqlVisitor: - return t.VisitSelectAggregation(s) + return t.VisitSelectAggregations(s) default: return t.VisitChildren(s) @@ -1291,41 +1274,27 @@ func (p *SqlParser) AggregationColumns() (localctx IAggregationColumnsContext) { } }() - localctx = NewSelectAggregationContext(p, localctx) + localctx = NewSelectAggregationsContext(p, localctx) p.EnterOuterAlt(localctx, 1) - p.SetState(80) - p.GetErrorHandler().Sync(p) - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 6, p.GetParserRuleContext()) == 1 { - { - p.SetState(77) - p.Column() - } - { - p.SetState(78) - p.Match(SqlParserCOMMA) - } - - } { - p.SetState(82) + p.SetState(79) p.AggregationColumn() } - p.SetState(87) + p.SetState(82) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - for _la == SqlParserCOMMA { + for ok := true; ok; ok = _la == SqlParserCOMMA { { - p.SetState(83) + p.SetState(80) p.Match(SqlParserCOMMA) } { - p.SetState(84) + p.SetState(81) p.AggregationColumn() } - p.SetState(89) + p.SetState(84) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } @@ -1333,136 +1302,105 @@ func (p *SqlParser) AggregationColumns() (localctx IAggregationColumnsContext) { return localctx } -// IColumnContext is an interface to support dynamic dispatch. -type IColumnContext interface { +// IGroupByAggregationColumnsContext is an interface to support dynamic dispatch. +type IGroupByAggregationColumnsContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser - // IsColumnContext differentiates from other interfaces. - IsColumnContext() + // IsGroupByAggregationColumnsContext differentiates from other interfaces. + IsGroupByAggregationColumnsContext() } -type ColumnContext struct { +type GroupByAggregationColumnsContext struct { *antlr.BaseParserRuleContext parser antlr.Parser } -func NewEmptyColumnContext() *ColumnContext { - var p = new(ColumnContext) +func NewEmptyGroupByAggregationColumnsContext() *GroupByAggregationColumnsContext { + var p = new(GroupByAggregationColumnsContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column + p.RuleIndex = SqlParserRULE_groupByAggregationColumns return p } -func (*ColumnContext) IsColumnContext() {} +func (*GroupByAggregationColumnsContext) IsGroupByAggregationColumnsContext() {} -func NewColumnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ColumnContext { - var p = new(ColumnContext) +func NewGroupByAggregationColumnsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GroupByAggregationColumnsContext { + var p = new(GroupByAggregationColumnsContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = SqlParserRULE_column + p.RuleIndex = SqlParserRULE_groupByAggregationColumns return p } -func (s *ColumnContext) GetParser() antlr.Parser { return s.parser } +func (s *GroupByAggregationColumnsContext) GetParser() antlr.Parser { return s.parser } -func (s *ColumnContext) CopyFrom(ctx *ColumnContext) { +func (s *GroupByAggregationColumnsContext) CopyFrom(ctx *GroupByAggregationColumnsContext) { s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext) } -func (s *ColumnContext) GetRuleContext() antlr.RuleContext { +func (s *GroupByAggregationColumnsContext) GetRuleContext() antlr.RuleContext { return s } -func (s *ColumnContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { +func (s *GroupByAggregationColumnsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { return antlr.TreesStringTree(s, ruleNames, recog) } -type IdentifierColumnContext struct { - *ColumnContext +type SelectGroupByAggregationsContext struct { + *GroupByAggregationColumnsContext } -func NewIdentifierColumnContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *IdentifierColumnContext { - var p = new(IdentifierColumnContext) +func NewSelectGroupByAggregationsContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SelectGroupByAggregationsContext { + var p = new(SelectGroupByAggregationsContext) - p.ColumnContext = NewEmptyColumnContext() + p.GroupByAggregationColumnsContext = NewEmptyGroupByAggregationColumnsContext() p.parser = parser - p.CopyFrom(ctx.(*ColumnContext)) + p.CopyFrom(ctx.(*GroupByAggregationColumnsContext)) return p } -func (s *IdentifierColumnContext) GetRuleContext() antlr.RuleContext { +func (s *SelectGroupByAggregationsContext) GetRuleContext() antlr.RuleContext { return s } -func (s *IdentifierColumnContext) AllIDENTIFIER() []antlr.TerminalNode { - return s.GetTokens(SqlParserIDENTIFIER) -} - -func (s *IdentifierColumnContext) IDENTIFIER(i int) antlr.TerminalNode { - return s.GetToken(SqlParserIDENTIFIER, i) -} - -func (s *IdentifierColumnContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *IdentifierColumnContext) Alias() IAliasContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAliasContext); ok { - t = ctx.(antlr.RuleContext) - break +func (s *SelectGroupByAggregationsContext) AllAggregationColumn() []IAggregationColumnContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IAggregationColumnContext); ok { + len++ } } - if t == nil { - return nil - } - - return t.(IAliasContext) -} - -func (s *IdentifierColumnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { - switch t := visitor.(type) { - case SqlVisitor: - return t.VisitIdentifierColumn(s) - - default: - return t.VisitChildren(s) + tst := make([]IAggregationColumnContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IAggregationColumnContext); ok { + tst[i] = t.(IAggregationColumnContext) + i++ + } } -} - -type FunctionColumnContext struct { - *ColumnContext -} - -func NewFunctionColumnContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *FunctionColumnContext { - var p = new(FunctionColumnContext) - - p.ColumnContext = NewEmptyColumnContext() - p.parser = parser - p.CopyFrom(ctx.(*ColumnContext)) - - return p -} -func (s *FunctionColumnContext) GetRuleContext() antlr.RuleContext { - return s + return tst } -func (s *FunctionColumnContext) Function() IFunctionContext { +func (s *SelectGroupByAggregationsContext) AggregationColumn(i int) IAggregationColumnContext { var t antlr.RuleContext + j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IFunctionContext); ok { - t = ctx.(antlr.RuleContext) - break + if _, ok := ctx.(IAggregationColumnContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ } } @@ -1470,13 +1408,13 @@ func (s *FunctionColumnContext) Function() IFunctionContext { return nil } - return t.(IFunctionContext) + return t.(IAggregationColumnContext) } -func (s *FunctionColumnContext) Alias() IAliasContext { +func (s *SelectGroupByAggregationsContext) Column() IColumnContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAliasContext); ok { + if _, ok := ctx.(IColumnContext); ok { t = ctx.(antlr.RuleContext) break } @@ -1486,25 +1424,33 @@ func (s *FunctionColumnContext) Alias() IAliasContext { return nil } - return t.(IAliasContext) + return t.(IColumnContext) } -func (s *FunctionColumnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { +func (s *SelectGroupByAggregationsContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *SelectGroupByAggregationsContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *SelectGroupByAggregationsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { switch t := visitor.(type) { case SqlVisitor: - return t.VisitFunctionColumn(s) + return t.VisitSelectGroupByAggregations(s) default: return t.VisitChildren(s) } } -func (p *SqlParser) Column() (localctx IColumnContext) { +func (p *SqlParser) GroupByAggregationColumns() (localctx IGroupByAggregationColumnsContext) { this := p _ = this - localctx = NewColumnContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 10, SqlParserRULE_column) + localctx = NewGroupByAggregationColumnsContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 10, SqlParserRULE_groupByAggregationColumns) var _la int defer func() { @@ -1523,142 +1469,168 @@ func (p *SqlParser) Column() (localctx IColumnContext) { } }() - p.SetState(103) + localctx = NewSelectGroupByAggregationsContext(p, localctx) + p.EnterOuterAlt(localctx, 1) + p.SetState(89) p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 11, p.GetParserRuleContext()) { - case 1: - localctx = NewIdentifierColumnContext(p, localctx) - p.EnterOuterAlt(localctx, 1) - p.SetState(94) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 8, p.GetParserRuleContext()) { - case 1: - { - p.SetState(90) - p.Match(SqlParserIDENTIFIER) - } - - case 2: - { - p.SetState(91) - p.Match(SqlParserIDENTIFIER) - } - { - p.SetState(92) - p.Match(SqlParserDOT) - } - { - p.SetState(93) - p.Match(SqlParserIDENTIFIER) - } + _la = p.GetTokenStream().LA(1) + if _la == SqlParserIDENTIFIER { + { + p.SetState(86) + p.Column() + } + { + p.SetState(87) + p.Match(SqlParserCOMMA) } - p.SetState(97) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - if _la == SqlParserK_AS { - { - p.SetState(96) - p.Alias() - } + } + { + p.SetState(91) + p.AggregationColumn() + } + p.SetState(94) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + for ok := true; ok; ok = _la == SqlParserCOMMA { + { + p.SetState(92) + p.Match(SqlParserCOMMA) } - - case 2: - localctx = NewFunctionColumnContext(p, localctx) - p.EnterOuterAlt(localctx, 2) { - p.SetState(99) - p.Function() + p.SetState(93) + p.AggregationColumn() } - p.SetState(101) + + p.SetState(96) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - - if _la == SqlParserK_AS { - { - p.SetState(100) - p.Alias() - } - - } - } return localctx } -// IAliasContext is an interface to support dynamic dispatch. -type IAliasContext interface { +// IAggregationColumnContext is an interface to support dynamic dispatch. +type IAggregationColumnContext interface { antlr.ParserRuleContext // GetParser returns the parser. GetParser() antlr.Parser - // IsAliasContext differentiates from other interfaces. - IsAliasContext() + // IsAggregationColumnContext differentiates from other interfaces. + IsAggregationColumnContext() } -type AliasContext struct { +type AggregationColumnContext struct { *antlr.BaseParserRuleContext parser antlr.Parser } -func NewEmptyAliasContext() *AliasContext { - var p = new(AliasContext) +func NewEmptyAggregationColumnContext() *AggregationColumnContext { + var p = new(AggregationColumnContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_alias + p.RuleIndex = SqlParserRULE_aggregationColumn return p } -func (*AliasContext) IsAliasContext() {} +func (*AggregationColumnContext) IsAggregationColumnContext() {} -func NewAliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AliasContext { - var p = new(AliasContext) +func NewAggregationColumnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AggregationColumnContext { + var p = new(AggregationColumnContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = SqlParserRULE_alias + p.RuleIndex = SqlParserRULE_aggregationColumn return p } -func (s *AliasContext) GetParser() antlr.Parser { return s.parser } +func (s *AggregationColumnContext) GetParser() antlr.Parser { return s.parser } -func (s *AliasContext) K_AS() antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, 0) +func (s *AggregationColumnContext) L_BRACKET() antlr.TerminalNode { + return s.GetToken(SqlParserL_BRACKET, 0) } -func (s *AliasContext) IDENTIFIER() antlr.TerminalNode { - return s.GetToken(SqlParserIDENTIFIER, 0) +func (s *AggregationColumnContext) R_BRACKET() antlr.TerminalNode { + return s.GetToken(SqlParserR_BRACKET, 0) } -func (s *AliasContext) GetRuleContext() antlr.RuleContext { - return s +func (s *AggregationColumnContext) K_MIN() antlr.TerminalNode { + return s.GetToken(SqlParserK_MIN, 0) } -func (s *AliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) +func (s *AggregationColumnContext) K_MAX() antlr.TerminalNode { + return s.GetToken(SqlParserK_MAX, 0) } -func (s *AliasContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { - switch t := visitor.(type) { - case SqlVisitor: - return t.VisitAlias(s) - - default: - return t.VisitChildren(s) - } +func (s *AggregationColumnContext) K_COUNT() antlr.TerminalNode { + return s.GetToken(SqlParserK_COUNT, 0) } -func (p *SqlParser) Alias() (localctx IAliasContext) { - this := p - _ = this +func (s *AggregationColumnContext) K_AVG() antlr.TerminalNode { + return s.GetToken(SqlParserK_AVG, 0) +} - localctx = NewAliasContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 12, SqlParserRULE_alias) +func (s *AggregationColumnContext) K_SUM() antlr.TerminalNode { + return s.GetToken(SqlParserK_SUM, 0) +} + +func (s *AggregationColumnContext) AllIDENTIFIER() []antlr.TerminalNode { + return s.GetTokens(SqlParserIDENTIFIER) +} + +func (s *AggregationColumnContext) IDENTIFIER(i int) antlr.TerminalNode { + return s.GetToken(SqlParserIDENTIFIER, i) +} + +func (s *AggregationColumnContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *AggregationColumnContext) Alias() IAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAliasContext) +} + +func (s *AggregationColumnContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AggregationColumnContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AggregationColumnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case SqlVisitor: + return t.VisitAggregationColumn(s) + + default: + return t.VisitChildren(s) + } +} + +func (p *SqlParser) AggregationColumn() (localctx IAggregationColumnContext) { + this := p + _ = this + + localctx = NewAggregationColumnContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 12, SqlParserRULE_aggregationColumn) + var _la int defer func() { p.ExitRule() @@ -1678,109 +1650,147 @@ func (p *SqlParser) Alias() (localctx IAliasContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(105) - p.Match(SqlParserK_AS) + p.SetState(98) + _la = p.GetTokenStream().LA(1) + + if !(((_la-30)&-(0x1f+1)) == 0 && ((1< 0 { @@ -99,11 +96,8 @@ func (v *SqlStreamVisitor) startWindowTumblingLoop() { go func() { for { select { - case v.origLogRecords = <-v.in: - if err := v.runQuery(); err != nil { - v.outErr <- err - break - } + case newRec := <-v.in: + newRec.CopyTo(v.origLogRecords) case <-v.shutdownC: v.logger.Debug("sql engine shutting down") return @@ -120,7 +114,7 @@ func (v *SqlStreamVisitor) startWindowTumblingLoop() { v.outErr <- err break } - v.out <- v.origLogRecords + v.out <- v.resultLogRecords v.origLogRecords = plog.NewLogRecordSlice() } case <-v.shutdownC: @@ -209,12 +203,11 @@ func (v *SqlStreamVisitor) VisitSelectTumblingGroupBy(ctx *SelectTumblingGroupBy case nil: } - return ctx.AggregationColumns().Accept(v) + return ctx.GroupByAggregationColumns().Accept(v) } func (v *SqlStreamVisitor) VisitGroupBy(ctx *GroupByContext) interface{} { - //ctx.Column().I v.groupByTempLogRecords = make(map[string]plog.LogRecordSlice) for i := 0; i < v.origLogRecords.Len(); i++ { @@ -234,58 +227,42 @@ func (v *SqlStreamVisitor) VisitGroupBy(ctx *GroupByContext) interface{} { return nil } -func (v *SqlStreamVisitor) VisitColumnAggregation(ctx *ColumnAggregationContext) interface{} { - //apply aggregation and send to channel +func (v *SqlStreamVisitor) VisitSelectGroupByAggregations(ctx *SelectGroupByAggregationsContext) interface{} { + resLS := plog.NewLogRecordSlice() - dest := plog.NewLogRecordSlice() + for k, ls := range v.groupByTempLogRecords { + newRec := resLS.AppendEmpty() + v.calculateAggregation(ctx, k, newRec, ls) - if v.groupByTempLogRecords != nil { - for _, recSlice := range v.groupByTempLogRecords { - res, err := v.getSimpleAggregatedValue(ctx, recSlice) - if err != nil { - return err - } + } + v.resultLogRecords = resLS + return nil +} - //for each grouped slice we emit final record - newRec := dest.AppendEmpty() - insertValueTOAttributes(ctx, newRec.Attributes(), res) +func (v *SqlStreamVisitor) calculateAggregation(ctx *SelectGroupByAggregationsContext, key string, rec plog.LogRecord, ls plog.LogRecordSlice) error { + for _, aggregation := range ctx.AllAggregationColumn() { + col, ok := aggregation.(*AggregationColumnContext) + if !ok { + return fmt.Errorf("unknown column type") } - v.origLogRecords = dest - return nil + if err := getFieldAggregatedValue(col, ls, rec); err != nil { + return err + } + } return nil } -func (v *SqlStreamVisitor) getCountAggregatedValue(ctx *ColumnAggregationContext, fieldName string, ls plog.LogRecordSlice) (plog.LogRecord, error) { - - resLs := plog.NewLogRecordSlice() - aggrRecord := resLs.AppendEmpty() - var res float64 - var err error - - if ctx.K_AVG() != nil { - res, err = avg(ls, ctx) - } - if ctx.K_SUM() != nil { - res, err = sum(ls, ctx) - } - if ctx.K_COUNT() != nil { - res = float64(count(ls)) - } - if ctx.K_MAX() != nil { - res, err = max(ls, ctx) - } - if ctx.K_MIN() != nil { - res, err = min(ls, ctx) - } - if err != nil { - return plog.LogRecord{}, err - } +func (v *SqlStreamVisitor) VisitSelectAggregations(ctx *SelectAggregationsContext) interface{} { + //TODO implement me + panic("implement me") +} - aggrRecord.Attributes().Insert(fieldName, pcommon.NewValueDouble(res)) - return aggrRecord, nil +func (v *SqlStreamVisitor) VisitAggregationColumn(ctx *AggregationColumnContext) interface{} { + //TODO implement me + panic("implement me") } // VisitSelectColumns is called in case of missed where statement and removes missed attributes @@ -361,49 +338,6 @@ func (v *SqlStreamVisitor) applySelectColumns(ctx *SelectColumnsContext) error { return nil } -func (v *SqlStreamVisitor) VisitSelectAggregation(ctx *SelectAggregationContext) interface{} { - for _, col := range ctx.AllAggregationColumn() { - res := col.Accept(v) - switch res.(type) { - case error: - return res - } - } - return nil -} - -func (v *SqlStreamVisitor) VisitColumnCountAggregation(ctx *ColumnCountAggregationContext) interface{} { - //TODO implement me - panic("implement me") -} - -func (v *SqlStreamVisitor) getSimpleAggregatedValue(ctx *ColumnAggregationContext, ls plog.LogRecordSlice) (float64, error) { - - var res float64 - var err error - - if ctx.K_AVG() != nil { - res, err = avg(ls, ctx) - } - if ctx.K_SUM() != nil { - res, err = sum(ls, ctx) - } - if ctx.K_COUNT() != nil { - res = float64(count(ls)) - } - if ctx.K_MAX() != nil { - res, err = max(ls, ctx) - } - if ctx.K_MIN() != nil { - res, err = min(ls, ctx) - } - if err != nil { - return 0, err - } - - return res, nil -} - func (v *SqlStreamVisitor) VisitSelectStar(ctx *SelectStarContext) interface{} { v.origLogRecords.CopyTo(v.resultLogRecords) return nil diff --git a/processor/stream_processor/parser/sql_stream_visitor_test.go b/processor/stream_processor/parser/sql_stream_visitor_test.go index f5fd7f7c5d01..d06832a0c8aa 100644 --- a/processor/stream_processor/parser/sql_stream_visitor_test.go +++ b/processor/stream_processor/parser/sql_stream_visitor_test.go @@ -53,7 +53,7 @@ func TestResultColumnsSelectColumns(t *testing.T) { in := make(chan plog.LogRecordSlice) out := make(chan plog.LogRecordSlice) outErr := make(chan error) - visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) + visitor := NewSQLStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) defer visitor.Stop() in <- GenerateTestLogs() var ls plog.LogRecordSlice @@ -103,7 +103,7 @@ func TestResultColumnsSelectColumnsAttributes(t *testing.T) { in := make(chan plog.LogRecordSlice) out := make(chan plog.LogRecordSlice) outErr := make(chan error) - visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) + visitor := NewSQLStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) defer visitor.Stop() in <- GenerateTestLogs() @@ -147,7 +147,7 @@ func TestWhereCondition(t *testing.T) { in := make(chan plog.LogRecordSlice) out := make(chan plog.LogRecordSlice) outErr := make(chan error) - visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) + visitor := NewSQLStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) defer visitor.Stop() in <- GenerateTestLogs() var err error @@ -237,7 +237,7 @@ func TestSimpleCondition(t *testing.T) { in := make(chan plog.LogRecordSlice) out := make(chan plog.LogRecordSlice) outErr := make(chan error) - visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) + visitor := NewSQLStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) defer visitor.Stop() in <- GenerateTestLogs() ls := <-out @@ -305,7 +305,7 @@ func TestRecursiveCondition(t *testing.T) { in := make(chan plog.LogRecordSlice) out := make(chan plog.LogRecordSlice) outErr := make(chan error) - visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) + visitor := NewSQLStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) defer visitor.Stop() in <- GenerateTestLogs() ls := <-out @@ -367,7 +367,7 @@ func TestCompoundCondition(t *testing.T) { in := make(chan plog.LogRecordSlice) out := make(chan plog.LogRecordSlice) outErr := make(chan error) - visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) + visitor := NewSQLStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) defer visitor.Stop() in <- GenerateTestLogs() ls := <-out @@ -434,7 +434,7 @@ func TestComplexCompoundCondition(t *testing.T) { in := make(chan plog.LogRecordSlice) out := make(chan plog.LogRecordSlice) outErr := make(chan error) - visitor := NewSqlStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) + visitor := NewSQLStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) defer visitor.Stop() in <- GenerateTestLogs() ls := <-out diff --git a/processor/stream_processor/parser/sql_visitor.go b/processor/stream_processor/parser/sql_visitor.go index b224eb5311af..99f50df34842 100644 --- a/processor/stream_processor/parser/sql_visitor.go +++ b/processor/stream_processor/parser/sql_visitor.go @@ -29,8 +29,14 @@ type SqlVisitor interface { // Visit a parse tree produced by SqlParser#selectStar. VisitSelectStar(ctx *SelectStarContext) interface{} - // Visit a parse tree produced by SqlParser#selectAggregation. - VisitSelectAggregation(ctx *SelectAggregationContext) interface{} + // Visit a parse tree produced by SqlParser#selectAggregations. + VisitSelectAggregations(ctx *SelectAggregationsContext) interface{} + + // Visit a parse tree produced by SqlParser#selectGroupByAggregations. + VisitSelectGroupByAggregations(ctx *SelectGroupByAggregationsContext) interface{} + + // Visit a parse tree produced by SqlParser#aggregationColumn. + VisitAggregationColumn(ctx *AggregationColumnContext) interface{} // Visit a parse tree produced by SqlParser#identifierColumn. VisitIdentifierColumn(ctx *IdentifierColumnContext) interface{} @@ -50,12 +56,6 @@ type SqlVisitor interface { // Visit a parse tree produced by SqlParser#functionName. VisitFunctionName(ctx *FunctionNameContext) interface{} - // Visit a parse tree produced by SqlParser#columnAggregation. - VisitColumnAggregation(ctx *ColumnAggregationContext) interface{} - - // Visit a parse tree produced by SqlParser#columnCountAggregation. - VisitColumnCountAggregation(ctx *ColumnCountAggregationContext) interface{} - // Visit a parse tree produced by SqlParser#whereStmt. VisitWhereStmt(ctx *WhereStmtContext) interface{} diff --git a/processor/stream_processor/parser/visitor_utils.go b/processor/stream_processor/parser/visitor_utils.go index 8dd73dbd1320..f31b7688a01b 100644 --- a/processor/stream_processor/parser/visitor_utils.go +++ b/processor/stream_processor/parser/visitor_utils.go @@ -107,7 +107,65 @@ func compareBool(comparisonToken int, fieldVal, comparisonVal bool) bool { return false } -func sum(ls plog.LogRecordSlice, ctx *ColumnAggregationContext) (float64, error) { +func getFieldAggregatedValue(ctx *AggregationColumnContext, ls plog.LogRecordSlice, rec plog.LogRecord) error { + + var res float64 + var err error + + if ctx.K_AVG() != nil { + res, err = avg(ls, ctx) + } + if ctx.K_SUM() != nil { + res, err = sum(ls, ctx) + } + if ctx.K_COUNT() != nil { + res = float64(count(ls)) + } + if ctx.K_MAX() != nil { + res, err = max(ls, ctx) + } + if ctx.K_MIN() != nil { + res, err = min(ls, ctx) + } + if err != nil { + return err + } + return insertNewFieldToRecord(ctx, rec.Attributes(), res) +} + +func insertNewFieldToRecord(ctx *AggregationColumnContext, attr pcommon.Map, value float64) error { + if ctx.Alias() != nil { + attr.Insert(ctx.Alias().GetStop().GetText(), pcommon.NewValueDouble(value)) + return nil + } + + fieldName := ctx.IDENTIFIER(0).GetText() + if len(ctx.AllIDENTIFIER()) > 1 { + nested, ok := attr.Get(fieldName) + + if ok && nested.Type() != pcommon.ValueTypeMap { + return fmt.Errorf("field %q already exists and isn't nested", fieldName) + } + + if !ok { + nested = pcommon.NewValueMap() + nested.MapVal().Insert(ctx.IDENTIFIER(1).GetText(), pcommon.NewValueDouble(value)) + } + + attr.Insert(fieldName, nested) + return nil + } + + _, ok := attr.Get(fieldName) + if ok { + return fmt.Errorf("field %q is duplicated. Use an alias", fieldName) + } + attr.Insert(fieldName, pcommon.NewValueDouble(value)) + + return nil +} + +func sum(ls plog.LogRecordSlice, ctx *AggregationColumnContext) (float64, error) { var sum float64 for i := 0; i < ls.Len(); i++ { curRec := ls.At(i) @@ -119,13 +177,13 @@ func sum(ls plog.LogRecordSlice, ctx *ColumnAggregationContext) (float64, error) if err != nil { return 0.0, err } - sum = sum + convertedVal + sum += convertedVal } return sum, nil } -func min(ls plog.LogRecordSlice, ctx *ColumnAggregationContext) (float64, error) { +func min(ls plog.LogRecordSlice, ctx *AggregationColumnContext) (float64, error) { var conErr error ls.Sort(func(a, b plog.LogRecord) bool { _, leftVal, err := getAttributeValueForAggregation(ctx, a.Attributes()) @@ -154,7 +212,7 @@ func min(ls plog.LogRecordSlice, ctx *ColumnAggregationContext) (float64, error) return 0, conErr } -func max(ls plog.LogRecordSlice, ctx *ColumnAggregationContext) (float64, error) { +func max(ls plog.LogRecordSlice, ctx *AggregationColumnContext) (float64, error) { var conErr error ls.Sort(func(a, b plog.LogRecord) bool { _, leftVal, err := getAttributeValueForAggregation(ctx, a.Attributes()) @@ -188,7 +246,7 @@ func max(ls plog.LogRecordSlice, ctx *ColumnAggregationContext) (float64, error) return 0.0, conErr } -func avg(ls plog.LogRecordSlice, ctx *ColumnAggregationContext) (float64, error) { +func avg(ls plog.LogRecordSlice, ctx *AggregationColumnContext) (float64, error) { var sum float64 for i := 0; i < ls.Len(); i++ { curRec := ls.At(i) @@ -200,7 +258,7 @@ func avg(ls plog.LogRecordSlice, ctx *ColumnAggregationContext) (float64, error) if err != nil { return 0.0, err } - sum = sum + convertedVal + sum += convertedVal } return sum / float64(ls.Len()), nil } @@ -273,7 +331,7 @@ func fieldExists(key string, value pcommon.Value, allColumns []interface{}) bool return !nestedFound } -func getAttributeValueForAggregation(ctx *ColumnAggregationContext, attr pcommon.Map) (string, pcommon.Value, error) { +func getAttributeValueForAggregation(ctx *AggregationColumnContext, attr pcommon.Map) (string, pcommon.Value, error) { if len(ctx.AllIDENTIFIER()) > 1 { value, err := nestedFieldExistsInAttr(ctx.IDENTIFIER(0).GetText(), ctx.IDENTIFIER(1).GetText(), attr) return ctx.IDENTIFIER(0).GetText() + "," + ctx.IDENTIFIER(1).GetText(), value, err @@ -283,16 +341,12 @@ func getAttributeValueForAggregation(ctx *ColumnAggregationContext, attr pcommon } -func insertValueTOAttributes(ctx *ColumnAggregationContext, attr pcommon.Map, value float64) { +func getColumnAggregationCtxKey(ctx *AggregationColumnContext) string { key := ctx.IDENTIFIER(0).GetText() - if len(ctx.AllIDENTIFIER()) > 1 { - nested := pcommon.NewValueMap() - nested.MapVal().Insert(ctx.IDENTIFIER(1).GetText(), pcommon.NewValueDouble(value)) - attr.Insert(key, nested) - return + return key + "." + ctx.IDENTIFIER(1).GetText() } - attr.Insert(key, pcommon.NewValueDouble(value)) + return key } func getAttributeValue(column IColumnContext, attr pcommon.Map) (string, pcommon.Value, error) { diff --git a/processor/stream_processor/processor.go b/processor/stream_processor/processor.go index b3096e1cce92..05fae4fcef0e 100644 --- a/processor/stream_processor/processor.go +++ b/processor/stream_processor/processor.go @@ -24,7 +24,7 @@ func newSqlStreamProcessor(next consumer.Logs, logger *zap.Logger, cfg *Config) in := make(chan plog.LogRecordSlice) out := make(chan plog.LogRecordSlice) outErr := make(chan error) - processor := parser.NewSqlStreamVisitor(cfg.Query, in, out, outErr, logger) + processor := parser.NewSQLStreamVisitor(cfg.Query, in, out, outErr, logger) return &sqlStreamProcessor{ logger: logger, From d9b9bfa639a6889836ce6f45d32f5c4431320b08 Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Fri, 23 Sep 2022 18:06:38 +0300 Subject: [PATCH 29/31] refactor window tumbling/fixes --- processor/stream_processor/Sql.g4 | 4 +- processor/stream_processor/parser/Sql.interp | 2 +- .../stream_processor/parser/sql_parser.go | 493 ++++++++++-------- .../parser/sql_stream_group_by_test.go | 2 +- .../parser/sql_stream_tumbling_test.go | 3 +- .../parser/sql_stream_visitor.go | 113 ++-- .../stream_processor/parser/visitor_utils.go | 135 ++++- processor/stream_processor/processor.go | 2 +- 8 files changed, 447 insertions(+), 307 deletions(-) diff --git a/processor/stream_processor/Sql.g4 b/processor/stream_processor/Sql.g4 index 564646351ea8..a829cc613bb6 100644 --- a/processor/stream_processor/Sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -24,11 +24,11 @@ resultColumns aggregationColumns - : aggregationColumn (COMMA aggregationColumn)+ #selectAggregations + : aggregationColumn (COMMA aggregationColumn)* #selectAggregations ; groupByAggregationColumns - : (column COMMA)? aggregationColumn (COMMA aggregationColumn)+ #selectGroupByAggregations + : (column | aggregationColumn) (COMMA (aggregationColumn | column))* #selectGroupByAggregations ; diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp index 96aca6d81f50..83c0d468c1c4 100644 --- a/processor/stream_processor/parser/Sql.interp +++ b/processor/stream_processor/parser/Sql.interp @@ -108,4 +108,4 @@ groupBy atn: -[4, 1, 41, 229, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 43, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 51, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 59, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 64, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 72, 8, 3, 10, 3, 12, 3, 75, 9, 3, 1, 3, 3, 3, 78, 8, 3, 1, 4, 1, 4, 1, 4, 4, 4, 83, 8, 4, 11, 4, 12, 4, 84, 1, 5, 1, 5, 1, 5, 3, 5, 90, 8, 5, 1, 5, 1, 5, 1, 5, 4, 5, 95, 8, 5, 11, 5, 12, 5, 96, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 105, 8, 6, 1, 6, 1, 6, 3, 6, 109, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 115, 8, 7, 1, 7, 3, 7, 118, 8, 7, 1, 7, 1, 7, 3, 7, 122, 8, 7, 3, 7, 124, 8, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 135, 8, 9, 1, 9, 1, 9, 5, 9, 139, 8, 9, 10, 9, 12, 9, 142, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 152, 8, 9, 1, 9, 1, 9, 5, 9, 156, 8, 9, 10, 9, 12, 9, 159, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 168, 8, 9, 10, 9, 12, 9, 171, 9, 9, 1, 9, 1, 9, 3, 9, 175, 8, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 186, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 191, 8, 12, 1, 12, 3, 12, 194, 8, 12, 1, 12, 1, 12, 1, 12, 5, 12, 199, 8, 12, 10, 12, 12, 12, 202, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 214, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 3, 17, 227, 8, 17, 1, 17, 0, 1, 24, 18, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, 40, 240, 0, 36, 1, 0, 0, 0, 2, 63, 1, 0, 0, 0, 4, 65, 1, 0, 0, 0, 6, 77, 1, 0, 0, 0, 8, 79, 1, 0, 0, 0, 10, 89, 1, 0, 0, 0, 12, 98, 1, 0, 0, 0, 14, 123, 1, 0, 0, 0, 16, 125, 1, 0, 0, 0, 18, 174, 1, 0, 0, 0, 20, 176, 1, 0, 0, 0, 22, 178, 1, 0, 0, 0, 24, 193, 1, 0, 0, 0, 26, 213, 1, 0, 0, 0, 28, 215, 1, 0, 0, 0, 30, 219, 1, 0, 0, 0, 32, 221, 1, 0, 0, 0, 34, 226, 1, 0, 0, 0, 36, 37, 3, 2, 1, 0, 37, 38, 5, 0, 0, 1, 38, 1, 1, 0, 0, 0, 39, 40, 5, 8, 0, 0, 40, 42, 3, 6, 3, 0, 41, 43, 3, 22, 11, 0, 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 45, 5, 7, 0, 0, 45, 64, 1, 0, 0, 0, 46, 47, 5, 8, 0, 0, 47, 48, 3, 8, 4, 0, 48, 50, 3, 4, 2, 0, 49, 51, 3, 22, 11, 0, 50, 49, 1, 0, 0, 0, 50, 51, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 53, 5, 7, 0, 0, 53, 64, 1, 0, 0, 0, 54, 55, 5, 8, 0, 0, 55, 56, 3, 10, 5, 0, 56, 58, 3, 4, 2, 0, 57, 59, 3, 22, 11, 0, 58, 57, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 3, 34, 17, 0, 61, 62, 5, 7, 0, 0, 62, 64, 1, 0, 0, 0, 63, 39, 1, 0, 0, 0, 63, 46, 1, 0, 0, 0, 63, 54, 1, 0, 0, 0, 64, 3, 1, 0, 0, 0, 65, 66, 5, 10, 0, 0, 66, 67, 5, 38, 0, 0, 67, 5, 1, 0, 0, 0, 68, 73, 3, 14, 7, 0, 69, 70, 5, 3, 0, 0, 70, 72, 3, 14, 7, 0, 71, 69, 1, 0, 0, 0, 72, 75, 1, 0, 0, 0, 73, 71, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 78, 1, 0, 0, 0, 75, 73, 1, 0, 0, 0, 76, 78, 5, 41, 0, 0, 77, 68, 1, 0, 0, 0, 77, 76, 1, 0, 0, 0, 78, 7, 1, 0, 0, 0, 79, 82, 3, 12, 6, 0, 80, 81, 5, 3, 0, 0, 81, 83, 3, 12, 6, 0, 82, 80, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 9, 1, 0, 0, 0, 86, 87, 3, 14, 7, 0, 87, 88, 5, 3, 0, 0, 88, 90, 1, 0, 0, 0, 89, 86, 1, 0, 0, 0, 89, 90, 1, 0, 0, 0, 90, 91, 1, 0, 0, 0, 91, 94, 3, 12, 6, 0, 92, 93, 5, 3, 0, 0, 93, 95, 3, 12, 6, 0, 94, 92, 1, 0, 0, 0, 95, 96, 1, 0, 0, 0, 96, 94, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 11, 1, 0, 0, 0, 98, 99, 7, 0, 0, 0, 99, 104, 5, 4, 0, 0, 100, 105, 5, 37, 0, 0, 101, 102, 5, 37, 0, 0, 102, 103, 5, 6, 0, 0, 103, 105, 5, 37, 0, 0, 104, 100, 1, 0, 0, 0, 104, 101, 1, 0, 0, 0, 105, 106, 1, 0, 0, 0, 106, 108, 5, 5, 0, 0, 107, 109, 3, 16, 8, 0, 108, 107, 1, 0, 0, 0, 108, 109, 1, 0, 0, 0, 109, 13, 1, 0, 0, 0, 110, 115, 5, 37, 0, 0, 111, 112, 5, 37, 0, 0, 112, 113, 5, 6, 0, 0, 113, 115, 5, 37, 0, 0, 114, 110, 1, 0, 0, 0, 114, 111, 1, 0, 0, 0, 115, 117, 1, 0, 0, 0, 116, 118, 3, 16, 8, 0, 117, 116, 1, 0, 0, 0, 117, 118, 1, 0, 0, 0, 118, 124, 1, 0, 0, 0, 119, 121, 3, 18, 9, 0, 120, 122, 3, 16, 8, 0, 121, 120, 1, 0, 0, 0, 121, 122, 1, 0, 0, 0, 122, 124, 1, 0, 0, 0, 123, 114, 1, 0, 0, 0, 123, 119, 1, 0, 0, 0, 124, 15, 1, 0, 0, 0, 125, 126, 5, 13, 0, 0, 126, 127, 5, 37, 0, 0, 127, 17, 1, 0, 0, 0, 128, 129, 3, 20, 10, 0, 129, 134, 5, 4, 0, 0, 130, 135, 5, 37, 0, 0, 131, 132, 5, 37, 0, 0, 132, 133, 5, 6, 0, 0, 133, 135, 5, 37, 0, 0, 134, 130, 1, 0, 0, 0, 134, 131, 1, 0, 0, 0, 135, 140, 1, 0, 0, 0, 136, 137, 5, 3, 0, 0, 137, 139, 3, 32, 16, 0, 138, 136, 1, 0, 0, 0, 139, 142, 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 143, 1, 0, 0, 0, 142, 140, 1, 0, 0, 0, 143, 144, 5, 5, 0, 0, 144, 175, 1, 0, 0, 0, 145, 146, 3, 20, 10, 0, 146, 151, 5, 4, 0, 0, 147, 152, 5, 37, 0, 0, 148, 149, 5, 37, 0, 0, 149, 150, 5, 6, 0, 0, 150, 152, 5, 37, 0, 0, 151, 147, 1, 0, 0, 0, 151, 148, 1, 0, 0, 0, 152, 157, 1, 0, 0, 0, 153, 154, 5, 3, 0, 0, 154, 156, 3, 32, 16, 0, 155, 153, 1, 0, 0, 0, 156, 159, 1, 0, 0, 0, 157, 155, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, 160, 1, 0, 0, 0, 159, 157, 1, 0, 0, 0, 160, 161, 5, 5, 0, 0, 161, 175, 1, 0, 0, 0, 162, 163, 3, 20, 10, 0, 163, 164, 5, 4, 0, 0, 164, 169, 3, 18, 9, 0, 165, 166, 5, 3, 0, 0, 166, 168, 3, 32, 16, 0, 167, 165, 1, 0, 0, 0, 168, 171, 1, 0, 0, 0, 169, 167, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 172, 1, 0, 0, 0, 171, 169, 1, 0, 0, 0, 172, 173, 5, 5, 0, 0, 173, 175, 1, 0, 0, 0, 174, 128, 1, 0, 0, 0, 174, 145, 1, 0, 0, 0, 174, 162, 1, 0, 0, 0, 175, 19, 1, 0, 0, 0, 176, 177, 5, 37, 0, 0, 177, 21, 1, 0, 0, 0, 178, 179, 5, 9, 0, 0, 179, 180, 3, 24, 12, 0, 180, 23, 1, 0, 0, 0, 181, 182, 6, 12, -1, 0, 182, 194, 3, 26, 13, 0, 183, 186, 3, 28, 14, 0, 184, 186, 3, 26, 13, 0, 185, 183, 1, 0, 0, 0, 185, 184, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 190, 7, 1, 0, 0, 188, 191, 3, 28, 14, 0, 189, 191, 3, 26, 13, 0, 190, 188, 1, 0, 0, 0, 190, 189, 1, 0, 0, 0, 191, 194, 1, 0, 0, 0, 192, 194, 3, 28, 14, 0, 193, 181, 1, 0, 0, 0, 193, 185, 1, 0, 0, 0, 193, 192, 1, 0, 0, 0, 194, 200, 1, 0, 0, 0, 195, 196, 10, 2, 0, 0, 196, 197, 7, 1, 0, 0, 197, 199, 3, 24, 12, 3, 198, 195, 1, 0, 0, 0, 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 25, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 204, 5, 37, 0, 0, 204, 205, 3, 30, 15, 0, 205, 206, 3, 32, 16, 0, 206, 214, 1, 0, 0, 0, 207, 208, 5, 37, 0, 0, 208, 209, 5, 6, 0, 0, 209, 210, 5, 37, 0, 0, 210, 211, 3, 30, 15, 0, 211, 212, 3, 32, 16, 0, 212, 214, 1, 0, 0, 0, 213, 203, 1, 0, 0, 0, 213, 207, 1, 0, 0, 0, 214, 27, 1, 0, 0, 0, 215, 216, 5, 4, 0, 0, 216, 217, 3, 24, 12, 0, 217, 218, 5, 5, 0, 0, 218, 29, 1, 0, 0, 0, 219, 220, 7, 2, 0, 0, 220, 31, 1, 0, 0, 0, 221, 222, 7, 3, 0, 0, 222, 33, 1, 0, 0, 0, 223, 224, 5, 11, 0, 0, 224, 227, 3, 14, 7, 0, 225, 227, 1, 0, 0, 0, 226, 223, 1, 0, 0, 0, 226, 225, 1, 0, 0, 0, 227, 35, 1, 0, 0, 0, 27, 42, 50, 58, 63, 73, 77, 84, 89, 96, 104, 108, 114, 117, 121, 123, 134, 140, 151, 157, 169, 174, 185, 190, 193, 200, 213, 226] \ No newline at end of file +[4, 1, 41, 232, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 43, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 51, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 59, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 64, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 72, 8, 3, 10, 3, 12, 3, 75, 9, 3, 1, 3, 3, 3, 78, 8, 3, 1, 4, 1, 4, 1, 4, 5, 4, 83, 8, 4, 10, 4, 12, 4, 86, 9, 4, 1, 5, 1, 5, 3, 5, 90, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 95, 8, 5, 5, 5, 97, 8, 5, 10, 5, 12, 5, 100, 9, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 108, 8, 6, 1, 6, 1, 6, 3, 6, 112, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 118, 8, 7, 1, 7, 3, 7, 121, 8, 7, 1, 7, 1, 7, 3, 7, 125, 8, 7, 3, 7, 127, 8, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 138, 8, 9, 1, 9, 1, 9, 5, 9, 142, 8, 9, 10, 9, 12, 9, 145, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 155, 8, 9, 1, 9, 1, 9, 5, 9, 159, 8, 9, 10, 9, 12, 9, 162, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 171, 8, 9, 10, 9, 12, 9, 174, 9, 9, 1, 9, 1, 9, 3, 9, 178, 8, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 189, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 194, 8, 12, 1, 12, 3, 12, 197, 8, 12, 1, 12, 1, 12, 1, 12, 5, 12, 202, 8, 12, 10, 12, 12, 12, 205, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 217, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 3, 17, 230, 8, 17, 1, 17, 0, 1, 24, 18, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, 40, 244, 0, 36, 1, 0, 0, 0, 2, 63, 1, 0, 0, 0, 4, 65, 1, 0, 0, 0, 6, 77, 1, 0, 0, 0, 8, 79, 1, 0, 0, 0, 10, 89, 1, 0, 0, 0, 12, 101, 1, 0, 0, 0, 14, 126, 1, 0, 0, 0, 16, 128, 1, 0, 0, 0, 18, 177, 1, 0, 0, 0, 20, 179, 1, 0, 0, 0, 22, 181, 1, 0, 0, 0, 24, 196, 1, 0, 0, 0, 26, 216, 1, 0, 0, 0, 28, 218, 1, 0, 0, 0, 30, 222, 1, 0, 0, 0, 32, 224, 1, 0, 0, 0, 34, 229, 1, 0, 0, 0, 36, 37, 3, 2, 1, 0, 37, 38, 5, 0, 0, 1, 38, 1, 1, 0, 0, 0, 39, 40, 5, 8, 0, 0, 40, 42, 3, 6, 3, 0, 41, 43, 3, 22, 11, 0, 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 45, 5, 7, 0, 0, 45, 64, 1, 0, 0, 0, 46, 47, 5, 8, 0, 0, 47, 48, 3, 8, 4, 0, 48, 50, 3, 4, 2, 0, 49, 51, 3, 22, 11, 0, 50, 49, 1, 0, 0, 0, 50, 51, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 53, 5, 7, 0, 0, 53, 64, 1, 0, 0, 0, 54, 55, 5, 8, 0, 0, 55, 56, 3, 10, 5, 0, 56, 58, 3, 4, 2, 0, 57, 59, 3, 22, 11, 0, 58, 57, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 3, 34, 17, 0, 61, 62, 5, 7, 0, 0, 62, 64, 1, 0, 0, 0, 63, 39, 1, 0, 0, 0, 63, 46, 1, 0, 0, 0, 63, 54, 1, 0, 0, 0, 64, 3, 1, 0, 0, 0, 65, 66, 5, 10, 0, 0, 66, 67, 5, 38, 0, 0, 67, 5, 1, 0, 0, 0, 68, 73, 3, 14, 7, 0, 69, 70, 5, 3, 0, 0, 70, 72, 3, 14, 7, 0, 71, 69, 1, 0, 0, 0, 72, 75, 1, 0, 0, 0, 73, 71, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 78, 1, 0, 0, 0, 75, 73, 1, 0, 0, 0, 76, 78, 5, 41, 0, 0, 77, 68, 1, 0, 0, 0, 77, 76, 1, 0, 0, 0, 78, 7, 1, 0, 0, 0, 79, 84, 3, 12, 6, 0, 80, 81, 5, 3, 0, 0, 81, 83, 3, 12, 6, 0, 82, 80, 1, 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 9, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 90, 3, 14, 7, 0, 88, 90, 3, 12, 6, 0, 89, 87, 1, 0, 0, 0, 89, 88, 1, 0, 0, 0, 90, 98, 1, 0, 0, 0, 91, 94, 5, 3, 0, 0, 92, 95, 3, 12, 6, 0, 93, 95, 3, 14, 7, 0, 94, 92, 1, 0, 0, 0, 94, 93, 1, 0, 0, 0, 95, 97, 1, 0, 0, 0, 96, 91, 1, 0, 0, 0, 97, 100, 1, 0, 0, 0, 98, 96, 1, 0, 0, 0, 98, 99, 1, 0, 0, 0, 99, 11, 1, 0, 0, 0, 100, 98, 1, 0, 0, 0, 101, 102, 7, 0, 0, 0, 102, 107, 5, 4, 0, 0, 103, 108, 5, 37, 0, 0, 104, 105, 5, 37, 0, 0, 105, 106, 5, 6, 0, 0, 106, 108, 5, 37, 0, 0, 107, 103, 1, 0, 0, 0, 107, 104, 1, 0, 0, 0, 108, 109, 1, 0, 0, 0, 109, 111, 5, 5, 0, 0, 110, 112, 3, 16, 8, 0, 111, 110, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 13, 1, 0, 0, 0, 113, 118, 5, 37, 0, 0, 114, 115, 5, 37, 0, 0, 115, 116, 5, 6, 0, 0, 116, 118, 5, 37, 0, 0, 117, 113, 1, 0, 0, 0, 117, 114, 1, 0, 0, 0, 118, 120, 1, 0, 0, 0, 119, 121, 3, 16, 8, 0, 120, 119, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 127, 1, 0, 0, 0, 122, 124, 3, 18, 9, 0, 123, 125, 3, 16, 8, 0, 124, 123, 1, 0, 0, 0, 124, 125, 1, 0, 0, 0, 125, 127, 1, 0, 0, 0, 126, 117, 1, 0, 0, 0, 126, 122, 1, 0, 0, 0, 127, 15, 1, 0, 0, 0, 128, 129, 5, 13, 0, 0, 129, 130, 5, 37, 0, 0, 130, 17, 1, 0, 0, 0, 131, 132, 3, 20, 10, 0, 132, 137, 5, 4, 0, 0, 133, 138, 5, 37, 0, 0, 134, 135, 5, 37, 0, 0, 135, 136, 5, 6, 0, 0, 136, 138, 5, 37, 0, 0, 137, 133, 1, 0, 0, 0, 137, 134, 1, 0, 0, 0, 138, 143, 1, 0, 0, 0, 139, 140, 5, 3, 0, 0, 140, 142, 3, 32, 16, 0, 141, 139, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 146, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 147, 5, 5, 0, 0, 147, 178, 1, 0, 0, 0, 148, 149, 3, 20, 10, 0, 149, 154, 5, 4, 0, 0, 150, 155, 5, 37, 0, 0, 151, 152, 5, 37, 0, 0, 152, 153, 5, 6, 0, 0, 153, 155, 5, 37, 0, 0, 154, 150, 1, 0, 0, 0, 154, 151, 1, 0, 0, 0, 155, 160, 1, 0, 0, 0, 156, 157, 5, 3, 0, 0, 157, 159, 3, 32, 16, 0, 158, 156, 1, 0, 0, 0, 159, 162, 1, 0, 0, 0, 160, 158, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 163, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 163, 164, 5, 5, 0, 0, 164, 178, 1, 0, 0, 0, 165, 166, 3, 20, 10, 0, 166, 167, 5, 4, 0, 0, 167, 172, 3, 18, 9, 0, 168, 169, 5, 3, 0, 0, 169, 171, 3, 32, 16, 0, 170, 168, 1, 0, 0, 0, 171, 174, 1, 0, 0, 0, 172, 170, 1, 0, 0, 0, 172, 173, 1, 0, 0, 0, 173, 175, 1, 0, 0, 0, 174, 172, 1, 0, 0, 0, 175, 176, 5, 5, 0, 0, 176, 178, 1, 0, 0, 0, 177, 131, 1, 0, 0, 0, 177, 148, 1, 0, 0, 0, 177, 165, 1, 0, 0, 0, 178, 19, 1, 0, 0, 0, 179, 180, 5, 37, 0, 0, 180, 21, 1, 0, 0, 0, 181, 182, 5, 9, 0, 0, 182, 183, 3, 24, 12, 0, 183, 23, 1, 0, 0, 0, 184, 185, 6, 12, -1, 0, 185, 197, 3, 26, 13, 0, 186, 189, 3, 28, 14, 0, 187, 189, 3, 26, 13, 0, 188, 186, 1, 0, 0, 0, 188, 187, 1, 0, 0, 0, 189, 190, 1, 0, 0, 0, 190, 193, 7, 1, 0, 0, 191, 194, 3, 28, 14, 0, 192, 194, 3, 26, 13, 0, 193, 191, 1, 0, 0, 0, 193, 192, 1, 0, 0, 0, 194, 197, 1, 0, 0, 0, 195, 197, 3, 28, 14, 0, 196, 184, 1, 0, 0, 0, 196, 188, 1, 0, 0, 0, 196, 195, 1, 0, 0, 0, 197, 203, 1, 0, 0, 0, 198, 199, 10, 2, 0, 0, 199, 200, 7, 1, 0, 0, 200, 202, 3, 24, 12, 3, 201, 198, 1, 0, 0, 0, 202, 205, 1, 0, 0, 0, 203, 201, 1, 0, 0, 0, 203, 204, 1, 0, 0, 0, 204, 25, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 206, 207, 5, 37, 0, 0, 207, 208, 3, 30, 15, 0, 208, 209, 3, 32, 16, 0, 209, 217, 1, 0, 0, 0, 210, 211, 5, 37, 0, 0, 211, 212, 5, 6, 0, 0, 212, 213, 5, 37, 0, 0, 213, 214, 3, 30, 15, 0, 214, 215, 3, 32, 16, 0, 215, 217, 1, 0, 0, 0, 216, 206, 1, 0, 0, 0, 216, 210, 1, 0, 0, 0, 217, 27, 1, 0, 0, 0, 218, 219, 5, 4, 0, 0, 219, 220, 3, 24, 12, 0, 220, 221, 5, 5, 0, 0, 221, 29, 1, 0, 0, 0, 222, 223, 7, 2, 0, 0, 223, 31, 1, 0, 0, 0, 224, 225, 7, 3, 0, 0, 225, 33, 1, 0, 0, 0, 226, 227, 5, 11, 0, 0, 227, 230, 3, 14, 7, 0, 228, 230, 1, 0, 0, 0, 229, 226, 1, 0, 0, 0, 229, 228, 1, 0, 0, 0, 230, 35, 1, 0, 0, 0, 28, 42, 50, 58, 63, 73, 77, 84, 89, 94, 98, 107, 111, 117, 120, 124, 126, 137, 143, 154, 160, 172, 177, 188, 193, 196, 203, 216, 229] \ No newline at end of file diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index 20166a97ea07..81e8c10b5289 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -54,105 +54,106 @@ func sqlParserInit() { } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 41, 229, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 41, 232, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 43, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 51, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 59, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 64, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 72, 8, 3, 10, 3, 12, 3, 75, 9, - 3, 1, 3, 3, 3, 78, 8, 3, 1, 4, 1, 4, 1, 4, 4, 4, 83, 8, 4, 11, 4, 12, 4, - 84, 1, 5, 1, 5, 1, 5, 3, 5, 90, 8, 5, 1, 5, 1, 5, 1, 5, 4, 5, 95, 8, 5, - 11, 5, 12, 5, 96, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 105, 8, 6, - 1, 6, 1, 6, 3, 6, 109, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 115, 8, 7, 1, - 7, 3, 7, 118, 8, 7, 1, 7, 1, 7, 3, 7, 122, 8, 7, 3, 7, 124, 8, 7, 1, 8, - 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 135, 8, 9, 1, 9, - 1, 9, 5, 9, 139, 8, 9, 10, 9, 12, 9, 142, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, - 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 152, 8, 9, 1, 9, 1, 9, 5, 9, 156, 8, 9, 10, - 9, 12, 9, 159, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 168, - 8, 9, 10, 9, 12, 9, 171, 9, 9, 1, 9, 1, 9, 3, 9, 175, 8, 9, 1, 10, 1, 10, - 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 186, 8, 12, 1, - 12, 1, 12, 1, 12, 3, 12, 191, 8, 12, 1, 12, 3, 12, 194, 8, 12, 1, 12, 1, - 12, 1, 12, 5, 12, 199, 8, 12, 10, 12, 12, 12, 202, 9, 12, 1, 13, 1, 13, - 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 214, 8, - 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, - 1, 17, 3, 17, 227, 8, 17, 1, 17, 0, 1, 24, 18, 0, 2, 4, 6, 8, 10, 12, 14, - 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, - 14, 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, 40, 240, 0, 36, 1, 0, 0, 0, 2, - 63, 1, 0, 0, 0, 4, 65, 1, 0, 0, 0, 6, 77, 1, 0, 0, 0, 8, 79, 1, 0, 0, 0, - 10, 89, 1, 0, 0, 0, 12, 98, 1, 0, 0, 0, 14, 123, 1, 0, 0, 0, 16, 125, 1, - 0, 0, 0, 18, 174, 1, 0, 0, 0, 20, 176, 1, 0, 0, 0, 22, 178, 1, 0, 0, 0, - 24, 193, 1, 0, 0, 0, 26, 213, 1, 0, 0, 0, 28, 215, 1, 0, 0, 0, 30, 219, - 1, 0, 0, 0, 32, 221, 1, 0, 0, 0, 34, 226, 1, 0, 0, 0, 36, 37, 3, 2, 1, - 0, 37, 38, 5, 0, 0, 1, 38, 1, 1, 0, 0, 0, 39, 40, 5, 8, 0, 0, 40, 42, 3, - 6, 3, 0, 41, 43, 3, 22, 11, 0, 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, - 43, 44, 1, 0, 0, 0, 44, 45, 5, 7, 0, 0, 45, 64, 1, 0, 0, 0, 46, 47, 5, - 8, 0, 0, 47, 48, 3, 8, 4, 0, 48, 50, 3, 4, 2, 0, 49, 51, 3, 22, 11, 0, - 50, 49, 1, 0, 0, 0, 50, 51, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 53, 5, - 7, 0, 0, 53, 64, 1, 0, 0, 0, 54, 55, 5, 8, 0, 0, 55, 56, 3, 10, 5, 0, 56, - 58, 3, 4, 2, 0, 57, 59, 3, 22, 11, 0, 58, 57, 1, 0, 0, 0, 58, 59, 1, 0, - 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 3, 34, 17, 0, 61, 62, 5, 7, 0, 0, 62, - 64, 1, 0, 0, 0, 63, 39, 1, 0, 0, 0, 63, 46, 1, 0, 0, 0, 63, 54, 1, 0, 0, - 0, 64, 3, 1, 0, 0, 0, 65, 66, 5, 10, 0, 0, 66, 67, 5, 38, 0, 0, 67, 5, - 1, 0, 0, 0, 68, 73, 3, 14, 7, 0, 69, 70, 5, 3, 0, 0, 70, 72, 3, 14, 7, - 0, 71, 69, 1, 0, 0, 0, 72, 75, 1, 0, 0, 0, 73, 71, 1, 0, 0, 0, 73, 74, - 1, 0, 0, 0, 74, 78, 1, 0, 0, 0, 75, 73, 1, 0, 0, 0, 76, 78, 5, 41, 0, 0, - 77, 68, 1, 0, 0, 0, 77, 76, 1, 0, 0, 0, 78, 7, 1, 0, 0, 0, 79, 82, 3, 12, - 6, 0, 80, 81, 5, 3, 0, 0, 81, 83, 3, 12, 6, 0, 82, 80, 1, 0, 0, 0, 83, - 84, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 9, 1, 0, 0, - 0, 86, 87, 3, 14, 7, 0, 87, 88, 5, 3, 0, 0, 88, 90, 1, 0, 0, 0, 89, 86, - 1, 0, 0, 0, 89, 90, 1, 0, 0, 0, 90, 91, 1, 0, 0, 0, 91, 94, 3, 12, 6, 0, - 92, 93, 5, 3, 0, 0, 93, 95, 3, 12, 6, 0, 94, 92, 1, 0, 0, 0, 95, 96, 1, - 0, 0, 0, 96, 94, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 11, 1, 0, 0, 0, 98, - 99, 7, 0, 0, 0, 99, 104, 5, 4, 0, 0, 100, 105, 5, 37, 0, 0, 101, 102, 5, - 37, 0, 0, 102, 103, 5, 6, 0, 0, 103, 105, 5, 37, 0, 0, 104, 100, 1, 0, - 0, 0, 104, 101, 1, 0, 0, 0, 105, 106, 1, 0, 0, 0, 106, 108, 5, 5, 0, 0, - 107, 109, 3, 16, 8, 0, 108, 107, 1, 0, 0, 0, 108, 109, 1, 0, 0, 0, 109, - 13, 1, 0, 0, 0, 110, 115, 5, 37, 0, 0, 111, 112, 5, 37, 0, 0, 112, 113, - 5, 6, 0, 0, 113, 115, 5, 37, 0, 0, 114, 110, 1, 0, 0, 0, 114, 111, 1, 0, - 0, 0, 115, 117, 1, 0, 0, 0, 116, 118, 3, 16, 8, 0, 117, 116, 1, 0, 0, 0, - 117, 118, 1, 0, 0, 0, 118, 124, 1, 0, 0, 0, 119, 121, 3, 18, 9, 0, 120, - 122, 3, 16, 8, 0, 121, 120, 1, 0, 0, 0, 121, 122, 1, 0, 0, 0, 122, 124, - 1, 0, 0, 0, 123, 114, 1, 0, 0, 0, 123, 119, 1, 0, 0, 0, 124, 15, 1, 0, - 0, 0, 125, 126, 5, 13, 0, 0, 126, 127, 5, 37, 0, 0, 127, 17, 1, 0, 0, 0, - 128, 129, 3, 20, 10, 0, 129, 134, 5, 4, 0, 0, 130, 135, 5, 37, 0, 0, 131, - 132, 5, 37, 0, 0, 132, 133, 5, 6, 0, 0, 133, 135, 5, 37, 0, 0, 134, 130, - 1, 0, 0, 0, 134, 131, 1, 0, 0, 0, 135, 140, 1, 0, 0, 0, 136, 137, 5, 3, - 0, 0, 137, 139, 3, 32, 16, 0, 138, 136, 1, 0, 0, 0, 139, 142, 1, 0, 0, - 0, 140, 138, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 143, 1, 0, 0, 0, 142, - 140, 1, 0, 0, 0, 143, 144, 5, 5, 0, 0, 144, 175, 1, 0, 0, 0, 145, 146, - 3, 20, 10, 0, 146, 151, 5, 4, 0, 0, 147, 152, 5, 37, 0, 0, 148, 149, 5, - 37, 0, 0, 149, 150, 5, 6, 0, 0, 150, 152, 5, 37, 0, 0, 151, 147, 1, 0, - 0, 0, 151, 148, 1, 0, 0, 0, 152, 157, 1, 0, 0, 0, 153, 154, 5, 3, 0, 0, - 154, 156, 3, 32, 16, 0, 155, 153, 1, 0, 0, 0, 156, 159, 1, 0, 0, 0, 157, - 155, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, 160, 1, 0, 0, 0, 159, 157, - 1, 0, 0, 0, 160, 161, 5, 5, 0, 0, 161, 175, 1, 0, 0, 0, 162, 163, 3, 20, - 10, 0, 163, 164, 5, 4, 0, 0, 164, 169, 3, 18, 9, 0, 165, 166, 5, 3, 0, - 0, 166, 168, 3, 32, 16, 0, 167, 165, 1, 0, 0, 0, 168, 171, 1, 0, 0, 0, - 169, 167, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 172, 1, 0, 0, 0, 171, - 169, 1, 0, 0, 0, 172, 173, 5, 5, 0, 0, 173, 175, 1, 0, 0, 0, 174, 128, - 1, 0, 0, 0, 174, 145, 1, 0, 0, 0, 174, 162, 1, 0, 0, 0, 175, 19, 1, 0, - 0, 0, 176, 177, 5, 37, 0, 0, 177, 21, 1, 0, 0, 0, 178, 179, 5, 9, 0, 0, - 179, 180, 3, 24, 12, 0, 180, 23, 1, 0, 0, 0, 181, 182, 6, 12, -1, 0, 182, - 194, 3, 26, 13, 0, 183, 186, 3, 28, 14, 0, 184, 186, 3, 26, 13, 0, 185, - 183, 1, 0, 0, 0, 185, 184, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 190, - 7, 1, 0, 0, 188, 191, 3, 28, 14, 0, 189, 191, 3, 26, 13, 0, 190, 188, 1, - 0, 0, 0, 190, 189, 1, 0, 0, 0, 191, 194, 1, 0, 0, 0, 192, 194, 3, 28, 14, - 0, 193, 181, 1, 0, 0, 0, 193, 185, 1, 0, 0, 0, 193, 192, 1, 0, 0, 0, 194, - 200, 1, 0, 0, 0, 195, 196, 10, 2, 0, 0, 196, 197, 7, 1, 0, 0, 197, 199, - 3, 24, 12, 3, 198, 195, 1, 0, 0, 0, 199, 202, 1, 0, 0, 0, 200, 198, 1, - 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 25, 1, 0, 0, 0, 202, 200, 1, 0, 0, - 0, 203, 204, 5, 37, 0, 0, 204, 205, 3, 30, 15, 0, 205, 206, 3, 32, 16, - 0, 206, 214, 1, 0, 0, 0, 207, 208, 5, 37, 0, 0, 208, 209, 5, 6, 0, 0, 209, - 210, 5, 37, 0, 0, 210, 211, 3, 30, 15, 0, 211, 212, 3, 32, 16, 0, 212, - 214, 1, 0, 0, 0, 213, 203, 1, 0, 0, 0, 213, 207, 1, 0, 0, 0, 214, 27, 1, - 0, 0, 0, 215, 216, 5, 4, 0, 0, 216, 217, 3, 24, 12, 0, 217, 218, 5, 5, - 0, 0, 218, 29, 1, 0, 0, 0, 219, 220, 7, 2, 0, 0, 220, 31, 1, 0, 0, 0, 221, - 222, 7, 3, 0, 0, 222, 33, 1, 0, 0, 0, 223, 224, 5, 11, 0, 0, 224, 227, - 3, 14, 7, 0, 225, 227, 1, 0, 0, 0, 226, 223, 1, 0, 0, 0, 226, 225, 1, 0, - 0, 0, 227, 35, 1, 0, 0, 0, 27, 42, 50, 58, 63, 73, 77, 84, 89, 96, 104, - 108, 114, 117, 121, 123, 134, 140, 151, 157, 169, 174, 185, 190, 193, 200, - 213, 226, + 3, 1, 3, 3, 3, 78, 8, 3, 1, 4, 1, 4, 1, 4, 5, 4, 83, 8, 4, 10, 4, 12, 4, + 86, 9, 4, 1, 5, 1, 5, 3, 5, 90, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 95, 8, 5, + 5, 5, 97, 8, 5, 10, 5, 12, 5, 100, 9, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, + 1, 6, 3, 6, 108, 8, 6, 1, 6, 1, 6, 3, 6, 112, 8, 6, 1, 7, 1, 7, 1, 7, 1, + 7, 3, 7, 118, 8, 7, 1, 7, 3, 7, 121, 8, 7, 1, 7, 1, 7, 3, 7, 125, 8, 7, + 3, 7, 127, 8, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, + 3, 9, 138, 8, 9, 1, 9, 1, 9, 5, 9, 142, 8, 9, 10, 9, 12, 9, 145, 9, 9, + 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 155, 8, 9, 1, 9, + 1, 9, 5, 9, 159, 8, 9, 10, 9, 12, 9, 162, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, + 1, 9, 1, 9, 1, 9, 5, 9, 171, 8, 9, 10, 9, 12, 9, 174, 9, 9, 1, 9, 1, 9, + 3, 9, 178, 8, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, + 1, 12, 3, 12, 189, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 194, 8, 12, 1, 12, + 3, 12, 197, 8, 12, 1, 12, 1, 12, 1, 12, 5, 12, 202, 8, 12, 10, 12, 12, + 12, 205, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, + 1, 13, 1, 13, 3, 13, 217, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, + 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 3, 17, 230, 8, 17, 1, 17, 0, 1, + 24, 18, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, + 34, 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, 14, 2, 0, 15, 23, 28, 29, 1, + 0, 38, 40, 244, 0, 36, 1, 0, 0, 0, 2, 63, 1, 0, 0, 0, 4, 65, 1, 0, 0, 0, + 6, 77, 1, 0, 0, 0, 8, 79, 1, 0, 0, 0, 10, 89, 1, 0, 0, 0, 12, 101, 1, 0, + 0, 0, 14, 126, 1, 0, 0, 0, 16, 128, 1, 0, 0, 0, 18, 177, 1, 0, 0, 0, 20, + 179, 1, 0, 0, 0, 22, 181, 1, 0, 0, 0, 24, 196, 1, 0, 0, 0, 26, 216, 1, + 0, 0, 0, 28, 218, 1, 0, 0, 0, 30, 222, 1, 0, 0, 0, 32, 224, 1, 0, 0, 0, + 34, 229, 1, 0, 0, 0, 36, 37, 3, 2, 1, 0, 37, 38, 5, 0, 0, 1, 38, 1, 1, + 0, 0, 0, 39, 40, 5, 8, 0, 0, 40, 42, 3, 6, 3, 0, 41, 43, 3, 22, 11, 0, + 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 45, 5, + 7, 0, 0, 45, 64, 1, 0, 0, 0, 46, 47, 5, 8, 0, 0, 47, 48, 3, 8, 4, 0, 48, + 50, 3, 4, 2, 0, 49, 51, 3, 22, 11, 0, 50, 49, 1, 0, 0, 0, 50, 51, 1, 0, + 0, 0, 51, 52, 1, 0, 0, 0, 52, 53, 5, 7, 0, 0, 53, 64, 1, 0, 0, 0, 54, 55, + 5, 8, 0, 0, 55, 56, 3, 10, 5, 0, 56, 58, 3, 4, 2, 0, 57, 59, 3, 22, 11, + 0, 58, 57, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, + 3, 34, 17, 0, 61, 62, 5, 7, 0, 0, 62, 64, 1, 0, 0, 0, 63, 39, 1, 0, 0, + 0, 63, 46, 1, 0, 0, 0, 63, 54, 1, 0, 0, 0, 64, 3, 1, 0, 0, 0, 65, 66, 5, + 10, 0, 0, 66, 67, 5, 38, 0, 0, 67, 5, 1, 0, 0, 0, 68, 73, 3, 14, 7, 0, + 69, 70, 5, 3, 0, 0, 70, 72, 3, 14, 7, 0, 71, 69, 1, 0, 0, 0, 72, 75, 1, + 0, 0, 0, 73, 71, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 78, 1, 0, 0, 0, 75, + 73, 1, 0, 0, 0, 76, 78, 5, 41, 0, 0, 77, 68, 1, 0, 0, 0, 77, 76, 1, 0, + 0, 0, 78, 7, 1, 0, 0, 0, 79, 84, 3, 12, 6, 0, 80, 81, 5, 3, 0, 0, 81, 83, + 3, 12, 6, 0, 82, 80, 1, 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, + 84, 85, 1, 0, 0, 0, 85, 9, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 90, 3, 14, + 7, 0, 88, 90, 3, 12, 6, 0, 89, 87, 1, 0, 0, 0, 89, 88, 1, 0, 0, 0, 90, + 98, 1, 0, 0, 0, 91, 94, 5, 3, 0, 0, 92, 95, 3, 12, 6, 0, 93, 95, 3, 14, + 7, 0, 94, 92, 1, 0, 0, 0, 94, 93, 1, 0, 0, 0, 95, 97, 1, 0, 0, 0, 96, 91, + 1, 0, 0, 0, 97, 100, 1, 0, 0, 0, 98, 96, 1, 0, 0, 0, 98, 99, 1, 0, 0, 0, + 99, 11, 1, 0, 0, 0, 100, 98, 1, 0, 0, 0, 101, 102, 7, 0, 0, 0, 102, 107, + 5, 4, 0, 0, 103, 108, 5, 37, 0, 0, 104, 105, 5, 37, 0, 0, 105, 106, 5, + 6, 0, 0, 106, 108, 5, 37, 0, 0, 107, 103, 1, 0, 0, 0, 107, 104, 1, 0, 0, + 0, 108, 109, 1, 0, 0, 0, 109, 111, 5, 5, 0, 0, 110, 112, 3, 16, 8, 0, 111, + 110, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 13, 1, 0, 0, 0, 113, 118, 5, + 37, 0, 0, 114, 115, 5, 37, 0, 0, 115, 116, 5, 6, 0, 0, 116, 118, 5, 37, + 0, 0, 117, 113, 1, 0, 0, 0, 117, 114, 1, 0, 0, 0, 118, 120, 1, 0, 0, 0, + 119, 121, 3, 16, 8, 0, 120, 119, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, + 127, 1, 0, 0, 0, 122, 124, 3, 18, 9, 0, 123, 125, 3, 16, 8, 0, 124, 123, + 1, 0, 0, 0, 124, 125, 1, 0, 0, 0, 125, 127, 1, 0, 0, 0, 126, 117, 1, 0, + 0, 0, 126, 122, 1, 0, 0, 0, 127, 15, 1, 0, 0, 0, 128, 129, 5, 13, 0, 0, + 129, 130, 5, 37, 0, 0, 130, 17, 1, 0, 0, 0, 131, 132, 3, 20, 10, 0, 132, + 137, 5, 4, 0, 0, 133, 138, 5, 37, 0, 0, 134, 135, 5, 37, 0, 0, 135, 136, + 5, 6, 0, 0, 136, 138, 5, 37, 0, 0, 137, 133, 1, 0, 0, 0, 137, 134, 1, 0, + 0, 0, 138, 143, 1, 0, 0, 0, 139, 140, 5, 3, 0, 0, 140, 142, 3, 32, 16, + 0, 141, 139, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, + 144, 1, 0, 0, 0, 144, 146, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 147, + 5, 5, 0, 0, 147, 178, 1, 0, 0, 0, 148, 149, 3, 20, 10, 0, 149, 154, 5, + 4, 0, 0, 150, 155, 5, 37, 0, 0, 151, 152, 5, 37, 0, 0, 152, 153, 5, 6, + 0, 0, 153, 155, 5, 37, 0, 0, 154, 150, 1, 0, 0, 0, 154, 151, 1, 0, 0, 0, + 155, 160, 1, 0, 0, 0, 156, 157, 5, 3, 0, 0, 157, 159, 3, 32, 16, 0, 158, + 156, 1, 0, 0, 0, 159, 162, 1, 0, 0, 0, 160, 158, 1, 0, 0, 0, 160, 161, + 1, 0, 0, 0, 161, 163, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 163, 164, 5, 5, + 0, 0, 164, 178, 1, 0, 0, 0, 165, 166, 3, 20, 10, 0, 166, 167, 5, 4, 0, + 0, 167, 172, 3, 18, 9, 0, 168, 169, 5, 3, 0, 0, 169, 171, 3, 32, 16, 0, + 170, 168, 1, 0, 0, 0, 171, 174, 1, 0, 0, 0, 172, 170, 1, 0, 0, 0, 172, + 173, 1, 0, 0, 0, 173, 175, 1, 0, 0, 0, 174, 172, 1, 0, 0, 0, 175, 176, + 5, 5, 0, 0, 176, 178, 1, 0, 0, 0, 177, 131, 1, 0, 0, 0, 177, 148, 1, 0, + 0, 0, 177, 165, 1, 0, 0, 0, 178, 19, 1, 0, 0, 0, 179, 180, 5, 37, 0, 0, + 180, 21, 1, 0, 0, 0, 181, 182, 5, 9, 0, 0, 182, 183, 3, 24, 12, 0, 183, + 23, 1, 0, 0, 0, 184, 185, 6, 12, -1, 0, 185, 197, 3, 26, 13, 0, 186, 189, + 3, 28, 14, 0, 187, 189, 3, 26, 13, 0, 188, 186, 1, 0, 0, 0, 188, 187, 1, + 0, 0, 0, 189, 190, 1, 0, 0, 0, 190, 193, 7, 1, 0, 0, 191, 194, 3, 28, 14, + 0, 192, 194, 3, 26, 13, 0, 193, 191, 1, 0, 0, 0, 193, 192, 1, 0, 0, 0, + 194, 197, 1, 0, 0, 0, 195, 197, 3, 28, 14, 0, 196, 184, 1, 0, 0, 0, 196, + 188, 1, 0, 0, 0, 196, 195, 1, 0, 0, 0, 197, 203, 1, 0, 0, 0, 198, 199, + 10, 2, 0, 0, 199, 200, 7, 1, 0, 0, 200, 202, 3, 24, 12, 3, 201, 198, 1, + 0, 0, 0, 202, 205, 1, 0, 0, 0, 203, 201, 1, 0, 0, 0, 203, 204, 1, 0, 0, + 0, 204, 25, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 206, 207, 5, 37, 0, 0, 207, + 208, 3, 30, 15, 0, 208, 209, 3, 32, 16, 0, 209, 217, 1, 0, 0, 0, 210, 211, + 5, 37, 0, 0, 211, 212, 5, 6, 0, 0, 212, 213, 5, 37, 0, 0, 213, 214, 3, + 30, 15, 0, 214, 215, 3, 32, 16, 0, 215, 217, 1, 0, 0, 0, 216, 206, 1, 0, + 0, 0, 216, 210, 1, 0, 0, 0, 217, 27, 1, 0, 0, 0, 218, 219, 5, 4, 0, 0, + 219, 220, 3, 24, 12, 0, 220, 221, 5, 5, 0, 0, 221, 29, 1, 0, 0, 0, 222, + 223, 7, 2, 0, 0, 223, 31, 1, 0, 0, 0, 224, 225, 7, 3, 0, 0, 225, 33, 1, + 0, 0, 0, 226, 227, 5, 11, 0, 0, 227, 230, 3, 14, 7, 0, 228, 230, 1, 0, + 0, 0, 229, 226, 1, 0, 0, 0, 229, 228, 1, 0, 0, 0, 230, 35, 1, 0, 0, 0, + 28, 42, 50, 58, 63, 73, 77, 84, 89, 94, 98, 107, 111, 117, 120, 124, 126, + 137, 143, 154, 160, 172, 177, 188, 193, 196, 203, 216, 229, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -1280,11 +1281,11 @@ func (p *SqlParser) AggregationColumns() (localctx IAggregationColumnsContext) { p.SetState(79) p.AggregationColumn() } - p.SetState(82) + p.SetState(84) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - for ok := true; ok; ok = _la == SqlParserCOMMA { + for _la == SqlParserCOMMA { { p.SetState(80) p.Match(SqlParserCOMMA) @@ -1294,7 +1295,7 @@ func (p *SqlParser) AggregationColumns() (localctx IAggregationColumnsContext) { p.AggregationColumn() } - p.SetState(84) + p.SetState(86) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } @@ -1370,20 +1371,20 @@ func (s *SelectGroupByAggregationsContext) GetRuleContext() antlr.RuleContext { return s } -func (s *SelectGroupByAggregationsContext) AllAggregationColumn() []IAggregationColumnContext { +func (s *SelectGroupByAggregationsContext) AllColumn() []IColumnContext { children := s.GetChildren() len := 0 for _, ctx := range children { - if _, ok := ctx.(IAggregationColumnContext); ok { + if _, ok := ctx.(IColumnContext); ok { len++ } } - tst := make([]IAggregationColumnContext, len) + tst := make([]IColumnContext, len) i := 0 for _, ctx := range children { - if t, ok := ctx.(IAggregationColumnContext); ok { - tst[i] = t.(IAggregationColumnContext) + if t, ok := ctx.(IColumnContext); ok { + tst[i] = t.(IColumnContext) i++ } } @@ -1391,11 +1392,11 @@ func (s *SelectGroupByAggregationsContext) AllAggregationColumn() []IAggregation return tst } -func (s *SelectGroupByAggregationsContext) AggregationColumn(i int) IAggregationColumnContext { +func (s *SelectGroupByAggregationsContext) Column(i int) IColumnContext { var t antlr.RuleContext j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAggregationColumnContext); ok { + if _, ok := ctx.(IColumnContext); ok { if j == i { t = ctx.(antlr.RuleContext) break @@ -1408,15 +1409,40 @@ func (s *SelectGroupByAggregationsContext) AggregationColumn(i int) IAggregation return nil } - return t.(IAggregationColumnContext) + return t.(IColumnContext) } -func (s *SelectGroupByAggregationsContext) Column() IColumnContext { +func (s *SelectGroupByAggregationsContext) AllAggregationColumn() []IAggregationColumnContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IAggregationColumnContext); ok { + len++ + } + } + + tst := make([]IAggregationColumnContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IAggregationColumnContext); ok { + tst[i] = t.(IAggregationColumnContext) + i++ + } + } + + return tst +} + +func (s *SelectGroupByAggregationsContext) AggregationColumn(i int) IAggregationColumnContext { var t antlr.RuleContext + j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumnContext); ok { - t = ctx.(antlr.RuleContext) - break + if _, ok := ctx.(IAggregationColumnContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ } } @@ -1424,7 +1450,7 @@ func (s *SelectGroupByAggregationsContext) Column() IColumnContext { return nil } - return t.(IColumnContext) + return t.(IAggregationColumnContext) } func (s *SelectGroupByAggregationsContext) AllCOMMA() []antlr.TerminalNode { @@ -1473,38 +1499,53 @@ func (p *SqlParser) GroupByAggregationColumns() (localctx IGroupByAggregationCol p.EnterOuterAlt(localctx, 1) p.SetState(89) p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - if _la == SqlParserIDENTIFIER { + switch p.GetTokenStream().LA(1) { + case SqlParserIDENTIFIER: { - p.SetState(86) + p.SetState(87) p.Column() } + + case SqlParserK_COUNT, SqlParserK_SUM, SqlParserK_MIN, SqlParserK_MAX, SqlParserK_AVG: { - p.SetState(87) - p.Match(SqlParserCOMMA) + p.SetState(88) + p.AggregationColumn() } + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) } - { - p.SetState(91) - p.AggregationColumn() - } - p.SetState(94) + p.SetState(98) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - for ok := true; ok; ok = _la == SqlParserCOMMA { + for _la == SqlParserCOMMA { { - p.SetState(92) + p.SetState(91) p.Match(SqlParserCOMMA) } - { - p.SetState(93) - p.AggregationColumn() + p.SetState(94) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_COUNT, SqlParserK_SUM, SqlParserK_MIN, SqlParserK_MAX, SqlParserK_AVG: + { + p.SetState(92) + p.AggregationColumn() + } + + case SqlParserIDENTIFIER: + { + p.SetState(93) + p.Column() + } + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) } - p.SetState(96) + p.SetState(100) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } @@ -1650,7 +1691,7 @@ func (p *SqlParser) AggregationColumn() (localctx IAggregationColumnContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(98) + p.SetState(101) _la = p.GetTokenStream().LA(1) if !(((_la-30)&-(0x1f+1)) == 0 && ((1< 1 { + nested, ok := attr.Get(fieldName) + + if ok && nested.Type() != pcommon.ValueTypeMap { + return fmt.Errorf("field %q already exists and isn't nested", fieldName) + } + + if !ok { + nested = pcommon.NewValueMap() + nested.MapVal().Insert(ctx.IDENTIFIER(1).GetText(), pcommon.NewValueString(value)) + } + + attr.Insert(fieldName, nested) + return nil + } + + _, ok := attr.Get(fieldName) + if ok { + return fmt.Errorf("field %q is duplicated. Use an alias", fieldName) + } + attr.Insert(fieldName, pcommon.NewValueString(value)) + + return nil +} +func insertAggregationColumnToRecord(ctx *AggregationColumnContext, attr pcommon.Map, value float64) error { if ctx.Alias() != nil { attr.Insert(ctx.Alias().GetStop().GetText(), pcommon.NewValueDouble(value)) return nil @@ -341,14 +370,6 @@ func getAttributeValueForAggregation(ctx *AggregationColumnContext, attr pcommon } -func getColumnAggregationCtxKey(ctx *AggregationColumnContext) string { - key := ctx.IDENTIFIER(0).GetText() - if len(ctx.AllIDENTIFIER()) > 1 { - return key + "." + ctx.IDENTIFIER(1).GetText() - } - return key -} - func getAttributeValue(column IColumnContext, attr pcommon.Map) (string, pcommon.Value, error) { switch col := column.(type) { case *IdentifierColumnContext: @@ -460,3 +481,89 @@ func findSimpleFuncCtx(ctx *RecursiveFunctionContext) *SimpleFunctionContext { return nil } + +func getGroupByFieldFromAggregationCtx(ctx *SelectGroupByAggregationsContext) (string, error) { + for _, node := range ctx.GetParent().GetChildren() { + groupByCtx, ok := node.(*GroupByContext) + if !ok { + continue + } + idCol, ok := groupByCtx.Column().(*IdentifierColumnContext) + if !ok { + return ",", fmt.Errorf("unknown group by clause field type") + } + return getFieldNameFromIDColumnCtx(idCol), nil + } + + return "", fmt.Errorf("group by field missed") + +} + +func getFieldNameFromIDColumnCtx(col *IdentifierColumnContext) string { + fieldName := col.IDENTIFIER(0).GetText() + if len(col.AllIDENTIFIER()) > 1 { + return fieldName + "." + col.IDENTIFIER(1).GetText() + } + return fieldName +} + +func calculateGroupByAggregations(ctx *SelectGroupByAggregationsContext, key string, rec plog.LogRecord, ls plog.LogRecordSlice) error { + for _, aggregation := range ctx.AllAggregationColumn() { + + col, ok := aggregation.(*AggregationColumnContext) + if !ok { + return fmt.Errorf("unknown aggragation column type") + } + res, err := getFieldAggregatedValue(col, ls) + if err != nil { + return err + } + if err = insertAggregationColumnToRecord(col, rec.Attributes(), res); err != nil { + return err + } + } + + if len(ctx.AllColumn()) == 0 { + return nil + } + + for _, nonAgrCol := range ctx.AllColumn() { + groupByFieldName, err := getGroupByFieldFromAggregationCtx(ctx) + if err != nil { + return err + } + + selectField, ok := nonAgrCol.(*IdentifierColumnContext) + if !ok { + return fmt.Errorf("field %q in select list is inknown type", nonAgrCol.GetText()) + } + + selectFieldName := getFieldNameFromIDColumnCtx(selectField) + if strings.Compare(groupByFieldName, selectFieldName) != 0 { + return fmt.Errorf("you must use the same field for group by %q clause and select list", groupByFieldName) + } + + if err := insertIdentifierColumnToRecord(selectField, rec.Attributes(), key); err != nil { + return err + } + } + + return nil +} + +func calculateAggregations(ctx *SelectAggregationsContext, rec plog.LogRecord, ls plog.LogRecordSlice) error { + for _, aggregation := range ctx.AllAggregationColumn() { + col, ok := aggregation.(*AggregationColumnContext) + if !ok { + return fmt.Errorf("unknown aggragation column type") + } + res, err := getFieldAggregatedValue(col, ls) + if err != nil { + return err + } + if err = insertAggregationColumnToRecord(col, rec.Attributes(), res); err != nil { + return err + } + } + return nil +} diff --git a/processor/stream_processor/processor.go b/processor/stream_processor/processor.go index 05fae4fcef0e..7b70bdb87a2e 100644 --- a/processor/stream_processor/processor.go +++ b/processor/stream_processor/processor.go @@ -17,7 +17,7 @@ type sqlStreamProcessor struct { nextConsumer consumer.Logs in, out chan plog.LogRecordSlice outErr chan error - processor *parser.SqlStreamVisitor + processor *parser.SQLStreamVisitor } func newSqlStreamProcessor(next consumer.Logs, logger *zap.Logger, cfg *Config) *sqlStreamProcessor { From 6e294415b3a35f6065411112ae49b10f5f10019d Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Thu, 29 Sep 2022 20:54:47 +0300 Subject: [PATCH 30/31] aggregation fixes/tests --- processor/stream_processor/Sql.g4 | 3 +- processor/stream_processor/parser/Sql.interp | 2 +- .../stream_processor/parser/sql_parser.go | 185 ++++++++---------- .../parser/sql_stream_function_test.go | 4 +- .../parser/sql_stream_group_by_test.go | 7 +- .../parser/sql_stream_tumbling_test.go | 141 +++++++++++-- .../parser/sql_stream_visitor.go | 150 +++++++++----- .../parser/sql_stream_visitor_test.go | 12 +- .../stream_processor/parser/visitor_utils.go | 49 +++-- 9 files changed, 356 insertions(+), 197 deletions(-) diff --git a/processor/stream_processor/Sql.g4 b/processor/stream_processor/Sql.g4 index a829cc613bb6..34e07eeca9be 100644 --- a/processor/stream_processor/Sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -24,7 +24,7 @@ resultColumns aggregationColumns - : aggregationColumn (COMMA aggregationColumn)* #selectAggregations + : aggregationColumn (COMMA aggregationColumn)* #selectAggregations ; groupByAggregationColumns @@ -93,7 +93,6 @@ literalValue groupBy : K_GROUP_BY column - | ; diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp index 83c0d468c1c4..bcb64eee286b 100644 --- a/processor/stream_processor/parser/Sql.interp +++ b/processor/stream_processor/parser/Sql.interp @@ -108,4 +108,4 @@ groupBy atn: -[4, 1, 41, 232, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 43, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 51, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 59, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 64, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 72, 8, 3, 10, 3, 12, 3, 75, 9, 3, 1, 3, 3, 3, 78, 8, 3, 1, 4, 1, 4, 1, 4, 5, 4, 83, 8, 4, 10, 4, 12, 4, 86, 9, 4, 1, 5, 1, 5, 3, 5, 90, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 95, 8, 5, 5, 5, 97, 8, 5, 10, 5, 12, 5, 100, 9, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 108, 8, 6, 1, 6, 1, 6, 3, 6, 112, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 118, 8, 7, 1, 7, 3, 7, 121, 8, 7, 1, 7, 1, 7, 3, 7, 125, 8, 7, 3, 7, 127, 8, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 138, 8, 9, 1, 9, 1, 9, 5, 9, 142, 8, 9, 10, 9, 12, 9, 145, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 155, 8, 9, 1, 9, 1, 9, 5, 9, 159, 8, 9, 10, 9, 12, 9, 162, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 171, 8, 9, 10, 9, 12, 9, 174, 9, 9, 1, 9, 1, 9, 3, 9, 178, 8, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 189, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 194, 8, 12, 1, 12, 3, 12, 197, 8, 12, 1, 12, 1, 12, 1, 12, 5, 12, 202, 8, 12, 10, 12, 12, 12, 205, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 217, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 3, 17, 230, 8, 17, 1, 17, 0, 1, 24, 18, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, 40, 244, 0, 36, 1, 0, 0, 0, 2, 63, 1, 0, 0, 0, 4, 65, 1, 0, 0, 0, 6, 77, 1, 0, 0, 0, 8, 79, 1, 0, 0, 0, 10, 89, 1, 0, 0, 0, 12, 101, 1, 0, 0, 0, 14, 126, 1, 0, 0, 0, 16, 128, 1, 0, 0, 0, 18, 177, 1, 0, 0, 0, 20, 179, 1, 0, 0, 0, 22, 181, 1, 0, 0, 0, 24, 196, 1, 0, 0, 0, 26, 216, 1, 0, 0, 0, 28, 218, 1, 0, 0, 0, 30, 222, 1, 0, 0, 0, 32, 224, 1, 0, 0, 0, 34, 229, 1, 0, 0, 0, 36, 37, 3, 2, 1, 0, 37, 38, 5, 0, 0, 1, 38, 1, 1, 0, 0, 0, 39, 40, 5, 8, 0, 0, 40, 42, 3, 6, 3, 0, 41, 43, 3, 22, 11, 0, 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 45, 5, 7, 0, 0, 45, 64, 1, 0, 0, 0, 46, 47, 5, 8, 0, 0, 47, 48, 3, 8, 4, 0, 48, 50, 3, 4, 2, 0, 49, 51, 3, 22, 11, 0, 50, 49, 1, 0, 0, 0, 50, 51, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 53, 5, 7, 0, 0, 53, 64, 1, 0, 0, 0, 54, 55, 5, 8, 0, 0, 55, 56, 3, 10, 5, 0, 56, 58, 3, 4, 2, 0, 57, 59, 3, 22, 11, 0, 58, 57, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 3, 34, 17, 0, 61, 62, 5, 7, 0, 0, 62, 64, 1, 0, 0, 0, 63, 39, 1, 0, 0, 0, 63, 46, 1, 0, 0, 0, 63, 54, 1, 0, 0, 0, 64, 3, 1, 0, 0, 0, 65, 66, 5, 10, 0, 0, 66, 67, 5, 38, 0, 0, 67, 5, 1, 0, 0, 0, 68, 73, 3, 14, 7, 0, 69, 70, 5, 3, 0, 0, 70, 72, 3, 14, 7, 0, 71, 69, 1, 0, 0, 0, 72, 75, 1, 0, 0, 0, 73, 71, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 78, 1, 0, 0, 0, 75, 73, 1, 0, 0, 0, 76, 78, 5, 41, 0, 0, 77, 68, 1, 0, 0, 0, 77, 76, 1, 0, 0, 0, 78, 7, 1, 0, 0, 0, 79, 84, 3, 12, 6, 0, 80, 81, 5, 3, 0, 0, 81, 83, 3, 12, 6, 0, 82, 80, 1, 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 9, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 90, 3, 14, 7, 0, 88, 90, 3, 12, 6, 0, 89, 87, 1, 0, 0, 0, 89, 88, 1, 0, 0, 0, 90, 98, 1, 0, 0, 0, 91, 94, 5, 3, 0, 0, 92, 95, 3, 12, 6, 0, 93, 95, 3, 14, 7, 0, 94, 92, 1, 0, 0, 0, 94, 93, 1, 0, 0, 0, 95, 97, 1, 0, 0, 0, 96, 91, 1, 0, 0, 0, 97, 100, 1, 0, 0, 0, 98, 96, 1, 0, 0, 0, 98, 99, 1, 0, 0, 0, 99, 11, 1, 0, 0, 0, 100, 98, 1, 0, 0, 0, 101, 102, 7, 0, 0, 0, 102, 107, 5, 4, 0, 0, 103, 108, 5, 37, 0, 0, 104, 105, 5, 37, 0, 0, 105, 106, 5, 6, 0, 0, 106, 108, 5, 37, 0, 0, 107, 103, 1, 0, 0, 0, 107, 104, 1, 0, 0, 0, 108, 109, 1, 0, 0, 0, 109, 111, 5, 5, 0, 0, 110, 112, 3, 16, 8, 0, 111, 110, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 13, 1, 0, 0, 0, 113, 118, 5, 37, 0, 0, 114, 115, 5, 37, 0, 0, 115, 116, 5, 6, 0, 0, 116, 118, 5, 37, 0, 0, 117, 113, 1, 0, 0, 0, 117, 114, 1, 0, 0, 0, 118, 120, 1, 0, 0, 0, 119, 121, 3, 16, 8, 0, 120, 119, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 127, 1, 0, 0, 0, 122, 124, 3, 18, 9, 0, 123, 125, 3, 16, 8, 0, 124, 123, 1, 0, 0, 0, 124, 125, 1, 0, 0, 0, 125, 127, 1, 0, 0, 0, 126, 117, 1, 0, 0, 0, 126, 122, 1, 0, 0, 0, 127, 15, 1, 0, 0, 0, 128, 129, 5, 13, 0, 0, 129, 130, 5, 37, 0, 0, 130, 17, 1, 0, 0, 0, 131, 132, 3, 20, 10, 0, 132, 137, 5, 4, 0, 0, 133, 138, 5, 37, 0, 0, 134, 135, 5, 37, 0, 0, 135, 136, 5, 6, 0, 0, 136, 138, 5, 37, 0, 0, 137, 133, 1, 0, 0, 0, 137, 134, 1, 0, 0, 0, 138, 143, 1, 0, 0, 0, 139, 140, 5, 3, 0, 0, 140, 142, 3, 32, 16, 0, 141, 139, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 146, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 147, 5, 5, 0, 0, 147, 178, 1, 0, 0, 0, 148, 149, 3, 20, 10, 0, 149, 154, 5, 4, 0, 0, 150, 155, 5, 37, 0, 0, 151, 152, 5, 37, 0, 0, 152, 153, 5, 6, 0, 0, 153, 155, 5, 37, 0, 0, 154, 150, 1, 0, 0, 0, 154, 151, 1, 0, 0, 0, 155, 160, 1, 0, 0, 0, 156, 157, 5, 3, 0, 0, 157, 159, 3, 32, 16, 0, 158, 156, 1, 0, 0, 0, 159, 162, 1, 0, 0, 0, 160, 158, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 163, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 163, 164, 5, 5, 0, 0, 164, 178, 1, 0, 0, 0, 165, 166, 3, 20, 10, 0, 166, 167, 5, 4, 0, 0, 167, 172, 3, 18, 9, 0, 168, 169, 5, 3, 0, 0, 169, 171, 3, 32, 16, 0, 170, 168, 1, 0, 0, 0, 171, 174, 1, 0, 0, 0, 172, 170, 1, 0, 0, 0, 172, 173, 1, 0, 0, 0, 173, 175, 1, 0, 0, 0, 174, 172, 1, 0, 0, 0, 175, 176, 5, 5, 0, 0, 176, 178, 1, 0, 0, 0, 177, 131, 1, 0, 0, 0, 177, 148, 1, 0, 0, 0, 177, 165, 1, 0, 0, 0, 178, 19, 1, 0, 0, 0, 179, 180, 5, 37, 0, 0, 180, 21, 1, 0, 0, 0, 181, 182, 5, 9, 0, 0, 182, 183, 3, 24, 12, 0, 183, 23, 1, 0, 0, 0, 184, 185, 6, 12, -1, 0, 185, 197, 3, 26, 13, 0, 186, 189, 3, 28, 14, 0, 187, 189, 3, 26, 13, 0, 188, 186, 1, 0, 0, 0, 188, 187, 1, 0, 0, 0, 189, 190, 1, 0, 0, 0, 190, 193, 7, 1, 0, 0, 191, 194, 3, 28, 14, 0, 192, 194, 3, 26, 13, 0, 193, 191, 1, 0, 0, 0, 193, 192, 1, 0, 0, 0, 194, 197, 1, 0, 0, 0, 195, 197, 3, 28, 14, 0, 196, 184, 1, 0, 0, 0, 196, 188, 1, 0, 0, 0, 196, 195, 1, 0, 0, 0, 197, 203, 1, 0, 0, 0, 198, 199, 10, 2, 0, 0, 199, 200, 7, 1, 0, 0, 200, 202, 3, 24, 12, 3, 201, 198, 1, 0, 0, 0, 202, 205, 1, 0, 0, 0, 203, 201, 1, 0, 0, 0, 203, 204, 1, 0, 0, 0, 204, 25, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 206, 207, 5, 37, 0, 0, 207, 208, 3, 30, 15, 0, 208, 209, 3, 32, 16, 0, 209, 217, 1, 0, 0, 0, 210, 211, 5, 37, 0, 0, 211, 212, 5, 6, 0, 0, 212, 213, 5, 37, 0, 0, 213, 214, 3, 30, 15, 0, 214, 215, 3, 32, 16, 0, 215, 217, 1, 0, 0, 0, 216, 206, 1, 0, 0, 0, 216, 210, 1, 0, 0, 0, 217, 27, 1, 0, 0, 0, 218, 219, 5, 4, 0, 0, 219, 220, 3, 24, 12, 0, 220, 221, 5, 5, 0, 0, 221, 29, 1, 0, 0, 0, 222, 223, 7, 2, 0, 0, 223, 31, 1, 0, 0, 0, 224, 225, 7, 3, 0, 0, 225, 33, 1, 0, 0, 0, 226, 227, 5, 11, 0, 0, 227, 230, 3, 14, 7, 0, 228, 230, 1, 0, 0, 0, 229, 226, 1, 0, 0, 0, 229, 228, 1, 0, 0, 0, 230, 35, 1, 0, 0, 0, 28, 42, 50, 58, 63, 73, 77, 84, 89, 94, 98, 107, 111, 117, 120, 124, 126, 137, 143, 154, 160, 172, 177, 188, 193, 196, 203, 216, 229] \ No newline at end of file +[4, 1, 41, 230, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 43, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 51, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 59, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 64, 8, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 72, 8, 3, 10, 3, 12, 3, 75, 9, 3, 1, 3, 3, 3, 78, 8, 3, 1, 4, 1, 4, 1, 4, 5, 4, 83, 8, 4, 10, 4, 12, 4, 86, 9, 4, 1, 5, 1, 5, 3, 5, 90, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 95, 8, 5, 5, 5, 97, 8, 5, 10, 5, 12, 5, 100, 9, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 108, 8, 6, 1, 6, 1, 6, 3, 6, 112, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 118, 8, 7, 1, 7, 3, 7, 121, 8, 7, 1, 7, 1, 7, 3, 7, 125, 8, 7, 3, 7, 127, 8, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 138, 8, 9, 1, 9, 1, 9, 5, 9, 142, 8, 9, 10, 9, 12, 9, 145, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 155, 8, 9, 1, 9, 1, 9, 5, 9, 159, 8, 9, 10, 9, 12, 9, 162, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 171, 8, 9, 10, 9, 12, 9, 174, 9, 9, 1, 9, 1, 9, 3, 9, 178, 8, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 189, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 194, 8, 12, 1, 12, 3, 12, 197, 8, 12, 1, 12, 1, 12, 1, 12, 5, 12, 202, 8, 12, 10, 12, 12, 12, 205, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 217, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 0, 1, 24, 18, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, 40, 241, 0, 36, 1, 0, 0, 0, 2, 63, 1, 0, 0, 0, 4, 65, 1, 0, 0, 0, 6, 77, 1, 0, 0, 0, 8, 79, 1, 0, 0, 0, 10, 89, 1, 0, 0, 0, 12, 101, 1, 0, 0, 0, 14, 126, 1, 0, 0, 0, 16, 128, 1, 0, 0, 0, 18, 177, 1, 0, 0, 0, 20, 179, 1, 0, 0, 0, 22, 181, 1, 0, 0, 0, 24, 196, 1, 0, 0, 0, 26, 216, 1, 0, 0, 0, 28, 218, 1, 0, 0, 0, 30, 222, 1, 0, 0, 0, 32, 224, 1, 0, 0, 0, 34, 226, 1, 0, 0, 0, 36, 37, 3, 2, 1, 0, 37, 38, 5, 0, 0, 1, 38, 1, 1, 0, 0, 0, 39, 40, 5, 8, 0, 0, 40, 42, 3, 6, 3, 0, 41, 43, 3, 22, 11, 0, 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 45, 5, 7, 0, 0, 45, 64, 1, 0, 0, 0, 46, 47, 5, 8, 0, 0, 47, 48, 3, 8, 4, 0, 48, 50, 3, 4, 2, 0, 49, 51, 3, 22, 11, 0, 50, 49, 1, 0, 0, 0, 50, 51, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 53, 5, 7, 0, 0, 53, 64, 1, 0, 0, 0, 54, 55, 5, 8, 0, 0, 55, 56, 3, 10, 5, 0, 56, 58, 3, 4, 2, 0, 57, 59, 3, 22, 11, 0, 58, 57, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 3, 34, 17, 0, 61, 62, 5, 7, 0, 0, 62, 64, 1, 0, 0, 0, 63, 39, 1, 0, 0, 0, 63, 46, 1, 0, 0, 0, 63, 54, 1, 0, 0, 0, 64, 3, 1, 0, 0, 0, 65, 66, 5, 10, 0, 0, 66, 67, 5, 38, 0, 0, 67, 5, 1, 0, 0, 0, 68, 73, 3, 14, 7, 0, 69, 70, 5, 3, 0, 0, 70, 72, 3, 14, 7, 0, 71, 69, 1, 0, 0, 0, 72, 75, 1, 0, 0, 0, 73, 71, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 78, 1, 0, 0, 0, 75, 73, 1, 0, 0, 0, 76, 78, 5, 41, 0, 0, 77, 68, 1, 0, 0, 0, 77, 76, 1, 0, 0, 0, 78, 7, 1, 0, 0, 0, 79, 84, 3, 12, 6, 0, 80, 81, 5, 3, 0, 0, 81, 83, 3, 12, 6, 0, 82, 80, 1, 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 9, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 90, 3, 14, 7, 0, 88, 90, 3, 12, 6, 0, 89, 87, 1, 0, 0, 0, 89, 88, 1, 0, 0, 0, 90, 98, 1, 0, 0, 0, 91, 94, 5, 3, 0, 0, 92, 95, 3, 12, 6, 0, 93, 95, 3, 14, 7, 0, 94, 92, 1, 0, 0, 0, 94, 93, 1, 0, 0, 0, 95, 97, 1, 0, 0, 0, 96, 91, 1, 0, 0, 0, 97, 100, 1, 0, 0, 0, 98, 96, 1, 0, 0, 0, 98, 99, 1, 0, 0, 0, 99, 11, 1, 0, 0, 0, 100, 98, 1, 0, 0, 0, 101, 102, 7, 0, 0, 0, 102, 107, 5, 4, 0, 0, 103, 108, 5, 37, 0, 0, 104, 105, 5, 37, 0, 0, 105, 106, 5, 6, 0, 0, 106, 108, 5, 37, 0, 0, 107, 103, 1, 0, 0, 0, 107, 104, 1, 0, 0, 0, 108, 109, 1, 0, 0, 0, 109, 111, 5, 5, 0, 0, 110, 112, 3, 16, 8, 0, 111, 110, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 13, 1, 0, 0, 0, 113, 118, 5, 37, 0, 0, 114, 115, 5, 37, 0, 0, 115, 116, 5, 6, 0, 0, 116, 118, 5, 37, 0, 0, 117, 113, 1, 0, 0, 0, 117, 114, 1, 0, 0, 0, 118, 120, 1, 0, 0, 0, 119, 121, 3, 16, 8, 0, 120, 119, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 127, 1, 0, 0, 0, 122, 124, 3, 18, 9, 0, 123, 125, 3, 16, 8, 0, 124, 123, 1, 0, 0, 0, 124, 125, 1, 0, 0, 0, 125, 127, 1, 0, 0, 0, 126, 117, 1, 0, 0, 0, 126, 122, 1, 0, 0, 0, 127, 15, 1, 0, 0, 0, 128, 129, 5, 13, 0, 0, 129, 130, 5, 37, 0, 0, 130, 17, 1, 0, 0, 0, 131, 132, 3, 20, 10, 0, 132, 137, 5, 4, 0, 0, 133, 138, 5, 37, 0, 0, 134, 135, 5, 37, 0, 0, 135, 136, 5, 6, 0, 0, 136, 138, 5, 37, 0, 0, 137, 133, 1, 0, 0, 0, 137, 134, 1, 0, 0, 0, 138, 143, 1, 0, 0, 0, 139, 140, 5, 3, 0, 0, 140, 142, 3, 32, 16, 0, 141, 139, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 146, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 147, 5, 5, 0, 0, 147, 178, 1, 0, 0, 0, 148, 149, 3, 20, 10, 0, 149, 154, 5, 4, 0, 0, 150, 155, 5, 37, 0, 0, 151, 152, 5, 37, 0, 0, 152, 153, 5, 6, 0, 0, 153, 155, 5, 37, 0, 0, 154, 150, 1, 0, 0, 0, 154, 151, 1, 0, 0, 0, 155, 160, 1, 0, 0, 0, 156, 157, 5, 3, 0, 0, 157, 159, 3, 32, 16, 0, 158, 156, 1, 0, 0, 0, 159, 162, 1, 0, 0, 0, 160, 158, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 163, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 163, 164, 5, 5, 0, 0, 164, 178, 1, 0, 0, 0, 165, 166, 3, 20, 10, 0, 166, 167, 5, 4, 0, 0, 167, 172, 3, 18, 9, 0, 168, 169, 5, 3, 0, 0, 169, 171, 3, 32, 16, 0, 170, 168, 1, 0, 0, 0, 171, 174, 1, 0, 0, 0, 172, 170, 1, 0, 0, 0, 172, 173, 1, 0, 0, 0, 173, 175, 1, 0, 0, 0, 174, 172, 1, 0, 0, 0, 175, 176, 5, 5, 0, 0, 176, 178, 1, 0, 0, 0, 177, 131, 1, 0, 0, 0, 177, 148, 1, 0, 0, 0, 177, 165, 1, 0, 0, 0, 178, 19, 1, 0, 0, 0, 179, 180, 5, 37, 0, 0, 180, 21, 1, 0, 0, 0, 181, 182, 5, 9, 0, 0, 182, 183, 3, 24, 12, 0, 183, 23, 1, 0, 0, 0, 184, 185, 6, 12, -1, 0, 185, 197, 3, 26, 13, 0, 186, 189, 3, 28, 14, 0, 187, 189, 3, 26, 13, 0, 188, 186, 1, 0, 0, 0, 188, 187, 1, 0, 0, 0, 189, 190, 1, 0, 0, 0, 190, 193, 7, 1, 0, 0, 191, 194, 3, 28, 14, 0, 192, 194, 3, 26, 13, 0, 193, 191, 1, 0, 0, 0, 193, 192, 1, 0, 0, 0, 194, 197, 1, 0, 0, 0, 195, 197, 3, 28, 14, 0, 196, 184, 1, 0, 0, 0, 196, 188, 1, 0, 0, 0, 196, 195, 1, 0, 0, 0, 197, 203, 1, 0, 0, 0, 198, 199, 10, 2, 0, 0, 199, 200, 7, 1, 0, 0, 200, 202, 3, 24, 12, 3, 201, 198, 1, 0, 0, 0, 202, 205, 1, 0, 0, 0, 203, 201, 1, 0, 0, 0, 203, 204, 1, 0, 0, 0, 204, 25, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 206, 207, 5, 37, 0, 0, 207, 208, 3, 30, 15, 0, 208, 209, 3, 32, 16, 0, 209, 217, 1, 0, 0, 0, 210, 211, 5, 37, 0, 0, 211, 212, 5, 6, 0, 0, 212, 213, 5, 37, 0, 0, 213, 214, 3, 30, 15, 0, 214, 215, 3, 32, 16, 0, 215, 217, 1, 0, 0, 0, 216, 206, 1, 0, 0, 0, 216, 210, 1, 0, 0, 0, 217, 27, 1, 0, 0, 0, 218, 219, 5, 4, 0, 0, 219, 220, 3, 24, 12, 0, 220, 221, 5, 5, 0, 0, 221, 29, 1, 0, 0, 0, 222, 223, 7, 2, 0, 0, 223, 31, 1, 0, 0, 0, 224, 225, 7, 3, 0, 0, 225, 33, 1, 0, 0, 0, 226, 227, 5, 11, 0, 0, 227, 228, 3, 14, 7, 0, 228, 35, 1, 0, 0, 0, 27, 42, 50, 58, 63, 73, 77, 84, 89, 94, 98, 107, 111, 117, 120, 124, 126, 137, 143, 154, 160, 172, 177, 188, 193, 196, 203, 216] \ No newline at end of file diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index 81e8c10b5289..df4d209cb070 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -54,7 +54,7 @@ func sqlParserInit() { } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 41, 232, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 41, 230, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 43, @@ -76,84 +76,83 @@ func sqlParserInit() { 3, 12, 197, 8, 12, 1, 12, 1, 12, 1, 12, 5, 12, 202, 8, 12, 10, 12, 12, 12, 205, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 217, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, - 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 3, 17, 230, 8, 17, 1, 17, 0, 1, - 24, 18, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, - 34, 0, 4, 1, 0, 30, 34, 2, 0, 12, 12, 14, 14, 2, 0, 15, 23, 28, 29, 1, - 0, 38, 40, 244, 0, 36, 1, 0, 0, 0, 2, 63, 1, 0, 0, 0, 4, 65, 1, 0, 0, 0, - 6, 77, 1, 0, 0, 0, 8, 79, 1, 0, 0, 0, 10, 89, 1, 0, 0, 0, 12, 101, 1, 0, - 0, 0, 14, 126, 1, 0, 0, 0, 16, 128, 1, 0, 0, 0, 18, 177, 1, 0, 0, 0, 20, - 179, 1, 0, 0, 0, 22, 181, 1, 0, 0, 0, 24, 196, 1, 0, 0, 0, 26, 216, 1, - 0, 0, 0, 28, 218, 1, 0, 0, 0, 30, 222, 1, 0, 0, 0, 32, 224, 1, 0, 0, 0, - 34, 229, 1, 0, 0, 0, 36, 37, 3, 2, 1, 0, 37, 38, 5, 0, 0, 1, 38, 1, 1, - 0, 0, 0, 39, 40, 5, 8, 0, 0, 40, 42, 3, 6, 3, 0, 41, 43, 3, 22, 11, 0, - 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 45, 5, - 7, 0, 0, 45, 64, 1, 0, 0, 0, 46, 47, 5, 8, 0, 0, 47, 48, 3, 8, 4, 0, 48, - 50, 3, 4, 2, 0, 49, 51, 3, 22, 11, 0, 50, 49, 1, 0, 0, 0, 50, 51, 1, 0, - 0, 0, 51, 52, 1, 0, 0, 0, 52, 53, 5, 7, 0, 0, 53, 64, 1, 0, 0, 0, 54, 55, - 5, 8, 0, 0, 55, 56, 3, 10, 5, 0, 56, 58, 3, 4, 2, 0, 57, 59, 3, 22, 11, - 0, 58, 57, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, - 3, 34, 17, 0, 61, 62, 5, 7, 0, 0, 62, 64, 1, 0, 0, 0, 63, 39, 1, 0, 0, - 0, 63, 46, 1, 0, 0, 0, 63, 54, 1, 0, 0, 0, 64, 3, 1, 0, 0, 0, 65, 66, 5, - 10, 0, 0, 66, 67, 5, 38, 0, 0, 67, 5, 1, 0, 0, 0, 68, 73, 3, 14, 7, 0, - 69, 70, 5, 3, 0, 0, 70, 72, 3, 14, 7, 0, 71, 69, 1, 0, 0, 0, 72, 75, 1, - 0, 0, 0, 73, 71, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 78, 1, 0, 0, 0, 75, - 73, 1, 0, 0, 0, 76, 78, 5, 41, 0, 0, 77, 68, 1, 0, 0, 0, 77, 76, 1, 0, - 0, 0, 78, 7, 1, 0, 0, 0, 79, 84, 3, 12, 6, 0, 80, 81, 5, 3, 0, 0, 81, 83, - 3, 12, 6, 0, 82, 80, 1, 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, - 84, 85, 1, 0, 0, 0, 85, 9, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 90, 3, 14, - 7, 0, 88, 90, 3, 12, 6, 0, 89, 87, 1, 0, 0, 0, 89, 88, 1, 0, 0, 0, 90, - 98, 1, 0, 0, 0, 91, 94, 5, 3, 0, 0, 92, 95, 3, 12, 6, 0, 93, 95, 3, 14, - 7, 0, 94, 92, 1, 0, 0, 0, 94, 93, 1, 0, 0, 0, 95, 97, 1, 0, 0, 0, 96, 91, - 1, 0, 0, 0, 97, 100, 1, 0, 0, 0, 98, 96, 1, 0, 0, 0, 98, 99, 1, 0, 0, 0, - 99, 11, 1, 0, 0, 0, 100, 98, 1, 0, 0, 0, 101, 102, 7, 0, 0, 0, 102, 107, - 5, 4, 0, 0, 103, 108, 5, 37, 0, 0, 104, 105, 5, 37, 0, 0, 105, 106, 5, - 6, 0, 0, 106, 108, 5, 37, 0, 0, 107, 103, 1, 0, 0, 0, 107, 104, 1, 0, 0, - 0, 108, 109, 1, 0, 0, 0, 109, 111, 5, 5, 0, 0, 110, 112, 3, 16, 8, 0, 111, - 110, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 13, 1, 0, 0, 0, 113, 118, 5, - 37, 0, 0, 114, 115, 5, 37, 0, 0, 115, 116, 5, 6, 0, 0, 116, 118, 5, 37, - 0, 0, 117, 113, 1, 0, 0, 0, 117, 114, 1, 0, 0, 0, 118, 120, 1, 0, 0, 0, - 119, 121, 3, 16, 8, 0, 120, 119, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, - 127, 1, 0, 0, 0, 122, 124, 3, 18, 9, 0, 123, 125, 3, 16, 8, 0, 124, 123, - 1, 0, 0, 0, 124, 125, 1, 0, 0, 0, 125, 127, 1, 0, 0, 0, 126, 117, 1, 0, - 0, 0, 126, 122, 1, 0, 0, 0, 127, 15, 1, 0, 0, 0, 128, 129, 5, 13, 0, 0, - 129, 130, 5, 37, 0, 0, 130, 17, 1, 0, 0, 0, 131, 132, 3, 20, 10, 0, 132, - 137, 5, 4, 0, 0, 133, 138, 5, 37, 0, 0, 134, 135, 5, 37, 0, 0, 135, 136, - 5, 6, 0, 0, 136, 138, 5, 37, 0, 0, 137, 133, 1, 0, 0, 0, 137, 134, 1, 0, - 0, 0, 138, 143, 1, 0, 0, 0, 139, 140, 5, 3, 0, 0, 140, 142, 3, 32, 16, - 0, 141, 139, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, - 144, 1, 0, 0, 0, 144, 146, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 147, - 5, 5, 0, 0, 147, 178, 1, 0, 0, 0, 148, 149, 3, 20, 10, 0, 149, 154, 5, - 4, 0, 0, 150, 155, 5, 37, 0, 0, 151, 152, 5, 37, 0, 0, 152, 153, 5, 6, - 0, 0, 153, 155, 5, 37, 0, 0, 154, 150, 1, 0, 0, 0, 154, 151, 1, 0, 0, 0, - 155, 160, 1, 0, 0, 0, 156, 157, 5, 3, 0, 0, 157, 159, 3, 32, 16, 0, 158, - 156, 1, 0, 0, 0, 159, 162, 1, 0, 0, 0, 160, 158, 1, 0, 0, 0, 160, 161, - 1, 0, 0, 0, 161, 163, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 163, 164, 5, 5, - 0, 0, 164, 178, 1, 0, 0, 0, 165, 166, 3, 20, 10, 0, 166, 167, 5, 4, 0, - 0, 167, 172, 3, 18, 9, 0, 168, 169, 5, 3, 0, 0, 169, 171, 3, 32, 16, 0, - 170, 168, 1, 0, 0, 0, 171, 174, 1, 0, 0, 0, 172, 170, 1, 0, 0, 0, 172, - 173, 1, 0, 0, 0, 173, 175, 1, 0, 0, 0, 174, 172, 1, 0, 0, 0, 175, 176, - 5, 5, 0, 0, 176, 178, 1, 0, 0, 0, 177, 131, 1, 0, 0, 0, 177, 148, 1, 0, - 0, 0, 177, 165, 1, 0, 0, 0, 178, 19, 1, 0, 0, 0, 179, 180, 5, 37, 0, 0, - 180, 21, 1, 0, 0, 0, 181, 182, 5, 9, 0, 0, 182, 183, 3, 24, 12, 0, 183, - 23, 1, 0, 0, 0, 184, 185, 6, 12, -1, 0, 185, 197, 3, 26, 13, 0, 186, 189, - 3, 28, 14, 0, 187, 189, 3, 26, 13, 0, 188, 186, 1, 0, 0, 0, 188, 187, 1, - 0, 0, 0, 189, 190, 1, 0, 0, 0, 190, 193, 7, 1, 0, 0, 191, 194, 3, 28, 14, - 0, 192, 194, 3, 26, 13, 0, 193, 191, 1, 0, 0, 0, 193, 192, 1, 0, 0, 0, - 194, 197, 1, 0, 0, 0, 195, 197, 3, 28, 14, 0, 196, 184, 1, 0, 0, 0, 196, - 188, 1, 0, 0, 0, 196, 195, 1, 0, 0, 0, 197, 203, 1, 0, 0, 0, 198, 199, - 10, 2, 0, 0, 199, 200, 7, 1, 0, 0, 200, 202, 3, 24, 12, 3, 201, 198, 1, - 0, 0, 0, 202, 205, 1, 0, 0, 0, 203, 201, 1, 0, 0, 0, 203, 204, 1, 0, 0, - 0, 204, 25, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 206, 207, 5, 37, 0, 0, 207, - 208, 3, 30, 15, 0, 208, 209, 3, 32, 16, 0, 209, 217, 1, 0, 0, 0, 210, 211, - 5, 37, 0, 0, 211, 212, 5, 6, 0, 0, 212, 213, 5, 37, 0, 0, 213, 214, 3, - 30, 15, 0, 214, 215, 3, 32, 16, 0, 215, 217, 1, 0, 0, 0, 216, 206, 1, 0, - 0, 0, 216, 210, 1, 0, 0, 0, 217, 27, 1, 0, 0, 0, 218, 219, 5, 4, 0, 0, - 219, 220, 3, 24, 12, 0, 220, 221, 5, 5, 0, 0, 221, 29, 1, 0, 0, 0, 222, - 223, 7, 2, 0, 0, 223, 31, 1, 0, 0, 0, 224, 225, 7, 3, 0, 0, 225, 33, 1, - 0, 0, 0, 226, 227, 5, 11, 0, 0, 227, 230, 3, 14, 7, 0, 228, 230, 1, 0, - 0, 0, 229, 226, 1, 0, 0, 0, 229, 228, 1, 0, 0, 0, 230, 35, 1, 0, 0, 0, - 28, 42, 50, 58, 63, 73, 77, 84, 89, 94, 98, 107, 111, 117, 120, 124, 126, - 137, 143, 154, 160, 172, 177, 188, 193, 196, 203, 216, 229, + 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 0, 1, 24, 18, 0, 2, 4, 6, + 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 0, 4, 1, 0, 30, + 34, 2, 0, 12, 12, 14, 14, 2, 0, 15, 23, 28, 29, 1, 0, 38, 40, 241, 0, 36, + 1, 0, 0, 0, 2, 63, 1, 0, 0, 0, 4, 65, 1, 0, 0, 0, 6, 77, 1, 0, 0, 0, 8, + 79, 1, 0, 0, 0, 10, 89, 1, 0, 0, 0, 12, 101, 1, 0, 0, 0, 14, 126, 1, 0, + 0, 0, 16, 128, 1, 0, 0, 0, 18, 177, 1, 0, 0, 0, 20, 179, 1, 0, 0, 0, 22, + 181, 1, 0, 0, 0, 24, 196, 1, 0, 0, 0, 26, 216, 1, 0, 0, 0, 28, 218, 1, + 0, 0, 0, 30, 222, 1, 0, 0, 0, 32, 224, 1, 0, 0, 0, 34, 226, 1, 0, 0, 0, + 36, 37, 3, 2, 1, 0, 37, 38, 5, 0, 0, 1, 38, 1, 1, 0, 0, 0, 39, 40, 5, 8, + 0, 0, 40, 42, 3, 6, 3, 0, 41, 43, 3, 22, 11, 0, 42, 41, 1, 0, 0, 0, 42, + 43, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 45, 5, 7, 0, 0, 45, 64, 1, 0, 0, + 0, 46, 47, 5, 8, 0, 0, 47, 48, 3, 8, 4, 0, 48, 50, 3, 4, 2, 0, 49, 51, + 3, 22, 11, 0, 50, 49, 1, 0, 0, 0, 50, 51, 1, 0, 0, 0, 51, 52, 1, 0, 0, + 0, 52, 53, 5, 7, 0, 0, 53, 64, 1, 0, 0, 0, 54, 55, 5, 8, 0, 0, 55, 56, + 3, 10, 5, 0, 56, 58, 3, 4, 2, 0, 57, 59, 3, 22, 11, 0, 58, 57, 1, 0, 0, + 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 3, 34, 17, 0, 61, 62, + 5, 7, 0, 0, 62, 64, 1, 0, 0, 0, 63, 39, 1, 0, 0, 0, 63, 46, 1, 0, 0, 0, + 63, 54, 1, 0, 0, 0, 64, 3, 1, 0, 0, 0, 65, 66, 5, 10, 0, 0, 66, 67, 5, + 38, 0, 0, 67, 5, 1, 0, 0, 0, 68, 73, 3, 14, 7, 0, 69, 70, 5, 3, 0, 0, 70, + 72, 3, 14, 7, 0, 71, 69, 1, 0, 0, 0, 72, 75, 1, 0, 0, 0, 73, 71, 1, 0, + 0, 0, 73, 74, 1, 0, 0, 0, 74, 78, 1, 0, 0, 0, 75, 73, 1, 0, 0, 0, 76, 78, + 5, 41, 0, 0, 77, 68, 1, 0, 0, 0, 77, 76, 1, 0, 0, 0, 78, 7, 1, 0, 0, 0, + 79, 84, 3, 12, 6, 0, 80, 81, 5, 3, 0, 0, 81, 83, 3, 12, 6, 0, 82, 80, 1, + 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, + 9, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 90, 3, 14, 7, 0, 88, 90, 3, 12, + 6, 0, 89, 87, 1, 0, 0, 0, 89, 88, 1, 0, 0, 0, 90, 98, 1, 0, 0, 0, 91, 94, + 5, 3, 0, 0, 92, 95, 3, 12, 6, 0, 93, 95, 3, 14, 7, 0, 94, 92, 1, 0, 0, + 0, 94, 93, 1, 0, 0, 0, 95, 97, 1, 0, 0, 0, 96, 91, 1, 0, 0, 0, 97, 100, + 1, 0, 0, 0, 98, 96, 1, 0, 0, 0, 98, 99, 1, 0, 0, 0, 99, 11, 1, 0, 0, 0, + 100, 98, 1, 0, 0, 0, 101, 102, 7, 0, 0, 0, 102, 107, 5, 4, 0, 0, 103, 108, + 5, 37, 0, 0, 104, 105, 5, 37, 0, 0, 105, 106, 5, 6, 0, 0, 106, 108, 5, + 37, 0, 0, 107, 103, 1, 0, 0, 0, 107, 104, 1, 0, 0, 0, 108, 109, 1, 0, 0, + 0, 109, 111, 5, 5, 0, 0, 110, 112, 3, 16, 8, 0, 111, 110, 1, 0, 0, 0, 111, + 112, 1, 0, 0, 0, 112, 13, 1, 0, 0, 0, 113, 118, 5, 37, 0, 0, 114, 115, + 5, 37, 0, 0, 115, 116, 5, 6, 0, 0, 116, 118, 5, 37, 0, 0, 117, 113, 1, + 0, 0, 0, 117, 114, 1, 0, 0, 0, 118, 120, 1, 0, 0, 0, 119, 121, 3, 16, 8, + 0, 120, 119, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 127, 1, 0, 0, 0, 122, + 124, 3, 18, 9, 0, 123, 125, 3, 16, 8, 0, 124, 123, 1, 0, 0, 0, 124, 125, + 1, 0, 0, 0, 125, 127, 1, 0, 0, 0, 126, 117, 1, 0, 0, 0, 126, 122, 1, 0, + 0, 0, 127, 15, 1, 0, 0, 0, 128, 129, 5, 13, 0, 0, 129, 130, 5, 37, 0, 0, + 130, 17, 1, 0, 0, 0, 131, 132, 3, 20, 10, 0, 132, 137, 5, 4, 0, 0, 133, + 138, 5, 37, 0, 0, 134, 135, 5, 37, 0, 0, 135, 136, 5, 6, 0, 0, 136, 138, + 5, 37, 0, 0, 137, 133, 1, 0, 0, 0, 137, 134, 1, 0, 0, 0, 138, 143, 1, 0, + 0, 0, 139, 140, 5, 3, 0, 0, 140, 142, 3, 32, 16, 0, 141, 139, 1, 0, 0, + 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, + 146, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 147, 5, 5, 0, 0, 147, 178, + 1, 0, 0, 0, 148, 149, 3, 20, 10, 0, 149, 154, 5, 4, 0, 0, 150, 155, 5, + 37, 0, 0, 151, 152, 5, 37, 0, 0, 152, 153, 5, 6, 0, 0, 153, 155, 5, 37, + 0, 0, 154, 150, 1, 0, 0, 0, 154, 151, 1, 0, 0, 0, 155, 160, 1, 0, 0, 0, + 156, 157, 5, 3, 0, 0, 157, 159, 3, 32, 16, 0, 158, 156, 1, 0, 0, 0, 159, + 162, 1, 0, 0, 0, 160, 158, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 163, + 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 163, 164, 5, 5, 0, 0, 164, 178, 1, 0, + 0, 0, 165, 166, 3, 20, 10, 0, 166, 167, 5, 4, 0, 0, 167, 172, 3, 18, 9, + 0, 168, 169, 5, 3, 0, 0, 169, 171, 3, 32, 16, 0, 170, 168, 1, 0, 0, 0, + 171, 174, 1, 0, 0, 0, 172, 170, 1, 0, 0, 0, 172, 173, 1, 0, 0, 0, 173, + 175, 1, 0, 0, 0, 174, 172, 1, 0, 0, 0, 175, 176, 5, 5, 0, 0, 176, 178, + 1, 0, 0, 0, 177, 131, 1, 0, 0, 0, 177, 148, 1, 0, 0, 0, 177, 165, 1, 0, + 0, 0, 178, 19, 1, 0, 0, 0, 179, 180, 5, 37, 0, 0, 180, 21, 1, 0, 0, 0, + 181, 182, 5, 9, 0, 0, 182, 183, 3, 24, 12, 0, 183, 23, 1, 0, 0, 0, 184, + 185, 6, 12, -1, 0, 185, 197, 3, 26, 13, 0, 186, 189, 3, 28, 14, 0, 187, + 189, 3, 26, 13, 0, 188, 186, 1, 0, 0, 0, 188, 187, 1, 0, 0, 0, 189, 190, + 1, 0, 0, 0, 190, 193, 7, 1, 0, 0, 191, 194, 3, 28, 14, 0, 192, 194, 3, + 26, 13, 0, 193, 191, 1, 0, 0, 0, 193, 192, 1, 0, 0, 0, 194, 197, 1, 0, + 0, 0, 195, 197, 3, 28, 14, 0, 196, 184, 1, 0, 0, 0, 196, 188, 1, 0, 0, + 0, 196, 195, 1, 0, 0, 0, 197, 203, 1, 0, 0, 0, 198, 199, 10, 2, 0, 0, 199, + 200, 7, 1, 0, 0, 200, 202, 3, 24, 12, 3, 201, 198, 1, 0, 0, 0, 202, 205, + 1, 0, 0, 0, 203, 201, 1, 0, 0, 0, 203, 204, 1, 0, 0, 0, 204, 25, 1, 0, + 0, 0, 205, 203, 1, 0, 0, 0, 206, 207, 5, 37, 0, 0, 207, 208, 3, 30, 15, + 0, 208, 209, 3, 32, 16, 0, 209, 217, 1, 0, 0, 0, 210, 211, 5, 37, 0, 0, + 211, 212, 5, 6, 0, 0, 212, 213, 5, 37, 0, 0, 213, 214, 3, 30, 15, 0, 214, + 215, 3, 32, 16, 0, 215, 217, 1, 0, 0, 0, 216, 206, 1, 0, 0, 0, 216, 210, + 1, 0, 0, 0, 217, 27, 1, 0, 0, 0, 218, 219, 5, 4, 0, 0, 219, 220, 3, 24, + 12, 0, 220, 221, 5, 5, 0, 0, 221, 29, 1, 0, 0, 0, 222, 223, 7, 2, 0, 0, + 223, 31, 1, 0, 0, 0, 224, 225, 7, 3, 0, 0, 225, 33, 1, 0, 0, 0, 226, 227, + 5, 11, 0, 0, 227, 228, 3, 14, 7, 0, 228, 35, 1, 0, 0, 0, 27, 42, 50, 58, + 63, 73, 77, 84, 89, 94, 98, 107, 111, 117, 120, 124, 126, 137, 143, 154, + 160, 172, 177, 188, 193, 196, 203, 216, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -4033,26 +4032,14 @@ func (p *SqlParser) GroupBy() (localctx IGroupByContext) { } }() - p.SetState(229) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_GROUP_BY: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(226) - p.Match(SqlParserK_GROUP_BY) - } - { - p.SetState(227) - p.Column() - } - - case SqlParserEOQ: - p.EnterOuterAlt(localctx, 2) - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(226) + p.Match(SqlParserK_GROUP_BY) + } + { + p.SetState(227) + p.Column() } return localctx diff --git a/processor/stream_processor/parser/sql_stream_function_test.go b/processor/stream_processor/parser/sql_stream_function_test.go index 8a833c8091eb..f6fe8316e14a 100644 --- a/processor/stream_processor/parser/sql_stream_function_test.go +++ b/processor/stream_processor/parser/sql_stream_function_test.go @@ -37,12 +37,12 @@ func TestScalarFunctions(t *testing.T) { name: "recursive 1", query: `SELECT upper(lower(name)) WHERE name = 'Test name 50';`, expectedAttr: []string{"name"}, - appliedFunc: strings.ToLower, + appliedFunc: strings.ToUpper, expectedCount: 1, }, { name: "recursive 2", - query: `SELECT upper(lower(upper(substr(name,2,3)))) WHERE name = 'Test name 50';`, + query: `SELECT lower(upper(lower(upper(substr(name,2,3))))) WHERE name = 'Test name 50';`, expectedAttr: []string{"name"}, appliedFunc: strings.ToLower, expectedCount: 1, diff --git a/processor/stream_processor/parser/sql_stream_group_by_test.go b/processor/stream_processor/parser/sql_stream_group_by_test.go index 7da2c71041ad..d8aaf761e877 100644 --- a/processor/stream_processor/parser/sql_stream_group_by_test.go +++ b/processor/stream_processor/parser/sql_stream_group_by_test.go @@ -2,13 +2,14 @@ package parser import ( "fmt" + "sync" + "testing" + "time" + "github.com/stretchr/testify/assert" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/plog" "go.uber.org/zap" - "sync" - "testing" - "time" ) func TestWindowTumblingGroupBy(t *testing.T) { diff --git a/processor/stream_processor/parser/sql_stream_tumbling_test.go b/processor/stream_processor/parser/sql_stream_tumbling_test.go index 14d4bfb89e82..e3928c5e3ac0 100644 --- a/processor/stream_processor/parser/sql_stream_tumbling_test.go +++ b/processor/stream_processor/parser/sql_stream_tumbling_test.go @@ -50,18 +50,47 @@ func TestIsWindowTumbling(t *testing.T) { } } -func TestWindowTumblingLoop(t *testing.T) { +func TestWindowTumblingLoopOneField(t *testing.T) { tests := []struct { - name string - query string - expected int - res float64 + name, query string + expected int + expectedRes float64 }{ { - name: "1 ms", - query: "select max(price) window tumbling 50 where price > 4;", - expected: 1, - res: 99.0, + name: "max", + query: "select max(price) window tumbling 50 where price > 4;", + expected: 1, + expectedRes: 99.0, + }, + { + name: "min", + query: "select min(price) window tumbling 50 where price > 4;", + expected: 1, + expectedRes: 5.0, + }, + { + name: "min 2", + query: "select min(price) window tumbling 50 where price > 95;", + expected: 1, + expectedRes: 96.0, + }, + { + name: "min 2", + query: "select count(price) window tumbling 50 where price > 95;", + expected: 1, + expectedRes: 4.0, + }, + { + name: "sum", + query: "select sum(price) window tumbling 50 where price > 95;", + expected: 1, + expectedRes: 390.0, + }, + { + name: "sum", + query: "select avg(price) window tumbling 50 where price < 10;", + expected: 1, + expectedRes: 4.5, }, } for _, tt := range tests { @@ -81,10 +110,7 @@ func TestWindowTumblingLoop(t *testing.T) { break } }() - in <- GenerateTestLogs() - <-time.After(1 * time.Millisecond) - in <- GenerateTestLogs() - <-time.After(1 * time.Millisecond) + in <- GenerateTestLogs() <-time.After(1 * time.Millisecond) wg.Wait() @@ -92,7 +118,82 @@ func TestWindowTumblingLoop(t *testing.T) { assert.Equal(t, tt.expected, ls.Len()) val, ok := ls.At(0).Attributes().Get("price") assert.True(t, ok) - assert.Equal(t, tt.res, val.DoubleVal()) + assert.Equal(t, tt.expectedRes, val.DoubleVal()) + }) + } +} + +func TestWindowTumblingLoopTwoField(t *testing.T) { + tests := []struct { + name, query string + expected int + expectedSum, expectedAvg, expectedCount, expectedMax, expectedMin float64 + }{ + { + name: "1", + query: "select max(price), min(price) as min_price, avg(price) as avg_price, sum(price) as sum_price, count(price) as count_price window tumbling 50 where price > 95;", + expected: 1, + expectedSum: 390.0, + expectedMin: 96.0, + expectedMax: 99.0, + expectedCount: 4.0, + expectedAvg: 97.5, + }, + { + name: "2", + query: "select max(price), min(price) as min_price, avg(price) as avg_price, sum(price) as sum_price, count(price) as count_price window tumbling 50 where price < 6;", + expected: 1, + expectedSum: 15.0, + expectedMin: 0.0, + expectedMax: 5.0, + expectedCount: 6.0, + expectedAvg: 2.5, + }, + { + name: "2", + query: "select max(price), min(price) as min_price, avg(price) as avg_price, sum(price) as sum_price, count(price) as count_price window tumbling 50 where price > 6 and price < 11;", + expected: 1, + expectedSum: 34.0, + expectedMin: 7.0, + expectedMax: 10.0, + expectedCount: 4.0, + expectedAvg: 8.5, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + var wg sync.WaitGroup + wg.Add(1) + visitor := NewSQLStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + + in <- GenerateTestLogs() + ls := <-out + + assert.Equal(t, tt.expected, ls.Len()) + + val, ok := ls.At(0).Attributes().Get("price") + assert.True(t, ok) + assert.Equal(t, tt.expectedMax, val.DoubleVal()) + + val, ok = ls.At(0).Attributes().Get("min_price") + assert.True(t, ok) + assert.Equal(t, tt.expectedMin, val.DoubleVal()) + + val, ok = ls.At(0).Attributes().Get("count_price") + assert.True(t, ok) + assert.Equal(t, tt.expectedCount, val.DoubleVal()) + + val, ok = ls.At(0).Attributes().Get("sum_price") + assert.True(t, ok) + assert.Equal(t, tt.expectedSum, val.DoubleVal()) + + val, ok = ls.At(0).Attributes().Get("avg_price") + assert.True(t, ok) + assert.Equal(t, tt.expectedAvg, val.DoubleVal()) }) } } @@ -180,24 +281,24 @@ func TestWindowTumblingMax(t *testing.T) { /* func TestAvgContext_K_MIN(t *testing.T) { ls := GenerateTestLogs() - res, err := min(ls, "price") + expectedRes, err := min(ls, "price") assert.Nil(t, err) - assert.Equal(t, 0.0, res) + assert.Equal(t, 0.0, expectedRes) } func TestAvgContext_K_MAX(t *testing.T) { ls := GenerateTestLogs() - res, err := max(ls, "price") + expectedRes, err := max(ls, "price") assert.Nil(t, err) - assert.Equal(t, 99.0, res) + assert.Equal(t, 99.0, expectedRes) } func TestAvgContext_K_SUM(t *testing.T) { ls := GenerateTestLogs() - res, err := sum(ls, "price") + expectedRes, err := sum(ls, "price") assert.Nil(t, err) - assert.Equal(t, 4950.0, res) + assert.Equal(t, 4950.0, expectedRes) } */ diff --git a/processor/stream_processor/parser/sql_stream_visitor.go b/processor/stream_processor/parser/sql_stream_visitor.go index 2fb79eb05f87..3661e8522020 100644 --- a/processor/stream_processor/parser/sql_stream_visitor.go +++ b/processor/stream_processor/parser/sql_stream_visitor.go @@ -23,11 +23,11 @@ type SQLStreamVisitor struct { tumblingPeriod time.Duration // this is what we've got - origLogRecords plog.LogRecordSlice - currentOrigRecord plog.LogRecord + originalRecords plog.LogRecordSlice + currentOriginalRecord plog.LogRecord // this is logs to emit - resultLogRecords plog.LogRecordSlice + resultRecords plog.LogRecordSlice currentResultRecord plog.LogRecord groupByTempLogRecords map[string]plog.LogRecordSlice @@ -68,18 +68,17 @@ func (v *SQLStreamVisitor) startSimpleWorkerLoop() { for { select { - case v.origLogRecords = <-v.in: - v.resultLogRecords = plog.NewLogRecordSlice() + case v.originalRecords = <-v.in: if err := v.runQuery(); err != nil { v.outErr <- err break } - v.out <- v.resultLogRecords - v.origLogRecords = plog.NewLogRecordSlice() + v.out <- v.resultRecords + v.originalRecords = plog.NewLogRecordSlice() case <-v.shutdownC: - if v.resultLogRecords.Len() > 0 { - v.out <- v.resultLogRecords + if v.resultRecords.Len() > 0 { + v.out <- v.resultRecords } v.logger.Debug("sql engine shutting down") return @@ -90,14 +89,14 @@ func (v *SQLStreamVisitor) startSimpleWorkerLoop() { } func (v *SQLStreamVisitor) startWindowTumblingLoop() { - v.origLogRecords = plog.NewLogRecordSlice() + v.originalRecords = plog.NewLogRecordSlice() ticker := time.NewTicker(v.tumblingPeriod) go func() { for { select { case newRec := <-v.in: - newRec.CopyTo(v.origLogRecords) + newRec.CopyTo(v.originalRecords) case <-v.shutdownC: v.logger.Debug("sql engine shutting down") return @@ -109,13 +108,13 @@ func (v *SQLStreamVisitor) startWindowTumblingLoop() { for { select { case <-ticker.C: - if v.origLogRecords.Len() > 0 { + if v.originalRecords.Len() > 0 { if err := v.runQuery(); err != nil { v.outErr <- err break } - v.out <- v.resultLogRecords - v.origLogRecords = plog.NewLogRecordSlice() + v.out <- v.resultRecords + v.originalRecords = plog.NewLogRecordSlice() } case <-v.shutdownC: v.logger.Debug("sql engine shutting down") @@ -127,6 +126,7 @@ func (v *SQLStreamVisitor) startWindowTumblingLoop() { } func (v *SQLStreamVisitor) runQuery() error { + v.resultRecords = plog.NewLogRecordSlice() is := antlr.NewInputStream(v.query) lexer := NewSqlLexer(is) stream := antlr.NewCommonTokenStream(lexer, antlr.TokenDefaultChannel) @@ -141,7 +141,7 @@ func (v *SQLStreamVisitor) runQuery() error { } func (v *SQLStreamVisitor) GetResult() (plog.LogRecordSlice, error) { - return v.origLogRecords, nil + return v.originalRecords, nil } func (v *SQLStreamVisitor) Visit(tree antlr.ParseTree) interface{} { @@ -209,8 +209,8 @@ func (v *SQLStreamVisitor) VisitGroupBy(ctx *GroupByContext) interface{} { v.groupByTempLogRecords = make(map[string]plog.LogRecordSlice) - for i := 0; i < v.origLogRecords.Len(); i++ { - record := v.origLogRecords.At(i) + for i := 0; i < v.originalRecords.Len(); i++ { + record := v.originalRecords.At(i) _, value, err := getAttributeValue(ctx.Column(), record.Attributes()) if err != nil { return err @@ -236,7 +236,7 @@ func (v *SQLStreamVisitor) VisitSelectGroupByAggregations(ctx *SelectGroupByAggr } } - v.resultLogRecords = resLS + v.resultRecords = resLS return nil } @@ -244,23 +244,60 @@ func (v *SQLStreamVisitor) VisitSelectAggregations(ctx *SelectAggregationsContex resLS := plog.NewLogRecordSlice() newRec := resLS.AppendEmpty() - if err := calculateAggregations(ctx, newRec, v.origLogRecords); err != nil { + if err := calculateAggregations(ctx, newRec, v.originalRecords); err != nil { return err } - v.resultLogRecords = resLS + v.resultRecords = resLS return nil } func (v *SQLStreamVisitor) VisitAggregationColumn(ctx *AggregationColumnContext) interface{} { - // TODO implement me - panic("implement me") + // first we check that fields listed in select (including nested) exist in log record + fieldName := ctx.IDENTIFIER(0).GetText() + value, ok := v.currentOriginalRecord.Attributes().Get(fieldName) + if !ok { + return fmt.Errorf("field %q missed", fieldName) + } + + // this is simple field + if len(ctx.AllIDENTIFIER()) == 1 { + if ctx.Alias() != nil { + fieldName = ctx.Alias().GetStop().GetText() + } + v.currentResultRecord.Attributes().Insert(fieldName, value) + + return nil + } + + // here we process nested field + nestedFieldName := ctx.IDENTIFIER(1).GetText() + nestedVal, err := nestedFieldExistsInAttr(fieldName, nestedFieldName, v.currentOriginalRecord.Attributes()) + if err != nil { + return err + } + if ctx.Alias() != nil { + fieldName = ctx.Alias().GetStop().GetText() + v.currentResultRecord.Attributes().Insert(fieldName, nestedVal) + return nil + } + + var newMapVal pcommon.Value + newMapVal, ok = v.currentResultRecord.Attributes().Get(fieldName) + if !ok { + newMapVal = pcommon.NewValueMap() + } + + newMapVal.MapVal().Insert(nestedFieldName, nestedVal) + v.currentResultRecord.Attributes().Insert(fieldName, newMapVal) + + return nil } // VisitSelectColumns is called in case of missed where statement and removes missed attributes func (v *SQLStreamVisitor) VisitSelectColumns(ctx *SelectColumnsContext) interface{} { var err error - for i := 0; i < v.origLogRecords.Len(); i++ { - v.currentOrigRecord = v.origLogRecords.At(i) + for i := 0; i < v.originalRecords.Len(); i++ { + v.currentOriginalRecord = v.originalRecords.At(i) v.currentResultRecord = plog.NewLogRecord() for _, col := range ctx.AllColumn() { @@ -270,7 +307,7 @@ func (v *SQLStreamVisitor) VisitSelectColumns(ctx *SelectColumnsContext) interfa } } - v.currentResultRecord.MoveTo(v.resultLogRecords.AppendEmpty()) + v.currentResultRecord.MoveTo(v.resultRecords.AppendEmpty()) } @@ -280,14 +317,16 @@ func (v *SQLStreamVisitor) VisitSelectColumns(ctx *SelectColumnsContext) interfa func (v *SQLStreamVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { var err error - //if WHERE statement missed + // if WHERE statement missed if ctx.Expr() == nil { return nil } - resColumnCtx := getSelectColumnsFromWhereCtx(ctx) + selectColCtx := getSelectColumnsFromWhereCtx(ctx) + selectAggrColCtx := getSelectAggregationsFromWhereCtx(ctx) + selectStarCtx := getSelectStarCtx(ctx) - v.origLogRecords.RemoveIf(func(record plog.LogRecord) bool { - v.currentOrigRecord = record + v.originalRecords.RemoveIf(func(record plog.LogRecord) bool { + v.currentOriginalRecord = record v.currentResultRecord = plog.NewLogRecord() switch res := ctx.Expr().Accept(v).(type) { @@ -300,12 +339,26 @@ func (v *SQLStreamVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { return true } - if errRes := v.applySelectColumns(resColumnCtx); errRes != nil { - err = errRes + // select * case + if selectStarCtx != nil { + v.currentOriginalRecord.MoveTo(v.resultRecords.AppendEmpty()) + return false + } + + // align result records according listed in select fields + if selectColCtx != nil { + err = v.applySelectColumns(selectColCtx) + } + + // the same for aggregation case ##selectTumbling #selectTumblingGroupBy + if selectAggrColCtx != nil { + err = v.applySelectAggregationColumns(selectAggrColCtx) } + v.currentResultRecord.MoveTo(v.resultRecords.AppendEmpty()) return false } + return false }) @@ -313,31 +366,36 @@ func (v *SQLStreamVisitor) VisitWhereStmt(ctx *WhereStmtContext) interface{} { } func (v *SQLStreamVisitor) applySelectColumns(ctx *SelectColumnsContext) error { - //if * in select list - if ctx == nil { - v.currentOrigRecord.MoveTo(v.resultLogRecords.AppendEmpty()) - return nil + for _, col := range ctx.AllColumn() { + switch res := col.Accept(v).(type) { + case error: + return res + } } - for _, col := range ctx.AllColumn() { + return nil +} + +func (v *SQLStreamVisitor) applySelectAggregationColumns(ctx *SelectAggregationsContext) error { + for _, col := range ctx.AllAggregationColumn() { switch res := col.Accept(v).(type) { case error: return res } } - v.currentResultRecord.MoveTo(v.resultLogRecords.AppendEmpty()) + return nil } func (v *SQLStreamVisitor) VisitSelectStar(ctx *SelectStarContext) interface{} { - v.origLogRecords.CopyTo(v.resultLogRecords) + v.originalRecords.CopyTo(v.resultRecords) return nil } func (v *SQLStreamVisitor) VisitIdentifierColumn(ctx *IdentifierColumnContext) interface{} { // first we check that fields listed in select (including nested) exist in log record fieldName := ctx.IDENTIFIER(0).GetText() - value, ok := v.currentOrigRecord.Attributes().Get(fieldName) + value, ok := v.currentOriginalRecord.Attributes().Get(fieldName) if !ok { return fmt.Errorf("field %q missed", fieldName) } @@ -354,7 +412,7 @@ func (v *SQLStreamVisitor) VisitIdentifierColumn(ctx *IdentifierColumnContext) i // here we process nested field nestedFieldName := ctx.IDENTIFIER(1).GetText() - nestedVal, err := nestedFieldExistsInAttr(fieldName, nestedFieldName, v.currentOrigRecord.Attributes()) + nestedVal, err := nestedFieldExistsInAttr(fieldName, nestedFieldName, v.currentOriginalRecord.Attributes()) if err != nil { return err } @@ -420,12 +478,12 @@ func (v *SQLStreamVisitor) VisitSimpleFunction(ctx *SimpleFunctionContext) inter functionMame := ctx.FunctionName().GetText() args := ctx.AllLiteralValue() - value, ok := v.currentOrigRecord.Attributes().Get(fieldName) + value, ok := v.currentOriginalRecord.Attributes().Get(fieldName) if !ok { return fmt.Errorf("field %q missed", fieldName) } - //this is simple field + // this is simple field if len(ctx.AllIDENTIFIER()) == 1 { newValue, err := v.applyFunction(value, functionMame, args...) @@ -433,13 +491,13 @@ func (v *SQLStreamVisitor) VisitSimpleFunction(ctx *SimpleFunctionContext) inter return err } - //v.currentResultRecord.Attributes().Insert(fieldName, newValue) + // v.currentResultRecord.Attributes().Insert(fieldName, newValue) return newValue } // here we process nested field nestedFieldName := ctx.IDENTIFIER(1).GetText() - nestedVal, err := nestedFieldExistsInAttr(fieldName, nestedFieldName, v.currentOrigRecord.Attributes()) + nestedVal, err := nestedFieldExistsInAttr(fieldName, nestedFieldName, v.currentOriginalRecord.Attributes()) if err != nil { return err } @@ -495,7 +553,7 @@ func (v *SQLStreamVisitor) VisitSimpleCondition(ctx *SimpleConditionContext) int } func (v *SQLStreamVisitor) VisitSimpleExpression(ctx *SimpleExpressionContext) interface{} { - fieldValue, ok := v.currentOrigRecord.Attributes().Get(ctx.IDENTIFIER().GetText()) + fieldValue, ok := v.currentOriginalRecord.Attributes().Get(ctx.IDENTIFIER().GetText()) if !ok { return fmt.Errorf("field %q missed in log record", ctx.IDENTIFIER().GetText()) } @@ -510,7 +568,7 @@ func (v *SQLStreamVisitor) VisitSimpleExpression(ctx *SimpleExpressionContext) i func (v *SQLStreamVisitor) VisitNestedExpression(ctx *NestedExpressionContext) interface{} { fieldName := ctx.IDENTIFIER(0).GetText() - fieldValue, ok := v.currentOrigRecord.Attributes().Get(fieldName) + fieldValue, ok := v.currentOriginalRecord.Attributes().Get(fieldName) if !ok { return fmt.Errorf("field %q missed in log record", fieldValue.AsString()) } diff --git a/processor/stream_processor/parser/sql_stream_visitor_test.go b/processor/stream_processor/parser/sql_stream_visitor_test.go index d06832a0c8aa..b49626c70987 100644 --- a/processor/stream_processor/parser/sql_stream_visitor_test.go +++ b/processor/stream_processor/parser/sql_stream_visitor_test.go @@ -215,19 +215,19 @@ func TestSimpleCondition(t *testing.T) { }, { name: "equal true ", - query: `SELECT name, is_alive WHERE is_alive = true;`, + query: `SELECT name, is_alive WHERE is_alive = 'true';`, expectedAttr: []string{"name, price"}, expectedCount: 50, }, { name: "not equal true ", - query: `SELECT name, is_alive WHERE is_alive != true;`, + query: `SELECT name, is_alive WHERE is_alive != 'true';`, expectedAttr: []string{"name, is_alive"}, expectedCount: 50, }, { name: "equal false ", - query: `SELECT name, is_alive WHERE is_alive = false;`, + query: `SELECT name, is_alive WHERE is_alive = 'false';`, expectedAttr: []string{"name, is_alive"}, expectedCount: 50, }, @@ -415,17 +415,17 @@ func TestComplexCompoundCondition(t *testing.T) { }, { name: "3 and", - query: `SELECT * WHERE name like '2' and price < 3 and is_alive = true ;`, + query: `SELECT * WHERE name like '2' and price < 3 and is_alive = 'true' ;`, expectedCount: 1, }, { name: "3 and", - query: `SELECT * WHERE name like '2' and price < 3 and is_alive != true ;`, + query: `SELECT * WHERE name like '2' and price < 3 and is_alive != 'true' ;`, expectedCount: 0, }, { name: "3 and", - query: `SELECT * WHERE (name like '2' and price < 3 and is_alive = true) ;`, + query: `SELECT * WHERE (name like '2' and price < 3 and is_alive = 'true') ;`, expectedCount: 1, }, } diff --git a/processor/stream_processor/parser/visitor_utils.go b/processor/stream_processor/parser/visitor_utils.go index 915977b153bd..6540fb016182 100644 --- a/processor/stream_processor/parser/visitor_utils.go +++ b/processor/stream_processor/parser/visitor_utils.go @@ -2,10 +2,11 @@ package parser import ( "fmt" - "go.opentelemetry.io/collector/pdata/pcommon" - "go.opentelemetry.io/collector/pdata/plog" "strconv" "strings" + + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/plog" ) const ( @@ -219,7 +220,6 @@ func min(ls plog.LogRecordSlice, ctx *AggregationColumnContext) (float64, error) if err != nil { conErr = err } - convertedLeft := leftVal.DoubleVal() _, rightVal, err := getAttributeValueForAggregation(ctx, b.Attributes()) @@ -227,9 +227,7 @@ func min(ls plog.LogRecordSlice, ctx *AggregationColumnContext) (float64, error) conErr = err } - convertedRight := rightVal.DoubleVal() - - return convertedLeft < convertedRight + return leftVal.DoubleVal() < rightVal.DoubleVal() }) if ls.Len() > 0 { @@ -248,26 +246,17 @@ func max(ls plog.LogRecordSlice, ctx *AggregationColumnContext) (float64, error) if err != nil { conErr = err } - convertedLeft, err := strconv.ParseFloat(leftVal.AsString(), 64) - if err != nil { - conErr = err - } _, rightVal, err := getAttributeValueForAggregation(ctx, b.Attributes()) if err != nil { conErr = err } - convertedRight, err := strconv.ParseFloat(rightVal.AsString(), 64) - if err != nil { - conErr = err - } - - return convertedLeft > convertedRight + return leftVal.DoubleVal() > rightVal.DoubleVal() }) if ls.Len() > 0 { - _, res, err := getAttributeValueForAggregation(ctx, ls.At(0).Attributes()) + _, res, err := getAttributeValueForAggregation(ctx, ls.At(ls.Len()-1).Attributes()) convertedRes, _ := strconv.ParseFloat(res.AsString(), 64) return convertedRes, err } @@ -401,7 +390,7 @@ func nestedFieldExistsInAttr(fieldName, nestedFieldName string, attr pcommon.Map return pcommon.NewValueEmpty(), fmt.Errorf("field %q missed", fieldName) } - //if this nested field + // if this nested field if value.Type() != pcommon.ValueTypeMap { return pcommon.NewValueEmpty(), fmt.Errorf("field %q isn't nested", fieldName) } @@ -426,6 +415,30 @@ func getSelectColumnsFromWhereCtx(ctx *WhereStmtContext) *SelectColumnsContext { return nil } +func getSelectAggregationsFromWhereCtx(ctx *WhereStmtContext) *SelectAggregationsContext { + for _, resCtx := range ctx.GetParent().GetChildren() { + resColumnCtx, ok := resCtx.(*SelectAggregationsContext) + if !ok { + continue + } + return resColumnCtx + } + + return nil +} + +func getSelectStarCtx(ctx *WhereStmtContext) *SelectStarContext { + for _, resCtx := range ctx.GetParent().GetChildren() { + resColumnCtx, ok := resCtx.(*SelectStarContext) + if !ok { + continue + } + return resColumnCtx + } + + return nil +} + func substring(value pcommon.Value, start, length string) (pcommon.Value, error) { startN, err := strconv.Atoi(start) From 7239c2dcdbfc00f378c0f16e26e795871c960aa7 Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Fri, 30 Sep 2022 15:59:51 +0300 Subject: [PATCH 31/31] Some updates/fixes/tests for tumbling windows --- .../parser/sql_stream_group_by_test.go | 2 +- .../parser/sql_stream_tumbling_test.go | 63 ++++++++++++++++++- .../stream_processor/parser/visitor_utils.go | 26 ++++++-- 3 files changed, 83 insertions(+), 8 deletions(-) diff --git a/processor/stream_processor/parser/sql_stream_group_by_test.go b/processor/stream_processor/parser/sql_stream_group_by_test.go index d8aaf761e877..117262b03f86 100644 --- a/processor/stream_processor/parser/sql_stream_group_by_test.go +++ b/processor/stream_processor/parser/sql_stream_group_by_test.go @@ -30,7 +30,7 @@ func TestWindowTumblingGroupByFlow(t *testing.T) { in := make(chan plog.LogRecordSlice) out := make(chan plog.LogRecordSlice) outErr := make(chan error) - query := "select name, avg(price) window tumbling 3000 group by name;" + query := "select name, max(price) window tumbling 3000 group by name;" visitor := NewSQLStreamVisitor(query, in, out, outErr, zap.NewNop()) defer visitor.Stop() diff --git a/processor/stream_processor/parser/sql_stream_tumbling_test.go b/processor/stream_processor/parser/sql_stream_tumbling_test.go index e3928c5e3ac0..7d5454237743 100644 --- a/processor/stream_processor/parser/sql_stream_tumbling_test.go +++ b/processor/stream_processor/parser/sql_stream_tumbling_test.go @@ -123,7 +123,7 @@ func TestWindowTumblingLoopOneField(t *testing.T) { } } -func TestWindowTumblingLoopTwoField(t *testing.T) { +func TestWindowTumblingAllAggregations(t *testing.T) { tests := []struct { name, query string expected int @@ -150,7 +150,7 @@ func TestWindowTumblingLoopTwoField(t *testing.T) { expectedAvg: 2.5, }, { - name: "2", + name: "3", query: "select max(price), min(price) as min_price, avg(price) as avg_price, sum(price) as sum_price, count(price) as count_price window tumbling 50 where price > 6 and price < 11;", expected: 1, expectedSum: 34.0, @@ -174,6 +174,7 @@ func TestWindowTumblingLoopTwoField(t *testing.T) { ls := <-out assert.Equal(t, tt.expected, ls.Len()) + assert.Equal(t, ls.At(0).Attributes().Len(), 5) val, ok := ls.At(0).Attributes().Get("price") assert.True(t, ok) @@ -198,6 +199,64 @@ func TestWindowTumblingLoopTwoField(t *testing.T) { } } +func TestWindowTumblingNestedAggregations(t *testing.T) { + tests := []struct { + name, query string + expected int + expectedSum, expectedAvg, expectedCount, expectedMax, expectedMin float64 + }{ + + { + name: "1", + query: "select max(provider.number), min(provider.number) as min_provider_number, avg(provider.number) as avg_provider_number, sum(provider.number) as sum_provider_number, count(provider.number) as count_provider_number window tumbling 50 where price > 6 and price < 11;", + expected: 1, + expectedSum: 34.0, + expectedMin: 7.0, + expectedMax: 10.0, + expectedCount: 4.0, + expectedAvg: 8.5, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + in := make(chan plog.LogRecordSlice) + out := make(chan plog.LogRecordSlice) + outErr := make(chan error) + var wg sync.WaitGroup + wg.Add(1) + visitor := NewSQLStreamVisitor(tt.query, in, out, outErr, zap.NewNop()) + defer visitor.Stop() + + in <- GenerateTestLogs() + ls := <-out + + assert.Equal(t, tt.expected, ls.Len()) + + val, ok := ls.At(0).Attributes().Get("provider") + assert.True(t, ok) + val, ok = val.MapVal().Get("number") + assert.True(t, ok) + assert.Equal(t, tt.expectedMax, val.DoubleVal()) + + val, ok = ls.At(0).Attributes().Get("min_provider_number") + assert.True(t, ok) + assert.Equal(t, tt.expectedMin, val.DoubleVal()) + + val, ok = ls.At(0).Attributes().Get("count_provider_number") + assert.True(t, ok) + assert.Equal(t, tt.expectedCount, val.DoubleVal()) + + val, ok = ls.At(0).Attributes().Get("sum_provider_number") + assert.True(t, ok) + assert.Equal(t, tt.expectedSum, val.DoubleVal()) + + val, ok = ls.At(0).Attributes().Get("avg_provider_number") + assert.True(t, ok) + assert.Equal(t, tt.expectedAvg, val.DoubleVal()) + }) + } +} + func TestWindowTumblingAvg(t *testing.T) { in := make(chan plog.LogRecordSlice) out := make(chan plog.LogRecordSlice) diff --git a/processor/stream_processor/parser/visitor_utils.go b/processor/stream_processor/parser/visitor_utils.go index 6540fb016182..971260faefb7 100644 --- a/processor/stream_processor/parser/visitor_utils.go +++ b/processor/stream_processor/parser/visitor_utils.go @@ -227,7 +227,15 @@ func min(ls plog.LogRecordSlice, ctx *AggregationColumnContext) (float64, error) conErr = err } - return leftVal.DoubleVal() < rightVal.DoubleVal() + switch leftVal.Type() { + case pcommon.ValueTypeInt: + return leftVal.IntVal() < rightVal.IntVal() + case pcommon.ValueTypeDouble: + return leftVal.DoubleVal() < rightVal.DoubleVal() + + } + + return false }) if ls.Len() > 0 { @@ -241,7 +249,7 @@ func min(ls plog.LogRecordSlice, ctx *AggregationColumnContext) (float64, error) func max(ls plog.LogRecordSlice, ctx *AggregationColumnContext) (float64, error) { var conErr error - ls.Sort(func(a, b plog.LogRecord) bool { + sorted := ls.Sort(func(a, b plog.LogRecord) bool { _, leftVal, err := getAttributeValueForAggregation(ctx, a.Attributes()) if err != nil { conErr = err @@ -252,11 +260,19 @@ func max(ls plog.LogRecordSlice, ctx *AggregationColumnContext) (float64, error) conErr = err } - return leftVal.DoubleVal() > rightVal.DoubleVal() + switch leftVal.Type() { + case pcommon.ValueTypeInt: + return leftVal.IntVal() > rightVal.IntVal() + case pcommon.ValueTypeDouble: + return leftVal.DoubleVal() > rightVal.DoubleVal() + + } + + return false }) - if ls.Len() > 0 { - _, res, err := getAttributeValueForAggregation(ctx, ls.At(ls.Len()-1).Attributes()) + if sorted.Len() > 0 { + _, res, err := getAttributeValueForAggregation(ctx, sorted.At(0).Attributes()) convertedRes, _ := strconv.ParseFloat(res.AsString(), 64) return convertedRes, err }