diff --git a/Dockerfile b/Dockerfile
index e800a57173..a39c69de29 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -8,7 +8,7 @@ RUN apk update && apk upgrade && \
apk add ca-certificates && \
apk --no-cache add tzdata
-ENV ARGO_VERSION=v3.1.1
+ENV ARGO_VERSION=v3.2.4
RUN wget -q https://github.com/argoproj/argo-workflows/releases/download/${ARGO_VERSION}/argo-linux-${ARCH}.gz
RUN gunzip -f argo-linux-${ARCH}.gz
diff --git a/Makefile b/Makefile
index bac01a499f..4e2a31f79d 100644
--- a/Makefile
+++ b/Makefile
@@ -16,8 +16,8 @@ EXECUTABLES = curl docker gzip go
# docker image publishing options
DOCKER_PUSH?=false
IMAGE_NAMESPACE?=quay.io/argoproj
-VERSION?=v1.5.3-cap-CR-7899
-BASE_VERSION:=v1.5.3-cap-CR-7899
+VERSION?=v1.5.5-cap-CR-7756
+BASE_VERSION:=v1.5.5-cap-CR-7756
override LDFLAGS += \
-X ${PACKAGE}.version=${VERSION} \
diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json
index 583619e2e8..dc8e1583a2 100644
--- a/api/openapi-spec/swagger.json
+++ b/api/openapi-spec/swagger.json
@@ -2,7 +2,7 @@
"swagger": "2.0",
"info": {
"title": "Argo Events",
- "version": "v1.5.3-cap-CR-7899"
+ "version": "v1.5.5-cap-CR-7756"
},
"paths": {},
"definitions": {
@@ -2336,6 +2336,10 @@
"description": "Region is AWS region",
"type": "string"
},
+ "roleARN": {
+ "description": "RoleARN is the Amazon Resource Name (ARN) of the role to assume.",
+ "type": "string"
+ },
"secretKey": {
"description": "SecretKey refers K8s secret containing aws secret key",
"$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector"
diff --git a/api/sensor.html b/api/sensor.html
index 77457db87b..dfd53f2597 100644
--- a/api/sensor.html
+++ b/api/sensor.html
@@ -48,6 +48,7 @@
AWSLambdaTrigger
+(Optional)
AccessKey refers K8s secret containing aws access key
|
@@ -61,6 +62,7 @@ AWSLambdaTrigger
+(Optional)
SecretKey refers K8s secret containing aws secret key
|
@@ -125,6 +127,18 @@ AWSLambdaTrigger
+
+
+roleARN
+
+string
+
+ |
+
+(Optional)
+ RoleARN is the Amazon Resource Name (ARN) of the role to assume.
+ |
+
ArgoWorkflowOperation
diff --git a/api/sensor.md b/api/sensor.md
index 0ea65f20ab..16ce1ae8f5 100644
--- a/api/sensor.md
+++ b/api/sensor.md
@@ -59,6 +59,7 @@ FunctionName refers to the name of the function to invoke.
Kubernetes core/v1.SecretKeySelector
+(Optional)
AccessKey refers K8s secret containing aws access key
@@ -71,6 +72,7 @@ AccessKey refers K8s secret containing aws access key
Kubernetes core/v1.SecretKeySelector
|
+(Optional)
SecretKey refers K8s secret containing aws secret key
@@ -146,6 +148,17 @@ permission to invoke the function.
|
+
+
+roleARN string
+ |
+
+(Optional)
+
+RoleARN is the Amazon Resource Name (ARN) of the role to assume.
+
+ |
+
diff --git a/controllers/sensor/validate.go b/controllers/sensor/validate.go
index dcfd5d883d..f8f9e7e06f 100644
--- a/controllers/sensor/validate.go
+++ b/controllers/sensor/validate.go
@@ -271,9 +271,6 @@ func validateAWSLambdaTrigger(trigger *v1alpha1.AWSLambdaTrigger) error {
if trigger.Region == "" {
return errors.New("region in not specified")
}
- if trigger.AccessKey == nil || trigger.SecretKey == nil {
- return errors.New("either accesskey or secretkey secret selector is not specified")
- }
if trigger.Payload == nil {
return errors.New("payload parameters are not specified")
}
diff --git a/eventsources/common/common.go b/eventsources/common/common.go
new file mode 100644
index 0000000000..d4d23327e0
--- /dev/null
+++ b/eventsources/common/common.go
@@ -0,0 +1,13 @@
+package common
+
+import "github.com/cloudevents/sdk-go/v2/event"
+
+type Options func(*event.Event) error
+
+// Option to set different ID for event
+func WithID(id string) Options {
+ return func(e *event.Event) error {
+ e.SetID(id)
+ return nil
+ }
+}
diff --git a/eventsources/common/webhook/webhook.go b/eventsources/common/webhook/webhook.go
index fa33fa23a5..25ee684a8d 100644
--- a/eventsources/common/webhook/webhook.go
+++ b/eventsources/common/webhook/webhook.go
@@ -27,6 +27,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
metrics "github.com/argoproj/argo-events/metrics"
"github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1"
)
@@ -177,7 +178,7 @@ func activateRoute(router Router, controller *Controller) {
}
// manageRouteChannels consumes data from route's data channel and stops the processing when the event source is stopped/removed
-func manageRouteChannels(router Router, dispatch func([]byte) error) {
+func manageRouteChannels(router Router, dispatch func([]byte, ...eventsourcecommon.Options) error) {
route := router.GetRoute()
logger := route.Logger
for {
@@ -198,7 +199,7 @@ func manageRouteChannels(router Router, dispatch func([]byte) error) {
}
// ManagerRoute manages the lifecycle of a route
-func ManageRoute(ctx context.Context, router Router, controller *Controller, dispatch func([]byte) error) error {
+func ManageRoute(ctx context.Context, router Router, controller *Controller, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
route := router.GetRoute()
logger := route.Logger
diff --git a/eventsources/eventing.go b/eventsources/eventing.go
index e53a64b788..fba64fadf6 100644
--- a/eventsources/eventing.go
+++ b/eventsources/eventing.go
@@ -20,6 +20,7 @@ import (
"github.com/argoproj/argo-events/common/logging"
"github.com/argoproj/argo-events/eventbus"
eventbusdriver "github.com/argoproj/argo-events/eventbus/driver"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/sources/amqp"
"github.com/argoproj/argo-events/eventsources/sources/awssns"
"github.com/argoproj/argo-events/eventsources/sources/awssqs"
@@ -64,7 +65,7 @@ type EventingServer interface {
GetEventSourceType() apicommon.EventSourceType
// Function to start listening events.
- StartListening(ctx context.Context, dispatch func([]byte) error) error
+ StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error
}
// GetEventingServers returns the mapping of event source type and list of eventing servers
@@ -410,13 +411,19 @@ func (e *EventSourceAdaptor) run(ctx context.Context, servers map[apicommon.Even
Jitter: &jitter,
}
if err = common.Connect(&backoff, func() error {
- return s.StartListening(ctx, func(data []byte) error {
+ return s.StartListening(ctx, func(data []byte, opts ...eventsourcecommon.Options) error {
event := cloudevents.NewEvent()
event.SetID(fmt.Sprintf("%x", uuid.New()))
event.SetType(string(s.GetEventSourceType()))
event.SetSource(s.GetEventSourceName())
event.SetSubject(s.GetEventName())
event.SetTime(time.Now())
+ for _, opt := range opts {
+ err := opt(&event)
+ if err != nil {
+ return err
+ }
+ }
err := event.SetData(cloudevents.ApplicationJSON, data)
if err != nil {
return err
diff --git a/eventsources/sources/amqp/start.go b/eventsources/sources/amqp/start.go
index 639c0f2bf2..67fac11daf 100644
--- a/eventsources/sources/amqp/start.go
+++ b/eventsources/sources/amqp/start.go
@@ -27,6 +27,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/sources"
metrics "github.com/argoproj/argo-events/metrics"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
@@ -58,7 +59,7 @@ func (el *EventListener) GetEventSourceType() apicommon.EventSourceType {
}
// StartListening starts listening events
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
log := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
@@ -153,7 +154,7 @@ func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byt
}
}
-func (el *EventListener) handleOne(amqpEventSource *v1alpha1.AMQPEventSource, msg amqplib.Delivery, dispatch func([]byte) error, log *zap.SugaredLogger) error {
+func (el *EventListener) handleOne(amqpEventSource *v1alpha1.AMQPEventSource, msg amqplib.Delivery, dispatch func([]byte, ...eventsourcecommon.Options) error, log *zap.SugaredLogger) error {
defer func(start time.Time) {
el.Metrics.EventProcessingDuration(el.GetEventSourceName(), el.GetEventName(), float64(time.Since(start)/time.Millisecond))
}(time.Now())
diff --git a/eventsources/sources/awssns/start.go b/eventsources/sources/awssns/start.go
index 5dcadb9aca..e54c561653 100644
--- a/eventsources/sources/awssns/start.go
+++ b/eventsources/sources/awssns/start.go
@@ -36,6 +36,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
commonaws "github.com/argoproj/argo-events/eventsources/common/aws"
"github.com/argoproj/argo-events/eventsources/common/webhook"
"github.com/argoproj/argo-events/eventsources/sources"
@@ -267,7 +268,7 @@ func (el *EventListener) GetEventSourceType() apicommon.EventSourceType {
}
// StartListening starts an SNS event source
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
logger := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
diff --git a/eventsources/sources/awssqs/start.go b/eventsources/sources/awssqs/start.go
index fe43577742..274888d0e0 100644
--- a/eventsources/sources/awssqs/start.go
+++ b/eventsources/sources/awssqs/start.go
@@ -28,6 +28,7 @@ import (
"go.uber.org/zap"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
awscommon "github.com/argoproj/argo-events/eventsources/common/aws"
"github.com/argoproj/argo-events/eventsources/sources"
metrics "github.com/argoproj/argo-events/metrics"
@@ -60,7 +61,7 @@ func (el *EventListener) GetEventSourceType() apicommon.EventSourceType {
}
// StartListening starts listening events
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
log := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
log.Info("started processing the AWS SQS event source...")
@@ -122,7 +123,7 @@ func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byt
}
}
-func (el *EventListener) processMessage(ctx context.Context, message *sqslib.Message, dispatch func([]byte) error, ack func(), log *zap.SugaredLogger) {
+func (el *EventListener) processMessage(ctx context.Context, message *sqslib.Message, dispatch func([]byte, ...eventsourcecommon.Options) error, ack func(), log *zap.SugaredLogger) {
defer func(start time.Time) {
el.Metrics.EventProcessingDuration(el.GetEventSourceName(), el.GetEventName(), float64(time.Since(start)/time.Millisecond))
}(time.Now())
diff --git a/eventsources/sources/azureeventshub/start.go b/eventsources/sources/azureeventshub/start.go
index 0ff867dee9..540c572ee8 100644
--- a/eventsources/sources/azureeventshub/start.go
+++ b/eventsources/sources/azureeventshub/start.go
@@ -28,6 +28,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/sources"
metrics "github.com/argoproj/argo-events/metrics"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
@@ -59,7 +60,7 @@ func (el *EventListener) GetEventSourceType() apicommon.EventSourceType {
}
// StartListening starts listening events
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
log := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
log.Info("started processing the Azure Events Hub event source...")
diff --git a/eventsources/sources/bitbucketserver/start.go b/eventsources/sources/bitbucketserver/start.go
index 2c657fcc87..1315daac0e 100644
--- a/eventsources/sources/bitbucketserver/start.go
+++ b/eventsources/sources/bitbucketserver/start.go
@@ -29,6 +29,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/common/webhook"
"github.com/argoproj/argo-events/eventsources/sources"
"github.com/argoproj/argo-events/pkg/apis/events"
@@ -157,7 +158,7 @@ func (router *Router) PostInactivate() error {
}
// StartListening starts an event source
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
defer sources.Recover(el.GetEventName())
bitbucketserverEventSource := &el.BitbucketServerEventSource
diff --git a/eventsources/sources/calendar/start.go b/eventsources/sources/calendar/start.go
index 60c0e099b4..4fceb8f4a7 100644
--- a/eventsources/sources/calendar/start.go
+++ b/eventsources/sources/calendar/start.go
@@ -31,6 +31,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/persist"
metrics "github.com/argoproj/argo-events/metrics"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
@@ -134,7 +135,7 @@ func (el *EventListener) getExecutionTime() (time.Time, error) {
}
// StartListening starts listening events
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
el.log = logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
el.log.Info("started processing the calendar event source...")
diff --git a/eventsources/sources/emitter/start.go b/eventsources/sources/emitter/start.go
index ed7fe046fc..fb8ebe8032 100644
--- a/eventsources/sources/emitter/start.go
+++ b/eventsources/sources/emitter/start.go
@@ -27,6 +27,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/sources"
metrics "github.com/argoproj/argo-events/metrics"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
@@ -58,7 +59,7 @@ func (el *EventListener) GetEventSourceType() apicommon.EventSourceType {
}
// StartListening starts listening events
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
log := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
log.Info("started processing the Emitter event source...")
diff --git a/eventsources/sources/file/start.go b/eventsources/sources/file/start.go
index b0ea5e5a23..a0d0b8350b 100644
--- a/eventsources/sources/file/start.go
+++ b/eventsources/sources/file/start.go
@@ -29,6 +29,7 @@ import (
"go.uber.org/zap"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/common/fsevent"
"github.com/argoproj/argo-events/eventsources/sources"
metrics "github.com/argoproj/argo-events/metrics"
@@ -60,7 +61,7 @@ func (el *EventListener) GetEventSourceType() apicommon.EventSourceType {
}
// StartListening starts listening events
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
log := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
defer sources.Recover(el.GetEventName())
@@ -81,7 +82,7 @@ func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byt
}
// listenEvents listen to file related events.
-func (el *EventListener) listenEvents(ctx context.Context, dispatch func([]byte) error, log *zap.SugaredLogger) error {
+func (el *EventListener) listenEvents(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error, log *zap.SugaredLogger) error {
fileEventSource := &el.FileEventSource
// create new fs watcher
@@ -161,7 +162,7 @@ func (el *EventListener) listenEvents(ctx context.Context, dispatch func([]byte)
}
// listenEvents listen to file related events using polling.
-func (el *EventListener) listenEventsPolling(ctx context.Context, dispatch func([]byte) error, log *zap.SugaredLogger) error {
+func (el *EventListener) listenEventsPolling(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error, log *zap.SugaredLogger) error {
fileEventSource := &el.FileEventSource
// create new fs watcher
diff --git a/eventsources/sources/gcppubsub/start.go b/eventsources/sources/gcppubsub/start.go
index 4f05b14351..69af5d6c5a 100644
--- a/eventsources/sources/gcppubsub/start.go
+++ b/eventsources/sources/gcppubsub/start.go
@@ -34,6 +34,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/sources"
metrics "github.com/argoproj/argo-events/metrics"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
@@ -65,7 +66,7 @@ func (el *EventListener) GetEventSourceType() apicommon.EventSourceType {
}
// StartListening listens to GCP PubSub events
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
// In order to listen events from GCP PubSub,
// 1. Parse the event source that contains configuration to connect to GCP PubSub
// 2. Create a new PubSub client
diff --git a/eventsources/sources/generic/start.go b/eventsources/sources/generic/start.go
index 24ec184e75..ea3b783260 100644
--- a/eventsources/sources/generic/start.go
+++ b/eventsources/sources/generic/start.go
@@ -14,6 +14,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/sources"
metrics "github.com/argoproj/argo-events/metrics"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
@@ -47,7 +48,7 @@ func (el *EventListener) GetEventSourceType() apicommon.EventSourceType {
}
// StartListening listens to generic events
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
logger := logging.FromContext(ctx).
With(zap.String(logging.LabelEventSourceType, string(el.GetEventSourceType())),
zap.String(logging.LabelEventName, el.GetEventName()),
@@ -93,7 +94,7 @@ func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byt
}
}
-func (el *EventListener) handleOne(event *Event, dispatch func([]byte) error, logger *zap.SugaredLogger) error {
+func (el *EventListener) handleOne(event *Event, dispatch func([]byte, ...eventsourcecommon.Options) error, logger *zap.SugaredLogger) error {
defer func(start time.Time) {
el.Metrics.EventProcessingDuration(el.GetEventSourceName(), el.GetEventName(), float64(time.Since(start)/time.Millisecond))
}(time.Now())
diff --git a/eventsources/sources/github/start.go b/eventsources/sources/github/start.go
index 46ad9760f5..25390ec814 100644
--- a/eventsources/sources/github/start.go
+++ b/eventsources/sources/github/start.go
@@ -32,6 +32,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/common/webhook"
"github.com/argoproj/argo-events/pkg/apis/events"
)
@@ -221,7 +222,7 @@ func (router *Router) PostInactivate() error {
}
// StartListening starts an event source
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
logger := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
logger.Info("started processing the Github event source...")
diff --git a/eventsources/sources/gitlab/start.go b/eventsources/sources/gitlab/start.go
index 491872ee11..719f5a584c 100644
--- a/eventsources/sources/gitlab/start.go
+++ b/eventsources/sources/gitlab/start.go
@@ -27,6 +27,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/common/webhook"
"github.com/argoproj/argo-events/eventsources/sources"
"github.com/argoproj/argo-events/pkg/apis/events"
@@ -143,7 +144,7 @@ func (router *Router) PostInactivate() error {
}
// StartListening starts an event source
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
logger := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
logger.Info("started processing the Gitlab event source...")
diff --git a/eventsources/sources/hdfs/start.go b/eventsources/sources/hdfs/start.go
index a271336026..0d0698761b 100644
--- a/eventsources/sources/hdfs/start.go
+++ b/eventsources/sources/hdfs/start.go
@@ -14,6 +14,7 @@ import (
"go.uber.org/zap"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/common/fsevent"
"github.com/argoproj/argo-events/eventsources/common/naivewatcher"
"github.com/argoproj/argo-events/eventsources/sources"
@@ -64,7 +65,7 @@ func (w *WatchableHDFS) GetFileID(fi os.FileInfo) interface{} {
}
// StartListening starts listening events
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
log := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
log.Info("started processing the Emitter event source...")
@@ -156,7 +157,7 @@ func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byt
}
}
-func (el *EventListener) handleOne(event fsevent.Event, dispatch func([]byte) error, log *zap.SugaredLogger) error {
+func (el *EventListener) handleOne(event fsevent.Event, dispatch func([]byte, ...eventsourcecommon.Options) error, log *zap.SugaredLogger) error {
defer func(start time.Time) {
el.Metrics.EventProcessingDuration(el.GetEventSourceName(), el.GetEventName(), float64(time.Since(start)/time.Millisecond))
}(time.Now())
diff --git a/eventsources/sources/kafka/start.go b/eventsources/sources/kafka/start.go
index 6d18fd44c5..bb04f946bf 100644
--- a/eventsources/sources/kafka/start.go
+++ b/eventsources/sources/kafka/start.go
@@ -19,6 +19,7 @@ package kafka
import (
"context"
"encoding/json"
+ "fmt"
"strconv"
"strings"
"sync"
@@ -30,6 +31,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/sources"
metrics "github.com/argoproj/argo-events/metrics"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
@@ -70,7 +72,7 @@ func verifyPartitionAvailable(part int32, partitions []int32) bool {
}
// StartListening starts listening events
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
log := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
defer sources.Recover(el.GetEventName())
@@ -85,7 +87,7 @@ func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byt
}
}
-func (el *EventListener) consumerGroupConsumer(ctx context.Context, log *zap.SugaredLogger, kafkaEventSource *v1alpha1.KafkaEventSource, dispatch func([]byte) error) error {
+func (el *EventListener) consumerGroupConsumer(ctx context.Context, log *zap.SugaredLogger, kafkaEventSource *v1alpha1.KafkaEventSource, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
config, err := getSaramaConfig(kafkaEventSource, log)
if err != nil {
return err
@@ -155,7 +157,7 @@ func (el *EventListener) consumerGroupConsumer(ctx context.Context, log *zap.Sug
return nil
}
-func (el *EventListener) partitionConsumer(ctx context.Context, log *zap.SugaredLogger, kafkaEventSource *v1alpha1.KafkaEventSource, dispatch func([]byte) error) error {
+func (el *EventListener) partitionConsumer(ctx context.Context, log *zap.SugaredLogger, kafkaEventSource *v1alpha1.KafkaEventSource, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
defer sources.Recover(el.GetEventName())
log.Info("start kafka event source...")
@@ -228,7 +230,10 @@ func (el *EventListener) partitionConsumer(ctx context.Context, log *zap.Sugared
if err != nil {
return errors.Wrap(err, "failed to marshal the event data, rejecting the event...")
}
- if err = dispatch(eventBody); err != nil {
+
+ kafkaID := genUniqueID(el.GetEventSourceName(), el.GetEventName(), kafkaEventSource.URL, msg.Topic, msg.Partition, msg.Offset)
+
+ if err = dispatch(eventBody, eventsourcecommon.WithID(kafkaID)); err != nil {
return errors.Wrap(err, "failed to dispatch a Kafka event...")
}
return nil
@@ -310,7 +315,7 @@ func getSaramaConfig(kafkaEventSource *v1alpha1.KafkaEventSource, log *zap.Sugar
// Consumer represents a Sarama consumer group consumer
type Consumer struct {
ready chan bool
- dispatch func([]byte) error
+ dispatch func([]byte, ...eventsourcecommon.Options) error
logger *zap.SugaredLogger
kafkaEventSource *v1alpha1.KafkaEventSource
eventSourceName string
@@ -375,9 +380,20 @@ func (consumer *Consumer) processOne(session sarama.ConsumerGroupSession, messag
return errors.Wrap(err, "failed to marshal the event data, rejecting the event...")
}
- if err = consumer.dispatch(eventBody); err != nil {
+ messageID := genUniqueID(consumer.eventSourceName, consumer.eventName, consumer.kafkaEventSource.URL, message.Topic, message.Partition, message.Offset)
+
+ if err = consumer.dispatch(eventBody, eventsourcecommon.WithID(messageID)); err != nil {
return errors.Wrap(err, "failed to dispatch a kafka event...")
}
session.MarkMessage(message, "")
return nil
}
+
+// Function can be passed as Option to generate unique id for kafka event
+// eventSourceName:eventName:kafka-url:topic:partition:offset
+func genUniqueID(eventSourceName, eventName, kafkaURL, topic string, partition int32, offset int64) string {
+
+ kafkaID := fmt.Sprintf("%s:%s:%s:%s:%d:%d", eventSourceName, eventName, strings.Split(kafkaURL, ",")[0], topic, partition, offset)
+
+ return kafkaID
+}
diff --git a/eventsources/sources/minio/start.go b/eventsources/sources/minio/start.go
index 4b55acfde2..b6fa65ac3d 100644
--- a/eventsources/sources/minio/start.go
+++ b/eventsources/sources/minio/start.go
@@ -21,12 +21,15 @@ import (
"encoding/json"
"time"
- "github.com/minio/minio-go"
+ "github.com/minio/minio-go/v7"
+ "github.com/minio/minio-go/v7/pkg/credentials"
+ "github.com/minio/minio-go/v7/pkg/notification"
"github.com/pkg/errors"
"go.uber.org/zap"
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/sources"
metrics "github.com/argoproj/argo-events/metrics"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
@@ -57,7 +60,7 @@ func (el *EventListener) GetEventSourceType() apicommon.EventSourceType {
}
// StartListening starts listening events
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
log := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName(),
zap.String("bucketName", el.MinioEventSource.Bucket.Name))
@@ -78,17 +81,16 @@ func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byt
}
log.Info("setting up a minio client...")
- minioClient, err := minio.New(minioEventSource.Endpoint, accessKey, secretKey, !minioEventSource.Insecure)
+ minioClient, err := minio.New(minioEventSource.Endpoint, &minio.Options{
+ Creds: credentials.NewStaticV4(accessKey, secretKey, ""), Secure: !minioEventSource.Insecure})
if err != nil {
return errors.Wrapf(err, "failed to create a client for event source %s", el.GetEventName())
}
prefix, suffix := getFilters(minioEventSource)
- doneCh := make(chan struct{})
-
log.Info("started listening to bucket notifications...")
- for notification := range minioClient.ListenBucketNotification(minioEventSource.Bucket.Name, prefix, suffix, minioEventSource.Events, doneCh) {
+ for notification := range minioClient.ListenBucketNotification(ctx, minioEventSource.Bucket.Name, prefix, suffix, minioEventSource.Events) {
if notification.Err != nil {
log.Errorw("invalid notification", zap.Error(notification.Err))
continue
@@ -101,13 +103,12 @@ func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byt
}
<-ctx.Done()
- doneCh <- struct{}{}
log.Info("event source is stopped")
return nil
}
-func (el *EventListener) handleOne(notification minio.NotificationInfo, dispatch func([]byte) error, log *zap.SugaredLogger) error {
+func (el *EventListener) handleOne(notification notification.Info, dispatch func([]byte, ...eventsourcecommon.Options) error, log *zap.SugaredLogger) error {
defer func(start time.Time) {
el.Metrics.EventProcessingDuration(el.GetEventSourceName(), el.GetEventName(), float64(time.Since(start)/time.Millisecond))
}(time.Now())
diff --git a/eventsources/sources/minio/validate.go b/eventsources/sources/minio/validate.go
index f3db82a906..a5c5794969 100644
--- a/eventsources/sources/minio/validate.go
+++ b/eventsources/sources/minio/validate.go
@@ -22,7 +22,7 @@ import (
"github.com/argoproj/argo-events/common"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
- "github.com/minio/minio-go"
+ "github.com/minio/minio-go/v7/pkg/notification"
)
// ValidateEventSource validates the minio event source
@@ -48,7 +48,7 @@ func validate(eventSource *apicommon.S3Artifact) error {
}
if eventSource.Events != nil {
for _, event := range eventSource.Events {
- if minio.NotificationEventType(event) == "" {
+ if notification.EventType(event) == "" {
return fmt.Errorf("unknown event %s", event)
}
}
diff --git a/eventsources/sources/mqtt/start.go b/eventsources/sources/mqtt/start.go
index a218b4a52c..d2b3a43b7b 100644
--- a/eventsources/sources/mqtt/start.go
+++ b/eventsources/sources/mqtt/start.go
@@ -27,6 +27,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/sources"
metrics "github.com/argoproj/argo-events/metrics"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
@@ -58,7 +59,7 @@ func (el *EventListener) GetEventSourceType() apicommon.EventSourceType {
}
// StartListening starts listening events
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
log := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
defer sources.Recover(el.GetEventName())
diff --git a/eventsources/sources/nats/start.go b/eventsources/sources/nats/start.go
index 568d0ee174..d7677648c0 100644
--- a/eventsources/sources/nats/start.go
+++ b/eventsources/sources/nats/start.go
@@ -27,6 +27,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/sources"
metrics "github.com/argoproj/argo-events/metrics"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
@@ -58,7 +59,7 @@ func (el *EventListener) GetEventSourceType() apicommon.EventSourceType {
}
// StartListening starts listening events
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
log := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
defer sources.Recover(el.GetEventName())
diff --git a/eventsources/sources/nsq/start.go b/eventsources/sources/nsq/start.go
index 91c60ddfb5..63676d7bb0 100644
--- a/eventsources/sources/nsq/start.go
+++ b/eventsources/sources/nsq/start.go
@@ -28,6 +28,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/sources"
metrics "github.com/argoproj/argo-events/metrics"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
@@ -62,14 +63,14 @@ type messageHandler struct {
eventSourceName string
eventName string
metrics *metrics.Metrics
- dispatch func([]byte) error
+ dispatch func([]byte, ...eventsourcecommon.Options) error
logger *zap.SugaredLogger
isJSON bool
metadata map[string]string
}
// StartListening listens NSQ events
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
log := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
log.Info("started processing the NSQ event source...")
diff --git a/eventsources/sources/pulsar/start.go b/eventsources/sources/pulsar/start.go
index 9019c58be7..e61a54845d 100644
--- a/eventsources/sources/pulsar/start.go
+++ b/eventsources/sources/pulsar/start.go
@@ -26,6 +26,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/sources"
metrics "github.com/argoproj/argo-events/metrics"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
@@ -57,7 +58,7 @@ func (el *EventListener) GetEventSourceType() apicommon.EventSourceType {
}
// StartListening listens Pulsar events
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
log := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
log.Info("started processing the Pulsar event source...")
@@ -157,6 +158,8 @@ consumeMessages:
if err := el.handleOne(msg, dispatch, log); err != nil {
log.Errorw("failed to process a Pulsar event", zap.Error(err))
el.Metrics.EventProcessingFailed(el.GetEventSourceName(), el.GetEventName())
+ } else {
+ consumer.Ack(msg.Message)
}
case <-ctx.Done():
consumer.Close()
@@ -169,7 +172,7 @@ consumeMessages:
return nil
}
-func (el *EventListener) handleOne(msg pulsar.Message, dispatch func([]byte) error, log *zap.SugaredLogger) error {
+func (el *EventListener) handleOne(msg pulsar.Message, dispatch func([]byte, ...eventsourcecommon.Options) error, log *zap.SugaredLogger) error {
defer func(start time.Time) {
el.Metrics.EventProcessingDuration(el.GetEventSourceName(), el.GetEventName(), float64(time.Since(start)/time.Millisecond))
}(time.Now())
diff --git a/eventsources/sources/redis/start.go b/eventsources/sources/redis/start.go
index 8e9a2dcf47..51b3529dc5 100644
--- a/eventsources/sources/redis/start.go
+++ b/eventsources/sources/redis/start.go
@@ -27,6 +27,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/sources"
metrics "github.com/argoproj/argo-events/metrics"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
@@ -58,7 +59,7 @@ func (el *EventListener) GetEventSourceType() apicommon.EventSourceType {
}
// StartListening listens events published by redis
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
log := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
log.Info("started processing the Redis event source...")
@@ -125,7 +126,7 @@ func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byt
}
}
-func (el *EventListener) handleOne(message *redis.Message, dispatch func([]byte) error, log *zap.SugaredLogger) error {
+func (el *EventListener) handleOne(message *redis.Message, dispatch func([]byte, ...eventsourcecommon.Options) error, log *zap.SugaredLogger) error {
defer func(start time.Time) {
el.Metrics.EventProcessingDuration(el.GetEventSourceName(), el.GetEventName(), float64(time.Since(start)/time.Millisecond))
}(time.Now())
diff --git a/eventsources/sources/resource/start.go b/eventsources/sources/resource/start.go
index fd12f68fb0..432c3745f3 100644
--- a/eventsources/sources/resource/start.go
+++ b/eventsources/sources/resource/start.go
@@ -38,6 +38,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/sources"
metrics "github.com/argoproj/argo-events/metrics"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
@@ -76,7 +77,7 @@ func (el *EventListener) GetEventSourceType() apicommon.EventSourceType {
}
// StartListening watches resource updates and consume those events
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
log := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
defer sources.Recover(el.GetEventName())
@@ -201,6 +202,12 @@ func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byt
handlerFuncs.UpdateFunc = func(oldObj, newObj interface{}) {
log.Info("detected update event")
logResourceMetadata(newObj.(*unstructured.Unstructured), log)
+ uNewObj := newObj.(*unstructured.Unstructured)
+ uOldObj := oldObj.(*unstructured.Unstructured)
+ if uNewObj.GetResourceVersion() == uOldObj.GetResourceVersion() {
+ log.Infof("rejecting update event with identical resource versions: %s", uNewObj.GetResourceVersion())
+ return
+ }
informerEventCh <- &InformerEvent{
Obj: newObj,
OldObj: oldObj,
diff --git a/eventsources/sources/slack/start.go b/eventsources/sources/slack/start.go
index 996f81b228..75b40de13c 100644
--- a/eventsources/sources/slack/start.go
+++ b/eventsources/sources/slack/start.go
@@ -31,6 +31,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/common/webhook"
"github.com/argoproj/argo-events/eventsources/sources"
metrics "github.com/argoproj/argo-events/metrics"
@@ -311,7 +312,7 @@ func (rc *Router) verifyRequest(request *http.Request) error {
}
// StartListening starts an event source
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
log := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
diff --git a/eventsources/sources/storagegrid/start.go b/eventsources/sources/storagegrid/start.go
index a37d774690..4a6e6ff1a9 100644
--- a/eventsources/sources/storagegrid/start.go
+++ b/eventsources/sources/storagegrid/start.go
@@ -35,6 +35,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/common/webhook"
"github.com/argoproj/argo-events/eventsources/sources"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
@@ -336,7 +337,7 @@ func (router *Router) PostInactivate() error {
}
// StartListening starts an event source
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
log := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
log.Info("started processing the Storage Grid event source...")
diff --git a/eventsources/sources/stripe/start.go b/eventsources/sources/stripe/start.go
index 1faa7de41f..1d4d0bc7f5 100644
--- a/eventsources/sources/stripe/start.go
+++ b/eventsources/sources/stripe/start.go
@@ -30,6 +30,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/common/webhook"
"github.com/argoproj/argo-events/eventsources/sources"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
@@ -190,7 +191,7 @@ func filterEvent(event *stripe.Event, filters []string) bool {
}
// StartListening starts an event source
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
log := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
log.Info("started processing the Stripe event source...")
diff --git a/eventsources/sources/webhook/start.go b/eventsources/sources/webhook/start.go
index 90d49b600b..e81ea57ec0 100644
--- a/eventsources/sources/webhook/start.go
+++ b/eventsources/sources/webhook/start.go
@@ -27,6 +27,7 @@ import (
"github.com/argoproj/argo-events/common"
"github.com/argoproj/argo-events/common/logging"
+ eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
"github.com/argoproj/argo-events/eventsources/common/webhook"
metrics "github.com/argoproj/argo-events/metrics"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
@@ -143,7 +144,7 @@ func (router *Router) PostInactivate() error {
}
// StartListening starts listening events
-func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte) error) error {
+func (el *EventListener) StartListening(ctx context.Context, dispatch func([]byte, ...eventsourcecommon.Options) error) error {
log := logging.FromContext(ctx).
With(logging.LabelEventSourceType, el.GetEventSourceType(), logging.LabelEventName, el.GetEventName())
log.Info("started processing the webhook event source...")
diff --git a/examples/sensors/aws-lambda-trigger.yaml b/examples/sensors/aws-lambda-trigger.yaml
index 03f139a09f..eafa52227f 100644
--- a/examples/sensors/aws-lambda-trigger.yaml
+++ b/examples/sensors/aws-lambda-trigger.yaml
@@ -12,18 +12,27 @@ spec:
name: lambda-trigger
awsLambda:
functionName: hello
- accessKey:
- name: aws-secret
- key: accesskey
- secretKey:
- name: aws-secret
- key: secretkey
region: us-east-1
payload:
- src:
dependencyName: test-dep
dataKey: body.name
dest: name
+
# Optional, possible values: RequestResponse, Event and DryRun
# Defaults to RequestResponse, which means invoke the function synchronously.
invocationType: Event
+
+ # Optional, use if ServiceAccount doesn't have IAM Role assigned.
+ # More information on IAM roles for service accounts:
+ # https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html
+ accessKey:
+ name: aws-secret
+ key: accesskey
+ secretKey:
+ name: aws-secret
+ key: secretkey
+
+ # Optional, use if your IAM user/role should assume another role to
+ # perform this action
+ roleARN: arn:aws:iam::123456789012:role/some-role
diff --git a/go.mod b/go.mod
index 364d77d585..ab19af4b92 100644
--- a/go.mod
+++ b/go.mod
@@ -2,6 +2,8 @@ module github.com/argoproj/argo-events
go 1.17
+retract v1.15.0 // Published accidentally.
+
require (
cloud.google.com/go v0.65.0
cloud.google.com/go/pubsub v1.3.1
@@ -40,7 +42,7 @@ require (
github.com/grpc-ecosystem/grpc-gateway v1.14.6
github.com/imdario/mergo v0.3.12
github.com/joncalhoun/qson v0.0.0-20200422171543-84433dcd3da0
- github.com/minio/minio-go v1.0.1-0.20190523192347-c6c2912aa552
+ github.com/minio/minio-go/v7 v7.0.15
github.com/mitchellh/mapstructure v1.4.1
github.com/nats-io/go-nats v1.7.2
github.com/nats-io/graft v0.0.0-20200605173148-348798afea05
@@ -106,6 +108,7 @@ require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/devigned/tab v0.1.1 // indirect
github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96 // indirect
+ github.com/dustin/go-humanize v1.0.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
@@ -158,8 +161,8 @@ require (
github.com/jstemmer/go-junit-report v0.9.1 // indirect
github.com/jtolds/gls v4.20.0+incompatible // indirect
github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect
- github.com/klauspost/compress v1.13.4 // indirect
- github.com/konsorten/go-windows-terminal-sequences v1.0.3 // indirect
+ github.com/klauspost/compress v1.13.5 // indirect
+ github.com/klauspost/cpuid v1.3.1 // indirect
github.com/kr/pretty v0.2.1 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/lightstep/tracecontext.go v0.0.0-20181129014701-1757c391b1ac // indirect
@@ -168,6 +171,8 @@ require (
github.com/mattn/go-colorable v0.1.8 // indirect
github.com/mattn/go-isatty v0.0.12 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
+ github.com/minio/md5-simd v1.1.0 // indirect
+ github.com/minio/sha256-simd v0.1.1 // indirect
github.com/mitchellh/copystructure v1.0.0 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/reflectwalk v1.0.1 // indirect
@@ -186,11 +191,12 @@ require (
github.com/prometheus/common v0.26.0 // indirect
github.com/prometheus/procfs v0.6.0 // indirect
github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0 // indirect
+ github.com/rs/xid v1.2.1 // indirect
github.com/russross/blackfriday/v2 v2.0.1 // indirect
github.com/sergi/go-diff v1.1.0 // indirect
github.com/shopspring/decimal v1.2.0 // indirect
github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect
- github.com/sirupsen/logrus v1.6.0 // indirect
+ github.com/sirupsen/logrus v1.8.1 // indirect
github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 // indirect
github.com/spaolacci/murmur3 v1.1.0 // indirect
github.com/spf13/afero v1.3.2 // indirect
diff --git a/go.sum b/go.sum
index 971cb2eadd..a92e6fec9c 100644
--- a/go.sum
+++ b/go.sum
@@ -231,6 +231,7 @@ github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96 h1:cenwrSVm+Z7QL
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/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/eapache/go-resiliency v1.2.0 h1:v7g92e/KSN71Rq7vSThKaWIq68fL4YHvWyiUKorFR1Q=
github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
@@ -510,7 +511,6 @@ github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3i
github.com/googleapis/gnostic v0.5.1 h1:A8Yhf6EtqTv9RMsU6MQTyrtV1TjWlR6xU9BsZIwuTCM=
github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
-github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0=
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
@@ -616,7 +616,6 @@ github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
-github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
@@ -635,13 +634,15 @@ github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0
github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.9.8/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.10.8/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
-github.com/klauspost/compress v1.13.4 h1:0zhec2I8zGnjWcKyLl6i3gPqKANCCn5e9xmviEEeX6s=
github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
+github.com/klauspost/compress v1.13.5 h1:9O69jUPDcsT9fEm74W92rZL9FQY7rCdaXVneq+yyzl4=
+github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
+github.com/klauspost/cpuid v1.3.1 h1:5JNjFYYQrZeKRJ0734q51WCEEn2huer72Dc7K+R/b6s=
+github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8=
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
@@ -693,10 +694,12 @@ github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182aff
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
github.com/minio/highwayhash v1.0.1 h1:dZ6IIu8Z14VlC0VpfKofAhCy74wu/Qb5gcn52yWoz/0=
github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=
+github.com/minio/md5-simd v1.1.0 h1:QPfiOqlZH+Cj9teu0t9b1nTBfPbyTl16Of5MeuShdK4=
github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw=
-github.com/minio/minio-go v1.0.1-0.20190523192347-c6c2912aa552 h1:czBFVgFWckvUt4DmJ9Jp40KA3qAawEaC2fi7WEF84K4=
-github.com/minio/minio-go v1.0.1-0.20190523192347-c6c2912aa552/go.mod h1:/haSOWG8hQNx2+JOfLJ9GKp61EAmgPwRVw/Sac0NzaM=
github.com/minio/minio-go/v7 v7.0.2/go.mod h1:dJ80Mv2HeGkYLH1sqS/ksz07ON6csH3S6JUMSQ2zAns=
+github.com/minio/minio-go/v7 v7.0.15 h1:r9/NhjJ+nXYrIYvbObhvc1wPj3YH1iDpJzz61uRKLyY=
+github.com/minio/minio-go/v7 v7.0.15/go.mod h1:pUV0Pc+hPd1nccgmzQF/EXh48l/Z/yps6QPF1aaie4g=
+github.com/minio/sha256-simd v0.1.1 h1:5QHSlgo3nt5yKOJrC7W8w7X+NFl8cMPZm96iu8kKUJU=
github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ=
@@ -856,6 +859,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L
github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
+github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc=
+github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
@@ -874,15 +879,14 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx
github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
-github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I=
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
+github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
+github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/slack-go/slack v0.7.4 h1:Z+7CmUDV+ym4lYLA4NNLFIpr3+nDgViHrx8xsuXgrYs=
github.com/slack-go/slack v0.7.4/go.mod h1:FGqNzJBmxIsZURAxh2a8D21AnOVvvXZvGligs4npPUM=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
-github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 h1:hBSHahWMEgzwRyS6dRpxY0XyjZsHyQ61s084wo5PJe0=
github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
-github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s=
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
@@ -1033,7 +1037,6 @@ go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
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-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20190128193316-c7b33c32a30b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
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=
@@ -1057,6 +1060,7 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
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-20210616213533-5ff15b29337e h1:gsTQYXdTw2Gq7RBsWvlQ91b+aEQ6bXFUngBGuR8sPpI=
@@ -1175,7 +1179,6 @@ golang.org/x/sys v0.0.0-20181019160139-8e24a49d80f8/go.mod h1:STP8DvDyc/dI5b8T5h
golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190124100055-b90733256f2e/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-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1200,6 +1203,7 @@ golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/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=
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1234,6 +1238,7 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/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 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1422,7 +1427,6 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
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.41.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.57.0 h1:9unxIsFcTt4I55uWluz+UmL95q4kdJ0buvQ1ZIqVQww=
gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
diff --git a/manifests/base/kustomization.yaml b/manifests/base/kustomization.yaml
index 467c8b0647..412962d17a 100644
--- a/manifests/base/kustomization.yaml
+++ b/manifests/base/kustomization.yaml
@@ -15,7 +15,7 @@ resources:
images:
- name: quay.io/argoproj/argo-events
newName: quay.io/codefresh/argo-events
- newTag: v1.5.3-cap-CR-7899
+ newTag: v1.5.5-cap-CR-7756
patchesStrategicMerge:
- |-
@@ -30,7 +30,7 @@ patchesStrategicMerge:
- name: eventsource-controller
env:
- name: EVENTSOURCE_IMAGE
- value: quay.io/codefresh/argo-events:v1.5.3-cap-CR-7899
+ value: quay.io/codefresh/argo-events:v1.5.5-cap-CR-7756
- |-
apiVersion: apps/v1
kind: Deployment
@@ -43,4 +43,4 @@ patchesStrategicMerge:
- name: sensor-controller
env:
- name: SENSOR_IMAGE
- value: quay.io/codefresh/argo-events:v1.5.3-cap-CR-7899
+ value: quay.io/codefresh/argo-events:v1.5.5-cap-CR-7756
diff --git a/manifests/extensions/validating-webhook/kustomization.yaml b/manifests/extensions/validating-webhook/kustomization.yaml
index 2d4301df59..a6e69af4ed 100644
--- a/manifests/extensions/validating-webhook/kustomization.yaml
+++ b/manifests/extensions/validating-webhook/kustomization.yaml
@@ -12,4 +12,4 @@ namespace: argo-events
images:
- name: quay.io/argoproj/argo-events
newName: quay.io/codefresh/argo-events
- newTag: v1.5.3-cap-CR-7899
+ newTag: v1.5.5-cap-CR-7756
diff --git a/manifests/install-validating-webhook.yaml b/manifests/install-validating-webhook.yaml
index 8c197683b0..ff96088b10 100644
--- a/manifests/install-validating-webhook.yaml
+++ b/manifests/install-validating-webhook.yaml
@@ -107,7 +107,7 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- image: quay.io/codefresh/argo-events:v1.5.3-cap-CR-7899
+ image: quay.io/codefresh/argo-events:v1.5.5-cap-CR-7756
imagePullPolicy: Always
name: webhook
serviceAccountName: argo-events-webhook-sa
diff --git a/manifests/install.yaml b/manifests/install.yaml
index f75d1be3b8..4558ae53de 100644
--- a/manifests/install.yaml
+++ b/manifests/install.yaml
@@ -303,7 +303,7 @@ spec:
value: nats-streaming:0.22.1
- name: NATS_METRICS_EXPORTER_IMAGE
value: natsio/prometheus-nats-exporter:0.8.0
- image: quay.io/codefresh/argo-events:v1.5.3-cap-CR-7899
+ image: quay.io/codefresh/argo-events:v1.5.5-cap-CR-7756
imagePullPolicy: Always
livenessProbe:
httpGet:
@@ -343,12 +343,12 @@ spec:
- eventsource-controller
env:
- name: EVENTSOURCE_IMAGE
- value: quay.io/codefresh/argo-events:v1.5.3-cap-CR-7899
+ value: quay.io/codefresh/argo-events:v1.5.5-cap-CR-7756
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- image: quay.io/codefresh/argo-events:v1.5.3-cap-CR-7899
+ image: quay.io/codefresh/argo-events:v1.5.5-cap-CR-7756
imagePullPolicy: Always
livenessProbe:
httpGet:
@@ -388,12 +388,12 @@ spec:
- sensor-controller
env:
- name: SENSOR_IMAGE
- value: quay.io/codefresh/argo-events:v1.5.3-cap-CR-7899
+ value: quay.io/codefresh/argo-events:v1.5.5-cap-CR-7756
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- image: quay.io/codefresh/argo-events:v1.5.3-cap-CR-7899
+ image: quay.io/codefresh/argo-events:v1.5.5-cap-CR-7756
livenessProbe:
httpGet:
path: /healthz
diff --git a/manifests/namespace-install.yaml b/manifests/namespace-install.yaml
index acdb589013..1e34068454 100644
--- a/manifests/namespace-install.yaml
+++ b/manifests/namespace-install.yaml
@@ -224,7 +224,7 @@ spec:
value: nats-streaming:0.22.1
- name: NATS_METRICS_EXPORTER_IMAGE
value: natsio/prometheus-nats-exporter:0.8.0
- image: quay.io/codefresh/argo-events:v1.5.3-cap-CR-7899
+ image: quay.io/codefresh/argo-events:v1.5.5-cap-CR-7756
imagePullPolicy: Always
livenessProbe:
httpGet:
@@ -265,12 +265,12 @@ spec:
- --namespaced
env:
- name: EVENTSOURCE_IMAGE
- value: quay.io/codefresh/argo-events:v1.5.3-cap-CR-7899
+ value: quay.io/codefresh/argo-events:v1.5.5-cap-CR-7756
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- image: quay.io/codefresh/argo-events:v1.5.3-cap-CR-7899
+ image: quay.io/codefresh/argo-events:v1.5.5-cap-CR-7756
imagePullPolicy: Always
livenessProbe:
httpGet:
@@ -311,12 +311,12 @@ spec:
- --namespaced
env:
- name: SENSOR_IMAGE
- value: quay.io/codefresh/argo-events:v1.5.3-cap-CR-7899
+ value: quay.io/codefresh/argo-events:v1.5.5-cap-CR-7756
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- image: quay.io/codefresh/argo-events:v1.5.3-cap-CR-7899
+ image: quay.io/codefresh/argo-events:v1.5.5-cap-CR-7756
livenessProbe:
httpGet:
path: /healthz
diff --git a/pkg/apis/events/event-data.go b/pkg/apis/events/event-data.go
index a3cbbb92df..ffd79e6328 100644
--- a/pkg/apis/events/event-data.go
+++ b/pkg/apis/events/event-data.go
@@ -20,10 +20,10 @@ import (
"net/http"
"time"
+ "github.com/minio/minio-go/v7/pkg/notification"
"github.com/stripe/stripe-go"
sqslib "github.com/aws/aws-sdk-go/service/sqs"
- "github.com/minio/minio-go"
)
// AMQPEventData represents the event data generated by AMQP eventsource.
@@ -184,7 +184,7 @@ type KafkaEventData struct {
// MinioEventData represents the event data generated by the Minio eventsource.
type MinioEventData struct {
- Notification []minio.NotificationEvent `json:"notification"`
+ Notification []notification.Event `json:"notification"`
// Metadata holds the user defined metadata which will passed along the event payload.
Metadata map[string]string `json:"metadata,omitempty"`
}
diff --git a/pkg/apis/sensor/v1alpha1/generated.pb.go b/pkg/apis/sensor/v1alpha1/generated.pb.go
index cc335acf19..b6effaba74 100644
--- a/pkg/apis/sensor/v1alpha1/generated.pb.go
+++ b/pkg/apis/sensor/v1alpha1/generated.pb.go
@@ -1249,265 +1249,266 @@ func init() {
}
var fileDescriptor_6c4bded897df1f16 = []byte{
- // 4121 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3b, 0x4b, 0x6c, 0x23, 0xd9,
- 0x71, 0x43, 0x8a, 0x94, 0xc8, 0x12, 0x25, 0xcd, 0xbc, 0xf1, 0xd8, 0xb4, 0xbc, 0x2b, 0x0e, 0xda,
- 0x88, 0x33, 0x36, 0x6c, 0x6a, 0x77, 0x36, 0x89, 0xe5, 0x09, 0x62, 0xaf, 0x44, 0x49, 0xf3, 0xe3,
- 0x8c, 0xb4, 0xd5, 0xd4, 0x2c, 0xf2, 0x01, 0xd6, 0xad, 0xe6, 0x23, 0xd9, 0xab, 0x66, 0x37, 0xb7,
- 0xdf, 0xa3, 0x66, 0x65, 0xc0, 0x89, 0x11, 0x23, 0x87, 0x20, 0x80, 0x93, 0x43, 0x0e, 0x39, 0xe5,
- 0x73, 0xc8, 0x29, 0x39, 0x24, 0xc8, 0x31, 0xc8, 0xc5, 0xa7, 0x05, 0x72, 0xf0, 0xe6, 0x10, 0xc0,
- 0x87, 0x40, 0xc8, 0xca, 0xa7, 0x1c, 0x82, 0xc4, 0xd7, 0x39, 0x05, 0xef, 0xd7, 0x3f, 0x72, 0x3c,
- 0xd2, 0x70, 0xa2, 0x09, 0x90, 0x5b, 0x77, 0x55, 0xbd, 0xaa, 0xf7, 0xea, 0x55, 0xd5, 0xab, 0x7a,
- 0x1f, 0xb8, 0xd7, 0xf7, 0xf8, 0x60, 0x7c, 0xd8, 0x74, 0xc3, 0xe1, 0xba, 0x13, 0xf5, 0xc3, 0x51,
- 0x14, 0x7e, 0x28, 0x3f, 0xbe, 0x41, 0x8f, 0x69, 0xc0, 0xd9, 0xfa, 0xe8, 0xa8, 0xbf, 0xee, 0x8c,
- 0x3c, 0xb6, 0xce, 0x68, 0xc0, 0xc2, 0x68, 0xfd, 0xf8, 0x6d, 0xc7, 0x1f, 0x0d, 0x9c, 0xb7, 0xd7,
- 0xfb, 0x34, 0xa0, 0x91, 0xc3, 0x69, 0xb7, 0x39, 0x8a, 0x42, 0x1e, 0x92, 0x8d, 0x84, 0x53, 0xd3,
- 0x70, 0x92, 0x1f, 0x1f, 0x28, 0x4e, 0xcd, 0xd1, 0x51, 0xbf, 0x29, 0x38, 0x35, 0x15, 0xa7, 0xa6,
- 0xe1, 0xb4, 0xfa, 0x9d, 0x73, 0xf7, 0xc1, 0x0d, 0x87, 0xc3, 0x30, 0xc8, 0x8b, 0x5e, 0xfd, 0x46,
- 0x8a, 0x41, 0x3f, 0xec, 0x87, 0xeb, 0x12, 0x7c, 0x38, 0xee, 0xc9, 0x3f, 0xf9, 0x23, 0xbf, 0x34,
- 0xb9, 0x75, 0xb4, 0xc1, 0x9a, 0x5e, 0x28, 0x58, 0xae, 0xbb, 0x61, 0x44, 0xd7, 0x8f, 0x27, 0x46,
- 0xb3, 0xfa, 0x2b, 0x09, 0xcd, 0xd0, 0x71, 0x07, 0x5e, 0x40, 0xa3, 0x93, 0xa4, 0x1f, 0x43, 0xca,
- 0x9d, 0x69, 0xad, 0xd6, 0x9f, 0xd7, 0x2a, 0x1a, 0x07, 0xdc, 0x1b, 0xd2, 0x89, 0x06, 0xbf, 0xf6,
- 0xa2, 0x06, 0xcc, 0x1d, 0xd0, 0xa1, 0x93, 0x6f, 0x67, 0xfd, 0xa4, 0x04, 0x57, 0x37, 0xdf, 0xb7,
- 0xdb, 0xce, 0xf0, 0xb0, 0xeb, 0x74, 0x22, 0xaf, 0xdf, 0xa7, 0x11, 0xd9, 0x80, 0x5a, 0x6f, 0x1c,
- 0xb8, 0xdc, 0x0b, 0x83, 0xc7, 0xce, 0x90, 0xd6, 0x0b, 0x37, 0x0b, 0xb7, 0xaa, 0x5b, 0x9f, 0xfb,
- 0xe4, 0xb4, 0x71, 0xe5, 0xec, 0xb4, 0x51, 0xdb, 0x4d, 0xe1, 0x30, 0x43, 0x49, 0x10, 0xaa, 0x8e,
- 0xeb, 0x52, 0xc6, 0x1e, 0xd2, 0x93, 0x7a, 0xf1, 0x66, 0xe1, 0xd6, 0xe2, 0xed, 0x5f, 0x6a, 0xaa,
- 0xae, 0x89, 0x29, 0x6b, 0x0a, 0x2d, 0x35, 0x8f, 0xdf, 0x6e, 0xda, 0xd4, 0x8d, 0x28, 0x7f, 0x48,
- 0x4f, 0x6c, 0xea, 0x53, 0x97, 0x87, 0xd1, 0xd6, 0xd2, 0xd9, 0x69, 0xa3, 0xba, 0x69, 0xda, 0x62,
- 0xc2, 0x46, 0xf0, 0x64, 0x86, 0xbc, 0x3e, 0x77, 0x61, 0x9e, 0x31, 0x18, 0x13, 0x36, 0xe4, 0x2b,
- 0x30, 0x1f, 0xd1, 0xbe, 0x17, 0x06, 0xf5, 0x92, 0x1c, 0xdb, 0xb2, 0x1e, 0xdb, 0x3c, 0x4a, 0x28,
- 0x6a, 0x2c, 0x19, 0xc3, 0xc2, 0xc8, 0x39, 0xf1, 0x43, 0xa7, 0x5b, 0x2f, 0xdf, 0x9c, 0xbb, 0xb5,
- 0x78, 0xfb, 0x41, 0xf3, 0x65, 0xad, 0xb3, 0xa9, 0xb5, 0xbb, 0xef, 0x44, 0xce, 0x90, 0x72, 0x1a,
- 0x6d, 0xad, 0x68, 0xa1, 0x0b, 0xfb, 0x4a, 0x04, 0x1a, 0x59, 0xe4, 0x77, 0x01, 0x46, 0x86, 0x8c,
- 0xd5, 0xe7, 0x5f, 0xb9, 0x64, 0xa2, 0x25, 0x43, 0x0c, 0x62, 0x98, 0x92, 0x48, 0xee, 0xc0, 0xb2,
- 0x17, 0x1c, 0x87, 0xae, 0x23, 0x26, 0xb6, 0x73, 0x32, 0xa2, 0xf5, 0x05, 0xa9, 0x26, 0x72, 0x76,
- 0xda, 0x58, 0xbe, 0x9f, 0xc1, 0x60, 0x8e, 0xd2, 0xfa, 0x49, 0x11, 0xae, 0x6f, 0x46, 0xfd, 0xf0,
- 0xfd, 0x30, 0x3a, 0xea, 0xf9, 0xe1, 0x53, 0x63, 0x54, 0x01, 0xcc, 0xb3, 0x70, 0x1c, 0xb9, 0xca,
- 0x9c, 0x66, 0x1a, 0xcf, 0x66, 0xc4, 0xbd, 0x9e, 0xe3, 0xf2, 0xb6, 0x96, 0xbb, 0x05, 0x62, 0xea,
- 0x6c, 0xc9, 0x1d, 0xb5, 0x14, 0x72, 0x0f, 0xaa, 0xe1, 0x48, 0xd8, 0xba, 0x98, 0xe5, 0xa2, 0xec,
- 0xfe, 0xd7, 0xf4, 0xb0, 0xab, 0x7b, 0x06, 0xf1, 0xec, 0xb4, 0x71, 0x23, 0xdd, 0xd9, 0x18, 0x81,
- 0x49, 0xe3, 0xdc, 0x6c, 0xcc, 0x5d, 0xf6, 0x6c, 0x58, 0x3f, 0x17, 0x3e, 0x9a, 0x1b, 0x32, 0xb1,
- 0xa1, 0xc8, 0xde, 0xd1, 0xaa, 0xfc, 0xf5, 0xf3, 0x77, 0x46, 0x05, 0xbe, 0xa6, 0xfd, 0x8e, 0x61,
- 0xb8, 0x35, 0x7f, 0x76, 0xda, 0x28, 0xda, 0xef, 0x60, 0x91, 0xbd, 0x43, 0x2c, 0x98, 0xf7, 0x02,
- 0xdf, 0x0b, 0xa8, 0x56, 0x98, 0xd4, 0xeb, 0x7d, 0x09, 0x41, 0x8d, 0x21, 0x5d, 0x28, 0xf5, 0x3c,
- 0x9f, 0x6a, 0x4f, 0xdc, 0x7d, 0x79, 0x3d, 0xec, 0x7a, 0x3e, 0x8d, 0x7b, 0x51, 0x39, 0x3b, 0x6d,
- 0x94, 0x04, 0x04, 0x25, 0x77, 0xf2, 0x5d, 0x98, 0x1b, 0x47, 0xbe, 0xf4, 0xce, 0xc5, 0xdb, 0x3b,
- 0x2f, 0x2f, 0xe4, 0x00, 0xdb, 0xb1, 0x8c, 0x85, 0xb3, 0xd3, 0xc6, 0xdc, 0x01, 0xb6, 0x51, 0xb0,
- 0x26, 0x07, 0x50, 0x75, 0xc3, 0xa0, 0xe7, 0xf5, 0x87, 0xce, 0xa8, 0x5e, 0x96, 0x72, 0x6e, 0x4d,
- 0x0b, 0x2b, 0x2d, 0x49, 0xf4, 0xc8, 0x19, 0x4d, 0x44, 0x96, 0x96, 0x69, 0x8e, 0x09, 0x27, 0xd1,
- 0xf1, 0xbe, 0xc7, 0xeb, 0xf3, 0xb3, 0x76, 0xfc, 0xae, 0xc7, 0xb3, 0x1d, 0xbf, 0xeb, 0x71, 0x14,
- 0xac, 0x89, 0x0b, 0x95, 0x88, 0x6a, 0x57, 0x5a, 0x90, 0x62, 0xbe, 0x75, 0xe1, 0xf9, 0x47, 0xcd,
- 0x60, 0xab, 0x76, 0x76, 0xda, 0xa8, 0x98, 0x3f, 0x8c, 0x19, 0x5b, 0xff, 0x50, 0x82, 0x1b, 0x9b,
- 0xdf, 0x1b, 0x47, 0x74, 0x47, 0x30, 0xb8, 0x37, 0x3e, 0x64, 0xc6, 0x8f, 0x6f, 0x42, 0xa9, 0xf7,
- 0x51, 0x37, 0xd0, 0x8b, 0x42, 0x4d, 0xdb, 0x6e, 0x69, 0xf7, 0xbd, 0xed, 0xc7, 0x28, 0x31, 0xe4,
- 0xab, 0xb0, 0x30, 0x18, 0x1f, 0xca, 0x95, 0x43, 0x99, 0x51, 0x1c, 0xe8, 0xee, 0x29, 0x30, 0x1a,
- 0x3c, 0x19, 0xc1, 0x75, 0x36, 0x70, 0x22, 0xda, 0x8d, 0x23, 0xbf, 0x6c, 0x76, 0xa1, 0x28, 0xff,
- 0x85, 0xb3, 0xd3, 0xc6, 0x75, 0x7b, 0x92, 0x0b, 0x4e, 0x63, 0x4d, 0xba, 0xb0, 0x92, 0x03, 0x6b,
- 0x23, 0x3b, 0xa7, 0xb4, 0xeb, 0x67, 0xa7, 0x8d, 0x95, 0x9c, 0x34, 0xcc, 0xb3, 0xfc, 0x7f, 0xba,
- 0x6e, 0x58, 0x7d, 0xb8, 0xd1, 0x0a, 0x83, 0xae, 0x27, 0x22, 0x14, 0x43, 0xca, 0x28, 0xdf, 0x3a,
- 0xe9, 0x78, 0x43, 0x2a, 0x8c, 0xc6, 0x8d, 0xc2, 0x09, 0xa3, 0x69, 0x45, 0x61, 0x80, 0x12, 0x43,
- 0xbe, 0x0e, 0x15, 0x91, 0xa7, 0x7c, 0x2f, 0x8c, 0x83, 0xcf, 0x55, 0x4d, 0x55, 0xe9, 0x68, 0x38,
- 0xc6, 0x14, 0xd6, 0x8f, 0x0a, 0xf0, 0x85, 0x9c, 0xa4, 0x56, 0xe4, 0x71, 0x1a, 0x79, 0x0e, 0x61,
- 0x30, 0x7f, 0x28, 0xa5, 0xea, 0xe8, 0xb8, 0xf7, 0xf2, 0x0a, 0x98, 0x3a, 0x18, 0x15, 0x15, 0xd5,
- 0x37, 0x6a, 0x51, 0xd6, 0xdf, 0x95, 0x61, 0xa9, 0x35, 0x66, 0x3c, 0x1c, 0x1a, 0x3f, 0x59, 0x17,
- 0x69, 0x4b, 0x74, 0x4c, 0xa3, 0x03, 0x6c, 0xeb, 0x71, 0x5f, 0x33, 0xeb, 0x8f, 0x6d, 0x10, 0x98,
- 0xd0, 0x88, 0x9c, 0x84, 0x51, 0x77, 0x1c, 0xa9, 0xf1, 0x57, 0x92, 0x9c, 0xc4, 0x96, 0x50, 0xd4,
- 0x58, 0x72, 0x00, 0xe0, 0xd2, 0x88, 0x2b, 0xd3, 0xbc, 0x98, 0xab, 0x2c, 0x8b, 0xb9, 0x6b, 0xc5,
- 0x8d, 0x31, 0xc5, 0x88, 0x3c, 0x00, 0xa2, 0xfa, 0x22, 0xdc, 0x64, 0xef, 0x98, 0x46, 0x91, 0xd7,
- 0xa5, 0x3a, 0x3d, 0x5a, 0xd5, 0x5d, 0x21, 0xf6, 0x04, 0x05, 0x4e, 0x69, 0x45, 0x18, 0x94, 0xd8,
- 0x88, 0xba, 0xda, 0xf6, 0xdf, 0x9b, 0x61, 0x02, 0xd2, 0x2a, 0x6d, 0xda, 0x23, 0xea, 0xee, 0x04,
- 0x3c, 0x3a, 0x49, 0x2c, 0x48, 0x80, 0x50, 0x0a, 0x7b, 0xed, 0x49, 0x53, 0xca, 0xe7, 0x17, 0x2e,
- 0xcf, 0xe7, 0x57, 0xbf, 0x09, 0xd5, 0x58, 0x2f, 0xe4, 0x2a, 0xcc, 0x1d, 0xd1, 0x13, 0x65, 0x6e,
- 0x28, 0x3e, 0xc9, 0xe7, 0xa0, 0x7c, 0xec, 0xf8, 0x63, 0xed, 0x54, 0xa8, 0x7e, 0xee, 0x14, 0x37,
- 0x0a, 0xd6, 0x7f, 0x16, 0x00, 0xb6, 0x1d, 0xee, 0xec, 0x7a, 0x3e, 0x57, 0x71, 0x7d, 0xe4, 0xf0,
- 0x41, 0xde, 0x45, 0xf7, 0x1d, 0x3e, 0x40, 0x89, 0x21, 0x5f, 0x87, 0x12, 0x17, 0xb9, 0xa0, 0x72,
- 0xcf, 0xba, 0xa1, 0x10, 0x59, 0xdf, 0xb3, 0xd3, 0x46, 0xe5, 0x81, 0xbd, 0xf7, 0x58, 0x66, 0x84,
- 0x92, 0x8a, 0x34, 0x8c, 0x60, 0x91, 0x30, 0x55, 0xb7, 0xaa, 0x67, 0xa7, 0x8d, 0xf2, 0x13, 0x01,
- 0xd0, 0x7d, 0x20, 0xef, 0x02, 0xb8, 0xe1, 0x50, 0x28, 0x90, 0x87, 0x91, 0x36, 0xb4, 0x9b, 0x46,
- 0xc7, 0xad, 0x18, 0xf3, 0x2c, 0xf3, 0x87, 0xa9, 0x36, 0x32, 0x66, 0xd0, 0xe1, 0xc8, 0x77, 0x38,
- 0x95, 0x2b, 0x78, 0x3a, 0x66, 0x68, 0x38, 0xc6, 0x14, 0xd6, 0x9f, 0x17, 0xa0, 0x2c, 0x57, 0x33,
- 0x32, 0x84, 0x05, 0x37, 0x0c, 0x38, 0xfd, 0x98, 0xeb, 0x10, 0x31, 0x43, 0x16, 0x23, 0x39, 0xb6,
- 0x14, 0xb7, 0xad, 0x45, 0x31, 0x43, 0xfa, 0x07, 0x8d, 0x0c, 0xf2, 0x06, 0x94, 0xba, 0x0e, 0x77,
- 0xa4, 0xde, 0x6a, 0x2a, 0xd3, 0x11, 0x7a, 0x47, 0x09, 0xbd, 0x53, 0xf9, 0xb3, 0xbf, 0x6c, 0x5c,
- 0xf9, 0xc1, 0xbf, 0xdd, 0xbc, 0x62, 0xfd, 0xbc, 0x08, 0xb5, 0x34, 0x3b, 0xb2, 0x0a, 0x45, 0xaf,
- 0xab, 0x27, 0x04, 0xf4, 0xc8, 0x8a, 0xf7, 0xb7, 0xb1, 0xe8, 0x75, 0x65, 0xb4, 0x50, 0x39, 0x40,
- 0x31, 0x5b, 0xc1, 0xe4, 0xd2, 0xe0, 0x5f, 0x85, 0x45, 0xe1, 0x1d, 0xc7, 0x34, 0x62, 0x22, 0x11,
- 0x9e, 0x93, 0xc4, 0xd7, 0x35, 0xf1, 0xa2, 0xb0, 0x9c, 0x27, 0x0a, 0x85, 0x69, 0x3a, 0x61, 0x0d,
- 0x72, 0xae, 0x4b, 0x59, 0x6b, 0x48, 0xcd, 0xef, 0x26, 0xac, 0x88, 0xfe, 0xcb, 0x41, 0x06, 0x5c,
- 0x12, 0xab, 0x39, 0xf8, 0x82, 0x26, 0x5e, 0x11, 0x83, 0x6c, 0x29, 0xb4, 0x6c, 0x97, 0xa7, 0x17,
- 0x89, 0x02, 0x1b, 0x1f, 0x7e, 0x48, 0x5d, 0x95, 0x2f, 0xa5, 0x12, 0x05, 0x5b, 0x81, 0xd1, 0xe0,
- 0x49, 0x1b, 0x4a, 0x22, 0xf8, 0xeb, 0x84, 0xe7, 0x6b, 0xa9, 0x70, 0x17, 0x97, 0xbb, 0xc9, 0x1c,
- 0x89, 0xaa, 0x5a, 0x04, 0x40, 0x19, 0xad, 0x93, 0xbe, 0x8b, 0x78, 0x2d, 0xb9, 0xa4, 0x74, 0xfe,
- 0x17, 0x45, 0x58, 0x91, 0x3a, 0xdf, 0xa6, 0x23, 0x1a, 0x74, 0x69, 0xe0, 0x9e, 0x88, 0xb1, 0x07,
- 0x49, 0xd9, 0x1b, 0xb7, 0x97, 0x39, 0x85, 0xc4, 0x88, 0xb1, 0x4b, 0xbb, 0x50, 0xba, 0x4e, 0x65,
- 0x3a, 0xf1, 0xd8, 0x77, 0xb2, 0x68, 0xcc, 0xd3, 0x8b, 0xe5, 0x41, 0x82, 0xe2, 0x7c, 0x27, 0xb5,
- 0x3c, 0xec, 0x18, 0x04, 0x26, 0x34, 0xe4, 0x18, 0x16, 0x7a, 0xd2, 0x53, 0x99, 0x4e, 0x58, 0xf6,
- 0x66, 0x34, 0xda, 0x64, 0xc4, 0x2a, 0x02, 0x28, 0xeb, 0x55, 0xdf, 0x0c, 0x8d, 0x30, 0xeb, 0x9f,
- 0xe6, 0xe0, 0xc6, 0x54, 0x7a, 0x72, 0xa8, 0xe7, 0x44, 0xf9, 0xd0, 0xf6, 0x0c, 0xd1, 0xce, 0x1b,
- 0x52, 0xdd, 0x87, 0x4a, 0x76, 0xa6, 0xd2, 0xae, 0x5a, 0xbc, 0x04, 0x57, 0xed, 0x69, 0x57, 0x55,
- 0x45, 0xde, 0x0c, 0x43, 0x4a, 0x02, 0x6b, 0x62, 0x40, 0x89, 0xd3, 0x13, 0x0f, 0xca, 0xf4, 0xe3,
- 0x91, 0x9c, 0xca, 0x19, 0x05, 0xed, 0x7c, 0x3c, 0x8a, 0xb4, 0xa0, 0x25, 0x2d, 0xa8, 0x2c, 0x60,
- 0x0c, 0x95, 0x04, 0x11, 0xf6, 0x20, 0x21, 0x12, 0xc6, 0x2d, 0xe0, 0x79, 0xe3, 0x16, 0x14, 0x28,
- 0x31, 0xa2, 0x50, 0xef, 0x79, 0xd4, 0xef, 0xb2, 0x7a, 0x51, 0x76, 0x6e, 0x06, 0x8d, 0xeb, 0xc5,
- 0x6a, 0x57, 0xb0, 0x4b, 0x22, 0x94, 0xfc, 0x65, 0xa8, 0xa5, 0x58, 0x6f, 0x41, 0x2d, 0x5d, 0x0a,
- 0xbe, 0x78, 0x21, 0xb2, 0xfe, 0xbe, 0x04, 0x8b, 0xa9, 0xfa, 0x88, 0xbc, 0xa9, 0x8a, 0x45, 0xd5,
- 0x60, 0x51, 0x37, 0x48, 0x2a, 0xbd, 0x6f, 0xc3, 0xb2, 0xeb, 0x87, 0x01, 0xdd, 0xf6, 0x22, 0x99,
- 0x06, 0x9d, 0x68, 0x67, 0xfd, 0xbc, 0xa6, 0x5c, 0x6e, 0x65, 0xb0, 0x98, 0xa3, 0x26, 0x2e, 0x94,
- 0xdd, 0x88, 0x76, 0x99, 0xce, 0xb5, 0xb6, 0x66, 0x2a, 0xea, 0x5a, 0x82, 0x93, 0x5a, 0x0d, 0xe5,
- 0x27, 0x2a, 0xde, 0xe4, 0xb7, 0xa1, 0xc6, 0xd8, 0x40, 0x26, 0x6b, 0x32, 0xaf, 0xbb, 0x50, 0x51,
- 0x72, 0xf5, 0xec, 0xb4, 0x51, 0xb3, 0xed, 0x7b, 0x71, 0x73, 0xcc, 0x30, 0x13, 0x0b, 0xa5, 0xa8,
- 0xaa, 0x85, 0x0a, 0xf3, 0x0b, 0xe5, 0xae, 0x86, 0x63, 0x4c, 0x21, 0x96, 0x96, 0xc3, 0xc8, 0x09,
- 0xdc, 0x81, 0x8e, 0xca, 0xf1, 0xc4, 0x6d, 0x49, 0x28, 0x6a, 0xac, 0x50, 0x3b, 0x77, 0xfa, 0x7a,
- 0x6b, 0x28, 0x56, 0x7b, 0xc7, 0xe9, 0xa3, 0x80, 0x0b, 0x74, 0x44, 0x7b, 0xf5, 0x4a, 0x16, 0x8d,
- 0xb4, 0x87, 0x02, 0x4e, 0x86, 0x30, 0x1f, 0xd1, 0x61, 0xc8, 0x69, 0xbd, 0x2a, 0x87, 0x7a, 0x7f,
- 0x26, 0xb5, 0xa2, 0x64, 0xa5, 0x2a, 0x72, 0x95, 0xa0, 0x2b, 0x08, 0x6a, 0x21, 0xd6, 0xdf, 0x16,
- 0xa0, 0x62, 0xd4, 0x4f, 0xf6, 0xa0, 0x32, 0x66, 0x34, 0x8a, 0xa3, 0xfc, 0xb9, 0x15, 0x2d, 0xcb,
- 0xe5, 0x03, 0xdd, 0x14, 0x63, 0x26, 0x82, 0xe1, 0xc8, 0x61, 0xec, 0x69, 0x18, 0x75, 0x2f, 0xb6,
- 0xed, 0x29, 0x19, 0xee, 0xeb, 0xa6, 0x18, 0x33, 0xb1, 0xde, 0x83, 0x95, 0xdc, 0xa8, 0xce, 0xb1,
- 0x2c, 0xbd, 0x01, 0xa5, 0x71, 0xe4, 0x2b, 0xbf, 0xad, 0xaa, 0x50, 0x7a, 0x80, 0x6d, 0x1b, 0x25,
- 0xd4, 0xfa, 0x8f, 0x79, 0x58, 0xbc, 0xd7, 0xe9, 0xec, 0x9b, 0x02, 0xe5, 0x05, 0x5e, 0x93, 0x4a,
- 0x67, 0x8b, 0x97, 0x58, 0xc2, 0x1e, 0xc0, 0x1c, 0xf7, 0x8d, 0xab, 0xdd, 0xb9, 0xf0, 0xc6, 0x46,
- 0xa7, 0x6d, 0x6b, 0x23, 0x90, 0x9b, 0x26, 0x9d, 0xb6, 0x8d, 0x82, 0x9f, 0xb0, 0xe9, 0x21, 0xe5,
- 0x83, 0xb0, 0x9b, 0xdf, 0xf0, 0x7d, 0x24, 0xa1, 0xa8, 0xb1, 0xb9, 0x22, 0xa2, 0x7c, 0xe9, 0x45,
- 0xc4, 0x57, 0x61, 0x41, 0xac, 0x7b, 0xe1, 0x58, 0xa5, 0x44, 0x73, 0x89, 0xa6, 0x3a, 0x0a, 0x8c,
- 0x06, 0x4f, 0xfa, 0x50, 0x3d, 0x74, 0x98, 0xe7, 0x6e, 0x8e, 0xf9, 0x40, 0xe7, 0x45, 0x17, 0xd7,
- 0xd7, 0x96, 0xe1, 0xa0, 0xb6, 0xb4, 0xe2, 0x5f, 0x4c, 0x78, 0x93, 0xef, 0xc3, 0xc2, 0x80, 0x3a,
- 0x5d, 0xa1, 0x90, 0x8a, 0x54, 0x08, 0xbe, 0xbc, 0x42, 0x52, 0x06, 0xd8, 0xbc, 0xa7, 0x98, 0xaa,
- 0x8a, 0x2e, 0xd9, 0x23, 0x52, 0x50, 0x34, 0x32, 0xc9, 0x31, 0x2c, 0xa9, 0xca, 0x57, 0x63, 0xea,
- 0x55, 0xd9, 0x89, 0xdf, 0xb8, 0xf8, 0xa6, 0x67, 0x8a, 0xcb, 0xd6, 0xb5, 0xb3, 0xd3, 0xc6, 0x52,
- 0x1a, 0xc2, 0x30, 0x2b, 0x66, 0xf5, 0x0e, 0xd4, 0xd2, 0x3d, 0xbc, 0x50, 0x6d, 0xf5, 0x07, 0x73,
- 0x70, 0xed, 0xe1, 0x86, 0x6d, 0x36, 0xd6, 0xf6, 0x43, 0xdf, 0x73, 0x4f, 0xc8, 0xef, 0xc1, 0xbc,
- 0xef, 0x1c, 0x52, 0x9f, 0xd5, 0x0b, 0x72, 0x08, 0xef, 0xbf, 0xbc, 0x1e, 0x27, 0x98, 0x37, 0xdb,
- 0x92, 0xb3, 0x52, 0x66, 0x6c, 0xdd, 0x0a, 0x88, 0x5a, 0x2c, 0xf9, 0x00, 0x16, 0x0e, 0x1d, 0xf7,
- 0x28, 0xec, 0xf5, 0x74, 0x94, 0xda, 0x78, 0x09, 0x83, 0x91, 0xed, 0x55, 0xfe, 0xa4, 0x7f, 0xd0,
- 0x70, 0x25, 0x36, 0xdc, 0xa0, 0x51, 0x14, 0x46, 0x7b, 0x81, 0x46, 0x69, 0xab, 0x95, 0xfe, 0x5c,
- 0xd9, 0x7a, 0x53, 0xf7, 0xeb, 0xc6, 0xce, 0x34, 0x22, 0x9c, 0xde, 0x76, 0xf5, 0x5b, 0xb0, 0x98,
- 0x1a, 0xdc, 0x85, 0xe6, 0xe1, 0xc7, 0xf3, 0x50, 0x7b, 0xe8, 0xf4, 0x8e, 0x9c, 0x73, 0x06, 0xbd,
- 0x2f, 0x43, 0x99, 0x87, 0x23, 0xcf, 0xd5, 0x19, 0x42, 0x9c, 0x51, 0x75, 0x04, 0x10, 0x15, 0x4e,
- 0xa4, 0xee, 0x23, 0x27, 0xe2, 0x72, 0x63, 0x48, 0x0e, 0xac, 0x9c, 0xa4, 0xee, 0xfb, 0x06, 0x81,
- 0x09, 0x4d, 0x2e, 0xa8, 0x94, 0x2e, 0x3d, 0xa8, 0x6c, 0x40, 0x2d, 0xa2, 0x1f, 0x8d, 0x3d, 0xb9,
- 0x45, 0x79, 0xc4, 0x64, 0x0a, 0x50, 0x4e, 0xce, 0xf3, 0x30, 0x85, 0xc3, 0x0c, 0xa5, 0x48, 0x1c,
- 0x44, 0xbd, 0x1d, 0x51, 0xc6, 0x64, 0x3c, 0xaa, 0x24, 0x89, 0x43, 0x4b, 0xc3, 0x31, 0xa6, 0x10,
- 0x89, 0x56, 0xcf, 0x1f, 0xb3, 0xc1, 0xae, 0xe0, 0x21, 0x0a, 0x05, 0x19, 0x96, 0xca, 0x49, 0xa2,
- 0xb5, 0x9b, 0xc1, 0x62, 0x8e, 0xda, 0xc4, 0xfe, 0xca, 0x2b, 0x8e, 0xfd, 0xa9, 0x95, 0xac, 0x7a,
- 0x89, 0x2b, 0xd9, 0x26, 0xac, 0xc4, 0x26, 0xe0, 0x05, 0xfd, 0x87, 0xf4, 0xa4, 0x0e, 0xd9, 0x22,
- 0x71, 0x3f, 0x8b, 0xc6, 0x3c, 0xbd, 0x58, 0x0d, 0x4c, 0xe1, 0xbe, 0x98, 0x2d, 0x90, 0x4d, 0xd1,
- 0x6e, 0xf0, 0xe4, 0x37, 0xa1, 0xc4, 0x1c, 0xe6, 0xd7, 0x6b, 0x2f, 0x7b, 0x22, 0xb4, 0x69, 0xb7,
- 0xb5, 0xf6, 0x64, 0xe2, 0x20, 0xfe, 0x51, 0xb2, 0xb4, 0xf6, 0x00, 0xda, 0x61, 0xdf, 0x78, 0xd0,
- 0x26, 0xac, 0x78, 0x01, 0xa7, 0xd1, 0xb1, 0xe3, 0xdb, 0xd4, 0x0d, 0x83, 0x2e, 0x93, 0xde, 0x54,
- 0x4a, 0x86, 0x75, 0x3f, 0x8b, 0xc6, 0x3c, 0xbd, 0xf5, 0xd7, 0x73, 0xb0, 0xf8, 0x78, 0xb3, 0x63,
- 0x9f, 0xd3, 0x29, 0x53, 0xdb, 0x04, 0xc5, 0x17, 0x6c, 0x13, 0xa4, 0xa6, 0x7a, 0xee, 0xb5, 0xed,
- 0xbb, 0x5f, 0xbe, 0x83, 0x6b, 0xc7, 0x29, 0xbf, 0x5a, 0xc7, 0xb1, 0xfe, 0xb8, 0x04, 0x57, 0xf7,
- 0x46, 0x34, 0x78, 0x7f, 0xe0, 0xb1, 0xa3, 0xd4, 0xf9, 0xcf, 0x20, 0x64, 0x3c, 0x9f, 0x86, 0xde,
- 0x0b, 0x19, 0x47, 0x89, 0x49, 0x5b, 0x6d, 0xf1, 0x05, 0x56, 0xbb, 0x0e, 0x55, 0x91, 0xb9, 0xb2,
- 0x91, 0xe3, 0x4e, 0xec, 0x82, 0x3c, 0x36, 0x08, 0x4c, 0x68, 0xe4, 0x05, 0x83, 0x31, 0x1f, 0x74,
- 0xc2, 0x23, 0x1a, 0x5c, 0xac, 0x46, 0x52, 0x17, 0x0c, 0x4c, 0x5b, 0x4c, 0xd8, 0x90, 0xdb, 0x00,
- 0x4e, 0x72, 0xd9, 0x41, 0xd5, 0x47, 0xb1, 0xc6, 0x37, 0x93, 0xab, 0x0e, 0x29, 0xaa, 0xb4, 0xa1,
- 0xcd, 0xbf, 0x36, 0x43, 0x5b, 0xb8, 0xf4, 0x03, 0x1e, 0x84, 0x5a, 0xba, 0xa6, 0x3f, 0xc7, 0xa6,
- 0xb1, 0xa9, 0x5a, 0x8a, 0xcf, 0xab, 0x5a, 0xac, 0xbf, 0x59, 0x80, 0xa5, 0xfd, 0xb1, 0xcf, 0x9c,
- 0xe8, 0x55, 0x2e, 0xd2, 0xaf, 0xf9, 0xd0, 0x3e, 0x6d, 0x20, 0xa5, 0x4b, 0x34, 0x90, 0x11, 0x5c,
- 0xe7, 0x3e, 0xeb, 0x44, 0x63, 0xc6, 0x5b, 0x34, 0xe2, 0x4c, 0xef, 0x26, 0x94, 0x2f, 0x7c, 0xa0,
- 0xda, 0x69, 0xdb, 0x79, 0x2e, 0x38, 0x8d, 0x35, 0x39, 0x84, 0x55, 0xee, 0xb3, 0x4d, 0xdf, 0x0f,
- 0x9f, 0xde, 0x0f, 0x54, 0x06, 0xdd, 0x0a, 0x83, 0x80, 0x4a, 0x5f, 0xd1, 0x49, 0x83, 0xa5, 0xfb,
- 0xbb, 0xda, 0x69, 0xdb, 0xcf, 0xa1, 0xc4, 0x5f, 0xc0, 0x85, 0x3c, 0x92, 0xa3, 0x7a, 0xe2, 0xf8,
- 0x5e, 0xd7, 0xe1, 0x54, 0x84, 0x1a, 0x69, 0x53, 0x0b, 0x92, 0xf9, 0x97, 0x34, 0x73, 0xd1, 0xe5,
- 0x3c, 0x09, 0x4e, 0x6b, 0xf7, 0xbf, 0x95, 0x67, 0x74, 0x61, 0x25, 0x0e, 0x2a, 0x5a, 0xef, 0xd5,
- 0x0b, 0x1f, 0x2d, 0x6f, 0x66, 0x39, 0x60, 0x9e, 0x25, 0xf9, 0x3e, 0x5c, 0x73, 0x63, 0xcd, 0xe8,
- 0x4c, 0x59, 0x26, 0x16, 0xb3, 0x64, 0xf3, 0x37, 0xce, 0x4e, 0x1b, 0xd7, 0x5a, 0x79, 0xb6, 0x38,
- 0x29, 0xc9, 0xfa, 0xfd, 0x02, 0x54, 0xd1, 0xe1, 0xb4, 0xed, 0x0d, 0x3d, 0x4e, 0x6e, 0x43, 0x69,
- 0x1c, 0x78, 0x66, 0x31, 0x58, 0x33, 0xde, 0x7d, 0x10, 0x78, 0xfc, 0xd9, 0x69, 0x63, 0x39, 0x26,
- 0xa4, 0x02, 0x82, 0x92, 0x56, 0x24, 0x10, 0x32, 0xe3, 0x63, 0x9c, 0xed, 0xd3, 0x48, 0x20, 0xa4,
- 0x23, 0x97, 0x93, 0x04, 0x02, 0xb3, 0x68, 0xcc, 0xd3, 0x5b, 0x3f, 0x2e, 0xc2, 0xbc, 0x2d, 0x9d,
- 0x84, 0x7c, 0x17, 0x2a, 0x43, 0xca, 0x1d, 0xb9, 0x6b, 0xab, 0xb6, 0x72, 0xde, 0x3a, 0xdf, 0xe1,
- 0xc0, 0x9e, 0xcc, 0x18, 0x1e, 0x51, 0xee, 0x24, 0xbe, 0x9c, 0xc0, 0x30, 0xe6, 0x4a, 0x7a, 0xfa,
- 0x30, 0xb3, 0x38, 0xeb, 0x36, 0xb7, 0xea, 0xb1, 0x3d, 0xa2, 0xee, 0xd4, 0xf3, 0xcb, 0x00, 0xe6,
- 0x19, 0x77, 0xf8, 0x98, 0xcd, 0x7e, 0xb5, 0x46, 0x4b, 0x92, 0xdc, 0x52, 0x27, 0x43, 0xf2, 0x1f,
- 0xb5, 0x14, 0xeb, 0x5f, 0x0a, 0x00, 0x8a, 0xb0, 0xed, 0x31, 0x4e, 0x7e, 0x67, 0x42, 0x91, 0xcd,
- 0xf3, 0x29, 0x52, 0xb4, 0x96, 0x6a, 0x8c, 0x4b, 0x03, 0x03, 0x49, 0x29, 0x91, 0x42, 0xd9, 0xe3,
- 0x74, 0x68, 0xf6, 0x94, 0xdf, 0x9d, 0x75, 0x6c, 0x49, 0xd4, 0xbf, 0x2f, 0xd8, 0xa2, 0xe2, 0x6e,
- 0xfd, 0x55, 0xc9, 0x8c, 0x49, 0x28, 0x96, 0xfc, 0xb0, 0x00, 0xb5, 0xae, 0x39, 0xb6, 0xf0, 0xa8,
- 0xa9, 0xbb, 0xef, 0xbf, 0xb2, 0x93, 0x93, 0xa4, 0x88, 0xda, 0x4e, 0x89, 0xc1, 0x8c, 0x50, 0x12,
- 0x42, 0x85, 0xab, 0x08, 0x6e, 0x86, 0xbf, 0x39, 0xf3, 0x5a, 0x90, 0x3a, 0xe9, 0xd4, 0xac, 0x31,
- 0x16, 0x42, 0xfc, 0xd4, 0xb9, 0xe8, 0xcc, 0x7b, 0xd6, 0xe6, 0x24, 0x55, 0x6d, 0x55, 0x4e, 0x9e,
- 0xab, 0x92, 0x07, 0x40, 0x74, 0xdd, 0xbe, 0xeb, 0x78, 0x3e, 0xed, 0x62, 0x38, 0x0e, 0xd4, 0x36,
- 0x5b, 0x25, 0xb9, 0x38, 0xb0, 0x33, 0x41, 0x81, 0x53, 0x5a, 0x89, 0x4a, 0x55, 0xf6, 0x67, 0x6b,
- 0xcc, 0x52, 0xc9, 0x58, 0xac, 0xe4, 0x9d, 0x14, 0x0e, 0x33, 0x94, 0xe4, 0x16, 0x54, 0x22, 0x3a,
- 0xf2, 0x3d, 0xd7, 0x51, 0x95, 0x6a, 0xd9, 0x5c, 0x6d, 0x52, 0x30, 0x8c, 0xb1, 0x56, 0x08, 0xb5,
- 0xb4, 0x7f, 0x90, 0x0f, 0x62, 0xbf, 0x53, 0x66, 0xff, 0xcd, 0x8b, 0xd7, 0x4e, 0xbf, 0xd8, 0xd1,
- 0xfe, 0xb1, 0x08, 0x35, 0xdb, 0x77, 0xdc, 0x38, 0x85, 0xce, 0xe6, 0x26, 0x85, 0xd7, 0x50, 0x2e,
- 0x00, 0x93, 0xfd, 0x91, 0x59, 0x74, 0xf1, 0xc2, 0x37, 0x48, 0xec, 0xb8, 0x31, 0xa6, 0x18, 0x89,
- 0xbc, 0xdf, 0x1d, 0x38, 0x41, 0x40, 0x7d, 0x9d, 0xca, 0xc7, 0x69, 0x4a, 0x4b, 0x81, 0xd1, 0xe0,
- 0x05, 0xe9, 0x90, 0x32, 0xe6, 0xf4, 0xcd, 0x09, 0x73, 0x4c, 0xfa, 0x48, 0x81, 0xd1, 0xe0, 0xad,
- 0xff, 0x9e, 0x03, 0x62, 0x73, 0x27, 0xe8, 0x3a, 0x51, 0xf7, 0xe1, 0x86, 0xfd, 0xba, 0xae, 0x93,
- 0x3e, 0x9e, 0xbc, 0x4e, 0xfa, 0xd6, 0xb4, 0xeb, 0xa4, 0x5f, 0x7a, 0x38, 0x3e, 0xa4, 0x51, 0x40,
- 0x39, 0x65, 0x66, 0x83, 0xee, 0xff, 0xe2, 0xa5, 0x52, 0xd2, 0x83, 0xa5, 0x91, 0xc3, 0xdd, 0x81,
- 0xcd, 0x23, 0x87, 0xd3, 0xfe, 0x89, 0x9e, 0x87, 0x77, 0x75, 0xb3, 0xa5, 0xfd, 0x34, 0xf2, 0xd9,
- 0x69, 0xe3, 0x97, 0x9f, 0x77, 0xc1, 0x9c, 0x9f, 0x8c, 0x28, 0x6b, 0x4a, 0x72, 0x79, 0xca, 0x9f,
- 0x65, 0x2b, 0x8a, 0x2b, 0xdf, 0x3b, 0xa6, 0x6a, 0x65, 0x95, 0xfe, 0x5c, 0x49, 0xfa, 0xd6, 0x8e,
- 0x31, 0x98, 0xa2, 0xb2, 0xd6, 0xa1, 0xa6, 0x5c, 0x48, 0xef, 0x9b, 0x36, 0xa0, 0xec, 0x88, 0xcc,
- 0x50, 0xba, 0x4a, 0x59, 0x1d, 0x9e, 0xc9, 0x54, 0x11, 0x15, 0xdc, 0xfa, 0xc3, 0x0a, 0xc4, 0x91,
- 0x89, 0xb8, 0x13, 0x0b, 0xd9, 0xc5, 0xef, 0x47, 0x3e, 0xd2, 0x0c, 0x54, 0x10, 0x31, 0x7f, 0xa9,
- 0xf5, 0x4c, 0xdf, 0x96, 0xf2, 0x5c, 0xba, 0xe9, 0xba, 0xe1, 0x58, 0x9f, 0xe3, 0x17, 0x27, 0x6f,
- 0x4b, 0x65, 0x29, 0x70, 0x4a, 0x2b, 0xf2, 0x40, 0xde, 0x44, 0xe5, 0x8e, 0xd0, 0xa9, 0x8e, 0xd7,
- 0x6f, 0x3e, 0xe7, 0x26, 0xaa, 0x22, 0x8a, 0xaf, 0x9f, 0xaa, 0x5f, 0x4c, 0x9a, 0x93, 0x1d, 0x58,
- 0x38, 0x0e, 0xfd, 0xf1, 0x90, 0x9a, 0x6d, 0x88, 0xd5, 0x69, 0x9c, 0x9e, 0x48, 0x92, 0x54, 0x5d,
- 0xae, 0x9a, 0xa0, 0x69, 0x4b, 0x28, 0xac, 0xc8, 0x24, 0xdc, 0xe3, 0x27, 0xfa, 0x8c, 0x5c, 0x97,
- 0x10, 0x5f, 0x99, 0xc6, 0x6e, 0x3f, 0xec, 0xda, 0x59, 0x6a, 0x7d, 0x4d, 0x32, 0x0b, 0xc4, 0x3c,
- 0x4f, 0xf2, 0xa3, 0x02, 0xd4, 0x82, 0xb0, 0x4b, 0x4d, 0x78, 0xd1, 0xb5, 0x74, 0x67, 0xf6, 0xd5,
- 0xaa, 0xf9, 0x38, 0xc5, 0x56, 0x6d, 0x8a, 0xc7, 0xab, 0x48, 0x1a, 0x85, 0x19, 0xf9, 0xe4, 0x00,
- 0x16, 0x79, 0xe8, 0x6b, 0x1f, 0x35, 0x05, 0xf6, 0xda, 0xb4, 0x31, 0x77, 0x62, 0xb2, 0xe4, 0x36,
- 0x4d, 0x02, 0x63, 0x98, 0xe6, 0x43, 0x02, 0xb8, 0xea, 0x0d, 0x9d, 0x3e, 0xdd, 0x1f, 0xfb, 0xbe,
- 0x8a, 0xa9, 0xe6, 0x28, 0x65, 0xea, 0x95, 0x63, 0x11, 0x88, 0x7c, 0xed, 0x17, 0xb4, 0x47, 0x23,
- 0x1a, 0xb8, 0x34, 0xbe, 0x6f, 0x75, 0xf5, 0x7e, 0x8e, 0x13, 0x4e, 0xf0, 0x26, 0x77, 0xe1, 0xda,
- 0x28, 0xf2, 0x42, 0xa9, 0x6a, 0xdf, 0x61, 0x6a, 0x2d, 0xad, 0x4a, 0xe3, 0xfc, 0xa2, 0x66, 0x73,
- 0x6d, 0x3f, 0x4f, 0x80, 0x93, 0x6d, 0xc4, 0xaa, 0x6a, 0x80, 0xb2, 0xc6, 0xd0, 0xab, 0xaa, 0x69,
- 0x8b, 0x31, 0x96, 0xec, 0x42, 0xc5, 0xe9, 0xf5, 0xbc, 0x40, 0x50, 0x2e, 0x4a, 0x53, 0x79, 0x63,
- 0xda, 0xd0, 0x36, 0x35, 0x8d, 0xe2, 0x63, 0xfe, 0x30, 0x6e, 0xbb, 0xfa, 0x1d, 0xb8, 0x36, 0x31,
- 0x75, 0x17, 0xda, 0xf2, 0xb7, 0x01, 0x92, 0xfb, 0x24, 0xe4, 0xcb, 0x50, 0x66, 0xdc, 0x89, 0x4c,
- 0x85, 0x12, 0x67, 0x8d, 0xb6, 0x00, 0xa2, 0xc2, 0x91, 0x9b, 0x50, 0x62, 0x3c, 0x1c, 0xe5, 0xf7,
- 0x28, 0x6c, 0x1e, 0x8e, 0x50, 0x62, 0xac, 0x4f, 0x4b, 0xb0, 0x60, 0x56, 0x1e, 0x96, 0xca, 0xae,
- 0x0a, 0xb3, 0x1e, 0x5d, 0x6b, 0xa6, 0x2f, 0x4c, 0xb2, 0xb2, 0xcb, 0x45, 0xf1, 0xd2, 0x97, 0x8b,
- 0x23, 0x98, 0x1f, 0xc9, 0x60, 0xac, 0x03, 0xd4, 0xdd, 0xd9, 0x65, 0x4b, 0x76, 0x6a, 0xad, 0x55,
- 0xdf, 0xa8, 0x45, 0x90, 0x8f, 0x60, 0x29, 0xa2, 0x3c, 0x3a, 0xc9, 0xac, 0x4d, 0xb3, 0x94, 0xb7,
- 0xf2, 0xb0, 0x0f, 0xd3, 0x2c, 0x31, 0x2b, 0x81, 0x8c, 0xa0, 0x1a, 0x99, 0x62, 0x55, 0x87, 0xba,
- 0xd6, 0xcb, 0x0f, 0x31, 0xae, 0x7b, 0x55, 0xa4, 0x8e, 0x7f, 0x31, 0x11, 0x62, 0xfd, 0x57, 0x01,
- 0xae, 0xe6, 0xa7, 0x81, 0x1c, 0xc1, 0x1c, 0x8b, 0x5c, 0x6d, 0x56, 0xfb, 0xaf, 0x6e, 0x7e, 0x55,
- 0x32, 0xa3, 0xf6, 0x2b, 0xec, 0xc8, 0x45, 0x21, 0x45, 0x98, 0x7d, 0x97, 0x32, 0x9e, 0x37, 0xfb,
- 0x6d, 0xca, 0x38, 0x4a, 0x0c, 0x69, 0xa7, 0x93, 0x1e, 0x95, 0xd3, 0x35, 0xa7, 0x25, 0x3d, 0x5f,
- 0xcc, 0xcb, 0x9b, 0x96, 0xf2, 0x58, 0xff, 0x5a, 0x84, 0xcf, 0x4f, 0xef, 0x18, 0xf9, 0x36, 0x2c,
- 0xc7, 0x25, 0xd3, 0x49, 0xea, 0xcd, 0x59, 0x7c, 0x72, 0xb4, 0x9d, 0xc1, 0x62, 0x8e, 0x5a, 0x64,
- 0x19, 0xfa, 0x0a, 0x97, 0x79, 0x78, 0x96, 0xda, 0xc2, 0x6d, 0xc5, 0x18, 0x4c, 0x51, 0x91, 0x4d,
- 0x58, 0xd1, 0x7f, 0x9d, 0x74, 0xb1, 0x94, 0x3a, 0x9f, 0x69, 0x65, 0xd1, 0x98, 0xa7, 0x17, 0x69,
- 0xac, 0xc8, 0x06, 0xcc, 0x23, 0x82, 0x54, 0x1a, 0xbb, 0xad, 0xc0, 0x68, 0xf0, 0xa2, 0xb2, 0x11,
- 0x9f, 0x9d, 0xec, 0x7d, 0xd5, 0xa4, 0x7c, 0x4c, 0xe1, 0x30, 0x43, 0x99, 0x5c, 0xa4, 0x55, 0xb7,
- 0x71, 0x26, 0x2e, 0xd2, 0x5a, 0x3f, 0x2b, 0xc0, 0x52, 0xc6, 0xa9, 0x48, 0x0f, 0xe6, 0x8e, 0x36,
- 0x4c, 0x3d, 0xf3, 0xf0, 0x15, 0x9e, 0x32, 0x2b, 0x0b, 0x7a, 0xb8, 0xc1, 0x50, 0x08, 0x20, 0x1f,
- 0xc6, 0xa5, 0xd3, 0xcc, 0x97, 0xf3, 0xd2, 0x09, 0x9f, 0x4e, 0xc0, 0xb3, 0x55, 0xd4, 0x3f, 0xd7,
- 0x60, 0x25, 0x17, 0x2d, 0xcf, 0x71, 0x25, 0x46, 0x19, 0x86, 0xbe, 0xc4, 0x3f, 0xc5, 0x30, 0xcc,
- 0xf5, 0xfe, 0x14, 0x15, 0xe9, 0x2b, 0xed, 0xa9, 0x40, 0xd7, 0x9e, 0x69, 0x48, 0xb9, 0xaa, 0x25,
- 0xa7, 0xbe, 0x1f, 0x16, 0xa0, 0xe6, 0xa4, 0x5e, 0x9f, 0xe9, 0x38, 0xf7, 0x68, 0x96, 0x52, 0x66,
- 0xe2, 0xe1, 0x9d, 0xba, 0x1c, 0x96, 0x46, 0x60, 0x46, 0x28, 0x71, 0xa1, 0x34, 0xe0, 0xdc, 0xbc,
- 0x81, 0xda, 0x79, 0x25, 0x77, 0x3b, 0xd4, 0x19, 0xa2, 0x00, 0xa0, 0x64, 0x4e, 0x9e, 0x42, 0xd5,
- 0x79, 0xca, 0xd4, 0x33, 0x53, 0xfd, 0x38, 0x6a, 0x96, 0x8a, 0x2d, 0xf7, 0x62, 0x55, 0x1f, 0xee,
- 0x18, 0x28, 0x26, 0xb2, 0x48, 0x04, 0xf3, 0xae, 0x7c, 0x44, 0xa0, 0xaf, 0xc8, 0xdc, 0x7d, 0x45,
- 0x8f, 0x11, 0xd4, 0x9a, 0x92, 0x01, 0xa1, 0x96, 0x44, 0xfa, 0x50, 0x3e, 0x72, 0x7a, 0x47, 0x8e,
- 0xde, 0x61, 0x9e, 0xc1, 0x2b, 0xd2, 0x77, 0x17, 0x94, 0xe7, 0x4b, 0x08, 0x2a, 0xfe, 0x62, 0xea,
- 0x02, 0x87, 0x33, 0xbd, 0xcd, 0x3c, 0xc3, 0xd4, 0xa5, 0x4e, 0x63, 0xd5, 0xd4, 0x09, 0x00, 0x4a,
- 0xe6, 0x62, 0x34, 0xb2, 0xc8, 0xd7, 0x9b, 0xcc, 0xb3, 0xf8, 0x78, 0x6a, 0x13, 0x44, 0x8d, 0x46,
- 0x42, 0x50, 0xf1, 0x17, 0x36, 0x12, 0x9a, 0xd3, 0x46, 0x9d, 0x43, 0xce, 0x60, 0x23, 0xf9, 0x83,
- 0x4b, 0x65, 0x23, 0x31, 0x14, 0x13, 0x59, 0xe4, 0x03, 0x98, 0xf3, 0xc3, 0xbe, 0x3e, 0x3a, 0x9f,
- 0x61, 0x83, 0x37, 0x39, 0x25, 0x57, 0x8e, 0xde, 0x0e, 0xfb, 0x28, 0x38, 0x93, 0x3f, 0x2a, 0xc0,
- 0xb2, 0x93, 0x79, 0x4d, 0x57, 0x5f, 0x9a, 0xf5, 0x0e, 0xf7, 0xd4, 0xd7, 0x79, 0xea, 0x85, 0x6e,
- 0x16, 0x85, 0x39, 0xd1, 0x32, 0x97, 0x93, 0xe7, 0x6d, 0xf5, 0xe5, 0x59, 0x5d, 0x22, 0x73, 0x6e,
- 0xa7, 0x73, 0x39, 0x09, 0x42, 0x2d, 0x82, 0xfc, 0x69, 0x41, 0x2e, 0xb3, 0xe9, 0x67, 0x54, 0xf5,
- 0x95, 0x99, 0x9f, 0x05, 0x4d, 0x7f, 0xfa, 0x95, 0x59, 0xb9, 0xd3, 0x04, 0x98, 0xef, 0x82, 0xe5,
- 0xc2, 0x62, 0xea, 0x69, 0xe8, 0x39, 0xce, 0x31, 0x6f, 0x03, 0x1c, 0xd3, 0xc8, 0xeb, 0x9d, 0xb4,
- 0x68, 0xc4, 0xf5, 0x0b, 0xad, 0x78, 0x21, 0x79, 0x12, 0x63, 0x30, 0x45, 0xb5, 0xd5, 0xfc, 0xe4,
- 0xb3, 0xb5, 0x2b, 0x9f, 0x7e, 0xb6, 0x76, 0xe5, 0xa7, 0x9f, 0xad, 0x5d, 0xf9, 0xc1, 0xd9, 0x5a,
- 0xe1, 0x93, 0xb3, 0xb5, 0xc2, 0xa7, 0x67, 0x6b, 0x85, 0x9f, 0x9e, 0xad, 0x15, 0xfe, 0xfd, 0x6c,
- 0xad, 0xf0, 0x27, 0x3f, 0x5b, 0xbb, 0xf2, 0x5b, 0x15, 0x33, 0xac, 0xff, 0x09, 0x00, 0x00, 0xff,
- 0xff, 0xf5, 0x9f, 0x52, 0x9a, 0x44, 0x41, 0x00, 0x00,
+ // 4141 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7b, 0x4d, 0x6c, 0x23, 0xd9,
+ 0x71, 0xf0, 0x90, 0x22, 0x25, 0xb2, 0x44, 0x49, 0x33, 0x6f, 0x3c, 0x5e, 0x5a, 0xde, 0x15, 0x07,
+ 0x34, 0x3e, 0x7f, 0x63, 0xc3, 0xa6, 0x76, 0x67, 0x93, 0x58, 0x9e, 0x20, 0xf6, 0x52, 0x94, 0x34,
+ 0x7f, 0x9c, 0x91, 0xb6, 0x9a, 0x9a, 0x45, 0x7e, 0x80, 0x75, 0xab, 0xf9, 0x48, 0xf6, 0xaa, 0xd9,
+ 0xcd, 0xed, 0xf7, 0xa8, 0x59, 0x19, 0x70, 0x62, 0xc4, 0xc8, 0x21, 0x08, 0xe0, 0xe4, 0x90, 0x43,
+ 0x4e, 0xf9, 0x39, 0xe4, 0x94, 0x1c, 0x12, 0xe4, 0x18, 0xe4, 0xe2, 0xd3, 0x02, 0x39, 0x64, 0x73,
+ 0x08, 0xe0, 0x43, 0x20, 0x64, 0xe5, 0x53, 0x0e, 0x41, 0xe2, 0xeb, 0x9c, 0x82, 0xf7, 0xd7, 0x7f,
+ 0xe4, 0x78, 0xc4, 0xe1, 0x44, 0x13, 0x20, 0xb7, 0xee, 0xaa, 0x7a, 0x55, 0xef, 0xd5, 0xab, 0xaa,
+ 0x57, 0xf5, 0x7e, 0xe0, 0x5e, 0xdf, 0xe5, 0x83, 0xf1, 0x51, 0xc3, 0x09, 0x86, 0x9b, 0x76, 0xd8,
+ 0x0f, 0x46, 0x61, 0xf0, 0x91, 0xfc, 0xf8, 0x26, 0x3d, 0xa1, 0x3e, 0x67, 0x9b, 0xa3, 0xe3, 0xfe,
+ 0xa6, 0x3d, 0x72, 0xd9, 0x26, 0xa3, 0x3e, 0x0b, 0xc2, 0xcd, 0x93, 0x77, 0x6c, 0x6f, 0x34, 0xb0,
+ 0xdf, 0xd9, 0xec, 0x53, 0x9f, 0x86, 0x36, 0xa7, 0xdd, 0xc6, 0x28, 0x0c, 0x78, 0x40, 0xb6, 0x62,
+ 0x4e, 0x0d, 0xc3, 0x49, 0x7e, 0x7c, 0xa8, 0x38, 0x35, 0x46, 0xc7, 0xfd, 0x86, 0xe0, 0xd4, 0x50,
+ 0x9c, 0x1a, 0x86, 0xd3, 0xfa, 0x77, 0x2f, 0xdc, 0x07, 0x27, 0x18, 0x0e, 0x03, 0x3f, 0x2b, 0x7a,
+ 0xfd, 0x9b, 0x09, 0x06, 0xfd, 0xa0, 0x1f, 0x6c, 0x4a, 0xf0, 0xd1, 0xb8, 0x27, 0xff, 0xe4, 0x8f,
+ 0xfc, 0xd2, 0xe4, 0xf5, 0xe3, 0x2d, 0xd6, 0x70, 0x03, 0xc1, 0x72, 0xd3, 0x09, 0x42, 0xba, 0x79,
+ 0x32, 0x31, 0x9a, 0xf5, 0x5f, 0x8a, 0x69, 0x86, 0xb6, 0x33, 0x70, 0x7d, 0x1a, 0x9e, 0xc6, 0xfd,
+ 0x18, 0x52, 0x6e, 0x4f, 0x6b, 0xb5, 0xf9, 0xbc, 0x56, 0xe1, 0xd8, 0xe7, 0xee, 0x90, 0x4e, 0x34,
+ 0xf8, 0x95, 0x17, 0x35, 0x60, 0xce, 0x80, 0x0e, 0xed, 0x6c, 0xbb, 0xfa, 0xb3, 0x02, 0x5c, 0x6d,
+ 0x7e, 0x60, 0xb5, 0xed, 0xe1, 0x51, 0xd7, 0xee, 0x84, 0x6e, 0xbf, 0x4f, 0x43, 0xb2, 0x05, 0x95,
+ 0xde, 0xd8, 0x77, 0xb8, 0x1b, 0xf8, 0x8f, 0xed, 0x21, 0xad, 0xe6, 0x6e, 0xe6, 0x6e, 0x95, 0xb7,
+ 0xbf, 0xf0, 0xe9, 0x59, 0xed, 0xca, 0xf9, 0x59, 0xad, 0xb2, 0x97, 0xc0, 0x61, 0x8a, 0x92, 0x20,
+ 0x94, 0x6d, 0xc7, 0xa1, 0x8c, 0x3d, 0xa4, 0xa7, 0xd5, 0xfc, 0xcd, 0xdc, 0xad, 0xe5, 0xdb, 0xff,
+ 0xaf, 0xa1, 0xba, 0x26, 0xa6, 0xac, 0x21, 0xb4, 0xd4, 0x38, 0x79, 0xa7, 0x61, 0x51, 0x27, 0xa4,
+ 0xfc, 0x21, 0x3d, 0xb5, 0xa8, 0x47, 0x1d, 0x1e, 0x84, 0xdb, 0x2b, 0xe7, 0x67, 0xb5, 0x72, 0xd3,
+ 0xb4, 0xc5, 0x98, 0x8d, 0xe0, 0xc9, 0x0c, 0x79, 0x75, 0x61, 0x66, 0x9e, 0x11, 0x18, 0x63, 0x36,
+ 0xe4, 0xab, 0xb0, 0x18, 0xd2, 0xbe, 0x1b, 0xf8, 0xd5, 0x82, 0x1c, 0xdb, 0xaa, 0x1e, 0xdb, 0x22,
+ 0x4a, 0x28, 0x6a, 0x2c, 0x19, 0xc3, 0xd2, 0xc8, 0x3e, 0xf5, 0x02, 0xbb, 0x5b, 0x2d, 0xde, 0x5c,
+ 0xb8, 0xb5, 0x7c, 0xfb, 0x41, 0xe3, 0x65, 0xad, 0xb3, 0xa1, 0xb5, 0x7b, 0x60, 0x87, 0xf6, 0x90,
+ 0x72, 0x1a, 0x6e, 0xaf, 0x69, 0xa1, 0x4b, 0x07, 0x4a, 0x04, 0x1a, 0x59, 0xe4, 0xb7, 0x01, 0x46,
+ 0x86, 0x8c, 0x55, 0x17, 0x5f, 0xb9, 0x64, 0xa2, 0x25, 0x43, 0x04, 0x62, 0x98, 0x90, 0x48, 0xee,
+ 0xc0, 0xaa, 0xeb, 0x9f, 0x04, 0x8e, 0x2d, 0x26, 0xb6, 0x73, 0x3a, 0xa2, 0xd5, 0x25, 0xa9, 0x26,
+ 0x72, 0x7e, 0x56, 0x5b, 0xbd, 0x9f, 0xc2, 0x60, 0x86, 0x92, 0x7c, 0x0d, 0x96, 0xc2, 0xc0, 0xa3,
+ 0x4d, 0x7c, 0x5c, 0x2d, 0xc9, 0x46, 0xd1, 0x30, 0x51, 0x81, 0xd1, 0xe0, 0xeb, 0xff, 0x94, 0x87,
+ 0xeb, 0xcd, 0xb0, 0x1f, 0x7c, 0x10, 0x84, 0xc7, 0x3d, 0x2f, 0x78, 0x6a, 0xec, 0xcf, 0x87, 0x45,
+ 0x16, 0x8c, 0x43, 0x47, 0x59, 0xde, 0x5c, 0x43, 0x6f, 0x86, 0xdc, 0xed, 0xd9, 0x0e, 0x6f, 0xeb,
+ 0x2e, 0x6e, 0x83, 0x98, 0x65, 0x4b, 0x72, 0x47, 0x2d, 0x85, 0xdc, 0x83, 0x72, 0x30, 0x12, 0x6e,
+ 0x21, 0x0c, 0x22, 0x2f, 0x3b, 0xfd, 0x75, 0xdd, 0xe9, 0xf2, 0xbe, 0x41, 0x3c, 0x3b, 0xab, 0xdd,
+ 0x48, 0x76, 0x36, 0x42, 0x60, 0xdc, 0x38, 0x33, 0x71, 0x0b, 0x97, 0x3d, 0x71, 0xf5, 0x9f, 0x0b,
+ 0x77, 0xce, 0x0c, 0x99, 0x58, 0x90, 0x67, 0xef, 0x6a, 0x55, 0xfe, 0xea, 0xc5, 0x3b, 0xa3, 0x62,
+ 0x64, 0xc3, 0x7a, 0xd7, 0x30, 0xdc, 0x5e, 0x3c, 0x3f, 0xab, 0xe5, 0xad, 0x77, 0x31, 0xcf, 0xde,
+ 0x25, 0x75, 0x58, 0x74, 0x7d, 0xcf, 0xf5, 0xa9, 0x56, 0x98, 0xd4, 0xeb, 0x7d, 0x09, 0x41, 0x8d,
+ 0x21, 0x5d, 0x28, 0xf4, 0x5c, 0x8f, 0x6a, 0xa7, 0xdd, 0x7b, 0x79, 0x3d, 0xec, 0xb9, 0x1e, 0x8d,
+ 0x7a, 0x51, 0x3a, 0x3f, 0xab, 0x15, 0x04, 0x04, 0x25, 0x77, 0xf2, 0x3d, 0x58, 0x18, 0x87, 0x9e,
+ 0x74, 0xe4, 0xe5, 0xdb, 0xbb, 0x2f, 0x2f, 0xe4, 0x10, 0xdb, 0x91, 0x8c, 0xa5, 0xf3, 0xb3, 0xda,
+ 0xc2, 0x21, 0xb6, 0x51, 0xb0, 0x26, 0x87, 0x50, 0x76, 0x02, 0xbf, 0xe7, 0xf6, 0x87, 0xf6, 0xa8,
+ 0x5a, 0x94, 0x72, 0x6e, 0x4d, 0x8b, 0x40, 0x2d, 0x49, 0xf4, 0xc8, 0x1e, 0x4d, 0x04, 0xa1, 0x96,
+ 0x69, 0x8e, 0x31, 0x27, 0xd1, 0xf1, 0xbe, 0xcb, 0xab, 0x8b, 0xf3, 0x76, 0xfc, 0xae, 0xcb, 0xd3,
+ 0x1d, 0xbf, 0xeb, 0x72, 0x14, 0xac, 0x89, 0x03, 0xa5, 0x90, 0x6a, 0x57, 0x5a, 0x92, 0x62, 0xbe,
+ 0x3d, 0xf3, 0xfc, 0xa3, 0x66, 0xb0, 0x5d, 0x39, 0x3f, 0xab, 0x95, 0xcc, 0x1f, 0x46, 0x8c, 0xeb,
+ 0x7f, 0x57, 0x80, 0x1b, 0xcd, 0xef, 0x8f, 0x43, 0xba, 0x2b, 0x18, 0xdc, 0x1b, 0x1f, 0x31, 0xe3,
+ 0xc7, 0x37, 0xa1, 0xd0, 0xfb, 0xb8, 0xeb, 0xeb, 0xf5, 0xa3, 0xa2, 0x6d, 0xb7, 0xb0, 0xf7, 0xfe,
+ 0xce, 0x63, 0x94, 0x18, 0x11, 0x2c, 0x06, 0xe3, 0x23, 0xb9, 0xc8, 0xe4, 0xd3, 0xc1, 0xe2, 0x9e,
+ 0x02, 0xa3, 0xc1, 0x93, 0x11, 0x5c, 0x67, 0x03, 0x3b, 0xa4, 0xdd, 0x68, 0x91, 0x90, 0xcd, 0x66,
+ 0x5a, 0x10, 0xde, 0x38, 0x3f, 0xab, 0x5d, 0xb7, 0x26, 0xb9, 0xe0, 0x34, 0xd6, 0xa4, 0x0b, 0x6b,
+ 0x19, 0xb0, 0x36, 0xb2, 0x0b, 0x4a, 0xbb, 0x7e, 0x7e, 0x56, 0x5b, 0xcb, 0x48, 0xc3, 0x2c, 0xcb,
+ 0xff, 0xa3, 0x4b, 0x4c, 0xbd, 0x0f, 0x37, 0x5a, 0x81, 0xdf, 0x75, 0x45, 0x84, 0x62, 0x48, 0x19,
+ 0xe5, 0xdb, 0xa7, 0x1d, 0x77, 0x48, 0x85, 0xd1, 0x38, 0x61, 0x30, 0x61, 0x34, 0xad, 0x30, 0xf0,
+ 0x51, 0x62, 0xc8, 0x37, 0xa0, 0x24, 0x52, 0x9a, 0xef, 0x07, 0x51, 0xf0, 0xb9, 0xaa, 0xa9, 0x4a,
+ 0x1d, 0x0d, 0xc7, 0x88, 0xa2, 0xfe, 0xe3, 0x1c, 0xbc, 0x91, 0x91, 0xd4, 0x0a, 0x5d, 0x4e, 0x43,
+ 0xd7, 0x26, 0x0c, 0x16, 0x8f, 0xa4, 0x54, 0x1d, 0x1d, 0xf7, 0x5f, 0x5e, 0x01, 0x53, 0x07, 0xa3,
+ 0xa2, 0xa2, 0xfa, 0x46, 0x2d, 0xaa, 0xfe, 0x37, 0x45, 0x58, 0x69, 0x8d, 0x19, 0x0f, 0x86, 0xc6,
+ 0x4f, 0x36, 0x45, 0x86, 0x13, 0x9e, 0xd0, 0xf0, 0x10, 0xdb, 0x7a, 0xdc, 0xd7, 0xcc, 0xfa, 0x63,
+ 0x19, 0x04, 0xc6, 0x34, 0x22, 0x7d, 0x61, 0xd4, 0x19, 0x87, 0x6a, 0xfc, 0xa5, 0x38, 0x7d, 0xb1,
+ 0x24, 0x14, 0x35, 0x96, 0x1c, 0x02, 0x38, 0x34, 0xe4, 0xca, 0x34, 0x67, 0x73, 0x95, 0x55, 0x31,
+ 0x77, 0xad, 0xa8, 0x31, 0x26, 0x18, 0x91, 0x07, 0x40, 0x54, 0x5f, 0x84, 0x9b, 0xec, 0x9f, 0xd0,
+ 0x30, 0x74, 0xbb, 0x54, 0x67, 0x52, 0xeb, 0xba, 0x2b, 0xc4, 0x9a, 0xa0, 0xc0, 0x29, 0xad, 0x08,
+ 0x83, 0x02, 0x1b, 0x51, 0x47, 0xdb, 0xfe, 0xfb, 0x73, 0x4c, 0x40, 0x52, 0xa5, 0x0d, 0x6b, 0x44,
+ 0x9d, 0x5d, 0x9f, 0x87, 0xa7, 0xb1, 0x05, 0x09, 0x10, 0x4a, 0x61, 0xaf, 0x3d, 0xbf, 0x4a, 0xf8,
+ 0xfc, 0xd2, 0xe5, 0xf9, 0xfc, 0xfa, 0xb7, 0xa0, 0x1c, 0xe9, 0x85, 0x5c, 0x85, 0x85, 0x63, 0x7a,
+ 0xaa, 0xcc, 0x0d, 0xc5, 0x27, 0xf9, 0x02, 0x14, 0x4f, 0x6c, 0x6f, 0xac, 0x9d, 0x0a, 0xd5, 0xcf,
+ 0x9d, 0xfc, 0x56, 0xae, 0xfe, 0x1f, 0x39, 0x80, 0x1d, 0x9b, 0xdb, 0x7b, 0xae, 0xc7, 0x55, 0x5c,
+ 0x1f, 0xd9, 0x7c, 0x90, 0x75, 0xd1, 0x03, 0x9b, 0x0f, 0x50, 0x62, 0xc8, 0x37, 0xa0, 0xc0, 0x45,
+ 0xda, 0xa8, 0xdc, 0xb3, 0x6a, 0x28, 0x44, 0x82, 0xf8, 0xec, 0xac, 0x56, 0x7a, 0x60, 0xed, 0x3f,
+ 0x96, 0xc9, 0xa3, 0xa4, 0x22, 0x35, 0x23, 0x58, 0x24, 0x4c, 0xe5, 0xed, 0xf2, 0xf9, 0x59, 0xad,
+ 0xf8, 0x44, 0x00, 0x74, 0x1f, 0xc8, 0x7b, 0x00, 0x4e, 0x30, 0x14, 0x0a, 0xe4, 0x41, 0xa8, 0x0d,
+ 0xed, 0xa6, 0xd1, 0x71, 0x2b, 0xc2, 0x3c, 0x4b, 0xfd, 0x61, 0xa2, 0x8d, 0x8c, 0x19, 0x74, 0x38,
+ 0xf2, 0x6c, 0x4e, 0xe5, 0x0a, 0x9e, 0x8c, 0x19, 0x1a, 0x8e, 0x11, 0x45, 0xfd, 0x4f, 0x73, 0x50,
+ 0x94, 0xab, 0x19, 0x19, 0xc2, 0x92, 0x13, 0xf8, 0x9c, 0x7e, 0xc2, 0x75, 0x88, 0x98, 0x23, 0x8b,
+ 0x91, 0x1c, 0x5b, 0x8a, 0xdb, 0xf6, 0xb2, 0x98, 0x21, 0xfd, 0x83, 0x46, 0x06, 0x79, 0x13, 0x0a,
+ 0x5d, 0x9b, 0xdb, 0x52, 0x6f, 0x15, 0x95, 0xe9, 0x08, 0xbd, 0xa3, 0x84, 0xde, 0x29, 0xfd, 0xc9,
+ 0x9f, 0xd7, 0xae, 0xfc, 0xf0, 0x5f, 0x6f, 0x5e, 0xa9, 0xff, 0x3c, 0x0f, 0x95, 0x24, 0x3b, 0xb2,
+ 0x0e, 0x79, 0xb7, 0xab, 0x27, 0x04, 0xf4, 0xc8, 0xf2, 0xf7, 0x77, 0x30, 0xef, 0x76, 0x65, 0xb4,
+ 0x50, 0x39, 0x40, 0x3e, 0x5d, 0xec, 0x64, 0xd2, 0xe0, 0x5f, 0x86, 0x65, 0xe1, 0x1d, 0x27, 0x34,
+ 0x64, 0x22, 0x11, 0x5e, 0x90, 0xc4, 0xd7, 0x35, 0xf1, 0xb2, 0xb0, 0x9c, 0x27, 0x0a, 0x85, 0x49,
+ 0x3a, 0x61, 0x0d, 0x72, 0xae, 0x0b, 0x69, 0x6b, 0x48, 0xcc, 0x6f, 0x13, 0xd6, 0x44, 0xff, 0xe5,
+ 0x20, 0x7d, 0x2e, 0x89, 0xd5, 0x1c, 0xbc, 0xa1, 0x89, 0xd7, 0xc4, 0x20, 0x5b, 0x0a, 0x2d, 0xdb,
+ 0x65, 0xe9, 0x45, 0xa2, 0xc0, 0xc6, 0x47, 0x1f, 0x51, 0x47, 0xe5, 0x4b, 0x89, 0x44, 0xc1, 0x52,
+ 0x60, 0x34, 0x78, 0xd2, 0x86, 0x82, 0x08, 0xfe, 0x3a, 0xe1, 0xf9, 0x7a, 0x22, 0xdc, 0x45, 0x95,
+ 0x71, 0x3c, 0x47, 0xa2, 0x00, 0x17, 0x01, 0x50, 0x46, 0xeb, 0xb8, 0xef, 0x22, 0x5e, 0x4b, 0x2e,
+ 0x09, 0x9d, 0xff, 0x59, 0x1e, 0xd6, 0xa4, 0xce, 0x77, 0xe8, 0x88, 0xfa, 0x5d, 0xea, 0x3b, 0xa7,
+ 0x62, 0xec, 0x7e, 0x5c, 0x21, 0x47, 0xed, 0x65, 0x4e, 0x21, 0x31, 0x62, 0xec, 0xd2, 0x2e, 0x94,
+ 0xae, 0x13, 0x99, 0x4e, 0x34, 0xf6, 0xdd, 0x34, 0x1a, 0xb3, 0xf4, 0x62, 0x79, 0x90, 0xa0, 0x28,
+ 0xdf, 0x49, 0x2c, 0x0f, 0xbb, 0x06, 0x81, 0x31, 0x0d, 0x39, 0x81, 0xa5, 0x9e, 0xf4, 0x54, 0xa6,
+ 0x13, 0x96, 0xfd, 0x39, 0x8d, 0x36, 0x1e, 0xb1, 0x8a, 0x00, 0xca, 0x7a, 0xd5, 0x37, 0x43, 0x23,
+ 0xac, 0xfe, 0x0f, 0x0b, 0x70, 0x63, 0x2a, 0x3d, 0x39, 0xd2, 0x73, 0xa2, 0x7c, 0x68, 0x67, 0x8e,
+ 0x68, 0xe7, 0x0e, 0xa9, 0xee, 0x43, 0x29, 0x3d, 0x53, 0x49, 0x57, 0xcd, 0x5f, 0x82, 0xab, 0xf6,
+ 0xb4, 0xab, 0xaa, 0x22, 0x6f, 0x8e, 0x21, 0xc5, 0x81, 0x35, 0x36, 0xa0, 0xd8, 0xe9, 0x89, 0x0b,
+ 0x45, 0xfa, 0xc9, 0x48, 0x4e, 0xe5, 0x9c, 0x82, 0x76, 0x3f, 0x19, 0x85, 0x5a, 0xd0, 0x8a, 0x16,
+ 0x54, 0x14, 0x30, 0x86, 0x4a, 0x82, 0x08, 0x7b, 0x10, 0x13, 0x09, 0xe3, 0x16, 0xf0, 0xac, 0x71,
+ 0x0b, 0x0a, 0x94, 0x18, 0x51, 0xa8, 0xf7, 0x5c, 0xea, 0x75, 0x59, 0x35, 0x2f, 0x3b, 0x37, 0x87,
+ 0xc6, 0xf5, 0x62, 0xb5, 0x27, 0xd8, 0xc5, 0x11, 0x4a, 0xfe, 0x32, 0xd4, 0x52, 0xea, 0x6f, 0x43,
+ 0x25, 0x59, 0x0a, 0xbe, 0x78, 0x21, 0xaa, 0xff, 0x6d, 0x01, 0x96, 0x13, 0xf5, 0x11, 0x79, 0x4b,
+ 0x15, 0x8b, 0xaa, 0xc1, 0xb2, 0x6e, 0x10, 0x57, 0x7a, 0xdf, 0x81, 0x55, 0xc7, 0x0b, 0x7c, 0xba,
+ 0xe3, 0x86, 0x32, 0x0d, 0x3a, 0xd5, 0xce, 0xfa, 0x45, 0x4d, 0xb9, 0xda, 0x4a, 0x61, 0x31, 0x43,
+ 0x4d, 0x1c, 0x28, 0x3a, 0x21, 0xed, 0x32, 0x9d, 0x6b, 0x6d, 0xcf, 0x55, 0xd4, 0xb5, 0x04, 0x27,
+ 0xb5, 0x1a, 0xca, 0x4f, 0x54, 0xbc, 0xc9, 0x6f, 0x42, 0x85, 0xb1, 0x81, 0x4c, 0xd6, 0x64, 0x5e,
+ 0x37, 0x53, 0x51, 0x72, 0xf5, 0xfc, 0xac, 0x56, 0xb1, 0xac, 0x7b, 0x51, 0x73, 0x4c, 0x31, 0x13,
+ 0x0b, 0xa5, 0xa8, 0xaa, 0x85, 0x0a, 0xb3, 0x0b, 0xe5, 0x9e, 0x86, 0x63, 0x44, 0x21, 0x96, 0x96,
+ 0xa3, 0xd0, 0xf6, 0x9d, 0x81, 0x8e, 0xca, 0xd1, 0xc4, 0x6d, 0x4b, 0x28, 0x6a, 0xac, 0x50, 0x3b,
+ 0xb7, 0xfb, 0x7a, 0x17, 0x29, 0x52, 0x7b, 0xc7, 0xee, 0xa3, 0x80, 0x0b, 0x74, 0x48, 0x7b, 0x7a,
+ 0xbf, 0x28, 0x42, 0x23, 0xed, 0xa1, 0x80, 0x93, 0x21, 0x2c, 0x86, 0x74, 0x18, 0x70, 0x5a, 0x2d,
+ 0xcb, 0xa1, 0xde, 0x9f, 0x4b, 0xad, 0x28, 0x59, 0xa9, 0x8a, 0x5c, 0x25, 0xe8, 0x0a, 0x82, 0x5a,
+ 0x48, 0xfd, 0xaf, 0x73, 0x50, 0x32, 0xea, 0x27, 0xfb, 0x50, 0x1a, 0x33, 0x1a, 0x46, 0x51, 0xfe,
+ 0xc2, 0x8a, 0x96, 0xe5, 0xf2, 0xa1, 0x6e, 0x8a, 0x11, 0x13, 0xc1, 0x70, 0x64, 0x33, 0xf6, 0x34,
+ 0x08, 0xbb, 0xb3, 0xed, 0x90, 0x4a, 0x86, 0x07, 0xba, 0x29, 0x46, 0x4c, 0xea, 0xef, 0xc3, 0x5a,
+ 0x66, 0x54, 0x17, 0x58, 0x96, 0xde, 0x84, 0xc2, 0x38, 0xf4, 0x94, 0xdf, 0x96, 0x55, 0x28, 0x3d,
+ 0xc4, 0xb6, 0x85, 0x12, 0x5a, 0xff, 0xf7, 0x45, 0x58, 0xbe, 0xd7, 0xe9, 0x1c, 0x98, 0x02, 0xe5,
+ 0x05, 0x5e, 0x93, 0x48, 0x67, 0xf3, 0x97, 0x58, 0xc2, 0x1e, 0xc2, 0x02, 0xf7, 0x8c, 0xab, 0xdd,
+ 0x99, 0x79, 0x63, 0xa3, 0xd3, 0xb6, 0xb4, 0x11, 0xc8, 0x4d, 0x93, 0x4e, 0xdb, 0x42, 0xc1, 0x4f,
+ 0xd8, 0xf4, 0x90, 0xf2, 0x41, 0xd0, 0xcd, 0xee, 0x0d, 0x3f, 0x92, 0x50, 0xd4, 0xd8, 0x4c, 0x11,
+ 0x51, 0xbc, 0xf4, 0x22, 0xe2, 0x6b, 0xb0, 0x24, 0xd6, 0xbd, 0x60, 0xac, 0x52, 0xa2, 0x85, 0x58,
+ 0x53, 0x1d, 0x05, 0x46, 0x83, 0x27, 0x7d, 0x28, 0x1f, 0xd9, 0xcc, 0x75, 0x9a, 0x63, 0x3e, 0xd0,
+ 0x79, 0xd1, 0xec, 0xfa, 0xda, 0x36, 0x1c, 0xd4, 0x96, 0x56, 0xf4, 0x8b, 0x31, 0x6f, 0xf2, 0x03,
+ 0x58, 0x1a, 0x50, 0xbb, 0x2b, 0x14, 0x52, 0x92, 0x0a, 0xc1, 0x97, 0x57, 0x48, 0xc2, 0x00, 0x1b,
+ 0xf7, 0x14, 0x53, 0x55, 0xd1, 0xc5, 0x7b, 0x44, 0x0a, 0x8a, 0x46, 0x26, 0x39, 0x81, 0x15, 0x55,
+ 0xf9, 0x6a, 0x4c, 0xb5, 0x2c, 0x3b, 0xf1, 0x6b, 0xb3, 0x6f, 0x7a, 0x26, 0xb8, 0x6c, 0x5f, 0x3b,
+ 0x3f, 0xab, 0xad, 0x24, 0x21, 0x0c, 0xd3, 0x62, 0xd6, 0xef, 0x40, 0x25, 0xd9, 0xc3, 0x99, 0x6a,
+ 0xab, 0xdf, 0x5b, 0x80, 0x6b, 0x0f, 0xb7, 0x2c, 0xb3, 0xb1, 0x76, 0x10, 0x78, 0xae, 0x73, 0x4a,
+ 0x7e, 0x07, 0x16, 0x3d, 0xfb, 0x88, 0x7a, 0xac, 0x9a, 0x93, 0x43, 0xf8, 0xe0, 0xe5, 0xf5, 0x38,
+ 0xc1, 0xbc, 0xd1, 0x96, 0x9c, 0x95, 0x32, 0x23, 0xeb, 0x56, 0x40, 0xd4, 0x62, 0xc9, 0x87, 0xb0,
+ 0x74, 0x64, 0x3b, 0xc7, 0x41, 0xaf, 0xa7, 0xa3, 0xd4, 0xd6, 0x4b, 0x18, 0x8c, 0x6c, 0xaf, 0xf2,
+ 0x27, 0xfd, 0x83, 0x86, 0x2b, 0xb1, 0xe0, 0x06, 0x0d, 0xc3, 0x20, 0xdc, 0xf7, 0x35, 0x4a, 0x5b,
+ 0xad, 0xf4, 0xe7, 0xd2, 0xf6, 0x5b, 0xba, 0x5f, 0x37, 0x76, 0xa7, 0x11, 0xe1, 0xf4, 0xb6, 0xeb,
+ 0xdf, 0x86, 0xe5, 0xc4, 0xe0, 0x66, 0x9a, 0x87, 0x9f, 0x2c, 0x42, 0xe5, 0xa1, 0xdd, 0x3b, 0xb6,
+ 0x2f, 0x18, 0xf4, 0xbe, 0x02, 0x45, 0x1e, 0x8c, 0x5c, 0x47, 0x67, 0x08, 0x51, 0x46, 0xd5, 0x11,
+ 0x40, 0x54, 0x38, 0x91, 0xba, 0x8f, 0xec, 0x90, 0xcb, 0x8d, 0x21, 0x39, 0xb0, 0x62, 0x9c, 0xba,
+ 0x1f, 0x18, 0x04, 0xc6, 0x34, 0x99, 0xa0, 0x52, 0xb8, 0xf4, 0xa0, 0xb2, 0x05, 0x95, 0x90, 0x7e,
+ 0x3c, 0x76, 0xe5, 0x16, 0xe5, 0x31, 0x93, 0x29, 0x40, 0x31, 0x3e, 0xfa, 0xc3, 0x04, 0x0e, 0x53,
+ 0x94, 0x22, 0x71, 0x10, 0xf5, 0x76, 0x48, 0x19, 0x93, 0xf1, 0xa8, 0x14, 0x27, 0x0e, 0x2d, 0x0d,
+ 0xc7, 0x88, 0x42, 0x24, 0x5a, 0x3d, 0x6f, 0xcc, 0x06, 0x7b, 0x82, 0x87, 0x28, 0x14, 0x64, 0x58,
+ 0x2a, 0xc6, 0x89, 0xd6, 0x5e, 0x0a, 0x8b, 0x19, 0x6a, 0x13, 0xfb, 0x4b, 0xaf, 0x38, 0xf6, 0x27,
+ 0x56, 0xb2, 0xf2, 0x25, 0xae, 0x64, 0x4d, 0x58, 0x8b, 0x4c, 0xc0, 0xf5, 0xfb, 0x0f, 0xe9, 0x69,
+ 0x15, 0xd2, 0x45, 0xe2, 0x41, 0x1a, 0x8d, 0x59, 0x7a, 0xb1, 0x1a, 0x98, 0xc2, 0x7d, 0x39, 0x5d,
+ 0x20, 0x9b, 0xa2, 0xdd, 0xe0, 0xc9, 0xaf, 0x43, 0x81, 0xd9, 0xcc, 0xab, 0x56, 0x5e, 0xf6, 0x44,
+ 0xa8, 0x69, 0xb5, 0xb5, 0xf6, 0x64, 0xe2, 0x20, 0xfe, 0x51, 0xb2, 0xac, 0xef, 0x03, 0xb4, 0x83,
+ 0xbe, 0xf1, 0xa0, 0x26, 0xac, 0xb9, 0x3e, 0xa7, 0xe1, 0x89, 0xed, 0x59, 0xd4, 0x09, 0xfc, 0x2e,
+ 0x93, 0xde, 0x54, 0x88, 0x87, 0x75, 0x3f, 0x8d, 0xc6, 0x2c, 0x7d, 0xfd, 0x2f, 0x17, 0x60, 0xf9,
+ 0x71, 0xb3, 0x63, 0x5d, 0xd0, 0x29, 0x13, 0xdb, 0x04, 0xf9, 0x17, 0x6c, 0x13, 0x24, 0xa6, 0x7a,
+ 0xe1, 0xb5, 0xed, 0xbb, 0x5f, 0xbe, 0x83, 0x6b, 0xc7, 0x29, 0xbe, 0x5a, 0xc7, 0xa9, 0xff, 0x61,
+ 0x01, 0xae, 0xee, 0x8f, 0xa8, 0xff, 0xc1, 0xc0, 0x65, 0xc7, 0x89, 0xf3, 0x9f, 0x41, 0xc0, 0x78,
+ 0x36, 0x0d, 0xbd, 0x17, 0x30, 0x8e, 0x12, 0x93, 0xb4, 0xda, 0xfc, 0x0b, 0xac, 0x76, 0x13, 0xca,
+ 0x22, 0x73, 0x65, 0x23, 0xdb, 0x99, 0xd8, 0x05, 0x79, 0x6c, 0x10, 0x18, 0xd3, 0xc8, 0xbb, 0x08,
+ 0x63, 0x3e, 0xe8, 0x04, 0xc7, 0xd4, 0x9f, 0xad, 0x46, 0x52, 0x77, 0x11, 0x4c, 0x5b, 0x8c, 0xd9,
+ 0x90, 0xdb, 0x00, 0x76, 0x7c, 0x2f, 0x42, 0xd5, 0x47, 0x91, 0xc6, 0x9b, 0xf1, 0xad, 0x88, 0x04,
+ 0x55, 0xd2, 0xd0, 0x16, 0x5f, 0x9b, 0xa1, 0x2d, 0x5d, 0xfa, 0x01, 0x0f, 0x42, 0x25, 0x59, 0xd3,
+ 0x5f, 0x60, 0xd3, 0xd8, 0x54, 0x2d, 0xf9, 0xe7, 0x55, 0x2d, 0xf5, 0xbf, 0x5a, 0x82, 0x95, 0x83,
+ 0xb1, 0xc7, 0xec, 0xf0, 0x55, 0x2e, 0xd2, 0xaf, 0xf9, 0xd0, 0x3e, 0x69, 0x20, 0x85, 0x4b, 0x34,
+ 0x90, 0x11, 0x5c, 0xe7, 0x1e, 0xeb, 0x84, 0x63, 0xc6, 0x5b, 0x34, 0xe4, 0x4c, 0xef, 0x26, 0x14,
+ 0x67, 0x3e, 0x50, 0xed, 0xb4, 0xad, 0x2c, 0x17, 0x9c, 0xc6, 0x9a, 0x1c, 0xc1, 0x3a, 0xf7, 0x58,
+ 0xd3, 0xf3, 0x82, 0xa7, 0xf7, 0x7d, 0x95, 0x41, 0xb7, 0x02, 0xdf, 0xa7, 0xd2, 0x57, 0x74, 0xd2,
+ 0x50, 0xd7, 0xfd, 0x5d, 0xef, 0xb4, 0xad, 0xe7, 0x50, 0xe2, 0x2f, 0xe0, 0x42, 0x1e, 0xc9, 0x51,
+ 0x3d, 0xb1, 0x3d, 0xb7, 0x6b, 0x73, 0x2a, 0x42, 0x8d, 0xb4, 0xa9, 0x25, 0xc9, 0xfc, 0xcb, 0x9a,
+ 0xb9, 0xe8, 0x72, 0x96, 0x04, 0xa7, 0xb5, 0xfb, 0x9f, 0xca, 0x33, 0xba, 0xb0, 0x16, 0x05, 0x15,
+ 0xad, 0xf7, 0xf2, 0xcc, 0x47, 0xcb, 0xcd, 0x34, 0x07, 0xcc, 0xb2, 0x24, 0x3f, 0x80, 0x6b, 0x4e,
+ 0xa4, 0x19, 0x9d, 0x29, 0xcb, 0xc4, 0x62, 0x9e, 0x6c, 0xfe, 0xc6, 0xf9, 0x59, 0xed, 0x5a, 0x2b,
+ 0xcb, 0x16, 0x27, 0x25, 0xd5, 0x7f, 0x37, 0x07, 0x65, 0xb4, 0x39, 0x6d, 0xbb, 0x43, 0x97, 0x93,
+ 0xdb, 0x50, 0x18, 0xfb, 0xae, 0x59, 0x0c, 0x36, 0x8c, 0x77, 0x1f, 0xfa, 0x2e, 0x7f, 0x76, 0x56,
+ 0x5b, 0x8d, 0x08, 0xa9, 0x80, 0xa0, 0xa4, 0x15, 0x09, 0x84, 0xcc, 0xf8, 0x18, 0x67, 0x07, 0x34,
+ 0x14, 0x08, 0xe9, 0xc8, 0xc5, 0x38, 0x81, 0xc0, 0x34, 0x1a, 0xb3, 0xf4, 0xf5, 0x9f, 0xe4, 0x61,
+ 0xd1, 0x92, 0x4e, 0x42, 0xbe, 0x07, 0xa5, 0x21, 0xe5, 0xb6, 0xdc, 0xb5, 0x55, 0x5b, 0x39, 0x6f,
+ 0x5f, 0xec, 0x70, 0x60, 0x5f, 0x66, 0x0c, 0x8f, 0x28, 0xb7, 0x63, 0x5f, 0x8e, 0x61, 0x18, 0x71,
+ 0x25, 0x3d, 0x7d, 0x98, 0x99, 0x9f, 0x77, 0x9b, 0x5b, 0xf5, 0xd8, 0x1a, 0x51, 0x67, 0xea, 0xf9,
+ 0xa5, 0x0f, 0x8b, 0x8c, 0xdb, 0x7c, 0xcc, 0xe6, 0xbf, 0x5a, 0xa3, 0x25, 0x49, 0x6e, 0x89, 0x93,
+ 0x21, 0xf9, 0x8f, 0x5a, 0x4a, 0xfd, 0x9f, 0x73, 0x00, 0x8a, 0xb0, 0xed, 0x32, 0x4e, 0x7e, 0x6b,
+ 0x42, 0x91, 0x8d, 0x8b, 0x29, 0x52, 0xb4, 0x96, 0x6a, 0x8c, 0x4a, 0x03, 0x03, 0x49, 0x28, 0x91,
+ 0x42, 0xd1, 0xe5, 0x74, 0x68, 0xf6, 0x94, 0xdf, 0x9b, 0x77, 0x6c, 0x71, 0xd4, 0xbf, 0x2f, 0xd8,
+ 0xa2, 0xe2, 0x5e, 0xff, 0x8b, 0x82, 0x19, 0x93, 0x50, 0x2c, 0xf9, 0x51, 0x0e, 0x2a, 0x5d, 0x73,
+ 0x6c, 0xe1, 0x52, 0x53, 0x77, 0xdf, 0x7f, 0x65, 0x27, 0x27, 0x71, 0x11, 0xb5, 0x93, 0x10, 0x83,
+ 0x29, 0xa1, 0x24, 0x80, 0x12, 0x57, 0x11, 0xdc, 0x0c, 0xbf, 0x39, 0xf7, 0x5a, 0x90, 0x38, 0xe9,
+ 0xd4, 0xac, 0x31, 0x12, 0x42, 0xbc, 0xc4, 0xb9, 0xe8, 0xdc, 0x7b, 0xd6, 0xe6, 0x24, 0x55, 0x6d,
+ 0x55, 0x4e, 0x9e, 0xab, 0x92, 0x07, 0x40, 0x74, 0xdd, 0xbe, 0x67, 0xbb, 0x1e, 0xed, 0x62, 0x30,
+ 0xf6, 0xd5, 0x36, 0x5b, 0x29, 0xbe, 0x38, 0xb0, 0x3b, 0x41, 0x81, 0x53, 0x5a, 0x89, 0x4a, 0x55,
+ 0xf6, 0x67, 0x7b, 0xcc, 0x12, 0xc9, 0x58, 0xa4, 0xe4, 0xdd, 0x04, 0x0e, 0x53, 0x94, 0xe4, 0x16,
+ 0x94, 0x42, 0x3a, 0xf2, 0x5c, 0xc7, 0x56, 0x95, 0x6a, 0xd1, 0x5c, 0x6d, 0x52, 0x30, 0x8c, 0xb0,
+ 0xf5, 0x00, 0x2a, 0x49, 0xff, 0x20, 0x1f, 0x46, 0x7e, 0xa7, 0xcc, 0xfe, 0x5b, 0xb3, 0xd7, 0x4e,
+ 0xbf, 0xd8, 0xd1, 0xfe, 0x3e, 0x0f, 0x15, 0xcb, 0xb3, 0x9d, 0x28, 0x85, 0x4e, 0xe7, 0x26, 0xb9,
+ 0xd7, 0x50, 0x2e, 0x00, 0x93, 0xfd, 0x91, 0x59, 0x74, 0x7e, 0xe6, 0x1b, 0x24, 0x56, 0xd4, 0x18,
+ 0x13, 0x8c, 0x44, 0xde, 0xef, 0x0c, 0x6c, 0xdf, 0xa7, 0x9e, 0x4e, 0xe5, 0xa3, 0x34, 0xa5, 0xa5,
+ 0xc0, 0x68, 0xf0, 0x82, 0x74, 0x48, 0x19, 0xb3, 0xfb, 0xe6, 0x84, 0x39, 0x22, 0x7d, 0xa4, 0xc0,
+ 0x68, 0xf0, 0xf5, 0xff, 0x5a, 0x00, 0x62, 0x71, 0xdb, 0xef, 0xda, 0x61, 0xf7, 0xe1, 0x96, 0xf5,
+ 0xba, 0xae, 0x93, 0x3e, 0x9e, 0xbc, 0x4e, 0xfa, 0xf6, 0xb4, 0xeb, 0xa4, 0x5f, 0x7e, 0x38, 0x3e,
+ 0xa2, 0xa1, 0x4f, 0x39, 0x65, 0x66, 0x83, 0xee, 0x7f, 0xe3, 0xa5, 0x52, 0xd2, 0x83, 0x95, 0x91,
+ 0xcd, 0x9d, 0x81, 0xc5, 0x43, 0x9b, 0xd3, 0xfe, 0xa9, 0x9e, 0x87, 0xf7, 0x74, 0xb3, 0x95, 0x83,
+ 0x24, 0xf2, 0xd9, 0x59, 0xed, 0xff, 0x3f, 0xef, 0x2e, 0x3a, 0x3f, 0x1d, 0x51, 0xd6, 0x90, 0xe4,
+ 0xf2, 0x94, 0x3f, 0xcd, 0x56, 0x14, 0x57, 0x9e, 0x7b, 0x42, 0xd5, 0xca, 0x2a, 0xfd, 0xb9, 0x14,
+ 0xf7, 0xad, 0x1d, 0x61, 0x30, 0x41, 0x55, 0xdf, 0x84, 0x8a, 0x72, 0x21, 0xbd, 0x6f, 0x5a, 0x83,
+ 0xa2, 0x2d, 0x32, 0x43, 0xe9, 0x2a, 0x45, 0x75, 0x78, 0x26, 0x53, 0x45, 0x54, 0xf0, 0xfa, 0xef,
+ 0x97, 0x20, 0x8a, 0x4c, 0xc4, 0x99, 0x58, 0xc8, 0x66, 0xbf, 0x1f, 0xf9, 0x48, 0x33, 0x50, 0x41,
+ 0xc4, 0xfc, 0x25, 0xd6, 0x33, 0x7d, 0x5b, 0xca, 0x75, 0x68, 0xd3, 0x71, 0x82, 0xb1, 0x3e, 0xc7,
+ 0xcf, 0x4f, 0xde, 0x96, 0x4a, 0x53, 0xe0, 0x94, 0x56, 0xe4, 0x81, 0xbc, 0x89, 0xca, 0x6d, 0xa1,
+ 0x53, 0x1d, 0xaf, 0xdf, 0x7a, 0xce, 0x4d, 0x54, 0x45, 0x14, 0x5d, 0x3f, 0x55, 0xbf, 0x18, 0x37,
+ 0x27, 0xbb, 0xb0, 0x74, 0x12, 0x78, 0xe3, 0x21, 0x35, 0xdb, 0x10, 0xeb, 0xd3, 0x38, 0x3d, 0x91,
+ 0x24, 0x89, 0xba, 0x5c, 0x35, 0x41, 0xd3, 0x96, 0x50, 0x58, 0x93, 0x49, 0xb8, 0xcb, 0x4f, 0xf5,
+ 0x19, 0xb9, 0x2e, 0x21, 0xbe, 0x3a, 0x8d, 0xdd, 0x41, 0xd0, 0xb5, 0xd2, 0xd4, 0xfa, 0x9a, 0x64,
+ 0x1a, 0x88, 0x59, 0x9e, 0xe4, 0xc7, 0x39, 0xa8, 0xf8, 0x41, 0x97, 0x9a, 0xf0, 0xa2, 0x6b, 0xe9,
+ 0xce, 0xfc, 0xab, 0x55, 0xe3, 0x71, 0x82, 0xad, 0xda, 0x14, 0x8f, 0x56, 0x91, 0x24, 0x0a, 0x53,
+ 0xf2, 0xc9, 0x21, 0x2c, 0xf3, 0xc0, 0xd3, 0x3e, 0x6a, 0x0a, 0xec, 0x8d, 0x69, 0x63, 0xee, 0x44,
+ 0x64, 0xf1, 0x6d, 0x9a, 0x18, 0xc6, 0x30, 0xc9, 0x87, 0xf8, 0x70, 0xd5, 0x1d, 0xda, 0x7d, 0x7a,
+ 0x30, 0xf6, 0x3c, 0x15, 0x53, 0xcd, 0x51, 0xca, 0xd4, 0x2b, 0xc7, 0x22, 0x10, 0x79, 0xda, 0x2f,
+ 0x68, 0x8f, 0x86, 0xd4, 0x77, 0x68, 0x74, 0xdf, 0xea, 0xea, 0xfd, 0x0c, 0x27, 0x9c, 0xe0, 0x4d,
+ 0xee, 0xc2, 0xb5, 0x51, 0xe8, 0x06, 0x52, 0xd5, 0x9e, 0xcd, 0xd4, 0x5a, 0x5a, 0x96, 0xc6, 0xf9,
+ 0x25, 0xcd, 0xe6, 0xda, 0x41, 0x96, 0x00, 0x27, 0xdb, 0x88, 0x55, 0xd5, 0x00, 0x65, 0x8d, 0xa1,
+ 0x57, 0x55, 0xd3, 0x16, 0x23, 0x2c, 0xd9, 0x83, 0x92, 0xdd, 0xeb, 0xb9, 0xbe, 0xa0, 0x5c, 0x96,
+ 0xa6, 0xf2, 0xe6, 0xb4, 0xa1, 0x35, 0x35, 0x8d, 0xe2, 0x63, 0xfe, 0x30, 0x6a, 0xbb, 0xfe, 0x5d,
+ 0xb8, 0x36, 0x31, 0x75, 0x33, 0x6d, 0xf9, 0x5b, 0x00, 0xf1, 0x7d, 0x12, 0xf2, 0x15, 0x28, 0x32,
+ 0x6e, 0x87, 0xa6, 0x42, 0x89, 0xb2, 0x46, 0x4b, 0x00, 0x51, 0xe1, 0xc8, 0x4d, 0x28, 0x30, 0x1e,
+ 0x8c, 0xb2, 0x7b, 0x14, 0x16, 0x0f, 0x46, 0x28, 0x31, 0xf5, 0xcf, 0x0a, 0xb0, 0x64, 0x56, 0x1e,
+ 0x96, 0xc8, 0xae, 0x72, 0xf3, 0x1e, 0x5d, 0x6b, 0xa6, 0x2f, 0x4c, 0xb2, 0xd2, 0xcb, 0x45, 0xfe,
+ 0xd2, 0x97, 0x8b, 0x63, 0x58, 0x1c, 0xc9, 0x60, 0xac, 0x03, 0xd4, 0xdd, 0xf9, 0x65, 0x4b, 0x76,
+ 0x6a, 0xad, 0x55, 0xdf, 0xa8, 0x45, 0x90, 0x8f, 0x61, 0x25, 0xa4, 0x3c, 0x3c, 0x4d, 0xad, 0x4d,
+ 0xf3, 0x94, 0xb7, 0xf2, 0xb0, 0x0f, 0x93, 0x2c, 0x31, 0x2d, 0x81, 0x8c, 0xa0, 0x1c, 0x9a, 0x62,
+ 0x55, 0x87, 0xba, 0xd6, 0xcb, 0x0f, 0x31, 0xaa, 0x7b, 0x55, 0xa4, 0x8e, 0x7e, 0x31, 0x16, 0x52,
+ 0xff, 0xcf, 0x1c, 0x5c, 0xcd, 0x4e, 0x03, 0x39, 0x86, 0x05, 0x16, 0x3a, 0xda, 0xac, 0x0e, 0x5e,
+ 0xdd, 0xfc, 0xaa, 0x64, 0x46, 0xed, 0x57, 0x58, 0xa1, 0x83, 0x42, 0x8a, 0x30, 0xfb, 0x2e, 0x65,
+ 0x3c, 0x6b, 0xf6, 0x3b, 0x94, 0x71, 0x94, 0x18, 0xd2, 0x4e, 0x26, 0x3d, 0x2a, 0xa7, 0x6b, 0x4c,
+ 0x4b, 0x7a, 0xbe, 0x94, 0x95, 0x37, 0x2d, 0xe5, 0xa9, 0xff, 0x4b, 0x1e, 0xbe, 0x38, 0xbd, 0x63,
+ 0xe4, 0x3b, 0xb0, 0x1a, 0x95, 0x4c, 0xa7, 0x89, 0xe7, 0x69, 0xd1, 0xc9, 0xd1, 0x4e, 0x0a, 0x8b,
+ 0x19, 0x6a, 0x91, 0x65, 0xe8, 0x2b, 0x5c, 0xe6, 0x8d, 0x5a, 0x62, 0x0b, 0xb7, 0x15, 0x61, 0x30,
+ 0x41, 0x45, 0x9a, 0xb0, 0xa6, 0xff, 0x3a, 0xc9, 0x62, 0x29, 0x71, 0x3e, 0xd3, 0x4a, 0xa3, 0x31,
+ 0x4b, 0x2f, 0xd2, 0x58, 0x91, 0x0d, 0x98, 0x47, 0x04, 0x89, 0x34, 0x76, 0x47, 0x81, 0xd1, 0xe0,
+ 0x45, 0x65, 0x23, 0x3e, 0x3b, 0xe9, 0xfb, 0xaa, 0x71, 0xf9, 0x98, 0xc0, 0x61, 0x8a, 0x32, 0xbe,
+ 0x48, 0xab, 0x6e, 0xe3, 0x4c, 0x5c, 0xa4, 0xad, 0xff, 0x2c, 0x07, 0x2b, 0x29, 0xa7, 0x22, 0x3d,
+ 0x58, 0x38, 0xde, 0x32, 0xf5, 0xcc, 0xc3, 0x57, 0x78, 0xca, 0xac, 0x2c, 0xe8, 0xe1, 0x16, 0x43,
+ 0x21, 0x80, 0x7c, 0x14, 0x95, 0x4e, 0x73, 0x5f, 0xce, 0x4b, 0x26, 0x7c, 0x3a, 0x01, 0x4f, 0x57,
+ 0x51, 0xff, 0x58, 0x81, 0xb5, 0x4c, 0xb4, 0xbc, 0xc0, 0x95, 0x18, 0x65, 0x18, 0xfa, 0x12, 0xff,
+ 0x14, 0xc3, 0x30, 0xd7, 0xfb, 0x13, 0x54, 0xa4, 0xaf, 0xb4, 0xa7, 0x02, 0x5d, 0x7b, 0xae, 0x21,
+ 0x65, 0xaa, 0x96, 0x8c, 0xfa, 0x7e, 0x94, 0x83, 0x8a, 0x9d, 0x78, 0x7d, 0xa6, 0xe3, 0xdc, 0xa3,
+ 0x79, 0x4a, 0x99, 0x89, 0x87, 0x77, 0xea, 0x72, 0x58, 0x12, 0x81, 0x29, 0xa1, 0xc4, 0x81, 0xc2,
+ 0x80, 0x73, 0xf3, 0x06, 0x6a, 0xf7, 0x95, 0xdc, 0xed, 0x50, 0x67, 0x88, 0x02, 0x80, 0x92, 0x39,
+ 0x79, 0x0a, 0x65, 0xfb, 0x29, 0x53, 0x2f, 0x52, 0xf5, 0xe3, 0xa8, 0x79, 0x2a, 0xb6, 0xcc, 0xe3,
+ 0x56, 0x7d, 0xb8, 0x63, 0xa0, 0x18, 0xcb, 0x22, 0x21, 0x2c, 0x3a, 0xf2, 0x11, 0x81, 0xbe, 0x22,
+ 0x73, 0xf7, 0x15, 0x3d, 0x46, 0x50, 0x6b, 0x4a, 0x0a, 0x84, 0x5a, 0x12, 0xe9, 0x43, 0xf1, 0xd8,
+ 0xee, 0x1d, 0xdb, 0x7a, 0x87, 0x79, 0x0e, 0xaf, 0x48, 0xde, 0x5d, 0x50, 0x9e, 0x2f, 0x21, 0xa8,
+ 0xf8, 0x8b, 0xa9, 0xf3, 0x6d, 0xce, 0xf4, 0x36, 0xf3, 0x1c, 0x53, 0x97, 0x38, 0x8d, 0x55, 0x53,
+ 0x27, 0x00, 0x28, 0x99, 0x8b, 0xd1, 0xc8, 0x22, 0x5f, 0x6f, 0x32, 0xcf, 0xe3, 0xe3, 0x89, 0x4d,
+ 0x10, 0x35, 0x1a, 0x09, 0x41, 0xc5, 0x5f, 0xd8, 0x48, 0x60, 0x4e, 0x1b, 0x75, 0x0e, 0x39, 0x87,
+ 0x8d, 0x64, 0x0f, 0x2e, 0x95, 0x8d, 0x44, 0x50, 0x8c, 0x65, 0x91, 0x0f, 0x61, 0xc1, 0x0b, 0xfa,
+ 0xfa, 0xe8, 0x7c, 0x8e, 0x0d, 0xde, 0xf8, 0x94, 0x5c, 0x39, 0x7a, 0x3b, 0xe8, 0xa3, 0xe0, 0x4c,
+ 0xfe, 0x20, 0x07, 0xab, 0x76, 0xea, 0x35, 0x5d, 0x75, 0x65, 0xde, 0x3b, 0xdc, 0x53, 0x5f, 0xe7,
+ 0xa9, 0xc7, 0xbc, 0x69, 0x14, 0x66, 0x44, 0xcb, 0x5c, 0x4e, 0x9e, 0xb7, 0x55, 0x57, 0xe7, 0x75,
+ 0x89, 0xd4, 0xb9, 0x9d, 0xce, 0xe5, 0x24, 0x08, 0xb5, 0x08, 0xf2, 0xc7, 0x39, 0xb9, 0xcc, 0x26,
+ 0x9f, 0x51, 0x55, 0xd7, 0xe6, 0x7e, 0x16, 0x34, 0xfd, 0xe9, 0x57, 0x6a, 0xe5, 0x4e, 0x12, 0x60,
+ 0xb6, 0x0b, 0x75, 0x07, 0x96, 0x13, 0x4f, 0x43, 0x2f, 0x70, 0x8e, 0x79, 0x1b, 0xe0, 0x84, 0x86,
+ 0x6e, 0xef, 0xb4, 0x45, 0x43, 0xae, 0x5f, 0x68, 0x45, 0x0b, 0xc9, 0x93, 0x08, 0x83, 0x09, 0xaa,
+ 0xed, 0xc6, 0xa7, 0x9f, 0x6f, 0x5c, 0xf9, 0xec, 0xf3, 0x8d, 0x2b, 0x3f, 0xfd, 0x7c, 0xe3, 0xca,
+ 0x0f, 0xcf, 0x37, 0x72, 0x9f, 0x9e, 0x6f, 0xe4, 0x3e, 0x3b, 0xdf, 0xc8, 0xfd, 0xf4, 0x7c, 0x23,
+ 0xf7, 0x6f, 0xe7, 0x1b, 0xb9, 0x3f, 0xfa, 0xd9, 0xc6, 0x95, 0xdf, 0x28, 0x99, 0x61, 0xfd, 0x77,
+ 0x00, 0x00, 0x00, 0xff, 0xff, 0x7a, 0x7d, 0xb4, 0x34, 0x6f, 0x41, 0x00, 0x00,
}
func (m *AWSLambdaTrigger) Marshal() (dAtA []byte, err error) {
@@ -1530,6 +1531,11 @@ func (m *AWSLambdaTrigger) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
+ i -= len(m.RoleARN)
+ copy(dAtA[i:], m.RoleARN)
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.RoleARN)))
+ i--
+ dAtA[i] = 0x42
if m.InvocationType != nil {
i -= len(*m.InvocationType)
copy(dAtA[i:], *m.InvocationType)
@@ -4276,6 +4282,8 @@ func (m *AWSLambdaTrigger) Size() (n int) {
l = len(*m.InvocationType)
n += 1 + l + sovGenerated(uint64(l))
}
+ l = len(m.RoleARN)
+ n += 1 + l + sovGenerated(uint64(l))
return n
}
@@ -5292,6 +5300,7 @@ func (this *AWSLambdaTrigger) String() string {
`Payload:` + repeatedStringForPayload + `,`,
`Parameters:` + repeatedStringForParameters + `,`,
`InvocationType:` + valueToStringGenerated(this.InvocationType) + `,`,
+ `RoleARN:` + fmt.Sprintf("%v", this.RoleARN) + `,`,
`}`,
}, "")
return s
@@ -6271,6 +6280,38 @@ func (m *AWSLambdaTrigger) Unmarshal(dAtA []byte) error {
s := string(dAtA[iNdEx:postIndex])
m.InvocationType = &s
iNdEx = postIndex
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RoleARN", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.RoleARN = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])
diff --git a/pkg/apis/sensor/v1alpha1/generated.proto b/pkg/apis/sensor/v1alpha1/generated.proto
index d8c0342354..5b7ba7d719 100644
--- a/pkg/apis/sensor/v1alpha1/generated.proto
+++ b/pkg/apis/sensor/v1alpha1/generated.proto
@@ -35,9 +35,11 @@ message AWSLambdaTrigger {
optional string functionName = 1;
// AccessKey refers K8s secret containing aws access key
+ // +optional
optional k8s.io.api.core.v1.SecretKeySelector accessKey = 2;
// SecretKey refers K8s secret containing aws secret key
+ // +optional
optional k8s.io.api.core.v1.SecretKeySelector secretKey = 3;
// Region is AWS region
@@ -65,6 +67,10 @@ message AWSLambdaTrigger {
// has permission to invoke the function.
// +optional
optional string invocationType = 7;
+
+ // RoleARN is the Amazon Resource Name (ARN) of the role to assume.
+ // +optional
+ optional string roleARN = 8;
}
// ArgoWorkflowTrigger is the trigger for the Argo Workflow
diff --git a/pkg/apis/sensor/v1alpha1/openapi_generated.go b/pkg/apis/sensor/v1alpha1/openapi_generated.go
index d37a955c58..2e5512e9b7 100644
--- a/pkg/apis/sensor/v1alpha1/openapi_generated.go
+++ b/pkg/apis/sensor/v1alpha1/openapi_generated.go
@@ -144,6 +144,13 @@ func schema_pkg_apis_sensor_v1alpha1_AWSLambdaTrigger(ref common.ReferenceCallba
Format: "",
},
},
+ "roleARN": {
+ SchemaProps: spec.SchemaProps{
+ Description: "RoleARN is the Amazon Resource Name (ARN) of the role to assume.",
+ Type: []string{"string"},
+ Format: "",
+ },
+ },
},
Required: []string{"functionName", "region", "payload"},
},
diff --git a/pkg/apis/sensor/v1alpha1/types.go b/pkg/apis/sensor/v1alpha1/types.go
index 2e321c381d..e05c44621b 100644
--- a/pkg/apis/sensor/v1alpha1/types.go
+++ b/pkg/apis/sensor/v1alpha1/types.go
@@ -444,8 +444,10 @@ type AWSLambdaTrigger struct {
// FunctionName refers to the name of the function to invoke.
FunctionName string `json:"functionName" protobuf:"bytes,1,opt,name=functionName"`
// AccessKey refers K8s secret containing aws access key
+ // +optional
AccessKey *corev1.SecretKeySelector `json:"accessKey,omitempty" protobuf:"bytes,2,opt,name=accessKey"`
// SecretKey refers K8s secret containing aws secret key
+ // +optional
SecretKey *corev1.SecretKeySelector `json:"secretKey,omitempty" protobuf:"bytes,3,opt,name=secretKey"`
// Region is AWS region
Region string `json:"region" protobuf:"bytes,4,opt,name=region"`
@@ -469,6 +471,9 @@ type AWSLambdaTrigger struct {
// has permission to invoke the function.
// +optional
InvocationType *string `json:"invocationType,omitempty" protobuf:"bytes,7,opt,name=invocationType"`
+ // RoleARN is the Amazon Resource Name (ARN) of the role to assume.
+ // +optional
+ RoleARN string `json:"roleARN,omitempty" protobuf:"bytes,8,opt,name=roleARN"`
}
// AzureEventHubsTrigger refers to specification of the Azure Event Hubs Trigger
diff --git a/sensors/artifacts/s3.go b/sensors/artifacts/s3.go
index 7bf7eff60c..cee0f95593 100644
--- a/sensors/artifacts/s3.go
+++ b/sensors/artifacts/s3.go
@@ -17,10 +17,12 @@ limitations under the License.
package artifacts
import (
+ "context"
"fmt"
"io/ioutil"
- "github.com/minio/minio-go"
+ "github.com/minio/minio-go/v7"
+ "github.com/minio/minio-go/v7/pkg/credentials"
"github.com/argoproj/argo-events/common/logging"
apicommon "github.com/argoproj/argo-events/pkg/apis/common"
@@ -49,7 +51,7 @@ func NewS3Reader(s3 *apicommon.S3Artifact, creds *Credentials) (ArtifactReader,
func (reader *S3Reader) Read() ([]byte, error) {
log := logging.NewArgoEventsLogger()
log.Debugf("reading s3Artifact from %s/%s", reader.s3.Bucket.Name, reader.s3.Bucket.Key)
- obj, err := reader.client.GetObject(reader.s3.Bucket.Name, reader.s3.Bucket.Key, minio.GetObjectOptions{})
+ obj, err := reader.client.GetObject(context.Background(), reader.s3.Bucket.Name, reader.s3.Bucket.Key, minio.GetObjectOptions{})
if err != nil {
return nil, err
}
@@ -71,9 +73,11 @@ func NewMinioClient(s3 *apicommon.S3Artifact, creds Credentials) (*minio.Client,
var minioClient *minio.Client
var err error
if s3.Region != "" {
- minioClient, err = minio.NewWithRegion(s3.Endpoint, creds.accessKey, creds.secretKey, !s3.Insecure, s3.Region)
+ minioClient, err = minio.New(s3.Endpoint, &minio.Options{
+ Creds: credentials.NewStaticV4(creds.accessKey, creds.secretKey, ""), Secure: !s3.Insecure, Region: s3.Region})
} else {
- minioClient, err = minio.New(s3.Endpoint, creds.accessKey, creds.secretKey, !s3.Insecure)
+ minioClient, err = minio.New(s3.Endpoint, &minio.Options{
+ Creds: credentials.NewStaticV4(creds.accessKey, creds.secretKey, ""), Secure: !s3.Insecure})
}
if err != nil {
return nil, err
diff --git a/sensors/triggers/aws-lambda/aws-lambda.go b/sensors/triggers/aws-lambda/aws-lambda.go
index 8ae48e33c5..ccbabf63d2 100644
--- a/sensors/triggers/aws-lambda/aws-lambda.go
+++ b/sensors/triggers/aws-lambda/aws-lambda.go
@@ -50,7 +50,7 @@ func NewAWSLambdaTrigger(lambdaClients map[string]*lambda.Lambda, sensor *v1alph
lambdaClient, ok := lambdaClients[trigger.Template.Name]
if !ok {
- awsSession, err := commonaws.CreateAWSSessionWithCredsInVolume(lambdatrigger.Region, "", lambdatrigger.AccessKey, lambdatrigger.SecretKey)
+ awsSession, err := commonaws.CreateAWSSessionWithCredsInVolume(lambdatrigger.Region, lambdatrigger.RoleARN, lambdatrigger.AccessKey, lambdatrigger.SecretKey)
if err != nil {
return nil, errors.Wrap(err, "failed to create a AWS session")
}
diff --git a/sensors/triggers/aws-lambda/aws-lambda_test.go b/sensors/triggers/aws-lambda/aws-lambda_test.go
index 4e224ef0ac..543f9df3d0 100644
--- a/sensors/triggers/aws-lambda/aws-lambda_test.go
+++ b/sensors/triggers/aws-lambda/aws-lambda_test.go
@@ -29,7 +29,7 @@ import (
"github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1"
)
-var sensorObj = &v1alpha1.Sensor{
+var sensorObjSparse = &v1alpha1.Sensor{
ObjectMeta: metav1.ObjectMeta{
Name: "fake-sensor",
Namespace: "fake",
@@ -38,7 +38,27 @@ var sensorObj = &v1alpha1.Sensor{
Triggers: []v1alpha1.Trigger{
{
Template: &v1alpha1.TriggerTemplate{
- Name: "fake-trigger",
+ Name: "fake-trigger-sparse",
+ AWSLambda: &v1alpha1.AWSLambdaTrigger{
+ FunctionName: "fake-function",
+ Region: "us-east",
+ },
+ },
+ },
+ },
+ },
+}
+
+var sensorObjFull = &v1alpha1.Sensor{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: "fake-sensor",
+ Namespace: "fake",
+ },
+ Spec: v1alpha1.SensorSpec{
+ Triggers: []v1alpha1.Trigger{
+ {
+ Template: &v1alpha1.TriggerTemplate{
+ Name: "fake-trigger-full",
AWSLambda: &v1alpha1.AWSLambdaTrigger{
FunctionName: "fake-function",
AccessKey: &corev1.SecretKeySelector{
@@ -53,7 +73,17 @@ var sensorObj = &v1alpha1.Sensor{
},
Key: "secretkey",
},
- Region: "us-east",
+ Region: "us-east",
+ RoleARN: "arn:aws:iam::123456789012:role/fake-trigger-full",
+ Payload: []v1alpha1.TriggerParameter{
+ {
+ Src: &v1alpha1.TriggerParameterSource{
+ DependencyName: "fake-dependency",
+ Value: new(string),
+ },
+ Dest: "metadata.label.value",
+ },
+ },
},
},
},
@@ -61,84 +91,98 @@ var sensorObj = &v1alpha1.Sensor{
},
}
-func getAWSTrigger() *AWSLambdaTrigger {
- return &AWSLambdaTrigger{
- LambdaClient: nil,
- Sensor: sensorObj.DeepCopy(),
- Trigger: &sensorObj.Spec.Triggers[0],
- Logger: logging.NewArgoEventsLogger(),
+func getAWSTriggers() []AWSLambdaTrigger {
+ return []AWSLambdaTrigger{
+ {
+ LambdaClient: nil,
+ Sensor: sensorObjSparse.DeepCopy(),
+ Trigger: &sensorObjSparse.Spec.Triggers[0],
+ Logger: logging.NewArgoEventsLogger(),
+ },
+ {
+ LambdaClient: nil,
+ Sensor: sensorObjFull.DeepCopy(),
+ Trigger: &sensorObjFull.Spec.Triggers[0],
+ Logger: logging.NewArgoEventsLogger(),
+ },
}
}
func TestAWSLambdaTrigger_FetchResource(t *testing.T) {
- trigger := getAWSTrigger()
- resource, err := trigger.FetchResource(context.TODO())
- assert.Nil(t, err)
- assert.NotNil(t, resource)
-
- at, ok := resource.(*v1alpha1.AWSLambdaTrigger)
- assert.Nil(t, err)
- assert.Equal(t, true, ok)
- assert.Equal(t, "fake-function", at.FunctionName)
+ triggers := getAWSTriggers()
+ for _, trigger := range triggers {
+ resource, err := trigger.FetchResource(context.TODO())
+ assert.Nil(t, err)
+ assert.NotNil(t, resource)
+
+ at, ok := resource.(*v1alpha1.AWSLambdaTrigger)
+ assert.Nil(t, err)
+ assert.Equal(t, true, ok)
+ assert.Equal(t, "fake-function", at.FunctionName)
+ }
}
func TestAWSLambdaTrigger_ApplyResourceParameters(t *testing.T) {
- trigger := getAWSTrigger()
- testEvents := map[string]*v1alpha1.Event{
- "fake-dependency": {
- Context: &v1alpha1.EventContext{
- ID: "1",
- Type: "webhook",
- Source: "webhook-gateway",
- DataContentType: "application/json",
- SpecVersion: cloudevents.VersionV1,
- Subject: "example-1",
+ triggers := getAWSTriggers()
+ for _, trigger := range triggers {
+ testEvents := map[string]*v1alpha1.Event{
+ "fake-dependency": {
+ Context: &v1alpha1.EventContext{
+ ID: "1",
+ Type: "webhook",
+ Source: "webhook-gateway",
+ DataContentType: "application/json",
+ SpecVersion: cloudevents.VersionV1,
+ Subject: "example-1",
+ },
+ Data: []byte(`{"function": "real-function"}`),
},
- Data: []byte(`{"function": "real-function"}`),
- },
- }
+ }
- defaultValue := "default"
- defaultRegion := "region"
+ defaultValue := "default"
+ defaultRegion := "region"
- trigger.Trigger.Template.AWSLambda.Parameters = []v1alpha1.TriggerParameter{
- {
- Src: &v1alpha1.TriggerParameterSource{
- DependencyName: "fake-dependency",
- DataKey: "function",
- Value: &defaultValue,
+ trigger.Trigger.Template.AWSLambda.Parameters = []v1alpha1.TriggerParameter{
+ {
+ Src: &v1alpha1.TriggerParameterSource{
+ DependencyName: "fake-dependency",
+ DataKey: "function",
+ Value: &defaultValue,
+ },
+ Dest: "functionName",
},
- Dest: "functionName",
- },
- {
- Src: &v1alpha1.TriggerParameterSource{
- DependencyName: "fake-dependency",
- DataKey: "region",
- Value: &defaultRegion,
+ {
+ Src: &v1alpha1.TriggerParameterSource{
+ DependencyName: "fake-dependency",
+ DataKey: "region",
+ Value: &defaultRegion,
+ },
+ Dest: "region",
},
- Dest: "region",
- },
- }
+ }
- response, err := trigger.ApplyResourceParameters(testEvents, trigger.Trigger.Template.AWSLambda)
- assert.Nil(t, err)
- assert.NotNil(t, response)
+ response, err := trigger.ApplyResourceParameters(testEvents, trigger.Trigger.Template.AWSLambda)
+ assert.Nil(t, err)
+ assert.NotNil(t, response)
- updatedObj, ok := response.(*v1alpha1.AWSLambdaTrigger)
- assert.Equal(t, true, ok)
- assert.Equal(t, "real-function", updatedObj.FunctionName)
- assert.Equal(t, "region", updatedObj.Region)
+ updatedObj, ok := response.(*v1alpha1.AWSLambdaTrigger)
+ assert.Equal(t, true, ok)
+ assert.Equal(t, "real-function", updatedObj.FunctionName)
+ assert.Equal(t, "region", updatedObj.Region)
+ }
}
func TestAWSLambdaTrigger_ApplyPolicy(t *testing.T) {
- trigger := getAWSTrigger()
- status := int64(200)
- response := &lambda.InvokeOutput{
- StatusCode: &status,
- }
- trigger.Trigger.Policy = &v1alpha1.TriggerPolicy{
- Status: &v1alpha1.StatusPolicy{Allow: []int32{200, 300}},
+ triggers := getAWSTriggers()
+ for _, trigger := range triggers {
+ status := int64(200)
+ response := &lambda.InvokeOutput{
+ StatusCode: &status,
+ }
+ trigger.Trigger.Policy = &v1alpha1.TriggerPolicy{
+ Status: &v1alpha1.StatusPolicy{Allow: []int32{200, 300}},
+ }
+ err := trigger.ApplyPolicy(context.TODO(), response)
+ assert.Nil(t, err)
}
- err := trigger.ApplyPolicy(context.TODO(), response)
- assert.Nil(t, err)
}